Klamp't
0.8.1
|
Simulates a laser range sensor, either sweeping or stationary. Can both simulate both 1D sweeping and 2D sweeping. More...
#include <VisualSensors.h>
Public Types | |
enum | { SweepSinusoid, SweepTriangular, SweepSawtooth } |
Public Member Functions | |
virtual const char * | Type () const |
virtual void | Simulate (ControlledRobotSimulator *robot, WorldSimulation *sim) |
Called whenever the sensor is updated from the simulaton. | |
virtual void | SimulateKinematic (Robot &robot, RobotWorld &world) |
Updates the sensor for a kinematic world. Useful for non-simulation debugging. | |
virtual void | Advance (double dt) |
Advances to the next time step with duration dt elapsed. | |
virtual void | Reset () |
Should be overridden if the sensor is stateful to reset to an initial state. | |
virtual void | MeasurementNames (vector< string > &names) const |
Must be overridden to produce a list of names of each measurement. | |
virtual void | GetMeasurements (vector< double > &values) const |
Must be overridden to returns a list of all measurements. | |
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's settings. | |
virtual bool | GetSetting (const string &name, string &str) const |
Get a named setting. Returns false if the name is not supported. | |
virtual bool | SetSetting (const string &name, const string &str) |
virtual void | DrawGL (const Robot &robot, const vector< double > &measurements) |
![]() | |
virtual bool | ReadState (File &f) |
virtual bool | WriteState (File &f) const |
virtual void | GetInternalState (vector< double > &state) const |
Any other state besides measurements/settings that you might want to store. Used in ReadState. | |
virtual void | SetInternalState (const vector< double > &state) |
Any other state besides measurements/settings that you might want to store. Used in WriteState. | |
Public Attributes | |
int | link |
RigidTransform | Tsensor |
z is forward | |
int | measurementCount |
number of readings per cycle | |
double | depthResolution |
resolution of the depth measurement | |
double | depthMinimum |
double | depthMaximum |
minimum / maximum depth | |
double | depthVarianceLinear |
double | depthVarianceConstant |
Real | xSweepMagnitude |
Real | xSweepPeriod |
Real | xSweepPhase |
int | xSweepType |
Real | ySweepMagnitude |
Real | ySweepPeriod |
Real | ySweepPhase |
int | ySweepType |
vector< double > | depthReadings |
Real | last_dt |
Real | last_t |
![]() | |
string | name |
double | rate |
Simulates a laser range sensor, either sweeping or stationary. Can both simulate both 1D sweeping and 2D sweeping.
Default configuration sets up a 1D triangular scan along x direction with 180 degree field of view and instantaneous measurement.
Note: if you place this inside a robot's geometry, the minimum range should extend past the robot's geometry.
Currently intensity information is not provided.
Configurable settings:
anonymous enum |
enum defining a pattern of the sweep. -Sinusoid is sin(x*2pi), -Triangular is 2*(1+abs(x mod 2 - 1))-1 (range is [-1,1]) -Sawtooth is 2*(x mod 1)-1 (range is [-1,1])
|
virtual |
If the sensor can be drawn, draw the sensor on the robot's current configuration, using these measurements, using OpenGL calls.
Reimplemented from SensorBase.
|
virtual |
Updates the internal measurement vector. Should be overridden to correctly restore state using ReadState(), or to visualize a physical robot's sensors.
Reimplemented from SensorBase.
|
virtual |
Set a named setting. Returns false if the name is not supported, or the value is formatted incorrectly
Reimplemented from SensorBase.
Real LaserRangeSensor::xSweepMagnitude |
left-right angle (rotation about z axis) at time t is magnitude*f((t+phase)/period) where f is the sweep type. A measurement is produced every 2 * magnitude / measurementCount radians If period = 0, measurement sweeps over range of [-magnitude,magnitude]