SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
MSBaseVehicle.h
Go to the documentation of this file.
1 /****************************************************************************/
9 // A base class for vehicle implementations
10 /****************************************************************************/
11 // SUMO, Simulation of Urban MObility; see http://sumo.dlr.de/
12 // Copyright (C) 2010-2015 DLR (http://www.dlr.de/) and contributors
13 /****************************************************************************/
14 //
15 // This file is part of SUMO.
16 // SUMO is free software: you can redistribute it and/or modify
17 // it under the terms of the GNU General Public License as published by
18 // the Free Software Foundation, either version 3 of the License, or
19 // (at your option) any later version.
20 //
21 /****************************************************************************/
22 #ifndef MSBaseVehicle_h
23 #define MSBaseVehicle_h
24 
25 
26 // ===========================================================================
27 // included modules
28 // ===========================================================================
29 #ifdef _MSC_VER
30 #include <windows_config.h>
31 #else
32 #include <config.h>
33 #endif
34 
35 #include <iostream>
36 #include <vector>
37 #include <set>
39 #include <utils/common/StdDefs.h>
40 #include "MSRoute.h"
41 #include "MSMoveReminder.h"
42 #include "MSVehicleType.h"
43 
44 
45 // ===========================================================================
46 // class definitions
47 // ===========================================================================
52 class MSBaseVehicle : public SUMOVehicle {
53 public:
61  MSBaseVehicle(SUMOVehicleParameter* pars, const MSRoute* route,
62  const MSVehicleType* type, const SUMOReal speedFactor);
63 
64 
66  virtual ~MSBaseVehicle();
67 
68 
70  const std::string& getID() const;
71 
76  const SUMOVehicleParameter& getParameter() const;
77 
78 
82  inline const MSRoute& getRoute() const {
83  return *myRoute;
84  }
85 
86 
90  inline const MSVehicleType& getVehicleType() const {
91  return *myType;
92  }
93 
94 
98  inline SUMOVehicleClass getVClass() const {
100  }
101 
105  SUMOReal getMaxSpeed() const;
106 
107 
115  const MSEdge* succEdge(unsigned int nSuccs) const;
116 
121  const MSEdge* getEdge() const;
122 
123 
127  virtual bool isOnRoad() const {
128  return true;
129  }
130 
131 
137  virtual const MSEdge* getRerouteOrigin() const {
138  return *myCurrEdge;
139  }
140 
141 
146  return myCurrEdge;
147  }
148 
149 
159  void reroute(SUMOTime t, SUMOAbstractRouter<MSEdge, SUMOVehicle>& router, const bool onInit = false, const bool withTaz = false);
160 
161 
172  bool replaceRouteEdges(ConstMSEdgeVector& edges, bool onInit = false);
173 
174 
180  virtual SUMOReal getAcceleration() const;
181 
187  virtual SUMOReal getSlope() const;
188 
194  void onDepart();
195 
199  inline SUMOTime getDeparture() const {
200  return myDeparture;
201  }
202 
207  virtual SUMOReal getArrivalPos() const {
208  return myArrivalPos;
209  }
210 
213  bool hasDeparted() const;
214 
218  virtual bool hasArrived() const;
219 
223  inline unsigned int getNumberReroutes() const {
224  return myNumberReroutes;
225  }
226 
228  SUMOReal getImpatience() const;
229 
230 
234  inline const std::vector<MSDevice*>& getDevices() const {
235  return myDevices;
236  }
237 
244  virtual void addPerson(MSPerson* person);
245 
246 
253  virtual void addContainer(MSContainer* container);
254 
259  bool hasValidRoute(std::string& msg) const;
260 
266  void addReminder(MSMoveReminder* rem);
267 
273  void removeReminder(MSMoveReminder* rem);
274 
285  virtual void activateReminders(const MSMoveReminder::Notification reason);
286 
291  return myChosenSpeedFactor;
292  }
293 
297  inline void setChosenSpeedFactor(const SUMOReal factor) {
298  myChosenSpeedFactor = factor;
299  }
300 
302  MSDevice* getDevice(const std::type_info& type) const;
303 
304 
306 
307 
309  virtual void saveState(OutputDevice& out);
310 
312 
320  void addStops(const bool ignoreStopErrors);
321 
322 
323 protected:
326  void calculateArrivalPos();
327 
330  virtual const ConstMSEdgeVector getStopEdges() const = 0;
331 
332 protected:
335 
337  const MSRoute* myRoute;
338 
341 
344 
347 
348 
351 
353  typedef std::vector< std::pair<MSMoveReminder*, SUMOReal> > MoveReminderCont;
354 
356  MoveReminderCont myMoveReminders;
358 
360  std::vector<MSDevice*> myDevices;
361 
364 
367 
369  unsigned int myNumberReroutes;
370 
371 private:
372  /* @brief magic value for undeparted vehicles
373  * @note: in previous versions this was -1
374  */
376 
379 
380 
381 #ifdef _DEBUG
382 public:
383  static void initMoveReminderOutput(const OptionsCont& oc);
384 
385 protected:
387  void traceMoveReminder(const std::string& type, MSMoveReminder* rem, SUMOReal pos, bool keep) const;
388 
390  const bool myTraceMoveReminders;
391 private:
393  static std::set<std::string> myShallTraceMoveReminders;
394 #endif
395 
396 
397 };
398 
399 #endif
400 
401 /****************************************************************************/
virtual void addContainer(MSContainer *container)
Adds a container to this vehicle.
void removeReminder(MSMoveReminder *rem)
Removes a MoveReminder dynamically.
const MSVehicleType * myType
This Vehicle's type.
MSDevice * getDevice(const std::type_info &type) const
Returns a device of the given type if it exists or 0.
unsigned int getNumberReroutes() const
Returns the number of new routes this vehicle got.
MoveReminderCont myMoveReminders
Current lane's move reminder.
SUMOReal myArrivalPos
the position on the destination lane where the vehicle stops
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types...
SUMOReal getMaxSpeed() const
Returns the maximum speed.
virtual void addPerson(MSPerson *person)
Adds a person to this vehicle.
SUMOVehicleClass getVClass() const
Returns the vehicle's access class.
Definition: MSBaseVehicle.h:98
SUMOReal getImpatience() const
Returns this vehicles impatience.
const MSRouteIterator & getCurrentRouteEdge() const
Returns an iterator pointing to the current edge in this vehicles route.
Notification
Definition of a vehicle state.
virtual bool isOnRoad() const
Returns the information whether the vehicle is on a road (is simulated)
SUMOVehicleClass vehicleClass
The vehicle's class.
const MSRoute & getRoute() const
Returns the current route.
Definition: MSBaseVehicle.h:82
virtual ~MSBaseVehicle()
Destructor.
const MSRoute * myRoute
This Vehicle's route.
unsigned int myNumberReroutes
The number of reroutings.
bool hasDeparted() const
Returns whether this vehicle has already departed.
std::vector< const MSEdge * > ConstMSEdgeVector
Definition: MSEdge.h:79
const SUMOVehicleParameter * myParameter
This Vehicle's parameter.
The base class for microscopic and mesoscopic vehicles.
Definition: MSBaseVehicle.h:52
MSBaseVehicle(SUMOVehicleParameter *pars, const MSRoute *route, const MSVehicleType *type, const SUMOReal speedFactor)
Constructor.
The car-following model and parameter.
Definition: MSVehicleType.h:74
virtual void saveState(OutputDevice &out)
Saves the (common) state of a vehicle.
std::vector< std::pair< MSMoveReminder *, SUMOReal > > MoveReminderCont
Definition of a move reminder container.
A road/street connecting two junctions.
Definition: MSEdge.h:81
const SUMOVTypeParameter & getParameter() const
Representation of a vehicle.
Definition: SUMOVehicle.h:65
void setChosenSpeedFactor(const SUMOReal factor)
Returns the precomputed factor by which the driver wants to be faster than the speed limit...
virtual SUMOReal getAcceleration() const
Returns the vehicle's acceleration.
MSBaseVehicle & operator=(const MSBaseVehicle &s)
invalidated assignment operator
const MSEdge * succEdge(unsigned int nSuccs) const
Returns the nSuccs'th successor of edge the vehicle is currently at.
ConstMSEdgeVector::const_iterator MSRouteIterator
Definition: MSRoute.h:61
virtual const ConstMSEdgeVector getStopEdges() const =0
Returns the list of still pending stop edges.
Something on a lane to be noticed about vehicle movement.
bool replaceRouteEdges(ConstMSEdgeVector &edges, bool onInit=false)
Replaces the current route by the given edges.
Abstract in-vehicle device.
Definition: MSDevice.h:69
SUMOReal myChosenSpeedFactor
A precomputed factor by which the driver wants to be faster than the speed limit. ...
void addStops(const bool ignoreStopErrors)
Adds stops to the built vehicle.
Structure representing possible vehicle parameter.
virtual void activateReminders(const MSMoveReminder::Notification reason)
"Activates" all current move reminder
void onDepart()
Called when the vehicle is inserted into the network.
A storage for options typed value containers)
Definition: OptionsCont.h:108
const MSVehicleType & getVehicleType() const
Returns the vehicle's type definition.
Definition: MSBaseVehicle.h:90
virtual bool hasArrived() const
Returns whether this vehicle has already arived (by default this is true if the vehicle has reached i...
void calculateArrivalPos()
(Re-)Calculates the arrival position from the vehicle parameters
virtual const MSEdge * getRerouteOrigin() const
Returns the starting point for reroutes (usually the current edge)
SUMOReal getChosenSpeedFactor() const
Returns the precomputed factor by which the driver wants to be faster than the speed limit...
int SUMOTime
Definition: SUMOTime.h:43
const SUMOVehicleParameter & getParameter() const
Returns the vehicle's parameter (including departure definition)
bool hasValidRoute(std::string &msg) const
Validates the current route.
Static storage of an output device and its base (abstract) implementation.
Definition: OutputDevice.h:71
#define SUMOReal
Definition: config.h:218
MSRouteIterator myCurrEdge
Iterator to current route-edge.
void reroute(SUMOTime t, SUMOAbstractRouter< MSEdge, SUMOVehicle > &router, const bool onInit=false, const bool withTaz=false)
Performs a rerouting using the given router.
const MSEdge * getEdge() const
Returns the edge the vehicle is currently at.
SUMOTime getDeparture() const
Returns this vehicle's real departure time.
virtual SUMOReal getArrivalPos() const
Returns this vehicle's desired arrivalPos for its current route (may change on reroute) ...
virtual SUMOReal getSlope() const
Returns the slope of the road at vehicle's position.
void addReminder(MSMoveReminder *rem)
Adds a MoveReminder dynamically.
std::vector< MSDevice * > myDevices
The devices this vehicle has.
const std::vector< MSDevice * > & getDevices() const
Returns this vehicle's devices.
SUMOTime myDeparture
The real departure time.
static const SUMOTime NOT_YET_DEPARTED
const std::string & getID() const
Returns the name of the vehicle.