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-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 /****************************************************************************/
15 // C++ TraCI client API implementation
16 /****************************************************************************/
17 #ifndef Simulation_h
18 #define Simulation_h
19 
20 
21 // ===========================================================================
22 // included modules
23 // ===========================================================================
24 #include <config.h>
25 
26 #include <vector>
27 #include <libsumo/TraCIDefs.h>
29 
30 
31 // ===========================================================================
32 // class declarations
33 // ===========================================================================
34 namespace libsumo {
35 class VariableWrapper;
36 }
37 
38 
39 // ===========================================================================
40 // class definitions
41 // ===========================================================================
46 namespace libsumo {
47 class Simulation {
48 public:
50  static void load(const std::vector<std::string>& args);
51 
53  static bool isLoaded();
54 
56  static void close();
57 
59  static void step(const double time = 0.);
60 
61  static int getCurrentTime();
62  static double getTime();
63 
64  static int getLoadedNumber();
65  static std::vector<std::string> getLoadedIDList();
66  static int getDepartedNumber();
67  static std::vector<std::string> getDepartedIDList();
68  static int getArrivedNumber();
69  static std::vector<std::string> getArrivedIDList();
71  static std::vector<std::string> getParkingStartingVehiclesIDList();
72  static int getParkingEndingVehiclesNumber();
73  static std::vector<std::string> getParkingEndingVehiclesIDList();
74  static int getStopStartingVehiclesNumber();
75  static std::vector<std::string> getStopStartingVehiclesIDList();
76  static int getStopEndingVehiclesNumber();
77  static std::vector<std::string> getStopEndingVehiclesIDList();
78  static int getCollidingVehiclesNumber();
79  static std::vector<std::string> getCollidingVehiclesIDList();
81  static std::vector<std::string> getEmergencyStoppingVehiclesIDList();
82  static int getStartingTeleportNumber();
83  static std::vector<std::string> getStartingTeleportIDList();
84  static int getEndingTeleportNumber();
85  static std::vector<std::string> getEndingTeleportIDList();
86 
87  static int getBusStopWaiting(const std::string& id);
88 
89  static double getDeltaT();
90 
92 
93  static TraCIPosition convert2D(const std::string& edgeID, double pos, int laneIndex = 0, bool toGeo = false);
94 
95  static TraCIPosition convert3D(const std::string& edgeID, double pos, int laneIndex = 0, bool toGeo = false);
96 
97  static TraCIRoadPosition convertRoad(double x, double y, bool isGeo = false);
98 
99  static TraCIPosition convertGeo(double x, double y, bool fromGeo = false);
100 
101  static double getDistance2D(double x1, double y1, double x2, double y2, bool isGeo = false, bool isDriving = false);
102  static double getDistanceRoad(const std::string& edgeID1, double pos1, const std::string& edgeID2, double pos2, bool isDriving = false);
103 
104  static int getMinExpectedNumber();
105 
106  static TraCIStage findRoute(const std::string& fromEdge, const std::string& toEdge, const std::string& vType = "", const double depart = -1., const int routingMode = 0);
107 
108  /* @note: default arrivalPos is not -1 because this would lead to very short walks when moving against the edge direction,
109  * instead the middle of the edge is used. DepartPos is treated differently so that 1-edge walks do not have length 0.
110  */
111  static std::vector<TraCIStage> findIntermodalRoute(const std::string& fromEdge, const std::string& toEdge, const std::string& modes = "",
112  double depart = -1., const int routingMode = 0, double speed = -1., double walkFactor = -1.,
113  double departPos = 0, double arrivalPos = INVALID_DOUBLE_VALUE, const double departPosLat = 0,
114  const std::string& pType = "", const std::string& vType = "", const std::string& destStop = "");
115 
116  static std::string getParameter(const std::string& objectID, const std::string& key);
117 
118  static void clearPending(const std::string& routeID = "");
119  static void saveState(const std::string& fileName);
120 
122  static void subscribe(const std::vector<int>& vars = std::vector<int>(), double beginTime = INVALID_DOUBLE_VALUE, double endTime = INVALID_DOUBLE_VALUE);
123  static const TraCIResults getSubscriptionResults();
124 
125  static std::shared_ptr<VariableWrapper> makeWrapper();
126 
127  static bool handleVariable(const std::string& objID, const int variable, VariableWrapper* wrapper);
128 
129 private:
132 
134  Simulation() = delete;
135 };
136 
137 
138 }
139 
140 
141 #endif
142 
143 /****************************************************************************/
std::map< std::string, TraCIResults > SubscriptionResults
{object->{variable->value}}
Definition: TraCIDefs.h:199
static SubscriptionResults mySubscriptionResults
Definition: Simulation.h:130
static int getStopStartingVehiclesNumber()
Definition: Simulation.cpp:193
#define LIBSUMO_SUBSCRIPTION_API
Definition: TraCIDefs.h:44
static void step(const double time=0.)
Advances by one step (or up to the given time)
Definition: Simulation.cpp:80
An edgeId, position and laneIndex.
Definition: TraCIDefs.h:119
static std::vector< std::string > getParkingEndingVehiclesIDList()
Definition: Simulation.cpp:187
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:460
static double getDeltaT()
Definition: Simulation.cpp:275
static int getDepartedNumber()
Definition: Simulation.cpp:145
static std::vector< std::string > getEmergencyStoppingVehiclesIDList()
Definition: Simulation.cpp:235
static void load(const std::vector< std::string > &args)
load a simulation with the given arguments
Definition: Simulation.cpp:64
std::map< int, std::shared_ptr< TraCIResult > > TraCIResults
{variable->value}
Definition: TraCIDefs.h:197
static TraCIRoadPosition convertRoad(double x, double y, bool isGeo=false)
Definition: Simulation.cpp:326
static std::vector< std::string > getDepartedIDList()
Definition: Simulation.cpp:151
static std::string getParameter(const std::string &objectID, const std::string &key)
Definition: Simulation.cpp:591
static TraCIPosition convert2D(const std::string &edgeID, double pos, int laneIndex=0, bool toGeo=false)
Definition: Simulation.cpp:305
Simulation()=delete
invalidated standard constructor
std::map< std::string, SubscriptionResults > ContextSubscriptionResults
Definition: TraCIDefs.h:200
static TraCIPosition convertGeo(double x, double y, bool fromGeo=false)
Definition: Simulation.cpp:344
static double getDistance2D(double x1, double y1, double x2, double y2, bool isGeo=false, bool isDriving=false)
Definition: Simulation.cpp:356
#define INVALID_DOUBLE_VALUE
Definition: TraCIDefs.h:42
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:418
static int getParkingStartingVehiclesNumber()
Definition: Simulation.cpp:169
static double getTime()
Definition: Simulation.cpp:127
static bool handleVariable(const std::string &objID, const int variable, VariableWrapper *wrapper)
Definition: Simulation.cpp:656
static std::vector< std::string > getLoadedIDList()
Definition: Simulation.cpp:139
static TraCIPositionVector getNetBoundary()
Definition: Simulation.cpp:281
static LIBSUMO_SUBSCRIPTION_API void subscribe(const std::vector< int > &vars=std::vector< int >(), double beginTime=INVALID_DOUBLE_VALUE, double endTime=INVALID_DOUBLE_VALUE)
Definition: Simulation.cpp:109
static void close()
close simulation
Definition: Simulation.cpp:95
static std::vector< std::string > getStopStartingVehiclesIDList()
Definition: Simulation.cpp:199
static int getEndingTeleportNumber()
Definition: Simulation.cpp:253
static std::vector< std::string > getStopEndingVehiclesIDList()
Definition: Simulation.cpp:211
static double getDistanceRoad(const std::string &edgeID1, double pos1, const std::string &edgeID2, double pos2, bool isDriving=false)
Definition: Simulation.cpp:389
static std::vector< std::string > getStartingTeleportIDList()
Definition: Simulation.cpp:247
static void saveState(const std::string &fileName)
Definition: Simulation.cpp:644
Definition: Edge.cpp:30
static std::vector< std::string > getParkingStartingVehiclesIDList()
Definition: Simulation.cpp:175
static int getCollidingVehiclesNumber()
Definition: Simulation.cpp:217
static int getBusStopWaiting(const std::string &id)
Definition: Simulation.cpp:265
static int getStartingTeleportNumber()
Definition: Simulation.cpp:241
static const TraCIResults getSubscriptionResults()
Definition: Simulation.cpp:115
static std::vector< std::string > getEndingTeleportIDList()
Definition: Simulation.cpp:259
static int getParkingEndingVehiclesNumber()
Definition: Simulation.cpp:181
static bool isLoaded()
return whether a simulation (network) is present
Definition: Simulation.cpp:74
static int getEmergencyStoppingVehiclesNumber()
Definition: Simulation.cpp:229
static ContextSubscriptionResults myContextSubscriptionResults
Definition: Simulation.h:131
static int getArrivedNumber()
Definition: Simulation.cpp:157
static int getMinExpectedNumber()
Definition: Simulation.cpp:295
static std::vector< std::string > getCollidingVehiclesIDList()
Definition: Simulation.cpp:223
static void clearPending(const std::string &routeID="")
Definition: Simulation.cpp:638
A 3D-position.
Definition: TraCIDefs.h:107
static std::shared_ptr< VariableWrapper > makeWrapper()
Definition: Simulation.cpp:650
static std::vector< std::string > getArrivedIDList()
Definition: Simulation.cpp:163
static int getLoadedNumber()
Definition: Simulation.cpp:133
static int getCurrentTime()
Definition: Simulation.cpp:121
A list of positions.
static TraCIPosition convert3D(const std::string &edgeID, double pos, int laneIndex=0, bool toGeo=false)
Definition: Simulation.cpp:316
static int getStopEndingVehiclesNumber()
Definition: Simulation.cpp:205