Klamp't  0.8.1
VisualSensors.h
1 #ifndef CONTROL_VISUAL_SENSORS_H
2 #define CONTROL_VISUAL_SENSORS_H
3 
4 #include "Sensor.h"
5 #include <KrisLibrary/camera/viewport.h>
6 #include <KrisLibrary/math3d/primitives.h>
7 #include <KrisLibrary/GLdraw/GLRenderToImage.h>
8 using namespace Math3D;
9 
10 class RobotWorld;
11 class Robot;
12 
38 {
39  public:
41  virtual ~LaserRangeSensor() {}
42  virtual const char* Type() const { return "LaserRangeSensor"; }
43  virtual void Simulate(ControlledRobotSimulator* robot,WorldSimulation* sim);
44  virtual void SimulateKinematic(Robot& robot,RobotWorld& world);
45  virtual void Advance(double dt);
46  virtual void Reset();
47  virtual void MeasurementNames(vector<string>& names) const;
48  virtual void GetMeasurements(vector<double>& values) const;
49  virtual void SetMeasurements(const vector<double>& values);
50  virtual map<string,string> Settings() const;
51  virtual bool GetSetting(const string& name,string& str) const;
52  virtual bool SetSetting(const string& name,const string& str);
53  virtual void DrawGL(const Robot& robot,const vector<double>& measurements);
54 
55  int link;
56  RigidTransform Tsensor;
58  double depthResolution;
59  double depthMinimum,depthMaximum;
60  double depthVarianceLinear,depthVarianceConstant;
65  enum { SweepSinusoid, SweepTriangular, SweepSawtooth};
69  Real xSweepMagnitude,xSweepPeriod,xSweepPhase;
70  int xSweepType;
71  Real ySweepMagnitude,ySweepPeriod,ySweepPhase;
72  int ySweepType;
73 
74  //simulated depth readings
75  vector<double> depthReadings;
76  //internal state
77  Real last_dt,last_t;
78 };
79 
80 
112 class CameraSensor : public SensorBase
113 {
114  public:
115  CameraSensor();
116  virtual ~CameraSensor();
117  virtual const char* Type() const { return "CameraSensor"; }
118  virtual void Simulate(ControlledRobotSimulator* robot,WorldSimulation* sim);
119  virtual void SimulateKinematic(Robot& robot,RobotWorld& world);
120  virtual void Reset();
121  virtual void MeasurementNames(vector<string>& names) const;
122  virtual void GetMeasurements(vector<double>& values) const;
123  virtual void SetMeasurements(const vector<double>& values);
124  virtual map<string,string> Settings() const;
125  virtual bool GetSetting(const string& name,string& str) const;
126  virtual bool SetSetting(const string& name,const string& str);
127  virtual void DrawGL(const Robot& robot,const vector<double>& measurements);
128  void GetViewport(Camera::Viewport& view) const;
129  void SetViewport(const Camera::Viewport& view);
130 
131  int link;
132  RigidTransform Tsensor;
133  bool rgb,depth;
134  int xres,yres;
135  double xfov,yfov;
136  double zmin,zmax;
140 
141  //internal: used for OpenGL rendering / buffers
142  bool useGLFramebuffers;
143  GLDraw::GLRenderToImage renderer;
144  vector<unsigned char> pixels;
145  vector<float> floats;
146  vector<double> measurements;
147 };
148 
149 #endif
int yres
resolution of camera in x and y directions (# of pixels)
Definition: VisualSensors.h:134
bool depth
If rgb is true, gives color measurements. If depth is true, gives depth measurements.
Definition: VisualSensors.h:133
The main robot type used in RobotSim.
Definition: Robot.h:79
A class containing information about an ODE-simulated and controlled robot.
Definition: ControlledSimulator.h:17
double depthMaximum
minimum / maximum depth
Definition: VisualSensors.h:59
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
double zmax
range limits, > 0
Definition: VisualSensors.h:136
double zvarianceConstant
variance in z estimates, constant term
Definition: VisualSensors.h:139
int measurementCount
number of readings per cycle
Definition: VisualSensors.h:57
Simulates an RGB, D, or RGB+D camera sensor. Provides a 2D grid of color and/or depth values...
Definition: VisualSensors.h:112
A sensor base class. A SensorBase should allow a Controller to both connect to a simulation as well a...
Definition: Sensor.h:51
Real xSweepMagnitude
Definition: VisualSensors.h:69
double depthResolution
resolution of the depth measurement
Definition: VisualSensors.h:58
RigidTransform Tsensor
z is forward
Definition: VisualSensors.h:56
RigidTransform Tsensor
z is forward, x is to the right of image, and y is down
Definition: VisualSensors.h:132
Simulates a laser range sensor, either sweeping or stationary. Can both simulate both 1D sweeping and...
Definition: VisualSensors.h:37
int zresolution
resolution in z direction
Definition: VisualSensors.h:137
double yfov
field of view in x and y directions (radians)
Definition: VisualSensors.h:135
A physical simulator for a RobotWorld.
Definition: WorldSimulation.h:67
double zvarianceLinear
variance in z estimates, linear term
Definition: VisualSensors.h:138