SUMO - Simulation of Urban MObility
Vehicle.h
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2012-2017 German Aerospace Center (DLR) and others.
4 /****************************************************************************/
5 //
6 // This program and the accompanying materials
7 // are made available under the terms of the Eclipse Public License v2.0
8 // which accompanies this distribution, and is available at
9 // http://www.eclipse.org/legal/epl-v20.html
10 //
11 /****************************************************************************/
18 // C++ Vehicle API
19 /****************************************************************************/
20 #ifndef Vehicle_h
21 #define Vehicle_h
22 
23 
24 // ===========================================================================
25 // included modules
26 // ===========================================================================
27 #ifdef _MSC_VER
28 #include <windows_config.h>
29 #else
30 #include <config.h>
31 #endif
32 
33 #include <vector>
34 #include <libsumo/TraCIDefs.h>
36 
37 
38 // ===========================================================================
39 // class declarations
40 // ===========================================================================
41 class MSVehicle;
43 
44 
45 // ===========================================================================
46 // class definitions
47 // ===========================================================================
52 namespace libsumo {
53 class Vehicle {
54 public:
57  static std::vector<std::string> getIDList();
58  static int getIDCount();
59  static double getSpeed(const std::string& vehicleID);
60  static double getSpeedWithoutTraCI(const std::string& vehicleID);
61  static TraCIPosition getPosition(const std::string& vehicleID);
62  static TraCIPosition getPosition3D(const std::string& vehicleID);
63  static double getAngle(const std::string& vehicleID);
64  static double getSlope(const std::string& vehicleID);
65  static std::string getRoadID(const std::string& vehicleID);
66  static std::string getLaneID(const std::string& vehicleID);
67  static int getLaneIndex(const std::string& vehicleID);
68  static std::string getTypeID(const std::string& vehicleID);
69  static std::string getRouteID(const std::string& vehicleID);
70  static int getRouteIndex(const std::string& vehicleID);
71  static TraCIColor getColor(const std::string& vehicleID);
72  static double getLanePosition(const std::string& vehicleID);
73  static double getLateralLanePosition(const std::string& vehicleID);
74  static double getCO2Emission(const std::string& vehicleID);
75  static double getCOEmission(const std::string& vehicleID);
76  static double getHCEmission(const std::string& vehicleID);
77  static double getPMxEmission(const std::string& vehicleID);
78  static double getNOxEmission(const std::string& vehicleID);
79  static double getFuelConsumption(const std::string& vehicleID);
80  static double getNoiseEmission(const std::string& vehicleID);
81  static double getElectricityConsumption(const std::string& vehicleID);
82  static int getPersonNumber(const std::string& vehicleID);
83  static std::pair<std::string, double> getLeader(const std::string& vehicleID, double dist);
84  static double getWaitingTime(const std::string& vehicleID);
85  static double getAccumulatedWaitingTime(const std::string& vehicleID);
86  static double getAdaptedTraveltime(const std::string& vehicleID, const std::string& edgeID, int time);
87  static double getEffort(const std::string& vehicleID, const std::string& edgeID, int time);
88  static bool isRouteValid(const std::string& vehicleID);
89  static std::vector<std::string> getEdges(const std::string& vehicleID);
90  static int getSignalStates(const std::string& vehicleID);
91  static std::vector<TraCIBestLanesData> getBestLanes(const std::string& vehicleID);
92  static std::vector<TraCINextTLSData> getNextTLS(const std::string& vehicleID);
93  static int getStopState(const std::string& vehicleID);
94  static double getDistance(const std::string& vehicleID);
95  static double getDrivingDistance(const std::string& vehicleID, const std::string& edgeID, double position, int laneIndex);
96  static double getDrivingDistance2D(const std::string& vehicleID, double x, double y);
97  static double getAllowedSpeed(const std::string& vehicleID);
98  static double getSpeedFactor(const std::string& vehicleID);
99  static int getSpeedMode(const std::string& vehicleID);
100  static int getLanechangeMode(const std::string& vehicleID);
101  static int getRoutingMode(const std::string& vehicleID);
102  static std::string getLine(const std::string& vehicleID);
103  static std::vector<std::string> getVia(const std::string& vehicleID);
104  static std::pair<int, int> getLaneChangeState(const std::string& vehicleID, int direction);
105  static std::string getParameter(const std::string& vehicleID, const std::string& key);
106  static const MSVehicleType& getVehicleType(const std::string& vehicleID);
108 
111  static std::string getEmissionClass(const std::string& vehicleID);
112  static std::string getShapeClass(const std::string& vehicleID);
113  static std::string getVClass(const std::string& vehicleID);
114  static double getLength(const std::string& vehicleID);
115  static double getAccel(const std::string& vehicleID);
116  static double getDecel(const std::string& vehicleID);
117  static double getEmergencyDecel(const std::string& vehicleID);
118  static double getApparentDecel(const std::string& vehicleID);
119  static double getActionStepLength(const std::string& vehicleID);
120  static double getLastActionTime(const std::string& vehicleID);
121  static double getTau(const std::string& vehicleID);
122  static double getImperfection(const std::string& vehicleID);
123  static double getSpeedDeviation(const std::string& vehicleID);
124  static double getMinGap(const std::string& vehicleID);
125  static double getMaxSpeed(const std::string& vehicleID);
126  static double getWidth(const std::string& vehicleID);
128 
131 
132  static void setStop(const std::string& vehicleID,
133  const std::string& edgeID,
134  double endPos = 1.,
135  int laneIndex = 0,
136  SUMOTime duration = 4294967295u, // 2^32-1
137  int flags = STOP_DEFAULT,
138  double startPos = INVALID_DOUBLE_VALUE,
139  SUMOTime until = -1);
140 
141  static void resume(const std::string& vehicleID);
142 
143  static void add(const std::string& vehicleID,
144  const std::string& routeID,
145  const std::string& typeID = "DEFAULT_VEHTYPE",
146  int depart = DEPARTFLAG_NOW,
147  int departLane = DEPARTFLAG_LANE_FIRST_ALLOWED,
148  double departPos = DEPARTFLAG_POS_BASE,
149  double departSpeed = 0,
150  int arrivalLane = ARRIVALFLAG_LANE_CURRENT,
151  double arrivalPos = ARRIVALFLAG_POS_MAX,
152  double arrivalSpeed = ARRIVALFLAG_SPEED_CURRENT,
153  const std::string& fromTaz = "",
154  const std::string& toTaz = "",
155  const std::string& line = "",
156  int personCapacity = 4,
157  int personNumber = 0);
158 
159  static void changeTarget(const std::string& vehicleID, const std::string& edgeID);
160  static void changeLane(const std::string& vehicleID, int laneIndex, SUMOTime duration);
161  static void changeSublane(const std::string& vehicleID, double latDist);
162 
163  static void slowDown(const std::string& vehicleID, double speed, SUMOTime duration);
164  static void setSpeed(const std::string& vehicleID, double speed);
165  static void setType(const std::string& vehicleID, const std::string& typeID);
166  static void setRouteID(const std::string& vehicleID, const std::string& routeID);
167  static void setRoute(const std::string& vehicleID, const std::vector<std::string>& edgeIDs);
168  static void setAdaptedTraveltime(const std::string& vehicleID, const std::string& edgeID,
169  double time = INVALID_DOUBLE_VALUE, double begSeconds = 0, double endSeconds = std::numeric_limits<double>::max());
170  static void setEffort(const std::string& vehicleID, const std::string& edgeID,
171  double effort = INVALID_DOUBLE_VALUE, double begSeconds = 0, double endSeconds = std::numeric_limits<double>::max());
172  static void rerouteTraveltime(const std::string& vehicleID);
173  static void rerouteEffort(const std::string& vehicleID);
174  static void setSignals(const std::string& vehicleID, int signals);
175  static void moveTo(const std::string& vehicleID, const std::string& laneID, double position);
176  static void moveToXY(const std::string& vehicleID, const std::string& edgeID, const int laneIndex, const double x, const double y, double angle, const int keepRouteFlag);
177  static void setMaxSpeed(const std::string& vehicleID, double speed);
178  static void setActionStepLength(const std::string& vehicleID, double actionStepLength, bool resetActionOffset = true);
179  static void remove(const std::string& vehicleID, char reason = REMOVE_VAPORIZED);
180  static void setColor(const std::string& vehicleID, const TraCIColor& col);
181  static void setLine(const std::string& vehicleID, const std::string& line);
182  static void setVia(const std::string& vehicleID, const std::vector<std::string>& via);
183  static void setShapeClass(const std::string& vehicleID, const std::string& clazz);
184  static void setEmissionClass(const std::string& vehicleID, const std::string& clazz);
185  static void setParameter(const std::string& vehicleID, const std::string& key, const std::string& value);
187 
188 private:
189  static MSVehicle* getVehicle(const std::string& id);
190 
191  static bool isVisible(const MSVehicle* veh);
192 
193  static bool isOnInit(const std::string& vehicleID);
194 
196  Vehicle();
197 
199  Vehicle(const Vehicle& src);
200 
202  Vehicle& operator=(const Vehicle& src);
203 };
204 }
205 
206 
207 #endif
208 
209 /****************************************************************************/
#define DEPARTFLAG_NOW
static void slowDown(const std::string &vehicleID, double speed, SUMOTime duration)
Definition: Vehicle.cpp:946
static std::string getLaneID(const std::string &vehicleID)
Definition: Vehicle.cpp:150
static std::vector< TraCIBestLanesData > getBestLanes(const std::string &vehicleID)
Definition: Vehicle.cpp:319
static std::vector< std::string > getEdges(const std::string &vehicleID)
Definition: Vehicle.cpp:302
static void setEffort(const std::string &vehicleID, const std::string &edgeID, double effort=INVALID_DOUBLE_VALUE, double begSeconds=0, double endSeconds=std::numeric_limits< double >::max())
Definition: Vehicle.cpp:1031
Representation of a vehicle in the micro simulation.
Definition: MSVehicle.h:83
static double getEmergencyDecel(const std::string &vehicleID)
Definition: Vehicle.cpp:574
static TraCIPosition getPosition(const std::string &vehicleID)
Definition: Vehicle.cpp:114
static void setLine(const std::string &vehicleID, const std::string &line)
Definition: Vehicle.cpp:1159
static int getSignalStates(const std::string &vehicleID)
Definition: Vehicle.cpp:314
static double getSpeedWithoutTraCI(const std::string &vehicleID)
Definition: Vehicle.cpp:107
static std::string getRoadID(const std::string &vehicleID)
Definition: Vehicle.cpp:143
static void setRoute(const std::string &vehicleID, const std::vector< std::string > &edgeIDs)
Definition: Vehicle.cpp:991
static double getDrivingDistance(const std::string &vehicleID, const std::string &edgeID, double position, int laneIndex)
Definition: Vehicle.cpp:421
static int getPersonNumber(const std::string &vehicleID)
Definition: Vehicle.cpp:244
static double getWidth(const std::string &vehicleID)
Definition: Vehicle.cpp:624
static std::pair< std::string, double > getLeader(const std::string &vehicleID, double dist)
Definition: Vehicle.cpp:250
static void setParameter(const std::string &vehicleID, const std::string &key, const std::string &value)
Definition: Vehicle.cpp:1182
static double getSlope(const std::string &vehicleID)
Definition: Vehicle.cpp:136
static std::string getTypeID(const std::string &vehicleID)
Definition: Vehicle.cpp:163
static double getTau(const std::string &vehicleID)
Definition: Vehicle.cpp:588
#define DEPARTFLAG_LANE_FIRST_ALLOWED
static double getCOEmission(const std::string &vehicleID)
Definition: Vehicle.cpp:202
#define ARRIVALFLAG_SPEED_CURRENT
static std::vector< std::string > getVia(const std::string &vehicleID)
Definition: Vehicle.cpp:491
static void setRouteID(const std::string &vehicleID, const std::string &routeID)
Definition: Vehicle.cpp:970
static void setColor(const std::string &vehicleID, const TraCIColor &col)
Definition: Vehicle.cpp:1151
static double getAngle(const std::string &vehicleID)
Definition: Vehicle.cpp:129
static std::string getLine(const std::string &vehicleID)
Definition: Vehicle.cpp:486
static double getSpeedFactor(const std::string &vehicleID)
Definition: Vehicle.cpp:465
static double getDistance(const std::string &vehicleID)
Definition: Vehicle.cpp:394
static double getNoiseEmission(const std::string &vehicleID)
Definition: Vehicle.cpp:232
Vehicle & operator=(const Vehicle &src)
invalidated assignment operator
The car-following model and parameter.
Definition: MSVehicleType.h:72
static std::pair< int, int > getLaneChangeState(const std::string &vehicleID, int direction)
Definition: Vehicle.cpp:497
static void add(const std::string &vehicleID, const std::string &routeID, const std::string &typeID="DEFAULT_VEHTYPE", int depart=DEPARTFLAG_NOW, int departLane=DEPARTFLAG_LANE_FIRST_ALLOWED, double departPos=DEPARTFLAG_POS_BASE, double departSpeed=0, int arrivalLane=ARRIVALFLAG_LANE_CURRENT, double arrivalPos=ARRIVALFLAG_POS_MAX, double arrivalSpeed=ARRIVALFLAG_SPEED_CURRENT, const std::string &fromTaz="", const std::string &toTaz="", const std::string &line="", int personCapacity=4, int personNumber=0)
Definition: Vehicle.cpp:753
static double getNOxEmission(const std::string &vehicleID)
Definition: Vehicle.cpp:220
static void rerouteTraveltime(const std::string &vehicleID)
Definition: Vehicle.cpp:1057
static double getWaitingTime(const std::string &vehicleID)
Definition: Vehicle.cpp:264
static double getLastActionTime(const std::string &vehicleID)
Definition: Vehicle.cpp:583
static double getCO2Emission(const std::string &vehicleID)
Definition: Vehicle.cpp:196
static const MSVehicleType & getVehicleType(const std::string &vehicleID)
Definition: Vehicle.cpp:540
static void resume(const std::string &vehicleID)
Definition: Vehicle.cpp:693
static double getDecel(const std::string &vehicleID)
Definition: Vehicle.cpp:569
static double getImperfection(const std::string &vehicleID)
Definition: Vehicle.cpp:594
static std::vector< TraCINextTLSData > getNextTLS(const std::string &vehicleID)
Definition: Vehicle.cpp:345
static int getSpeedMode(const std::string &vehicleID)
Definition: Vehicle.cpp:471
static int getRouteIndex(const std::string &vehicleID)
Definition: Vehicle.cpp:173
Vehicle()
invalidated standard constructor
static TraCIPosition getPosition3D(const std::string &vehicleID)
static void setVia(const std::string &vehicleID, const std::vector< std::string > &via)
Definition: Vehicle.cpp:1164
static double getLateralLanePosition(const std::string &vehicleID)
Definition: Vehicle.cpp:190
static double getHCEmission(const std::string &vehicleID)
Definition: Vehicle.cpp:208
static bool isOnInit(const std::string &vehicleID)
Definition: Vehicle.cpp:77
static double getFuelConsumption(const std::string &vehicleID)
Definition: Vehicle.cpp:226
static double getLanePosition(const std::string &vehicleID)
Definition: Vehicle.cpp:184
static bool isVisible(const MSVehicle *veh)
Definition: Vehicle.cpp:71
static void changeLane(const std::string &vehicleID, int laneIndex, SUMOTime duration)
Definition: Vehicle.cpp:738
static void moveTo(const std::string &vehicleID, const std::string &laneID, double position)
Definition: Vehicle.cpp:1084
static std::vector< std::string > getIDList()
Definition: Vehicle.cpp:83
#define DEPARTFLAG_POS_BASE
static double getAccumulatedWaitingTime(const std::string &vehicleID)
Definition: Vehicle.cpp:270
static void setSpeed(const std::string &vehicleID, double speed)
Definition: Vehicle.cpp:955
static std::string getRouteID(const std::string &vehicleID)
Definition: Vehicle.cpp:168
Definition: Edge.cpp:31
#define INVALID_DOUBLE_VALUE
static std::string getEmissionClass(const std::string &vehicleID)
Definition: Vehicle.cpp:546
static void setStop(const std::string &vehicleID, const std::string &edgeID, double endPos=1., int laneIndex=0, SUMOTime duration=4294967295u, int flags=STOP_DEFAULT, double startPos=INVALID_DOUBLE_VALUE, SUMOTime until=-1)
Definition: Vehicle.cpp:630
static std::string getParameter(const std::string &vehicleID, const std::string &key)
Definition: Vehicle.cpp:508
static double getActionStepLength(const std::string &vehicleID)
Definition: Vehicle.cpp:580
static int getLaneIndex(const std::string &vehicleID)
Definition: Vehicle.cpp:157
static int getIDCount()
Definition: Vehicle.cpp:95
static void moveToXY(const std::string &vehicleID, const std::string &edgeID, const int laneIndex, const double x, const double y, double angle, const int keepRouteFlag)
Definition: Vehicle.cpp:843
static void setShapeClass(const std::string &vehicleID, const std::string &clazz)
Definition: Vehicle.cpp:1170
static void changeTarget(const std::string &vehicleID, const std::string &edgeID)
Definition: Vehicle.cpp:712
static double getAllowedSpeed(const std::string &vehicleID)
Definition: Vehicle.cpp:455
static double getPMxEmission(const std::string &vehicleID)
Definition: Vehicle.cpp:214
static void setSignals(const std::string &vehicleID, int signals)
Definition: Vehicle.cpp:1071
static bool isRouteValid(const std::string &vehicleID)
Definition: Vehicle.cpp:296
static void setMaxSpeed(const std::string &vehicleID, double speed)
Definition: Vehicle.cpp:1118
static TraCIColor getColor(const std::string &vehicleID)
Definition: Vehicle.cpp:179
static double getDrivingDistance2D(const std::string &vehicleID, double x, double y)
Definition: Vehicle.cpp:437
static double getAccel(const std::string &vehicleID)
Definition: Vehicle.cpp:563
#define ARRIVALFLAG_POS_MAX
static int getRoutingMode(const std::string &vehicleID)
Definition: Vehicle.cpp:481
#define ARRIVALFLAG_LANE_CURRENT
static std::string getShapeClass(const std::string &vehicleID)
Definition: Vehicle.cpp:551
static double getLength(const std::string &vehicleID)
Definition: Vehicle.cpp:557
#define REMOVE_VAPORIZED
static void setAdaptedTraveltime(const std::string &vehicleID, const std::string &edgeID, double time=INVALID_DOUBLE_VALUE, double begSeconds=0, double endSeconds=std::numeric_limits< double >::max())
Definition: Vehicle.cpp:1005
static double getMaxSpeed(const std::string &vehicleID)
Definition: Vehicle.cpp:618
static int getLanechangeMode(const std::string &vehicleID)
Definition: Vehicle.cpp:476
static MSVehicle * getVehicle(const std::string &id)
Definition: Vehicle.cpp:57
long long int SUMOTime
Definition: TraCIDefs.h:51
static double getElectricityConsumption(const std::string &vehicleID)
Definition: Vehicle.cpp:238
static double getEffort(const std::string &vehicleID, const std::string &edgeID, int time)
Definition: Vehicle.cpp:286
static void setEmissionClass(const std::string &vehicleID, const std::string &clazz)
Definition: Vehicle.cpp:1175
static void setType(const std::string &vehicleID, const std::string &typeID)
Definition: Vehicle.cpp:961
static double getApparentDecel(const std::string &vehicleID)
Definition: Vehicle.cpp:577
static double getMinGap(const std::string &vehicleID)
Definition: Vehicle.cpp:612
#define STOP_DEFAULT
A 3D-position.
Definition: TraCIDefs.h:71
static std::string getVClass(const std::string &vehicleID)
Definition: Vehicle.cpp:606
static double getSpeedDeviation(const std::string &vehicleID)
Definition: Vehicle.cpp:600
static void changeSublane(const std::string &vehicleID, double latDist)
Definition: Vehicle.cpp:747
static double getSpeed(const std::string &vehicleID)
Definition: Vehicle.cpp:100
static int getStopState(const std::string &vehicleID)
Definition: Vehicle.cpp:377
static double getAdaptedTraveltime(const std::string &vehicleID, const std::string &edgeID, int time)
Definition: Vehicle.cpp:276
static void rerouteEffort(const std::string &vehicleID)
Definition: Vehicle.cpp:1064
static void setActionStepLength(const std::string &vehicleID, double actionStepLength, bool resetActionOffset=true)
Definition: Vehicle.cpp:1123