Klamp't  0.8.1
InertialSensors.h
1 #ifndef CONTROL_INERTIAL_SENSORS_H
2 #define CONTROL_INERTIAL_SENSORS_H
3 
4 #include "Sensor.h"
5 #include <KrisLibrary/math3d/primitives.h>
6 using namespace Math3D;
7 
17 class Accelerometer : public SensorBase
18 {
19  public:
20  Accelerometer();
21  virtual const char* Type() const { return "Accelerometer"; }
22  virtual void Simulate(ControlledRobotSimulator* robot,WorldSimulation* sim);
23  virtual void SimulateKinematic(Robot& robot,RobotWorld& world);
24  virtual void Advance(double dt);
25  virtual void Reset();
26  virtual void MeasurementNames(vector<string>& names) const;
27  virtual void GetMeasurements(vector<double>& values) const;
28  virtual void SetMeasurements(const vector<double>& values);
29  virtual void GetInternalState(vector<double>& state) const;
30  virtual void SetInternalState(const vector<double>& state);
31  virtual map<string,string> Settings() const;
32  virtual bool GetSetting(const string& name,string& str) const;
33  virtual bool SetSetting(const string& name,const string& str);
34 
35  int link;
36  RigidTransform Tsensor;
37  bool hasAxis[3];
38  Vector3 accelVariance;
39 
40  Vector3 accel;
41 
42  Real last_dt;
43  Vector3 last_v;
44 };
45 
59 class TiltSensor : public SensorBase
60 {
61  public:
62  TiltSensor();
63  virtual const char* Type() const { return "TiltSensor"; }
64  virtual void Simulate(ControlledRobotSimulator* robot,WorldSimulation* sim);
65  virtual void SimulateKinematic(Robot& robot,RobotWorld& world);
66  virtual void Advance(double dt);
67  virtual void Reset();
68  virtual void MeasurementNames(vector<string>& names) const;
69  virtual void GetMeasurements(vector<double>& values) const;
70  virtual void SetMeasurements(const vector<double>& values);
71  virtual map<string,string> Settings() const;
72  virtual bool GetSetting(const string& name,string& str) const;
73  virtual bool SetSetting(const string& name,const string& str);
74 
75  int link;
76  Vector3 referenceDir;
77  Matrix3 Rsensor;
78  bool hasAxis[3];
79  Vector3 resolution,variance;
80  bool hasVelocity;
81 
82  Vector3 alocal,wlocal;
83 };
84 
85 
98 class GyroSensor : public SensorBase
99 {
100  public:
101  GyroSensor();
102  virtual const char* Type() const { return "GyroSensor"; }
103  virtual void Simulate(ControlledRobotSimulator* robot,WorldSimulation* sim);
104  virtual void SimulateKinematic(Robot& robot,RobotWorld& world);
105  virtual void Reset();
106  virtual void Advance(Real dt);
107  virtual void MeasurementNames(vector<string>& names) const;
108  virtual void GetMeasurements(vector<double>& values) const;
109  virtual void SetMeasurements(const vector<double>& values);
110  virtual void GetInternalState(vector<double>& state) const;
111  virtual void SetInternalState(const vector<double>& state);
112  virtual map<string,string> Settings() const;
113  virtual bool GetSetting(const string& name,string& str) const;
114  virtual bool SetSetting(const string& name,const string& str);
115 
116  int link;
117  bool hasAngAccel;
118  bool hasAngVel;
119  bool hasRotation;
121  Matrix3 angVelVariance;
123 
124  Vector3 angAccel;
125  Vector3 angVel;
126  Matrix3 rotation;
127 
128  Real last_dt;
129  Vector3 last_w;
130 };
131 
139 class IMUSensor : public SensorBase
140 {
141  public:
142  IMUSensor();
143  virtual const char* Type() const { return "IMUSensor"; }
144  virtual void Simulate(ControlledRobotSimulator* robot,WorldSimulation* sim);
145  virtual void SimulateKinematic(Robot& robot,RobotWorld& world);
146  virtual void Advance(Real dt);
147  virtual void Reset();
148  virtual void MeasurementNames(vector<string>& names) const;
149  virtual void GetMeasurements(vector<double>& values) const;
150  virtual void SetMeasurements(const vector<double>& values);
151  virtual void GetInternalState(vector<double>& state) const;
152  virtual void SetInternalState(const vector<double>& state);
153  virtual map<string,string> Settings() const;
154  virtual bool GetSetting(const string& name,string& str) const;
155  virtual bool SetSetting(const string& name,const string& str);
156 
157  Accelerometer accelerometer;
158  GyroSensor gyro;
159  Vector3 accel,velocity,translation;
160  Vector3 angAccel,angVel;
161  Matrix3 rotation;
162 };
163 
164 #endif
Vector3 last_w
Temporary: needed to derive accel from ODE.
Definition: InertialSensors.h:129
bool hasRotation
True if rotation is directly measured.
Definition: InertialSensors.h:119
The main robot type used in RobotSim.
Definition: Robot.h:79
Vector3 angAccel
Measurement: the angular accel reading.
Definition: InertialSensors.h:124
Simulates a tilt sensor that measures the angle of a reference direction about certain axes...
Definition: InertialSensors.h:59
A class containing information about an ODE-simulated and controlled robot.
Definition: ControlledSimulator.h:17
Vector3 accel
Measurement: acceleration value.
Definition: InertialSensors.h:40
Vector3 last_v
Temporary: needed to derive accel from ODE.
Definition: InertialSensors.h:43
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
RigidTransform Tsensor
Position of unit on link.
Definition: InertialSensors.h:36
bool hasAngAccel
True if angular accel is directly measured.
Definition: InertialSensors.h:117
Matrix3 rotationVariance
The variance associated with the measurement.
Definition: InertialSensors.h:122
Vector3 accelVariance
Estimated variances of the sensor.
Definition: InertialSensors.h:38
A sensor base class. A SensorBase should allow a Controller to both connect to a simulation as well a...
Definition: Sensor.h:51
Matrix3 angAccelVariance
The variance associated with the measurement.
Definition: InertialSensors.h:120
bool hasAngVel
True if angular velocity is directly measured.
Definition: InertialSensors.h:118
Matrix3 Rsensor
Orientation of unit on link.
Definition: InertialSensors.h:77
Real last_dt
Temporary: needed to derive accel from ODE.
Definition: InertialSensors.h:128
Real last_dt
Temporary: needed to derive accel from ODE.
Definition: InertialSensors.h:42
Matrix3 rotation
Measurement: the rotation matrix reading.
Definition: InertialSensors.h:126
Vector3 angVel
Measurement: the angular velocity reading.
Definition: InertialSensors.h:125
Simulates a gyroscope.
Definition: InertialSensors.h:98
Simulates an accelerometer.
Definition: InertialSensors.h:17
A physical simulator for a RobotWorld.
Definition: WorldSimulation.h:67
int link
The link on which the sensor is located.
Definition: InertialSensors.h:116
Matrix3 angVelVariance
The variance associated with the measurement.
Definition: InertialSensors.h:121
An inertial measurement unit. May provide all or some of a rigid body&#39;s state.
Definition: InertialSensors.h:139