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