Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
MSBaseVehicle.h
Go to the documentation of this file.
1/****************************************************************************/
2// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3// Copyright (C) 2010-2023 German Aerospace Center (DLR) and others.
4// This program and the accompanying materials are made available under the
5// terms of the Eclipse Public License 2.0 which is available at
6// https://www.eclipse.org/legal/epl-2.0/
7// This Source Code may also be made available under the following Secondary
8// Licenses when the conditions for such availability set forth in the Eclipse
9// Public License 2.0 are satisfied: GNU General Public License, version 2
10// or later which is available at
11// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13/****************************************************************************/
20// A base class for vehicle implementations
21/****************************************************************************/
22#pragma once
23#include <config.h>
24
25#include <iostream>
26#include <vector>
27#include <set>
32#include "MSRoute.h"
33#include "MSMoveReminder.h"
34#include "MSVehicleType.h"
35
36
37// ===========================================================================
38// class declarations
39// ===========================================================================
40class MSLane;
41class MSStop;
44class MSVehicleDevice;
46
47
48// ===========================================================================
49// class definitions
50// ===========================================================================
55class MSBaseVehicle : public SUMOVehicle {
56public:
57 // XXX: This definition was introduced to make the MSVehicle's previousSpeed
58 // available in the context of MSMoveReminder::notifyMove(). Another solution
59 // would be to modify notifyMove()'s interface to work with MSVehicle instead
60 // of SUMOVehicle (it is only called with MSVehicles!). Refs. #2579
64 double getPreviousSpeed() const;
65
66 friend class GUIBaseVehicle;
67
74 ROUTE_INVALID = 1 << 1,
75 // starting edge permissions invalid (could change)
77 // insertion lane does not exist
79 };
80
89 MSVehicleType* type, const double speedFactor);
90
91
93 virtual ~MSBaseVehicle();
94
95 virtual void initDevices();
96
97 bool isVehicle() const {
98 return true;
99 }
100
102 void setID(const std::string& newID);
103
108 const SUMOVehicleParameter& getParameter() const;
109
111 std::string getPrefixedParameter(const std::string& key, std::string& error) const;
112
114 void replaceParameter(const SUMOVehicleParameter* newParameter);
115
117 bool hasDevice(const std::string& deviceName) const;
118
120 void createDevice(const std::string& deviceName);
121
123 std::string getDeviceParameter(const std::string& deviceName, const std::string& key) const;
124
126 void setDeviceParameter(const std::string& deviceName, const std::string& key, const std::string& value);
127
129 void setJunctionModelParameter(const std::string& key, const std::string& value);
130
132 void setCarFollowModelParameter(const std::string& key, const std::string& value);
133
137 inline const MSRoute& getRoute() const {
138 return *myRoute;
139 }
140
145 return myRoute;
146 }
147
151 inline const MSVehicleType& getVehicleType() const {
152 return *myType;
153 }
154
160 }
161
165 double getMaxSpeed() const;
166
174 const MSEdge* succEdge(int nSuccs) const;
175
180 const MSEdge* getEdge() const;
181
185 virtual const MSEdge* getCurrentEdge() const {
186 return getEdge();
187 }
188
190 bool stopsAt(MSStoppingPlace* stop) const;
191
193 bool stopsAtEdge(const MSEdge* edge) const;
194
196 virtual const MSEdge* getNextEdgePtr() const {
197 return nullptr;
198 }
199
203 virtual bool isOnRoad() const {
204 return true;
205 }
206
211 virtual bool isRemoteControlled() const {
212 return false;
213 }
214
215 virtual bool wasRemoteControlled(SUMOTime lookBack = DELTA_T) const {
216 UNUSED_PARAMETER(lookBack);
217 return false;
218 }
219
223 virtual bool isFrontOnLane(const MSLane*) const {
224 return true;
225 }
226
231 virtual double getLateralPositionOnLane() const {
232 return 0;
233 }
234
240 virtual double getRightSideOnEdge(const MSLane* lane = 0) const {
241 UNUSED_PARAMETER(lane);
242 return 0;
243 }
244
250 virtual ConstMSEdgeVector::const_iterator getRerouteOrigin() const {
251 return myCurrEdge;
252 }
253
256 virtual double getTimeLossSeconds() const {
257 // better timeLoss for meso?
258 return 0;
259 }
260
267 double getWaitingSeconds() const {
268 return STEPS2TIME(getWaitingTime());
269 }
270
271
272
277 return myCurrEdge;
278 }
279
280
290 void reroute(SUMOTime t, const std::string& info, SUMOAbstractRouter<MSEdge, SUMOVehicle>& router, const bool onInit = false, const bool withTaz = false, const bool silent = false);
291
292
305 bool replaceRouteEdges(ConstMSEdgeVector& edges, double cost, double savings, const std::string& info, bool onInit = false, bool check = false, bool removeStops = true,
306 std::string* msgReturn = nullptr);
307
318 virtual bool replaceRoute(ConstMSRoutePtr route, const std::string& info, bool onInit = false, int offset = 0, bool addStops = true, bool removeStops = true,
319 std::string* msgReturn = nullptr);
320
326 virtual double getAcceleration() const;
327
333 void onDepart();
334
338 inline SUMOTime getDeparture() const {
339 return myDeparture;
340 }
341
343 SUMOTime getDepartDelay() const;
344
347 virtual double getStopDelay() const {
349 return -1;
350 }
351
354 virtual double getStopArrivalDelay() const {
356 return INVALID_DOUBLE;
357 }
358
362 inline double getDepartPos() const {
363 return myDepartPos;
364 }
365
370 virtual double getArrivalPos() const {
371 return myArrivalPos;
372 }
373
374 virtual int getArrivalLane() const {
375 return myArrivalLane;
376 }
377
380 virtual void setArrivalPos(double arrivalPos) {
381 myArrivalPos = arrivalPos;
382 }
383
391 virtual void onRemovalFromNet(const MSMoveReminder::Notification /*reason*/) {}
392
395 inline bool hasDeparted() const {
397 }
398
402 virtual bool hasArrived() const;
403
405 int getRoutePosition() const;
406
408 void resetRoutePosition(int index, DepartLaneDefinition departLaneProcedure);
409
413 double getOdometer() const;
414
416 void addToOdometer(double value) {
417 myOdometer += value;
418 }
419
423 inline int getNumberReroutes() const {
424 return myNumberReroutes;
425 }
426
428 double getImpatience() const;
429
433 int getPersonNumber() const;
434
438 std::vector<std::string> getPersonIDList() const;
439
443 int getContainerNumber() const;
444
445
449 inline const std::vector<MSVehicleDevice*>& getDevices() const {
450 return myDevices;
451 }
452
454 bool allowsBoarding(const MSTransportable* t) const;
455
460 virtual void addTransportable(MSTransportable* transportable);
461
464
466 const std::vector<MSTransportable*>& getPersons() const;
467
469 const std::vector<MSTransportable*>& getContainers() const;
470
472 bool isLineStop(double position) const;
473
475 bool hasJump(const MSRouteIterator& it) const;
476
482 bool hasValidRoute(std::string& msg, ConstMSRoutePtr route = 0) const;
483
485 virtual bool hasValidRouteStart(std::string& msg);
486
488 int getRouteValidity(bool update = true, bool silent = false, std::string* msgReturn = nullptr);
489
495 void addReminder(MSMoveReminder* rem);
496
503
515 virtual void activateReminders(const MSMoveReminder::Notification reason, const MSLane* enteredLane = 0);
516
517
521 inline double getLength() const {
522 return myType->getLength();
523 }
524
525
529 inline double getWidth() const {
530 return myType->getWidth();
531 }
532
533
537 inline double getChosenSpeedFactor() const {
538 return myChosenSpeedFactor;
539 }
540
544 inline void setChosenSpeedFactor(const double factor) {
545 myChosenSpeedFactor = factor;
546 }
547
549 MSVehicleDevice* getDevice(const std::type_info& type) const;
550
551
560 virtual void replaceVehicleType(MSVehicleType* type);
561
562
571
573
574
576 virtual void saveState(OutputDevice& out);
577
579
580 virtual bool handleCollisionStop(MSStop& stop, const double distToStop);
581
585 bool isStopped() const;
586
590 bool isParking() const;
591
595 bool isJumping() const;
596
600 inline bool isReversed() const {
601 return myAmReversed;
602 }
603
607 bool isStoppedTriggered() const;
608
612 bool isStoppedParking() const;
613
616 bool isStoppedInRange(const double pos, const double tolerance, bool checkFuture = false) const;
617
621 bool hasStops() const {
622 return !myStops.empty();
623 }
624
627 bool replaceParkingArea(MSParkingArea* parkingArea, std::string& errorMsg);
628
632
635
637 double basePos(const MSEdge* edge) const;
638
645 bool addStop(const SUMOVehicleParameter::Stop& stopPar, std::string& errorMsg, SUMOTime untilOffset = 0,
646 MSRouteIterator* searchStart = nullptr);
647
655 void addStops(const bool ignoreStopErrors, MSRouteIterator* searchStart = nullptr, bool addRouteStops = true);
656
658 bool haveValidStopEdges(bool silent = false) const;
659
663 const ConstMSEdgeVector getStopEdges(double& firstPos, double& lastPos, std::set<int>& jumps) const;
664
666 std::vector<std::pair<int, double> > getStopIndices() const;
667
672 inline const std::list<MSStop>& getStops() const {
673 return myStops;
674 }
675
676 inline const std::vector<SUMOVehicleParameter::Stop>& getPastStops() const {
677 return myPastStops;
678 }
679
685
688
693 MSStop& getStop(int nextStopIndex);
694
697
704 virtual bool addTraciStop(SUMOVehicleParameter::Stop stop, std::string& errorMsg);
705
710 virtual bool resumeFromStopping() = 0;
711
713 bool abortNextStop(int nextStopIndex = 0);
714
726 bool replaceStop(int nextStopIndex, SUMOVehicleParameter::Stop stop, const std::string& info, bool teleport, std::string& errorMsg);
727
735 bool rerouteBetweenStops(int nextStopIndex, const std::string& info, bool teleport, std::string& errorMsg);
736
747 bool insertStop(int nextStopIndex, SUMOVehicleParameter::Stop stop, const std::string& info, bool teleport, std::string& errorMsg);
748
749
751 virtual bool isSelected() const {
752 return false;
753 }
754
756 int getRNGIndex() const;
757
759 SumoRNG* getRNG() const;
760
762 return myNumericalID;
763 }
764
766 return myPersonDevice;
767 }
768
772
775 if (myEnergyParams == nullptr) {
777 }
778 return myEnergyParams;
779 }
780
782
783
788 template<PollutantsInterface::EmissionType ET>
789 double getEmissions() const {
790 if (isOnRoad() || isIdling()) {
792 }
793 return 0.;
794 }
795
800 double getStateOfCharge() const;
801
807 double getElecHybridCurrent() const;
808
812 double getHarmonoise_NoiseEmissions() const;
814
828 public:
831
833 virtual ~BaseInfluencer() {}
834
836 static void init();
838 static void cleanup();
839
840
842 int getRoutingMode() const {
843 return myRoutingMode;
844 }
845
849 void setRoutingMode(int value) {
850 myRoutingMode = value;
851 }
852
853
855 double getExtraImpatience() const {
856 return myExtraImpatience;
857 }
858
862 void setExtraImpatience(double value) {
863 myExtraImpatience = value;
864 }
865
866
868
869 protected:
872
875
876 };
877
878
879
886
887 virtual const BaseInfluencer* getBaseInfluencer() const = 0;
888
889 virtual bool hasInfluencer() const = 0;
890
891
899
907 virtual std::pair<const MSVehicle* const, double> getLeader(double dist = 0) const {
908 UNUSED_PARAMETER(dist);
909 WRITE_WARNING(TL("getLeader not yet implemented for meso"));
910 return std::make_pair(nullptr, -1);
911 }
912
921 virtual std::pair<const MSVehicle* const, double> getFollower(double dist = 0) const {
922 UNUSED_PARAMETER(dist);
923 WRITE_WARNING(TL("getFollower not yet implemented for meso"));
924 return std::make_pair(nullptr, -1);
925 }
926
929 void calculateArrivalParams(bool onInit);
930
933
936
938
939 void rememberBlockedParkingArea(const MSParkingArea* pa, bool local);
940 SUMOTime sawBlockedParkingArea(const MSParkingArea* pa, bool local) const;
941
943 void rememberParkingAreaScore(const MSParkingArea* pa, const std::string& score);
945
954
957 }
958 void setNumberParkingReroutes(int value) {
960 }
961
962 typedef std::map<const MSParkingArea*, PaMemory, ComparatorIdLess> ParkingMemory;
964 return myParkingMemory;
965 }
967
968protected:
971
974
977
980
983
985 std::list<MSStop> myStops;
986
988 std::vector<SUMOVehicleParameter::Stop> myPastStops;
989
990
993
995 // The double value holds the relative position offset, i.e.,
996 // offset + vehicle-position - moveReminder-position = distance,
997 // i.e. the offset is counted up when the vehicle continues to a
998 // succeeding lane.
999 typedef std::vector< std::pair<MSMoveReminder*, double> > MoveReminderCont;
1000
1004
1006 std::vector<MSVehicleDevice*> myDevices;
1007
1010
1013
1016
1019
1022
1025
1028
1031
1034
1037
1040
1044
1047
1048 /* @brief magic value for undeparted vehicles
1049 * @note: in previous versions this was -1
1050 */
1052
1053 static std::vector<MSTransportable*> myEmptyTransportableVector;
1054
1055 /* @brief The logical 'reversed' state of the vehicle - intended to be used by drawing functions
1056 * @note: only set by vClass rail reversing at the moment
1057 */
1058 bool myAmReversed = false;
1059
1060private:
1062
1063 /* @brief The vehicle's knowledge about edge efforts/travel times; @see MSEdgeWeightsStorage
1064 * @note member is initialized on first access */
1066
1068
1070
1073
1075 std::string getFlowID() const;
1076
1078 void checkRouteRemoval();
1079
1080private:
1083
1084#ifdef _DEBUG
1085public:
1086 static void initMoveReminderOutput(const OptionsCont& oc);
1087
1088protected:
1090 void traceMoveReminder(const std::string& type, MSMoveReminder* rem, double pos, bool keep) const;
1091
1093 const bool myTraceMoveReminders;
1094private:
1096 static std::set<std::string> myShallTraceMoveReminders;
1097#endif
1098
1099
1100};
long long int SUMOTime
Definition GUI.h:36
std::vector< const MSEdge * > ConstMSEdgeVector
Definition MSEdge.h:74
ConstMSEdgeVector::const_iterator MSRouteIterator
Definition MSRoute.h:56
#define WRITE_WARNING(msg)
Definition MsgHandler.h:270
#define TL(string)
Definition MsgHandler.h:287
std::shared_ptr< const MSRoute > ConstMSRoutePtr
Definition Route.h:32
SUMOTime DELTA_T
Definition SUMOTime.cpp:38
#define STEPS2TIME(x)
Definition SUMOTime.h:55
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types.
DepartLaneDefinition
Possible ways to choose a lane on depart.
const double INVALID_DOUBLE
invalid double
Definition StdDefs.h:64
#define UNUSED_PARAMETER(x)
Definition StdDefs.h:30
An upper class for objects with additional parameters.
A MSVehicle extended by some values for usage within the gui.
void setExtraImpatience(double value)
Sets routing behavior.
double getExtraImpatience() const
return the current routing mode
static void cleanup()
Static cleanup.
int myRoutingMode
routing mode (see TraCIConstants.h)
static void init()
Static initalization.
virtual ~BaseInfluencer()
Destructor.
SUMOAbstractRouter< MSEdge, SUMOVehicle > & getRouterTT(const int rngIndex, SUMOVehicleClass svc) const
void setRoutingMode(int value)
Sets routing behavior.
double myExtraImpatience
dynamic impatience offset
int getRoutingMode() const
return the current routing mode
The base class for microscopic and mesoscopic vehicles.
double getMaxSpeed() const
Returns the maximum speed (the minimum of desired and technical maximum speed)
MSVehicleDevice * getDevice(const std::type_info &type) const
Returns a device of the given type if it exists, nullptr otherwise.
bool haveValidStopEdges(bool silent=false) const
check whether all stop.edge MSRouteIterators are valid and in order
bool hasJump(const MSRouteIterator &it) const
check wether the vehicle has jump at the given part of it's route
ParkingMemory * myParkingMemory
memory for parking search
double getDepartPos() const
Returns this vehicle's real departure position.
ConstMSRoutePtr getRoutePtr() const
Returns the current route.
virtual bool isSelected() const
whether this vehicle is selected in the GUI
void rememberBlockedParkingArea(const MSParkingArea *pa, bool local)
virtual bool isRemoteControlled() const
Returns the information whether the vehicle is fully controlled via TraCI.
std::list< MSStop > myStops
The vehicle's list of stops.
double getImpatience() const
Returns this vehicles impatience.
virtual ConstMSEdgeVector::const_iterator getRerouteOrigin() const
Returns the starting point for reroutes (usually the current edge)
const std::vector< MSTransportable * > & getPersons() const
retrieve riding persons
virtual void initDevices()
const MSEdge * succEdge(int nSuccs) const
Returns the nSuccs'th successor of edge the vehicle is currently at.
void resetRoutePosition(int index, DepartLaneDefinition departLaneProcedure)
reset index of edge within route
std::map< const MSParkingArea *, PaMemory, ComparatorIdLess > ParkingMemory
virtual double getLateralPositionOnLane() const
Get the vehicle's lateral position on the lane.
std::string getDeviceParameter(const std::string &deviceName, const std::string &key) const
try to retrieve the given parameter from any of the vehicles devices, raise InvalidArgument if no dev...
const std::vector< MSVehicleDevice * > & getDevices() const
Returns this vehicle's devices.
bool replaceStop(int nextStopIndex, SUMOVehicleParameter::Stop stop, const std::string &info, bool teleport, std::string &errorMsg)
void calculateArrivalParams(bool onInit)
(Re-)Calculates the arrival position and lane from the vehicle parameters
void setChosenSpeedFactor(const double factor)
Returns the precomputed factor by which the driver wants to be faster than the speed limit.
virtual double getArrivalPos() const
Returns this vehicle's desired arrivalPos for its current route (may change on reroute)
void setCarFollowModelParameter(const std::string &key, const std::string &value)
set individual carFollow model parameters (not type related)
void resetParkingAreaScores()
MSVehicleType * myType
This vehicle's type.
static NumericalID myCurrentNumericalIndex
virtual double getStopDelay() const
Returns the estimated public transport stop (departure) delay in seconds.
bool rerouteBetweenStops(int nextStopIndex, const std::string &info, bool teleport, std::string &errorMsg)
MoveReminderCont myMoveReminders
Currently relevant move reminders.
double myDepartPos
The real depart position.
const SUMOVehicleParameter & getParameter() const
Returns the vehicle's parameter (including departure definition)
void addReminder(MSMoveReminder *rem)
Adds a MoveReminder dynamically.
virtual const BaseInfluencer * getBaseInfluencer() const =0
void replaceParameter(const SUMOVehicleParameter *newParameter)
replace the vehicle parameter (deleting the old one)
int getNumberParkingReroutes() const
double getChosenSpeedFactor() const
Returns the precomputed factor by which the driver wants to be faster than the speed limit.
std::vector< MSVehicleDevice * > myDevices
The devices this vehicle has.
virtual const MSEdge * getCurrentEdge() const
Returns the edge the vehicle is currently at (possibly an internal edge)
double getPreviousSpeed() const
Returns the vehicle's previous speed.
bool isReversed() const
Returns whether the logical state of the vehicle is reversed - for drawing.
virtual void addTransportable(MSTransportable *transportable)
Adds a person or container to this vehicle.
virtual BaseInfluencer & getBaseInfluencer()=0
Returns the velocity/lane influencer.
const SUMOVehicleParameter::Stop * getNextStopParameter() const
return parameters for the next stop (SUMOVehicle Interface)
std::vector< std::pair< MSMoveReminder *, double > > MoveReminderCont
Definition of a move reminder container.
virtual double getTimeLossSeconds() const
Returns the time loss in seconds.
double getOdometer() const
Returns the distance that was already driven by this vehicle.
virtual bool hasArrived() const
Returns whether this vehicle has already arived (by default this is true if the vehicle has reached i...
const NumericalID myNumericalID
bool isStoppedInRange(const double pos, const double tolerance, bool checkFuture=false) const
return whether the given position is within range of the current stop
bool isJumping() const
Returns whether the vehicle is perform a jump.
void checkRouteRemoval()
remove route at the end of the simulation
MSVehicleType & getSingularType()
Replaces the current vehicle type with a new one used by this vehicle only.
SUMOTime sawBlockedParkingArea(const MSParkingArea *pa, bool local) const
virtual void replaceVehicleType(MSVehicleType *type)
Replaces the current vehicle type by the one given.
const MSRouteIterator & getCurrentRouteEdge() const
Returns an iterator pointing to the current edge in this vehicles route.
bool isStoppedParking() const
Returns whether the vehicle is on a parking stop.
void setNumberParkingReroutes(int value)
virtual bool wasRemoteControlled(SUMOTime lookBack=DELTA_T) const
Returns the information whether the vehicle is fully controlled via TraCI.
bool hasValidRoute(std::string &msg, ConstMSRoutePtr route=0) const
Validates the current or given route.
virtual void onRemovalFromNet(const MSMoveReminder::Notification)
Called when the vehicle is removed from the network.
double getLength() const
Returns the vehicle's length.
bool isParking() const
Returns whether the vehicle is parking.
MSParkingArea * getCurrentParkingArea()
get the current parking area stop or nullptr
const MSEdge * getEdge() const
Returns the edge the vehicle is currently at.
MSBaseVehicle & operator=(const MSBaseVehicle &s)=delete
invalidated assignment operator
double getHarmonoise_NoiseEmissions() const
Returns noise emissions of the current state.
virtual int getArrivalLane() const
int getPersonNumber() const
Returns the number of persons.
void setJunctionModelParameter(const std::string &key, const std::string &value)
set individual junction model paramete (not type related)
void setDepartAndArrivalEdge()
apply departEdge and arrivalEdge attributes
void setID(const std::string &newID)
set the id (inherited from Named but forbidden for vehicles)
MSRouteIterator myCurrEdge
Iterator to current route-edge.
static MSLane * interpretOppositeStop(SUMOVehicleParameter::Stop &stop)
interpret stop lane on opposite side of the road
virtual const MSEdge * getNextEdgePtr() const
returns the next edge (possibly an internal edge)
static std::vector< MSTransportable * > myEmptyTransportableVector
bool hasDeparted() const
Returns whether this vehicle has already departed.
MSStop & getNextStop()
ConstMSRoutePtr myRoute
This vehicle's route.
const ConstMSEdgeVector getStopEdges(double &firstPos, double &lastPos, std::set< int > &jumps) const
Returns the list of still pending stop edges also returns the first and last stop position.
double getWidth() const
Returns the vehicle's width.
MSDevice_Transportable * myContainerDevice
The containers this vehicle may have.
const std::list< MSStop > & getStops() const
bool allowsBoarding(const MSTransportable *t) const
whether the given transportable is allowed to board this vehicle
double getStateOfCharge() const
Returns actual state of charge of battery (Wh) RICE_CHECK: This may be a misnomer,...
MSEdgeWeightsStorage & _getWeightsStorage() const
virtual bool handleCollisionStop(MSStop &stop, const double distToStop)
bool isVehicle() const
Whether it is a vehicle.
bool hasDevice(const std::string &deviceName) const
check whether the vehicle is equiped with a device of the given name
SumoRNG * getRNG() const
SUMOTime getDeparture() const
Returns this vehicle's real departure time.
double getWaitingSeconds() const
Returns the number of seconds waited (speed was lesser than 0.1m/s)
const MSDevice_Transportable * getPersonDevice() const
EnergyParams * getEmissionParameters() const
retrieve parameters for the energy consumption model
double basePos(const MSEdge *edge) const
departure position where the vehicle fits fully onto the edge (if possible)
void setDeviceParameter(const std::string &deviceName, const std::string &key, const std::string &value)
try to set the given parameter from any of the vehicles devices, raise InvalidArgument if no device p...
MSDevice_Transportable * myPersonDevice
The passengers this vehicle may have.
bool hasStops() const
Returns whether the vehicle has to stop somewhere.
void addToOdometer(double value)
Manipulate the odometer.
std::string getFlowID() const
reconstruct flow id from vehicle id
virtual void activateReminders(const MSMoveReminder::Notification reason, const MSLane *enteredLane=0)
"Activates" all current move reminder
bool isLineStop(double position) const
returns whether the vehicle serves a public transport line that serves the given stop
double myChosenSpeedFactor
A precomputed factor by which the driver wants to be faster than the speed limit.
@ ROUTE_INVALID
route was checked and is valid
@ ROUTE_START_INVALID_PERMISSIONS
std::string getPrefixedParameter(const std::string &key, std::string &error) const
retrieve parameters of devices, models and the vehicle itself
void addStops(const bool ignoreStopErrors, MSRouteIterator *searchStart=nullptr, bool addRouteStops=true)
Adds stops to the built vehicle.
void removeTransportable(MSTransportable *t)
removes a person or container
SUMOVehicleClass getVClass() const
Returns the vehicle's access class.
virtual double getStopArrivalDelay() const
Returns the estimated public transport stop arrival delay in seconds.
MSParkingArea * getNextParkingArea()
get the upcoming parking area stop or nullptr
int myArrivalLane
The destination lane where the vehicle stops.
int getRouteValidity(bool update=true, bool silent=false, std::string *msgReturn=nullptr)
check for route validity at first insertion attempt
MSStop & getStop(int nextStopIndex)
virtual std::pair< const MSVehicle *const, double > getFollower(double dist=0) const
Returns the follower of the vehicle looking for a fixed distance.
virtual ~MSBaseVehicle()
Destructor.
bool insertStop(int nextStopIndex, SUMOVehicleParameter::Stop stop, const std::string &info, bool teleport, std::string &errorMsg)
SUMOTime myDeparture
The real departure time.
virtual void setArrivalPos(double arrivalPos)
Sets this vehicle's desired arrivalPos for its current route.
std::vector< std::string > getPersonIDList() const
Returns the list of persons.
const MSEdgeWeightsStorage & getWeightsStorage() const
Returns the vehicle's internal edge travel times/efforts container.
bool isStoppedTriggered() const
Returns whether the vehicle is on a triggered stop.
const std::vector< SUMOVehicleParameter::Stop > & getPastStops() const
virtual bool resumeFromStopping()=0
virtual bool hasInfluencer() const =0
whether the vehicle is individually influenced (via TraCI or special parameters)
bool stopsAtEdge(const MSEdge *edge) const
Returns whether the vehicle stops at the given edge.
void rememberParkingAreaScore(const MSParkingArea *pa, const std::string &score)
score only needed when running with gui
bool addStop(const SUMOVehicleParameter::Stop &stopPar, std::string &errorMsg, SUMOTime untilOffset=0, MSRouteIterator *searchStart=nullptr)
Adds a stop.
NumericalID getNumericalID() const
return the numerical ID which is only for internal usage
std::vector< SUMOVehicleParameter::Stop > myPastStops
The list of stops that the vehicle has already reached.
void onDepart()
Called when the vehicle is inserted into the network.
void removeReminder(MSMoveReminder *rem)
Removes a MoveReminder dynamically.
SUMOTime getStopDuration() const
get remaining stop duration or 0 if the vehicle isn't stopped
virtual double getAcceleration() const
Returns the vehicle's acceleration.
virtual double getRightSideOnEdge(const MSLane *lane=0) const
Get the vehicle's lateral position on the edge of the given lane (or its current edge if lane == 0)
virtual bool addTraciStop(SUMOVehicleParameter::Stop stop, std::string &errorMsg)
const MSRoute & getRoute() const
Returns the current route.
int getRoutePosition() const
return index of edge within route
const MSDevice_Transportable * getContainerDevice() const
bool replaceParkingArea(MSParkingArea *parkingArea, std::string &errorMsg)
replace the current parking area stop with a new stop with merge duration
static const SUMOTime NOT_YET_DEPARTED
SUMOTime getDepartDelay() const
Returns the depart delay.
double getEmissions() const
Returns emissions of the current state The value is always per 1s, so multiply by step length if nece...
double getElecHybridCurrent() const
Returns actual current (A) of ElecHybrid device RICE_CHECK: Is this the current consumed from the ove...
bool myAmRegisteredAsWaiting
Whether this vehicle is registered as waiting for a person or container (for deadlock-recognition)
EnergyParams * myEnergyParams
The emission parameters this vehicle may have.
const SUMOVehicleParameter * myParameter
This vehicle's parameter.
virtual bool hasValidRouteStart(std::string &msg)
checks wether the vehicle can depart on the first edge
int myRouteValidity
status of the current vehicle route
std::vector< std::pair< int, double > > getStopIndices() const
return list of route indices for the remaining stops
virtual bool isFrontOnLane(const MSLane *) const
Returns the information whether the front of the vehhicle is on the given lane.
SUMOTime myStopUntilOffset
The offset when adding route stops with 'until' on route replacement.
int getNumberReroutes() const
Returns the number of new routes this vehicle got.
virtual bool replaceRoute(ConstMSRoutePtr route, const std::string &info, bool onInit=false, int offset=0, bool addStops=true, bool removeStops=true, std::string *msgReturn=nullptr)
Replaces the current route by the given one.
virtual bool isOnRoad() const
Returns the information whether the vehicle is on a road (is simulated)
void reroute(SUMOTime t, const std::string &info, SUMOAbstractRouter< MSEdge, SUMOVehicle > &router, const bool onInit=false, const bool withTaz=false, const bool silent=false)
Performs a rerouting using the given router.
virtual std::pair< const MSVehicle *const, double > getLeader(double dist=0) const
Returns the leader of the vehicle looking for a fixed distance.
const std::vector< MSTransportable * > & getContainers() const
retrieve riding containers
bool stopsAt(MSStoppingPlace *stop) const
Returns whether the vehicle stops at the given stopping place.
int getRNGIndex() const
MSEdgeWeightsStorage * myEdgeWeights
const MSVehicleType & getVehicleType() const
Returns the vehicle's type definition.
void createDevice(const std::string &deviceName)
create device of the given type
bool isStopped() const
Returns whether the vehicle is at a stop.
const ParkingMemory * getParkingMemory() const
bool abortNextStop(int nextStopIndex=0)
deletes the next stop at the given index if it exists
int myNumberReroutes
The number of reroutings.
double myArrivalPos
The position on the destination lane where the vehicle stops.
virtual void saveState(OutputDevice &out)
Saves the (common) state of a vehicle.
double myOdometer
A simple odometer to keep track of the length of the route already driven.
void initTransientModelParams()
init model parameters from generic params
int getContainerNumber() const
Returns the number of containers.
bool replaceRouteEdges(ConstMSEdgeVector &edges, double cost, double savings, const std::string &info, bool onInit=false, bool check=false, bool removeStops=true, std::string *msgReturn=nullptr)
Replaces the current route by the given edges.
A device which collects vehicular emissions.
A road/street connecting two junctions.
Definition MSEdge.h:77
A storage for edge travel times and efforts.
Representation of a lane in the micro simulation.
Definition MSLane.h:84
Something on a lane to be noticed about vehicle movement.
Notification
Definition of a vehicle state.
A lane area vehicles can halt at.
A lane area vehicles can halt at.
Abstract in-vehicle device.
The car-following model and parameter.
double getWidth() const
Get the width which vehicles of this class shall have when being drawn.
SUMOEmissionClass getEmissionClass() const
Get this vehicle type's emission class.
double getLength() const
Get vehicle's length [m].
const SUMOVTypeParameter & getParameter() const
A storage for options typed value containers)
Definition OptionsCont.h:89
Static storage of an output device and its base (abstract) implementation.
static double compute(const SUMOEmissionClass c, const EmissionType e, const double v, const double a, const double slope, const EnergyParams *param)
Returns the amount of the emitted pollutant given the vehicle type and state (in mg/s or ml/s for fue...
virtual SUMOTime getWaitingTime() const =0
virtual double getSlope() const =0
Returns the slope of the road at object's position in degrees.
long long int NumericalID
virtual double getSpeed() const =0
Returns the object's current speed.
SUMOVehicleClass vehicleClass
The vehicle's class.
Representation of a vehicle.
Definition SUMOVehicle.h:62
virtual bool isIdling() const =0
Returns whether the vehicle is idling (waiting to re-enter the net.
Definition of vehicle stop (position and duration)
Structure representing possible vehicle parameter.
store information for a single parking area