SUMO - Simulation of Urban MObility
SUMOVehicle.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-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 /****************************************************************************/
17 // Abstract base class for vehicle representations
18 /****************************************************************************/
19 #ifndef SUMOVehicle_h
20 #define SUMOVehicle_h
21 
22 
23 // ===========================================================================
24 // included modules
25 // ===========================================================================
26 #include <config.h>
27 
28 #include <vector>
29 #include <typeinfo>
30 #include <utils/common/SUMOTime.h>
31 #include <utils/common/Named.h>
35 
36 
37 // ===========================================================================
38 // class declarations
39 // ===========================================================================
40 class MSVehicleType;
41 class MSRoute;
42 class MSEdge;
43 class MSLane;
44 class MSVehicleDevice;
45 class MSPerson;
46 class MSTransportable;
47 class MSParkingArea;
49 
50 typedef std::vector<const MSEdge*> ConstMSEdgeVector;
51 
52 
53 // ===========================================================================
54 // class definitions
55 // ===========================================================================
60 class SUMOVehicle {
61 public:
62  typedef long long int NumericalID;
63 
64  // XXX: This definition was introduced to make the MSVehicle's previousSpeed
65  // available in the context of MSMoveReminder::notifyMove(). Another solution
66  // would be to modify notifyMove()'s interface to work with MSVehicle instead
67  // of SUMOVehicle (it is only called with MSVehicles!). Refs. #2579
71  virtual double getPreviousSpeed() const = 0;
72 
74  virtual ~SUMOVehicle() {}
75 
79  virtual const std::string& getID() const = 0;
80 
84  virtual double getPositionOnLane() const = 0;
85 
89  virtual double getBackPositionOnLane(const MSLane* lane) const = 0;
90 
95  virtual double getLateralPositionOnLane() const = 0;
96 
100  virtual double getAngle() const = 0;
101 
109  virtual Position getPosition(const double offset = 0) const = 0;
110 
114  virtual double getMaxSpeed() const = 0;
115 
119  virtual double getSpeed() const = 0;
120 
124  virtual MSLane* getLane() const = 0;
125 
129  virtual const MSVehicleType& getVehicleType() const = 0;
130 
134  virtual SUMOVehicleClass getVClass() const = 0;
135 
137  virtual const MSRoute& getRoute() const = 0;
138 
146  virtual const MSEdge* succEdge(int nSuccs) const = 0;
147 
160  virtual bool replaceRouteEdges(ConstMSEdgeVector& edges, double cost, double savings, const std::string& info, bool onInit = false, bool check = false, bool removeStops = true) = 0;
161 
163  virtual bool replaceRoute(const MSRoute* route, const std::string& info, bool onInit = false, int offset = 0, bool addStops = true, bool removeStops = true) = 0;
164 
174  virtual void reroute(SUMOTime t, const std::string& info, SUMOAbstractRouter<MSEdge, SUMOVehicle>& router, const bool onInit = false, const bool withTaz = false) = 0;
175 
181  virtual bool hasValidRoute(std::string& msg, const MSRoute* route = 0) const = 0;
182 
183 
187  virtual const ConstMSEdgeVector::const_iterator& getCurrentRouteEdge() const = 0;
188 
192  virtual double getAcceleration() const = 0;
193 
197  virtual double getSlope() const = 0;
198 
203  virtual const MSEdge* getEdge() const = 0;
204 
209  virtual const SUMOVehicleParameter& getParameter() const = 0;
210 
213  virtual void replaceParameter(const SUMOVehicleParameter* newParameter) = 0;
214 
220  virtual void onDepart() = 0;
221 
225  virtual bool isOnRoad() const = 0;
226 
230  virtual bool isFrontOnLane(const MSLane*) const = 0;
231 
235  virtual bool isParking() const = 0;
236 
241  virtual bool isRemoteControlled() const = 0;
242 
247  virtual bool wasRemoteControlled(SUMOTime lookBack = DELTA_T) const = 0;
248 
252  virtual SUMOTime getDeparture() const = 0;
253 
257  virtual double getDepartPos() const = 0;
258 
263  virtual double getArrivalPos() const = 0;
264 
267  virtual void setArrivalPos(double arrivalPos) = 0;
268 
271  virtual bool hasDeparted() const = 0;
272 
275  virtual bool hasArrived() const = 0;
276 
280  virtual int getNumberReroutes() const = 0;
281 
285  virtual const std::vector<MSVehicleDevice*>& getDevices() const = 0;
286 
293  virtual void addPerson(MSTransportable* person) = 0;
294 
301  virtual void addContainer(MSTransportable* container) = 0;
302 
306  virtual int getPersonNumber() const = 0;
307 
311  virtual std::vector<std::string> getPersonIDList() const = 0;
312 
316  virtual int getContainerNumber() const = 0;
317 
319  virtual void removeTransportable(MSTransportable* t) = 0;
320 
322  virtual const std::vector<MSTransportable*>& getPersons() const = 0;
323 
325  virtual const std::vector<MSTransportable*>& getContainers() const = 0;
326 
333  virtual bool addStop(const SUMOVehicleParameter::Stop& stopPar, std::string& errorMsg, SUMOTime untilOffset = 0, bool collision = false,
334  ConstMSEdgeVector::const_iterator* searchStart = 0) = 0;
335 
336 
341  virtual MSParkingArea* getNextParkingArea() = 0;
342 
349  virtual bool replaceParkingArea(MSParkingArea* parkingArea, std::string& errorMsg) = 0;
350 
354  virtual bool isStopped() const = 0;
355 
357  virtual SUMOTime remainingStopDuration() const = 0;
358 
361  virtual bool isStoppedTriggered() const = 0;
362 
364  virtual bool isStoppedInRange(double pos) const = 0;
365 
367  virtual MSVehicleDevice* getDevice(const std::type_info& type) const = 0;
368 
369 
370  virtual double getChosenSpeedFactor() const = 0;
371 
372  virtual void setChosenSpeedFactor(const double factor) = 0;
373 
374  virtual SUMOTime getWaitingTime() const = 0;
375 
376  virtual SUMOTime getAccumulatedWaitingTime() const = 0;
377 
378  virtual SUMOTime getDepartDelay() const = 0;
379 
381  virtual double getBrakeGap() const = 0;
382 
384  virtual double getImpatience() const = 0;
385 
387  virtual bool isSelected() const = 0;
388 
390  // (especially fast comparison in maps which need vehicles as keys)
391  virtual NumericalID getNumericalID() const = 0;
392 
394 
395 
397  virtual void saveState(OutputDevice& out) = 0;
398 
401  virtual void loadState(const SUMOSAXAttributes& attrs, const SUMOTime offset) = 0;
403 };
404 
405 
406 #endif
407 
408 /****************************************************************************/
virtual bool addStop(const SUMOVehicleParameter::Stop &stopPar, std::string &errorMsg, SUMOTime untilOffset=0, bool collision=false, ConstMSEdgeVector::const_iterator *searchStart=0)=0
Adds a stop.
A lane area vehicles can halt at.
Definition: MSParkingArea.h:59
long long int SUMOTime
Definition: SUMOTime.h:36
virtual bool hasDeparted() const =0
Returns whether this vehicle has departed.
virtual double getArrivalPos() const =0
Returns this vehicle&#39;s desired arrivalPos for its current route (may change on reroute) ...
virtual MSParkingArea * getNextParkingArea()=0
virtual SUMOTime remainingStopDuration() const =0
Returns the remaining stop duration for a stopped vehicle or 0.
virtual const std::vector< MSTransportable * > & getPersons() const =0
retrieve riding persons
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types...
virtual MSVehicleDevice * getDevice(const std::type_info &type) const =0
Returns a device of the given type if it exists or 0.
virtual const MSRoute & getRoute() const =0
Returns the current route.
virtual bool isStoppedTriggered() const =0
Returns whether the vehicle is at a stop and waiting for a person or container to continue...
virtual void onDepart()=0
Called when the vehicle is inserted into the network.
virtual const MSEdge * getEdge() const =0
Returns the edge the vehicle is currently at.
virtual void removeTransportable(MSTransportable *t)=0
removes a person or container
virtual MSLane * getLane() const =0
Returns the lane the vehicle is on.
virtual double getBrakeGap() const =0
get distance for coming to a stop (used for rerouting checks)
virtual bool replaceRoute(const MSRoute *route, const std::string &info, bool onInit=false, int offset=0, bool addStops=true, bool removeStops=true)=0
Replaces the current route by the given one.
virtual std::vector< std::string > getPersonIDList() const =0
Returns the list of persons.
SUMOTime DELTA_T
Definition: SUMOTime.cpp:35
virtual double getSlope() const =0
Returns the slope of the road at vehicle&#39;s position.
std::vector< const MSEdge * > ConstMSEdgeVector
Definition: MSEdge.h:72
virtual bool isParking() const =0
Returns the information whether the vehicle is parked.
The car-following model and parameter.
Definition: MSVehicleType.h:66
virtual bool isSelected() const =0
whether this vehicle is selected in the GUI
std::vector< const MSEdge * > ConstMSEdgeVector
Definition: SUMOVehicle.h:48
virtual void addContainer(MSTransportable *container)=0
Adds a container to this vehicle.
virtual const MSEdge * succEdge(int nSuccs) const =0
Returns the nSuccs&#39;th successor of edge the vehicle is currently at.
A road/street connecting two junctions.
Definition: MSEdge.h:75
virtual SUMOVehicleClass getVClass() const =0
Returns the vehicle&#39;s access class.
virtual void replaceParameter(const SUMOVehicleParameter *newParameter)=0
Replaces the vehicle&#39;s parameter.
virtual void setChosenSpeedFactor(const double factor)=0
virtual bool replaceRouteEdges(ConstMSEdgeVector &edges, double cost, double savings, const std::string &info, bool onInit=false, bool check=false, bool removeStops=true)=0
Replaces the current route by the given edges.
virtual void saveState(OutputDevice &out)=0
Saves the states of a vehicle.
Representation of a vehicle.
Definition: SUMOVehicle.h:60
Encapsulated SAX-Attributes.
virtual int getNumberReroutes() const =0
Returns the number of new routes this vehicle got.
virtual bool hasValidRoute(std::string &msg, const MSRoute *route=0) const =0
Validates the current or given route.
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:39
virtual const std::vector< MSVehicleDevice * > & getDevices() const =0
Returns this vehicle&#39;s devices.
virtual SUMOTime getAccumulatedWaitingTime() const =0
virtual bool isFrontOnLane(const MSLane *) const =0
Returns the information whether the front of the vehhicle is on the given lane.
virtual int getPersonNumber() const =0
Returns the number of persons.
virtual bool isRemoteControlled() const =0
Returns the information whether the vehicle is fully controlled via TraCI.
virtual bool isOnRoad() const =0
Returns the information whether the vehicle is on a road (is simulated)
virtual bool wasRemoteControlled(SUMOTime lookBack=DELTA_T) const =0
Returns the information whether the vehicle is fully controlled via TraCI.
virtual bool isStoppedInRange(double pos) const =0
Returns whether the vehicle is stoped in range of the given position.
virtual double getChosenSpeedFactor() const =0
virtual double getMaxSpeed() const =0
Returns the vehicle&#39;s maximum speed.
virtual double getBackPositionOnLane(const MSLane *lane) const =0
Get the vehicle&#39;s back position along the given lane.
virtual double getDepartPos() const =0
Returns this vehicle&#39;s real departure position.
virtual const std::vector< MSTransportable * > & getContainers() const =0
retrieve riding containers
virtual SUMOTime getDepartDelay() const =0
Structure representing possible vehicle parameter.
virtual double getAngle() const =0
Get the vehicle&#39;s angle.
virtual SUMOTime getDeparture() const =0
Returns this vehicle&#39;s real departure time.
virtual bool hasArrived() const =0
Returns whether this vehicle has arrived.
virtual double getPositionOnLane() const =0
Get the vehicle&#39;s position along the lane.
virtual NumericalID getNumericalID() const =0
return the numerical ID which is only for internal usage
virtual const SUMOVehicleParameter & getParameter() const =0
Returns the vehicle&#39;s parameter (including departure definition)
Definition of vehicle stop (position and duration)
virtual double getLateralPositionOnLane() const =0
Get the vehicle&#39;s lateral position on the lane.
Abstract in-vehicle device.
virtual Position getPosition(const double offset=0) const =0
Return current position (x/y, cartesian)
virtual SUMOTime getWaitingTime() const =0
virtual void addPerson(MSTransportable *person)=0
Adds a person to this vehicle.
virtual int getContainerNumber() const =0
Returns the number of containers.
virtual double getImpatience() const =0
Returns this vehicles impatience.
virtual void setArrivalPos(double arrivalPos)=0
Sets this vehicle&#39;s desired arrivalPos for its current route.
virtual bool isStopped() const =0
Returns whether the vehicle is at a stop.
Static storage of an output device and its base (abstract) implementation.
Definition: OutputDevice.h:64
virtual bool replaceParkingArea(MSParkingArea *parkingArea, std::string &errorMsg)=0
Replaces a stop.
virtual void reroute(SUMOTime t, const std::string &info, SUMOAbstractRouter< MSEdge, SUMOVehicle > &router, const bool onInit=false, const bool withTaz=false)=0
Performs a rerouting using the given router.
long long int NumericalID
Definition: SUMOVehicle.h:62
virtual const ConstMSEdgeVector::const_iterator & getCurrentRouteEdge() const =0
Returns an iterator pointing to the current edge in this vehicles route.
virtual double getSpeed() const =0
Returns the vehicle&#39;s current speed.
Representation of a lane in the micro simulation.
Definition: MSLane.h:78
virtual double getPreviousSpeed() const =0
Returns the vehicle&#39;s previous speed.
virtual ~SUMOVehicle()
Destructor.
Definition: SUMOVehicle.h:74
virtual const std::string & getID() const =0
Get the vehicle&#39;s ID.
virtual void loadState(const SUMOSAXAttributes &attrs, const SUMOTime offset)=0
Loads the state of this vehicle from the given description.
virtual double getAcceleration() const =0
Returns the vehicle&#39;s acceleration.
virtual const MSVehicleType & getVehicleType() const =0
Returns the vehicle&#39;s type.