Klamp't  0.8.1
OtherSensors.h
1 #ifndef CONTROL_OTHER_SENSORS_H
2 #define CONTROL_OTHER_SENSORS_H
3 
4 #include "Sensor.h"
5 #include <deque>
6 
16 {
17  public:
19  virtual ~TransformedSensor() {}
20  virtual const char* Type() const { return "TransformedSensor"; }
21  virtual void Simulate(ControlledRobotSimulator* robot,WorldSimulation* sim);
22  virtual void SimulateKinematic(Robot& robot,RobotWorld& world);
23  virtual void Advance(double dt);
24  virtual void Reset();
25  virtual void MeasurementNames(vector<string>& names) const;
26  virtual void GetMeasurements(vector<double>& values) const;
27  virtual void SetMeasurements(const vector<double>& values);
28  virtual void GetInternalState(vector<double>& state) const;
29  virtual void SetInternalState(const vector<double>& state);
30  virtual map<string,string> Settings() const;
31  virtual bool GetSetting(const string& name,string& str) const;
32  virtual bool SetSetting(const string& name,const string& str);
33  virtual void DrawGL(const Robot& robot,const vector<double>& measurements);
34  void DoTransform();
35 
36  shared_ptr<SensorBase> sensor;
37  vector<double> scale;
38  vector<double> bias;
39  vector<double> minimum,maximum;
40 
41  vector<double> measurements;
42 };
43 
52 {
53  public:
55  virtual ~CorruptedSensor() {}
56  virtual const char* Type() const { return "CorruptedSensor"; }
57  virtual void Simulate(ControlledRobotSimulator* robot,WorldSimulation* sim);
58  virtual void SimulateKinematic(Robot& robot,RobotWorld& world);
59  virtual void Advance(double dt);
60  virtual void Reset();
61  virtual void MeasurementNames(vector<string>& names) const;
62  virtual void GetMeasurements(vector<double>& values) const;
63  virtual void SetMeasurements(const vector<double>& values);
64  virtual void GetInternalState(vector<double>& state) const;
65  virtual void SetInternalState(const vector<double>& state);
66  virtual map<string,string> Settings() const;
67  virtual bool GetSetting(const string& name,string& str) const;
68  virtual bool SetSetting(const string& name,const string& str);
69  virtual void DrawGL(const Robot& robot,const vector<double>& measurements);
70  void DoCorrupt();
71 
72  shared_ptr<SensorBase> sensor;
73  vector<double> resolution;
74  vector<double> variance;
75 
76  vector<double> measurements;
77 };
78 
85 class FilteredSensor : public SensorBase
86 {
87  public:
89  virtual ~FilteredSensor() {}
90  virtual const char* Type() const { return "FilteredSensor"; }
91  virtual void Simulate(ControlledRobotSimulator* robot,WorldSimulation* sim);
92  virtual void SimulateKinematic(Robot& robot,RobotWorld& world);
93  virtual void Advance(double dt);
94  virtual void Reset();
95  virtual void MeasurementNames(vector<string>& names) const;
96  virtual void GetMeasurements(vector<double>& values) const;
97  virtual void SetMeasurements(const vector<double>& values);
98  virtual void GetInternalState(vector<double>& state) const;
99  virtual void SetInternalState(const vector<double>& state);
100  virtual map<string,string> Settings() const;
101  virtual bool GetSetting(const string& name,string& str) const;
102  virtual bool SetSetting(const string& name,const string& str);
103  virtual void DrawGL(const Robot& robot,const vector<double>& measurements);
104 
105  shared_ptr<SensorBase> sensor;
106  vector<double> measurements;
107  double smoothing;
108 };
109 
118 {
119  public:
121  virtual ~TimeDelayedSensor() {}
122  virtual const char* Type() const { return "TimeDelayedSensor"; }
123  virtual void Simulate(ControlledRobotSimulator* robot,WorldSimulation* sim);
124  virtual void SimulateKinematic(Robot& robot,RobotWorld& world);
125  virtual void Advance(double dt);
126  virtual void Reset();
127  virtual void MeasurementNames(vector<string>& names) const;
128  virtual void GetMeasurements(vector<double>& values) const;
129  virtual void SetMeasurements(const vector<double>& values);
130  virtual void GetInternalState(vector<double>& state) const;
131  virtual void SetInternalState(const vector<double>& state);
132  virtual map<string,string> Settings() const;
133  virtual bool GetSetting(const string& name,string& str) const;
134  virtual bool SetSetting(const string& name,const string& str);
135  virtual void DrawGL(const Robot& robot,const vector<double>& measurements);
136 
137  shared_ptr<SensorBase> sensor;
138  deque<vector<double> > measurementsInTransit;
139  deque<double> deliveryTimes;
140  vector<double> arrivedMeasurement;
141  double curTime;
142  double delay,jitter;
143 };
144 
145 #endif
virtual bool GetSetting(const string &name, string &str) const
Get a named setting. Returns false if the name is not supported.
virtual void GetMeasurements(vector< double > &values) const
Must be overridden to returns a list of all measurements.
virtual void SimulateKinematic(Robot &robot, RobotWorld &world)
Updates the sensor for a kinematic world. Useful for non-simulation debugging.
The main robot type used in RobotSim.
Definition: Robot.h:79
virtual void SetInternalState(const vector< double > &state)
Any other state besides measurements/settings that you might want to store. Used in WriteState...
A class containing information about an ODE-simulated and controlled robot.
Definition: ControlledSimulator.h:17
virtual void Simulate(ControlledRobotSimulator *robot, WorldSimulation *sim)
Called whenever the sensor is updated from the simulaton.
virtual void Advance(double dt)
Advances to the next time step with duration dt elapsed.
virtual void DrawGL(const Robot &robot, const vector< double > &measurements)
The main world class containing multiple robots, objects, and static geometries (terrains). Lights and other viewport information may also be stored here.
Definition: World.h:20
An exponentially smoothed filter that acts as a "piggyback" sensor.
Definition: OtherSensors.h:85
A sensor base class. A SensorBase should allow a Controller to both connect to a simulation as well a...
Definition: Sensor.h:51
An time delayed "piggyback" sensor.
Definition: OtherSensors.h:117
virtual void SetMeasurements(const vector< double > &values)
virtual map< string, string > Settings() const
Returns a map of all current name-value pairs of the sensor&#39;s settings.
virtual void Reset()
Should be overridden if the sensor is stateful to reset to an initial state.
A transformed "piggyback" sensor with a scale, bias, and minimum / maximum.
Definition: OtherSensors.h:15
virtual bool SetSetting(const string &name, const string &str)
A "piggyback" sensor that corrupts readings with quantization error and gaussian noise.
Definition: OtherSensors.h:51
A physical simulator for a RobotWorld.
Definition: WorldSimulation.h:67
virtual void MeasurementNames(vector< string > &names) const
Must be overridden to produce a list of names of each measurement.
virtual void GetInternalState(vector< double > &state) const
Any other state besides measurements/settings that you might want to store. Used in ReadState...