Eclipse SUMO - Simulation of Urban MObility
MSDevice_DriverState.h
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2013-2019 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 /****************************************************************************/
20 /****************************************************************************/
21 #ifndef MSDevice_DriverState_h
22 #define MSDevice_DriverState_h
23 
24 
25 // ===========================================================================
26 // included modules
27 // ===========================================================================
28 #include <config.h>
29 
30 #include "MSVehicleDevice.h"
31 #include <utils/common/SUMOTime.h>
33 
34 
35 // ===========================================================================
36 // class declarations
37 // ===========================================================================
38 class SUMOVehicle;
39 class MSVehicle;
41 
42 
43 // ===========================================================================
44 // class definitions
45 // ===========================================================================
56 public:
60  static void insertOptions(OptionsCont& oc);
61 
62 
73  static void buildVehicleDevices(SUMOVehicle& v, std::vector<MSVehicleDevice*>& into);
74 
76  void update();
77 
79  inline std::shared_ptr<MSSimpleDriverState> getDriverState() const {
80  return myDriverState;
81  }
82 
83 private:
86  static double getMinAwareness(const SUMOVehicle& v, const OptionsCont& oc);
87  static double getInitialAwareness(const SUMOVehicle& v, const OptionsCont& oc);
88  static double getErrorTimeScaleCoefficient(const SUMOVehicle& v, const OptionsCont& oc);
89  static double getErrorNoiseIntensityCoefficient(const SUMOVehicle& v, const OptionsCont& oc);
90  static double getSpeedDifferenceErrorCoefficient(const SUMOVehicle& v, const OptionsCont& oc);
91  static double getSpeedDifferenceChangePerceptionThreshold(const SUMOVehicle& v, const OptionsCont& oc);
92  static double getHeadwayChangePerceptionThreshold(const SUMOVehicle& v, const OptionsCont& oc);
93  static double getHeadwayErrorCoefficient(const SUMOVehicle& v, const OptionsCont& oc);
94  static double getMaximalReactionTime(const SUMOVehicle& v, const OptionsCont& oc);
96 
97 
98 public:
101 
103  const std::string deviceName() const {
104  return "driverstate";
105  }
106 
108  std::string getParameter(const std::string& key) const;
109 
111  void setParameter(const std::string& key, const std::string& value);
112 
113 
114 private:
120  MSDevice_DriverState(SUMOVehicle& holder, const std::string& id,
121  double minAwareness,
122  double initialAwareness,
123  double errorTimeScaleCoefficient,
124  double errorNoiseIntensityCoefficient,
125  double speedDifferenceErrorCoefficient,
126  double speedDifferenceChangePerceptionThreshold,
127  double headwayChangePerceptionThreshold,
128  double headwayErrorCoefficient,
129  double maximalReactionTime);
130 
132  void initDriverState();
133 
134 private:
137 
151 
153  std::shared_ptr<MSSimpleDriverState> myDriverState;
154 
155 private:
158 
161 
162 };
163 
164 
165 #endif
166 
167 /****************************************************************************/
168 
void update()
update internal state
Representation of a vehicle in the micro simulation.
Definition: MSVehicle.h:80
double mySpeedDifferenceChangePerceptionThreshold
static void insertOptions(OptionsCont &oc)
Inserts MSDevice_DriverState-options.
std::string getParameter(const std::string &key) const
try to retrieve the given parameter from this device. Throw exception for unsupported key ...
MSDevice_DriverState & operator=(const MSDevice_DriverState &)
Invalidated assignment operator.
static double getErrorNoiseIntensityCoefficient(const SUMOVehicle &v, const OptionsCont &oc)
static double getInitialAwareness(const SUMOVehicle &v, const OptionsCont &oc)
static double getSpeedDifferenceErrorCoefficient(const SUMOVehicle &v, const OptionsCont &oc)
static double getMaximalReactionTime(const SUMOVehicle &v, const OptionsCont &oc)
static double getHeadwayErrorCoefficient(const SUMOVehicle &v, const OptionsCont &oc)
Representation of a vehicle.
Definition: SUMOVehicle.h:61
std::shared_ptr< MSSimpleDriverState > myDriverState
The driver state of the holder.
void setParameter(const std::string &key, const std::string &value)
try to set the given parameter for this device. Throw exception for unsupported key ...
static double getMinAwareness(const SUMOVehicle &v, const OptionsCont &oc)
std::shared_ptr< MSSimpleDriverState > getDriverState() const
return internal state
static double getErrorTimeScaleCoefficient(const SUMOVehicle &v, const OptionsCont &oc)
static void buildVehicleDevices(SUMOVehicle &v, std::vector< MSVehicleDevice *> &into)
Build devices for the given vehicle, if needed.
MSVehicle * myHolderMS
The holder vehicle casted to MSVehicle*.
~MSDevice_DriverState()
Destructor.
A storage for options typed value containers)
Definition: OptionsCont.h:90
void initDriverState()
Initializeses the driver state parameters.
Abstract in-vehicle device.
static double getHeadwayChangePerceptionThreshold(const SUMOVehicle &v, const OptionsCont &oc)
The ToC Device controls transition of control between automated and manual driving.
MSDevice_DriverState(SUMOVehicle &holder, const std::string &id, double minAwareness, double initialAwareness, double errorTimeScaleCoefficient, double errorNoiseIntensityCoefficient, double speedDifferenceErrorCoefficient, double speedDifferenceChangePerceptionThreshold, double headwayChangePerceptionThreshold, double headwayErrorCoefficient, double maximalReactionTime)
Constructor.
Provides an interface to an error whose fluctuation is controlled via the driver&#39;s &#39;awareness&#39;...
static double getSpeedDifferenceChangePerceptionThreshold(const SUMOVehicle &v, const OptionsCont &oc)
const std::string deviceName() const
return the name for this type of device