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-2018 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 /****************************************************************************/
16 // C++ Vehicle API
17 /****************************************************************************/
18 #ifndef Vehicle_h
19 #define Vehicle_h
20 
21 
22 // ===========================================================================
23 // included modules
24 // ===========================================================================
25 #include <config.h>
26 
27 #include <limits>
28 #include <vector>
29 #include <libsumo/TraCIDefs.h>
30 #include <libsumo/VehicleType.h>
32 
33 
34 // ===========================================================================
35 // class declarations
36 // ===========================================================================
37 class SUMOVehicle;
38 class MSVehicle;
39 class MSVehicleType;
40 namespace libsumo {
41 class VariableWrapper;
42 }
43 
44 
45 // ===========================================================================
46 // class definitions
47 // ===========================================================================
52 namespace libsumo {
53 class Vehicle {
54  friend class Helper;
55 public:
58  static std::vector<std::string> getIDList();
59  static int getIDCount();
60  static double getSpeed(const std::string& vehicleID);
61  static double getAcceleration(const std::string& vehicleID);
62  static double getSpeedWithoutTraCI(const std::string& vehicleID);
63  static TraCIPosition getPosition(const std::string& vehicleID, const bool includeZ = false);
64  static TraCIPosition getPosition3D(const std::string& vehicleID);
65  static double getAngle(const std::string& vehicleID);
66  static double getSlope(const std::string& vehicleID);
67  static std::string getRoadID(const std::string& vehicleID);
68  static std::string getLaneID(const std::string& vehicleID);
69  static int getLaneIndex(const std::string& vehicleID);
70  static std::string getTypeID(const std::string& vehicleID);
71  static std::string getRouteID(const std::string& vehicleID);
72  static int getRouteIndex(const std::string& vehicleID);
73  static double getLanePosition(const std::string& vehicleID);
74  static double getLateralLanePosition(const std::string& vehicleID);
75  static double getCO2Emission(const std::string& vehicleID);
76  static double getCOEmission(const std::string& vehicleID);
77  static double getHCEmission(const std::string& vehicleID);
78  static double getPMxEmission(const std::string& vehicleID);
79  static double getNOxEmission(const std::string& vehicleID);
80  static double getFuelConsumption(const std::string& vehicleID);
81  static double getNoiseEmission(const std::string& vehicleID);
82  static double getElectricityConsumption(const std::string& vehicleID);
83  static int getPersonNumber(const std::string& vehicleID);
84  static std::vector<std::string> getPersonIDList(const std::string& vehicleID);
85  static std::pair<std::string, double> getLeader(const std::string& vehicleID, double dist = 0.);
86  static double getWaitingTime(const std::string& vehicleID);
87  static double getAccumulatedWaitingTime(const std::string& vehicleID);
88  static double getAdaptedTraveltime(const std::string& vehicleID, double time, const std::string& edgeID);
89  static double getEffort(const std::string& vehicleID, double time, const std::string& edgeID);
90  static bool isRouteValid(const std::string& vehicleID);
91  static std::vector<std::string> getRoute(const std::string& vehicleID);
92  static int getSignals(const std::string& vehicleID);
93  static std::vector<TraCIBestLanesData> getBestLanes(const std::string& vehicleID);
94  static std::vector<TraCINextTLSData> getNextTLS(const std::string& vehicleID);
95  static std::vector<TraCINextStopData> getNextStops(const std::string& vehicleID);
96  static int getStopState(const std::string& vehicleID);
97  static double getDistance(const std::string& vehicleID);
98  static double getDrivingDistance(const std::string& vehicleID, const std::string& edgeID, double position, int laneIndex = 0);
99  static double getDrivingDistance2D(const std::string& vehicleID, double x, double y);
100  static double getAllowedSpeed(const std::string& vehicleID);
101  static int getSpeedMode(const std::string& vehicleID);
102  static int getLaneChangeMode(const std::string& vehicleID);
103  static int getRoutingMode(const std::string& vehicleID);
104  static std::string getLine(const std::string& vehicleID);
105  static std::vector<std::string> getVia(const std::string& vehicleID);
106  static std::pair<int, int> getLaneChangeState(const std::string& vehicleID, int direction);
107  static double getLastActionTime(const std::string& vehicleID);
108  static std::string getParameter(const std::string& vehicleID, const std::string& key);
109  static const MSVehicleType& getVehicleType(const std::string& vehicleID);
111 
113 
116 
117  static void setStop(const std::string& vehicleID,
118  const std::string& edgeID,
119  double pos = 1.,
120  int laneIndex = 0,
121  double duration = INVALID_DOUBLE_VALUE,
122  int flags = STOP_DEFAULT,
123  double startPos = INVALID_DOUBLE_VALUE,
124  double until = INVALID_DOUBLE_VALUE);
125 
126  static void rerouteParkingArea(const std::string& vehicleID,
127  const std::string& parkingAreaID);
128 
129  static void resume(const std::string& vehicleID);
130 
131  static void add(const std::string& vehicleID,
132  const std::string& routeID,
133  const std::string& typeID = "DEFAULT_VEHTYPE",
134  const std::string& depart = "now",
135  const std::string& departLane = "first",
136  const std::string& departPos = "base",
137  const std::string& departSpeed = "0",
138  const std::string& arrivalLane = "current",
139  const std::string& arrivalPos = "max",
140  const std::string& arrivalSpeed = "current",
141  const std::string& fromTaz = "",
142  const std::string& toTaz = "",
143  const std::string& line = "",
144  int personCapacity = 4,
145  int personNumber = 0);
146 
147  static void changeTarget(const std::string& vehicleID, const std::string& edgeID);
148  static void changeLane(const std::string& vehicleID, int laneIndex, double duration);
149  static void changeLaneRelative(const std::string& vehicleID, int laneChange, double duration);
150  static void changeSublane(const std::string& vehicleID, double latDist);
151 
152  static void slowDown(const std::string& vehicleID, double speed, double duration);
153  static void openGap(const std::string& vehicleID, double newTimeHeadway, double newSpaceHeadway, double duration, double changeRate, double maxDecel);
154  static void deactivateGapControl(const std::string& vehicleID);
155  static void setSpeed(const std::string& vehicleID, double speed);
156  static void setSpeedMode(const std::string& vehicleID, int speedMode);
157  static void setLaneChangeMode(const std::string& vehicleID, int laneChangeMode);
158  static void setRoutingMode(const std::string& vehicleID, int routingMode);
159  static void setType(const std::string& vehicleID, const std::string& typeID);
160  static void setRouteID(const std::string& vehicleID, const std::string& routeID);
161  static void setRoute(const std::string& vehicleID, const std::vector<std::string>& edgeIDs);
162  static void updateBestLanes(const std::string& vehicleID);
163  static void setAdaptedTraveltime(const std::string& vehicleID, const std::string& edgeID,
164  double time = INVALID_DOUBLE_VALUE, double begSeconds = 0, double endSeconds = std::numeric_limits<double>::max());
165  static void setEffort(const std::string& vehicleID, const std::string& edgeID,
166  double effort = INVALID_DOUBLE_VALUE, double begSeconds = 0, double endSeconds = std::numeric_limits<double>::max());
167  static void rerouteTraveltime(const std::string& vehicleID);
168  static void rerouteEffort(const std::string& vehicleID);
169  static void setSignals(const std::string& vehicleID, int signals);
170  static void moveTo(const std::string& vehicleID, const std::string& laneID, double position);
171  static void moveToXY(const std::string& vehicleID, const std::string& edgeID, const int laneIndex, const double x, const double y, double angle = INVALID_DOUBLE_VALUE, const int keepRoute = 1);
172  static void remove(const std::string& vehicleID, char reason = REMOVE_VAPORIZED);
173  static void setLine(const std::string& vehicleID, const std::string& line);
174  static void setVia(const std::string& vehicleID, const std::vector<std::string>& via);
175  static void setParameter(const std::string& vehicleID, const std::string& key, const std::string& value);
177 
179 
181 
186  static void storeShape(const std::string& id, PositionVector& shape);
187 
188  static std::shared_ptr<VariableWrapper> makeWrapper();
189 
190  static bool handleVariable(const std::string& objID, const int variable, VariableWrapper* wrapper);
191 
192 protected:
193  static MSVehicle* getVehicle(const std::string& id);
194 
195 private:
196  static bool isVisible(const SUMOVehicle* veh);
197 
198  static bool isOnInit(const std::string& vehicleID);
199 
200 private:
203 
205  Vehicle() = delete;
206 };
207 
208 
209 }
210 
211 
212 #endif
213 
214 /****************************************************************************/
static std::string getLaneID(const std::string &vehicleID)
Definition: Vehicle.cpp:166
static std::vector< TraCIBestLanesData > getBestLanes(const std::string &vehicleID)
Definition: Vehicle.cpp:343
std::map< std::string, TraCIResults > SubscriptionResults
{object->{variable->value}}
Definition: TraCIDefs.h:199
static void setStop(const std::string &vehicleID, const std::string &edgeID, double pos=1., int laneIndex=0, double duration=INVALID_DOUBLE_VALUE, int flags=STOP_DEFAULT, double startPos=INVALID_DOUBLE_VALUE, double until=INVALID_DOUBLE_VALUE)
Definition: Vehicle.cpp:727
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:1222
Representation of a vehicle in the micro simulation.
Definition: MSVehicle.h:79
#define LIBSUMO_SUBSCRIPTION_API
Definition: TraCIDefs.h:44
static void setLine(const std::string &vehicleID, const std::string &line)
Definition: Vehicle.cpp:1386
static void updateBestLanes(const std::string &vehicleID)
Definition: Vehicle.cpp:1189
static double getSpeedWithoutTraCI(const std::string &vehicleID)
Definition: Vehicle.cpp:118
static std::string getRoadID(const std::string &vehicleID)
Definition: Vehicle.cpp:159
static void setRoute(const std::string &vehicleID, const std::vector< std::string > &edgeIDs)
Definition: Vehicle.cpp:1175
static int getPersonNumber(const std::string &vehicleID)
Definition: Vehicle.cpp:264
static double getAcceleration(const std::string &vehicleID)
Definition: Vehicle.cpp:111
static void deactivateGapControl(const std::string &vehicleID)
Definition: Vehicle.cpp:1112
static void setParameter(const std::string &vehicleID, const std::string &key, const std::string &value)
Definition: Vehicle.cpp:1508
static double getSlope(const std::string &vehicleID)
Definition: Vehicle.cpp:152
static std::string getTypeID(const std::string &vehicleID)
Definition: Vehicle.cpp:180
static void setRoutingMode(const std::string &vehicleID, int routingMode)
Definition: Vehicle.cpp:1141
static double getCOEmission(const std::string &vehicleID)
Definition: Vehicle.cpp:222
static void setSpeedMode(const std::string &vehicleID, int speedMode)
Definition: Vehicle.cpp:1131
static std::vector< std::string > getVia(const std::string &vehicleID)
Definition: Vehicle.cpp:557
static void rerouteParkingArea(const std::string &vehicleID, const std::string &parkingAreaID)
Definition: Vehicle.cpp:794
std::map< std::string, SubscriptionResults > ContextSubscriptionResults
Definition: TraCIDefs.h:200
static TraCIPosition getPosition3D(const std::string &vehicleID)
Definition: Vehicle.cpp:139
static void setRouteID(const std::string &vehicleID, const std::string &routeID)
Definition: Vehicle.cpp:1155
static double getAngle(const std::string &vehicleID)
Definition: Vehicle.cpp:145
static std::shared_ptr< VariableWrapper > makeWrapper()
Definition: Vehicle.cpp:1563
static ContextSubscriptionResults myContextSubscriptionResults
Definition: Vehicle.h:202
static std::string getLine(const std::string &vehicleID)
Definition: Vehicle.cpp:552
static double getDistance(const std::string &vehicleID)
Definition: Vehicle.cpp:459
static double getNoiseEmission(const std::string &vehicleID)
Definition: Vehicle.cpp:252
The car-following model and parameter.
Definition: MSVehicleType.h:66
static std::pair< int, int > getLaneChangeState(const std::string &vehicleID, int direction)
Definition: Vehicle.cpp:563
static double getNOxEmission(const std::string &vehicleID)
Definition: Vehicle.cpp:240
static void rerouteTraveltime(const std::string &vehicleID)
Definition: Vehicle.cpp:1248
static double getEffort(const std::string &vehicleID, double time, const std::string &edgeID)
Definition: Vehicle.cpp:309
LIBSUMO_VEHICLE_TYPE_SETTER static LIBSUMO_SUBSCRIPTION_API void storeShape(const std::string &id, PositionVector &shape)
Saves the shape of the requested object in the given container.
Definition: Vehicle.cpp:1557
static std::vector< std::string > getPersonIDList(const std::string &vehicleID)
Definition: Vehicle.cpp:269
static double getWaitingTime(const std::string &vehicleID)
Definition: Vehicle.cpp:288
static double getLastActionTime(const std::string &vehicleID)
Definition: Vehicle.cpp:655
static SubscriptionResults mySubscriptionResults
Definition: Vehicle.h:201
static double getCO2Emission(const std::string &vehicleID)
Definition: Vehicle.cpp:216
static const MSVehicleType & getVehicleType(const std::string &vehicleID)
Definition: Vehicle.cpp:606
static void resume(const std::string &vehicleID)
Definition: Vehicle.cpp:804
#define INVALID_DOUBLE_VALUE
Definition: TraCIDefs.h:42
static std::vector< TraCINextTLSData > getNextTLS(const std::string &vehicleID)
Definition: Vehicle.cpp:369
static int getSpeedMode(const std::string &vehicleID)
Definition: Vehicle.cpp:537
static int getRouteIndex(const std::string &vehicleID)
Definition: Vehicle.cpp:192
#define LIBSUMO_VEHICLE_TYPE_GETTER
Definition: VehicleType.h:30
Representation of a vehicle.
Definition: SUMOVehicle.h:60
static void setLaneChangeMode(const std::string &vehicleID, int laneChangeMode)
Definition: Vehicle.cpp:1136
static void setVia(const std::string &vehicleID, const std::vector< std::string > &via)
Definition: Vehicle.cpp:1392
static double getLateralLanePosition(const std::string &vehicleID)
Definition: Vehicle.cpp:210
static double getHCEmission(const std::string &vehicleID)
Definition: Vehicle.cpp:228
A list of positions.
static bool isOnInit(const std::string &vehicleID)
Definition: Vehicle.cpp:80
static void add(const std::string &vehicleID, const std::string &routeID, const std::string &typeID="DEFAULT_VEHTYPE", const std::string &depart="now", const std::string &departLane="first", const std::string &departPos="base", const std::string &departSpeed="0", const std::string &arrivalLane="current", const std::string &arrivalPos="max", const std::string &arrivalSpeed="current", const std::string &fromTaz="", const std::string &toTaz="", const std::string &line="", int personCapacity=4, int personNumber=0)
Definition: Vehicle.cpp:879
static double getFuelConsumption(const std::string &vehicleID)
Definition: Vehicle.cpp:246
C++ TraCI client API implementation.
Definition: Helper.h:103
static double getLanePosition(const std::string &vehicleID)
Definition: Vehicle.cpp:204
static std::vector< std::string > getRoute(const std::string &vehicleID)
Definition: Vehicle.cpp:325
static void moveTo(const std::string &vehicleID, const std::string &laneID, double position)
Definition: Vehicle.cpp:1276
static void changeLane(const std::string &vehicleID, int laneIndex, double duration)
Definition: Vehicle.cpp:849
static std::vector< std::string > getIDList()
Definition: Vehicle.cpp:86
static double getAccumulatedWaitingTime(const std::string &vehicleID)
Definition: Vehicle.cpp:294
static bool handleVariable(const std::string &objID, const int variable, VariableWrapper *wrapper)
Definition: Vehicle.cpp:1569
static void setSpeed(const std::string &vehicleID, double speed)
Definition: Vehicle.cpp:1120
static std::string getRouteID(const std::string &vehicleID)
Definition: Vehicle.cpp:186
static TraCIPosition getPosition(const std::string &vehicleID, const bool includeZ=false)
Definition: Vehicle.cpp:125
static int getLaneChangeMode(const std::string &vehicleID)
Definition: Vehicle.cpp:542
Definition: Edge.cpp:30
static double getAdaptedTraveltime(const std::string &vehicleID, double time, const std::string &edgeID)
Definition: Vehicle.cpp:300
static std::string getParameter(const std::string &vehicleID, const std::string &key)
Definition: Vehicle.cpp:574
static int getLaneIndex(const std::string &vehicleID)
Definition: Vehicle.cpp:173
static int getIDCount()
Definition: Vehicle.cpp:98
static void changeTarget(const std::string &vehicleID, const std::string &edgeID)
Definition: Vehicle.cpp:823
static double getAllowedSpeed(const std::string &vehicleID)
Definition: Vehicle.cpp:520
static double getPMxEmission(const std::string &vehicleID)
Definition: Vehicle.cpp:234
static void setSignals(const std::string &vehicleID, int signals)
Definition: Vehicle.cpp:1263
static bool isRouteValid(const std::string &vehicleID)
Definition: Vehicle.cpp:318
static void moveToXY(const std::string &vehicleID, const std::string &edgeID, const int laneIndex, const double x, const double y, double angle=INVALID_DOUBLE_VALUE, const int keepRoute=1)
Definition: Vehicle.cpp:987
static double getDrivingDistance2D(const std::string &vehicleID, double x, double y)
Definition: Vehicle.cpp:502
static std::pair< std::string, double > getLeader(const std::string &vehicleID, double dist=0.)
Definition: Vehicle.cpp:274
static int getRoutingMode(const std::string &vehicleID)
Definition: Vehicle.cpp:547
static void slowDown(const std::string &vehicleID, double speed, double duration)
Definition: Vehicle.cpp:1089
#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:1196
static void changeLaneRelative(const std::string &vehicleID, int laneChange, double duration)
Definition: Vehicle.cpp:857
Vehicle()=delete
invalidated standard constructor
static MSVehicle * getVehicle(const std::string &id)
Definition: Vehicle.cpp:60
static double getElectricityConsumption(const std::string &vehicleID)
Definition: Vehicle.cpp:258
static void setType(const std::string &vehicleID, const std::string &typeID)
Definition: Vehicle.cpp:1146
static double getDrivingDistance(const std::string &vehicleID, const std::string &edgeID, double position, int laneIndex=0)
Definition: Vehicle.cpp:486
#define STOP_DEFAULT
A 3D-position.
Definition: TraCIDefs.h:107
static int getSignals(const std::string &vehicleID)
Definition: Vehicle.cpp:337
static void changeSublane(const std::string &vehicleID, double latDist)
Definition: Vehicle.cpp:873
static double getSpeed(const std::string &vehicleID)
Definition: Vehicle.cpp:104
static int getStopState(const std::string &vehicleID)
Definition: Vehicle.cpp:442
static bool isVisible(const SUMOVehicle *veh)
Definition: Vehicle.cpp:74
static std::vector< TraCINextStopData > getNextStops(const std::string &vehicleID)
Definition: Vehicle.cpp:402
static void openGap(const std::string &vehicleID, double newTimeHeadway, double newSpaceHeadway, double duration, double changeRate, double maxDecel)
Definition: Vehicle.cpp:1098
#define LIBSUMO_VEHICLE_TYPE_SETTER
Definition: VehicleType.h:53
static void rerouteEffort(const std::string &vehicleID)
Definition: Vehicle.cpp:1256