SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups 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  virtual void setArrivalPos(SUMOReal arrivalPos) {
214  myArrivalPos = arrivalPos;
215  }
216 
219  bool hasDeparted() const;
220 
224  virtual bool hasArrived() const;
225 
229  inline unsigned int getNumberReroutes() const {
230  return myNumberReroutes;
231  }
232 
234  SUMOReal getImpatience() const;
235 
236 
240  inline const std::vector<MSDevice*>& getDevices() const {
241  return myDevices;
242  }
243 
250  virtual void addPerson(MSTransportable* person);
251 
252 
259  virtual void addContainer(MSTransportable* container);
260 
265  bool hasValidRoute(std::string& msg) const;
266 
272  void addReminder(MSMoveReminder* rem);
273 
279  void removeReminder(MSMoveReminder* rem);
280 
291  virtual void activateReminders(const MSMoveReminder::Notification reason);
292 
297  return myChosenSpeedFactor;
298  }
299 
303  inline void setChosenSpeedFactor(const SUMOReal factor) {
304  myChosenSpeedFactor = factor;
305  }
306 
308  MSDevice* getDevice(const std::type_info& type) const;
309 
310 
312 
313 
315  virtual void saveState(OutputDevice& out);
316 
318 
326  void addStops(const bool ignoreStopErrors);
327 
328 
329 protected:
332  void calculateArrivalPos();
333 
336  virtual const ConstMSEdgeVector getStopEdges() const = 0;
337 
338 protected:
341 
343  const MSRoute* myRoute;
344 
347 
350 
353 
354 
357 
359  typedef std::vector< std::pair<MSMoveReminder*, SUMOReal> > MoveReminderCont;
360 
364 
366  std::vector<MSDevice*> myDevices;
367 
370 
373 
375  unsigned int myNumberReroutes;
376 
377 private:
378  /* @brief magic value for undeparted vehicles
379  * @note: in previous versions this was -1
380  */
382 
385 
386 
387 #ifdef _DEBUG
388 public:
389  static void initMoveReminderOutput(const OptionsCont& oc);
390 
391 protected:
393  void traceMoveReminder(const std::string& type, MSMoveReminder* rem, SUMOReal pos, bool keep) const;
394 
396  const bool myTraceMoveReminders;
397 private:
399  static std::set<std::string> myShallTraceMoveReminders;
400 #endif
401 
402 
403 };
404 
405 #endif
406 
407 /****************************************************************************/
void removeReminder(MSMoveReminder *rem)
Removes a MoveReminder dynamically.
const MSVehicleType * myType
This Vehicle&#39;s type.
MSDevice * getDevice(const std::type_info &type) const
Returns a device of the given type if it exists or 0.
long long int SUMOTime
Definition: SUMOTime.h:43
unsigned int getNumberReroutes() const
Returns the number of new routes this vehicle got.
MoveReminderCont myMoveReminders
Current lane&#39;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.
SUMOVehicleClass getVClass() const
Returns the vehicle&#39;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&#39;s class.
const MSRoute & getRoute() const
Returns the current route.
Definition: MSBaseVehicle.h:82
virtual ~MSBaseVehicle()
Destructor.
const MSRoute * myRoute
This Vehicle&#39;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&#39;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
virtual void addPerson(MSTransportable *person)
Adds a person to this vehicle.
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&#39;s acceleration.
MSBaseVehicle & operator=(const MSBaseVehicle &s)
invalidated assignment operator
const MSEdge * succEdge(unsigned int nSuccs) const
Returns the nSuccs&#39;th successor of edge the vehicle is currently at.
ConstMSEdgeVector::const_iterator MSRouteIterator
Definition: MSRoute.h:61
virtual void setArrivalPos(SUMOReal arrivalPos)
Sets this vehicle&#39;s desired arrivalPos for its current route.
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)
&quot;Activates&quot; 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&#39;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...
const SUMOVehicleParameter & getParameter() const
Returns the vehicle&#39;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:215
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&#39;s real departure time.
virtual SUMOReal getArrivalPos() const
Returns this vehicle&#39;s desired arrivalPos for its current route (may change on reroute) ...
virtual SUMOReal getSlope() const
Returns the slope of the road at vehicle&#39;s position.
void addReminder(MSMoveReminder *rem)
Adds a MoveReminder dynamically.
std::vector< MSDevice * > myDevices
The devices this vehicle has.
virtual void addContainer(MSTransportable *container)
Adds a container to this vehicle.
const std::vector< MSDevice * > & getDevices() const
Returns this vehicle&#39;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.