Eclipse SUMO - Simulation of Urban MObility
Simulation.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-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 // C++ TraCI client API implementation
15 /****************************************************************************/
16 #ifndef Simulation_h
17 #define Simulation_h
18 
19 
20 // ===========================================================================
21 // included modules
22 // ===========================================================================
23 #include <config.h>
24 
25 #include <vector>
26 #include <libsumo/TraCIDefs.h>
27 #include <libsumo/TraCIConstants.h>
28 
29 
30 // ===========================================================================
31 // class declarations
32 // ===========================================================================
33 namespace libsumo {
34 class VariableWrapper;
35 }
36 
37 
38 // ===========================================================================
39 // class definitions
40 // ===========================================================================
45 namespace libsumo {
46 class Simulation {
47 public:
49  static void load(const std::vector<std::string>& args);
50 
52  static bool isLoaded();
53 
55  static void close();
56 
58  static void step(const double time = 0.);
59 
60  static int getCurrentTime();
61  static double getTime();
62 
63  static int getLoadedNumber();
64  static std::vector<std::string> getLoadedIDList();
65  static int getDepartedNumber();
66  static std::vector<std::string> getDepartedIDList();
67  static int getArrivedNumber();
68  static std::vector<std::string> getArrivedIDList();
70  static std::vector<std::string> getParkingStartingVehiclesIDList();
71  static int getParkingEndingVehiclesNumber();
72  static std::vector<std::string> getParkingEndingVehiclesIDList();
73  static int getStopStartingVehiclesNumber();
74  static std::vector<std::string> getStopStartingVehiclesIDList();
75  static int getStopEndingVehiclesNumber();
76  static std::vector<std::string> getStopEndingVehiclesIDList();
77  static int getCollidingVehiclesNumber();
78  static std::vector<std::string> getCollidingVehiclesIDList();
80  static std::vector<std::string> getEmergencyStoppingVehiclesIDList();
81  static int getStartingTeleportNumber();
82  static std::vector<std::string> getStartingTeleportIDList();
83  static int getEndingTeleportNumber();
84  static std::vector<std::string> getEndingTeleportIDList();
85 
86  static std::vector<std::string> getBusStopIDList();
87  static int getBusStopWaiting(const std::string& id);
88 
91  static std::vector<std::string> getBusStopWaitingIDList(const std::string& id);
92 
93 
94  static double getDeltaT();
95 
97 
98  static TraCIPosition convert2D(const std::string& edgeID, double pos, int laneIndex = 0, bool toGeo = false);
99 
100  static TraCIPosition convert3D(const std::string& edgeID, double pos, int laneIndex = 0, bool toGeo = false);
101 
102  static TraCIRoadPosition convertRoad(double x, double y, bool isGeo = false, const std::string& vClass = "ignoring");
103 
104  static TraCIPosition convertGeo(double x, double y, bool fromGeo = false);
105 
106  static double getDistance2D(double x1, double y1, double x2, double y2, bool isGeo = false, bool isDriving = false);
107  static double getDistanceRoad(const std::string& edgeID1, double pos1, const std::string& edgeID2, double pos2, bool isDriving = false);
108 
109  static int getMinExpectedNumber();
110 
111  static TraCIStage findRoute(const std::string& fromEdge, const std::string& toEdge, const std::string& vType = "", const double depart = -1., const int routingMode = 0);
112 
113  /* @note: default arrivalPos is not -1 because this would lead to very short walks when moving against the edge direction,
114  * instead the middle of the edge is used. DepartPos is treated differently so that 1-edge walks do not have length 0.
115  */
116  static std::vector<TraCIStage> findIntermodalRoute(const std::string& fromEdge, const std::string& toEdge, const std::string& modes = "",
117  double depart = -1., const int routingMode = 0, double speed = -1., double walkFactor = -1.,
118  double departPos = 0, double arrivalPos = INVALID_DOUBLE_VALUE, const double departPosLat = 0,
119  const std::string& pType = "", const std::string& vType = "", const std::string& destStop = "");
120 
121  static std::string getParameter(const std::string& objectID, const std::string& key);
122 
123  static void clearPending(const std::string& routeID = "");
124  static void saveState(const std::string& fileName);
125  static void writeMessage(const std::string& msg);
126 
127  static void subscribe(const std::vector<int>& varIDs = std::vector<int>(), double begin = INVALID_DOUBLE_VALUE, double end = INVALID_DOUBLE_VALUE);
128  static const TraCIResults getSubscriptionResults();
129 
130  static std::shared_ptr<VariableWrapper> makeWrapper();
131 
132  static bool handleVariable(const std::string& objID, const int variable, VariableWrapper* wrapper);
133 
134 private:
137 
139  Simulation() = delete;
140 };
141 
142 
143 }
144 
145 
146 #endif
147 
148 /****************************************************************************/
libsumo::Simulation::getEndingTeleportNumber
static int getEndingTeleportNumber()
Definition: Simulation.cpp:250
libsumo::Simulation::step
static void step(const double time=0.)
Advances by one step (or up to the given time)
Definition: Simulation.cpp:79
TraCIPositionVector
A list of positions.
libsumo::INVALID_DOUBLE_VALUE
TRACI_CONST double INVALID_DOUBLE_VALUE
Definition: TraCIConstants.h:362
libsumo::Simulation::getCollidingVehiclesNumber
static int getCollidingVehiclesNumber()
Definition: Simulation.cpp:214
libsumo::TraCIResults
std::map< int, std::shared_ptr< TraCIResult > > TraCIResults
{variable->value}
Definition: TraCIDefs.h:201
libsumo::TraCIPosition
A 3D-position.
Definition: TraCIDefs.h:109
libsumo::VariableWrapper
Definition: Subscription.h:132
libsumo::Simulation
Definition: Simulation.h:46
libsumo::Simulation::getMinExpectedNumber
static int getMinExpectedNumber()
Definition: Simulation.cpp:311
libsumo::Simulation::getStopStartingVehiclesIDList
static std::vector< std::string > getStopStartingVehiclesIDList()
Definition: Simulation.cpp:196
libsumo::Simulation::getNetBoundary
static TraCIPositionVector getNetBoundary()
Definition: Simulation.cpp:297
libsumo::Simulation::load
static void load(const std::vector< std::string > &args)
load a simulation with the given arguments
Definition: Simulation.cpp:63
libsumo::Simulation::Simulation
Simulation()=delete
invalidated standard constructor
libsumo::ContextSubscriptionResults
std::map< std::string, SubscriptionResults > ContextSubscriptionResults
Definition: TraCIDefs.h:204
libsumo::Simulation::convertRoad
static TraCIRoadPosition convertRoad(double x, double y, bool isGeo=false, const std::string &vClass="ignoring")
Definition: Simulation.cpp:342
libsumo::Simulation::getParkingEndingVehiclesNumber
static int getParkingEndingVehiclesNumber()
Definition: Simulation.cpp:178
libsumo::Simulation::getStopEndingVehiclesNumber
static int getStopEndingVehiclesNumber()
Definition: Simulation.cpp:202
libsumo::Simulation::convert2D
static TraCIPosition convert2D(const std::string &edgeID, double pos, int laneIndex=0, bool toGeo=false)
Definition: Simulation.cpp:321
libsumo::Simulation::clearPending
static void clearPending(const std::string &routeID="")
Definition: Simulation.cpp:672
libsumo::Simulation::getDistance2D
static double getDistance2D(double x1, double y1, double x2, double y2, bool isGeo=false, bool isDriving=false)
Definition: Simulation.cpp:376
libsumo
Definition: Edge.cpp:29
libsumo::Simulation::getSubscriptionResults
static const TraCIResults getSubscriptionResults()
Definition: Simulation.cpp:112
libsumo::Simulation::getArrivedNumber
static int getArrivedNumber()
Definition: Simulation.cpp:154
libsumo::Simulation::isLoaded
static bool isLoaded()
return whether a simulation (network) is present
Definition: Simulation.cpp:73
libsumo::Simulation::writeMessage
static void writeMessage(const std::string &msg)
Definition: Simulation.cpp:683
libsumo::Simulation::getBusStopWaitingIDList
static std::vector< std::string > getBusStopWaitingIDList(const std::string &id)
Returns the IDs of the transportables on a given bus stop.
Definition: Simulation.cpp:279
TraCIConstants.h
libsumo::Simulation::getStartingTeleportIDList
static std::vector< std::string > getStartingTeleportIDList()
Definition: Simulation.cpp:244
libsumo::Simulation::getDepartedIDList
static std::vector< std::string > getDepartedIDList()
Definition: Simulation.cpp:148
libsumo::Simulation::getTime
static double getTime()
Definition: Simulation.cpp:124
libsumo::TraCIStage
Definition: TraCIDefs.h:344
libsumo::Simulation::convertGeo
static TraCIPosition convertGeo(double x, double y, bool fromGeo=false)
Definition: Simulation.cpp:364
libsumo::Simulation::close
static void close()
close simulation
Definition: Simulation.cpp:94
libsumo::Simulation::getArrivedIDList
static std::vector< std::string > getArrivedIDList()
Definition: Simulation.cpp:160
libsumo::Simulation::getDistanceRoad
static double getDistanceRoad(const std::string &edgeID1, double pos1, const std::string &edgeID2, double pos2, bool isDriving=false)
Definition: Simulation.cpp:409
libsumo::Simulation::getCurrentTime
static int getCurrentTime()
Definition: Simulation.cpp:118
libsumo::Simulation::makeWrapper
static std::shared_ptr< VariableWrapper > makeWrapper()
Definition: Simulation.cpp:689
libsumo::Simulation::getEmergencyStoppingVehiclesNumber
static int getEmergencyStoppingVehiclesNumber()
Definition: Simulation.cpp:226
libsumo::Simulation::convert3D
static TraCIPosition convert3D(const std::string &edgeID, double pos, int laneIndex=0, bool toGeo=false)
Definition: Simulation.cpp:332
libsumo::Simulation::getParkingStartingVehiclesIDList
static std::vector< std::string > getParkingStartingVehiclesIDList()
Definition: Simulation.cpp:172
libsumo::Simulation::getDeltaT
static double getDeltaT()
Definition: Simulation.cpp:291
libsumo::Simulation::getDepartedNumber
static int getDepartedNumber()
Definition: Simulation.cpp:142
libsumo::Simulation::getStartingTeleportNumber
static int getStartingTeleportNumber()
Definition: Simulation.cpp:238
libsumo::Simulation::getBusStopIDList
static std::vector< std::string > getBusStopIDList()
Definition: Simulation.cpp:261
libsumo::Simulation::getParkingEndingVehiclesIDList
static std::vector< std::string > getParkingEndingVehiclesIDList()
Definition: Simulation.cpp:184
libsumo::Simulation::mySubscriptionResults
static SubscriptionResults mySubscriptionResults
Definition: Simulation.h:135
libsumo::Simulation::getStopStartingVehiclesNumber
static int getStopStartingVehiclesNumber()
Definition: Simulation.cpp:190
libsumo::Simulation::getBusStopWaiting
static int getBusStopWaiting(const std::string &id)
Definition: Simulation.cpp:270
libsumo::Simulation::myContextSubscriptionResults
static ContextSubscriptionResults myContextSubscriptionResults
Definition: Simulation.h:136
libsumo::Simulation::getLoadedIDList
static std::vector< std::string > getLoadedIDList()
Definition: Simulation.cpp:136
libsumo::Simulation::subscribe
static void subscribe(const std::vector< int > &varIDs=std::vector< int >(), double begin=INVALID_DOUBLE_VALUE, double end=INVALID_DOUBLE_VALUE)
Definition: Simulation.cpp:106
libsumo::Simulation::saveState
static void saveState(const std::string &fileName)
Definition: Simulation.cpp:678
libsumo::Simulation::findIntermodalRoute
static std::vector< TraCIStage > findIntermodalRoute(const std::string &fromEdge, const std::string &toEdge, const std::string &modes="", double depart=-1., const int routingMode=0, double speed=-1., double walkFactor=-1., double departPos=0, double arrivalPos=INVALID_DOUBLE_VALUE, const double departPosLat=0, const std::string &pType="", const std::string &vType="", const std::string &destStop="")
Definition: Simulation.cpp:480
libsumo::Simulation::getStopEndingVehiclesIDList
static std::vector< std::string > getStopEndingVehiclesIDList()
Definition: Simulation.cpp:208
libsumo::Simulation::getLoadedNumber
static int getLoadedNumber()
Definition: Simulation.cpp:130
libsumo::Simulation::getParameter
static std::string getParameter(const std::string &objectID, const std::string &key)
Definition: Simulation.cpp:613
libsumo::TraCIRoadPosition
An edgeId, position and laneIndex.
Definition: TraCIDefs.h:121
config.h
libsumo::Simulation::getCollidingVehiclesIDList
static std::vector< std::string > getCollidingVehiclesIDList()
Definition: Simulation.cpp:220
libsumo::Simulation::handleVariable
static bool handleVariable(const std::string &objID, const int variable, VariableWrapper *wrapper)
Definition: Simulation.cpp:695
TraCIDefs.h
libsumo::Simulation::findRoute
static TraCIStage findRoute(const std::string &fromEdge, const std::string &toEdge, const std::string &vType="", const double depart=-1., const int routingMode=0)
Definition: Simulation.cpp:438
libsumo::SubscriptionResults
std::map< std::string, TraCIResults > SubscriptionResults
{object->{variable->value}}
Definition: TraCIDefs.h:203
libsumo::Simulation::getEndingTeleportIDList
static std::vector< std::string > getEndingTeleportIDList()
Definition: Simulation.cpp:256
libsumo::Simulation::getEmergencyStoppingVehiclesIDList
static std::vector< std::string > getEmergencyStoppingVehiclesIDList()
Definition: Simulation.cpp:232
libsumo::Simulation::getParkingStartingVehiclesNumber
static int getParkingStartingVehiclesNumber()
Definition: Simulation.cpp:166