SUMO - Simulation of Urban MObility
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:
54 
55  friend class GUIBaseVehicle;
56 
64  MSBaseVehicle(SUMOVehicleParameter* pars, const MSRoute* route,
65  const MSVehicleType* type, const SUMOReal speedFactor);
66 
67 
69  virtual ~MSBaseVehicle();
70 
71 
73  const std::string& getID() const;
74 
79  const SUMOVehicleParameter& getParameter() const;
80 
81 
85  inline const MSRoute& getRoute() const {
86  return *myRoute;
87  }
88 
89 
93  inline const MSVehicleType& getVehicleType() const {
94  return *myType;
95  }
96 
97 
101  inline SUMOVehicleClass getVClass() const {
102  return myType->getParameter().vehicleClass;
103  }
104 
108  SUMOReal getMaxSpeed() const;
109 
110 
118  const MSEdge* succEdge(unsigned int nSuccs) const;
119 
124  const MSEdge* getEdge() const;
125 
126 
130  virtual bool isOnRoad() const {
131  return true;
132  }
133 
134 
140  virtual const MSEdge* getRerouteOrigin() const {
141  return *myCurrEdge;
142  }
143 
144 
149  return myCurrEdge;
150  }
151 
152 
162  void reroute(SUMOTime t, SUMOAbstractRouter<MSEdge, SUMOVehicle>& router, const bool onInit = false, const bool withTaz = false);
163 
164 
175  bool replaceRouteEdges(ConstMSEdgeVector& edges, bool onInit = false);
176 
177 
183  virtual SUMOReal getAcceleration() const;
184 
190  virtual SUMOReal getSlope() const;
191 
197  void onDepart();
198 
202  inline SUMOTime getDeparture() const {
203  return myDeparture;
204  }
205 
208  return getDeparture() - getParameter().depart;
209  }
210 
211 
212 
217  virtual SUMOReal getArrivalPos() const {
218  return myArrivalPos;
219  }
220 
223  virtual void setArrivalPos(SUMOReal arrivalPos) {
224  myArrivalPos = arrivalPos;
225  }
226 
229  bool hasDeparted() const;
230 
234  virtual bool hasArrived() const;
235 
239  inline unsigned int getNumberReroutes() const {
240  return myNumberReroutes;
241  }
242 
244  SUMOReal getImpatience() const;
245 
246 
250  inline const std::vector<MSDevice*>& getDevices() const {
251  return myDevices;
252  }
253 
260  virtual void addPerson(MSTransportable* person);
261 
262 
269  virtual void addContainer(MSTransportable* container);
270 
275  bool hasValidRoute(std::string& msg) const;
276 
282  void addReminder(MSMoveReminder* rem);
283 
289  void removeReminder(MSMoveReminder* rem);
290 
301  virtual void activateReminders(const MSMoveReminder::Notification reason);
302 
307  return myChosenSpeedFactor;
308  }
309 
313  inline void setChosenSpeedFactor(const SUMOReal factor) {
314  myChosenSpeedFactor = factor;
315  }
316 
318  MSDevice* getDevice(const std::type_info& type) const;
319 
320 
322 
323 
325  virtual void saveState(OutputDevice& out);
326 
328 
336  void addStops(const bool ignoreStopErrors);
337 
338 
339 protected:
342  void calculateArrivalParams();
343 
346  virtual const ConstMSEdgeVector getStopEdges() const = 0;
347 
348 protected:
351 
353  const MSRoute* myRoute;
354 
357 
360 
363 
364 
367 
369  typedef std::vector< std::pair<MSMoveReminder*, SUMOReal> > MoveReminderCont;
370 
372  MoveReminderCont myMoveReminders;
374 
376  std::vector<MSDevice*> myDevices;
377 
380 
383 
386 
388  unsigned int myNumberReroutes;
389 
390 private:
391  /* @brief magic value for undeparted vehicles
392  * @note: in previous versions this was -1
393  */
395 
398 
399 
400 #ifdef _DEBUG
401 public:
402  static void initMoveReminderOutput(const OptionsCont& oc);
403 
404 protected:
406  void traceMoveReminder(const std::string& type, MSMoveReminder* rem, SUMOReal pos, bool keep) const;
407 
409  const bool myTraceMoveReminders;
410 private:
412  static std::set<std::string> myShallTraceMoveReminders;
413 #endif
414 
415 
416 };
417 
418 #endif
419 
420 /****************************************************************************/
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.
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:85
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
int myArrivalLane
the position on the destination lane where the vehicle stops
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.
void calculateArrivalParams()
(Re-)Calculates the arrival position and lane from the vehicle parameters
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.
SUMOTime getDepartDelay() const
Returns the depart delay.
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
SUMOTime depart
The vehicle&#39;s departure time.
A MSVehicle extended by some values for usage within the gui.
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)
"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&#39;s type definition.
Definition: MSBaseVehicle.h:93
virtual bool hasArrived() const
Returns whether this vehicle has already arived (by default this is true if the vehicle has reached i...
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:214
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.