Eclipse SUMO - Simulation of Urban MObility
CC_Const.h
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2001-2019 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials
5 // are made available under the terms of the Eclipse Public License v2.0
6 // which accompanies this distribution, and is available at
7 // http://www.eclipse.org/legal/epl-v20.html
8 // SPDX-License-Identifier: EPL-2.0
9 /****************************************************************************/
14 // File defining constants, structs, and enums for cruise controllers
15 /****************************************************************************/
16 #ifndef CC_CONST_H
17 #define CC_CONST_H
18 
19 #include <string>
20 #include <sstream>
21 
22 namespace Plexe {
23 
28  DRIVER_CHOICE = 0, //the platooning management is not active, so just let the driver choose the lane
29  STAY_IN_CURRENT_LANE = 3, //the car is part of a platoon, so it has to stay on the dedicated platooning lane
30  MOVE_TO_FIXED_LANE = 4 //move the car to a specific lane
31 };
32 
36 #define FIX_LC 0b1000000000
37 #define DEFAULT_NOTRACI_LC 0b1010101010
38 
45 {DRIVER = 0, ACC = 1, CACC = 2, FAKED_CACC = 3, PLOEG = 4, CONSENSUS = 5, FLATBED = 6};
46 
51 struct CCDataHeader {
52  int type; //type of message. indicates what comes after the header
53  int size; //size of message. indicates how many bytes comes after the header
54 };
55 
59 struct VEHICLE_DATA {
60  int index; //position in the platoon (0 = first)
61  double speed; //vehicle speed
62  double acceleration; //vehicle acceleration
63  double positionX; //position of the vehicle in the simulation
64  double positionY; //position of the vehicle in the simulation
65  double time; //time at which such information was read from vehicle's sensors
66  double length; //vehicle length
67  double u; //controller acceleration
68  double speedX; //vehicle speed on the X axis
69  double speedY; //vehicle speed on the Y axis
70  double angle; //vehicle angle in radians
71 };
72 
73 #define MAX_N_CARS 8
74 
75 #define CC_ENGINE_MODEL_FOLM 0x00 //first order lag model
76 #define CC_ENGINE_MODEL_REALISTIC 0x01 //the detailed and realistic engine model
77 
78 //parameter names for engine models
79 #define FOLM_PAR_TAU "tau_s"
80 #define FOLM_PAR_DT "dt_s"
81 
82 #define ENGINE_PAR_VEHICLE "vehicle"
83 #define ENGINE_PAR_XMLFILE "xmlFile"
84 #define ENGINE_PAR_DT "dt_s"
85 
86 #define CC_PAR_VEHICLE_DATA "ccvd" //data about a vehicle, like position, speed, acceleration, etc
87 #define CC_PAR_VEHICLE_POSITION "ccvp" //position of the vehicle in the platoon (0 based)
88 #define CC_PAR_PLATOON_SIZE "ccps" //number of cars in the platoon
89 
90 //set of controller-related constants
91 #define CC_PAR_CACC_XI "ccxi" //xi
92 #define CC_PAR_CACC_OMEGA_N "ccon" //omega_n
93 #define CC_PAR_CACC_C1 "ccc1" //C1
94 #define CC_PAR_ENGINE_TAU "cctau" //engine time constant
95 
96 #define CC_PAR_UMIN "ccumin" //lower saturation for u
97 #define CC_PAR_UMAX "ccumax" //upper saturation for u
98 
99 #define CC_PAR_PLOEG_H "ccph" //time headway of ploeg's CACC
100 #define CC_PAR_PLOEG_KP "ccpkp" //kp parameter of ploeg's CACC
101 #define CC_PAR_PLOEG_KD "ccpkd" //kd parameter of ploeg's CACC
102 
103 #define CC_PAR_FLATBED_KA "ccfka" //ka parameter of flatbed CACC
104 #define CC_PAR_FLATBED_KV "ccfkv" //kv parameter of flatbed CACC
105 #define CC_PAR_FLATBED_KP "ccfkp" //kp parameter of flatbed CACC
106 #define CC_PAR_FLATBED_H "ccfh" //h parameter of flatbed CACC
107 #define CC_PAR_FLATBED_D "ccfd" //distance parameter of flatbed CACC
108 
109 #define CC_PAR_VEHICLE_ENGINE_MODEL "ccem" //set the engine model for a vehicle
110 
111 #define CC_PAR_VEHICLE_MODEL "ccvm" //set the vehicle model, i.e., engine characteristics
112 #define CC_PAR_VEHICLES_FILE "ccvf" //set the location of the vehicle parameters file
113 
114 // set CACC constant spacing
115 #define PAR_CACC_SPACING "ccsp"
116 
117 // get ACC computed acceleration when faked CACC controller is enabled
118 #define PAR_ACC_ACCELERATION "ccacc"
119 
120 // determine whether a vehicle has crashed or not
121 #define PAR_CRASHED "cccr"
122 
123 // set a fixed acceleration to a vehicle controlled by CC/ACC/CACC
124 #define PAR_FIXED_ACCELERATION "ccfa"
125 
126 // get vehicle speed and acceleration, needed for example by the platoon leader (get: vehicle)
127 #define PAR_SPEED_AND_ACCELERATION "ccsa"
128 
129 // set speed and acceleration of the platoon leader
130 #define PAR_LEADER_SPEED_AND_ACCELERATION "cclsa"
131 
132 // set whether CACCs should use real or controller acceleration
133 #define PAR_USE_CONTROLLER_ACCELERATION "ccca"
134 
135 // get lane count for the street the vehicle is currently traveling
136 #define PAR_LANES_COUNT "cclc"
137 
138 // set the cruise control desired speed
139 #define PAR_CC_DESIRED_SPEED "ccds"
140 
141 // set the currently active vehicle controller which can be either the driver, or the ACC or the CACC
142 #define PAR_ACTIVE_CONTROLLER "ccac"
143 
144 // get radar data from the car
145 #define PAR_RADAR_DATA "ccrd"
146 
147 // communicate with the cruise control to give him fake indications. this can be useful when you want
148 // to advance a vehicle to a certain position, for example, for joining a platoon. clearly the ACC
149 // must always take into consideration both fake and real data
150 #define PAR_LEADER_FAKE_DATA "cclfd"
151 #define PAR_FRONT_FAKE_DATA "ccffd"
152 
153 // get the distance that a car has to travel until it reaches the end of its route
154 #define PAR_DISTANCE_TO_END "ccdte"
155 
156 // get the distance from the beginning of the route
157 #define PAR_DISTANCE_FROM_BEGIN "ccdfb"
158 
159 // set speed and acceleration of preceding vehicle
160 #define PAR_PRECEDING_SPEED_AND_ACCELERATION "ccpsa"
161 
162 // set ACC headway time
163 #define PAR_ACC_HEADWAY_TIME "ccaht"
164 
165 // return engine information (for the realistic engine model)
166 #define PAR_ENGINE_DATA "cced"
167 
168 // enabling/disabling auto feeding
169 #define PAR_USE_AUTO_FEEDING "ccaf"
170 
171 // enabling/disabling data prediction
172 #define PAR_USE_PREDICTION "ccup"
173 
174 // add/remove members from own platoon
175 #define PAR_ADD_MEMBER "ccam"
176 #define PAR_REMOVE_MEMBER "ccrm"
177 
178 // let the leader automatically change lane for the whole platoon if there is a speed advantage
179 #define PAR_ENABLE_AUTO_LANE_CHANGE "ccalc"
180 
181 }
182 
183 #endif /* CC_CONST_H */
Plexe::VEHICLE_DATA::speedY
double speedY
Definition: CC_Const.h:69
Plexe::MOVE_TO_FIXED_LANE
Definition: CC_Const.h:30
Plexe
Definition: CC_Const.h:22
Plexe::VEHICLE_DATA::positionY
double positionY
Definition: CC_Const.h:64
Plexe::VEHICLE_DATA::index
int index
Definition: CC_Const.h:60
Plexe::FLATBED
Definition: CC_Const.h:45
Plexe::PLOEG
Definition: CC_Const.h:45
Plexe::VEHICLE_DATA::time
double time
Definition: CC_Const.h:65
Plexe::CACC
Definition: CC_Const.h:45
Plexe::CCDataHeader::type
int type
Definition: CC_Const.h:52
Plexe::CCDataHeader::size
int size
Definition: CC_Const.h:53
Plexe::VEHICLE_DATA::speed
double speed
Definition: CC_Const.h:61
Plexe::VEHICLE_DATA
Definition: CC_Const.h:59
Plexe::DRIVER_CHOICE
Definition: CC_Const.h:28
Plexe::PLATOONING_LANE_CHANGE_ACTION
PLATOONING_LANE_CHANGE_ACTION
action that might be requested by the platooning management
Definition: CC_Const.h:27
Plexe::ACC
Definition: CC_Const.h:45
Plexe::FAKED_CACC
Definition: CC_Const.h:45
Plexe::CCDataHeader
struct used as header for generic data passing to this model through traci
Definition: CC_Const.h:51
Plexe::VEHICLE_DATA::acceleration
double acceleration
Definition: CC_Const.h:62
Plexe::VEHICLE_DATA::speedX
double speedX
Definition: CC_Const.h:68
Plexe::ACTIVE_CONTROLLER
ACTIVE_CONTROLLER
Determines the currently active controller, i.e., ACC, CACC, or the driver. In future we might need t...
Definition: CC_Const.h:44
Plexe::VEHICLE_DATA::positionX
double positionX
Definition: CC_Const.h:63
Plexe::STAY_IN_CURRENT_LANE
Definition: CC_Const.h:29
Plexe::CONSENSUS
Definition: CC_Const.h:45
Plexe::VEHICLE_DATA::length
double length
Definition: CC_Const.h:66
Plexe::VEHICLE_DATA::u
double u
Definition: CC_Const.h:67
Plexe::DRIVER
Definition: CC_Const.h:45
Plexe::VEHICLE_DATA::angle
double angle
Definition: CC_Const.h:70