Go to the documentation of this file.
17 #ifndef _GAZEBO_SENSORS_GPURAYSENSOR_HH_
18 #define _GAZEBO_SENSORS_GPURAYSENSOR_HH_
24 #include <ignition/math/Angle.hh>
25 #include <ignition/math/Pose3.hh>
39 class GpuRaySensorPrivate;
61 public:
virtual void Load(
const std::string &_worldName,
62 sdf::ElementPtr _sdf)
override;
66 public:
virtual void Load(
const std::string &_worldName)
override;
69 public:
virtual void Init()
override;
72 protected:
void ResetLastUpdateTime()
override;
76 protected:
bool NeedsUpdate()
override;
80 public:
void Update(
bool _force)
override;
84 public:
double NextRequiredTimestamp()
const override;
87 protected:
virtual bool UpdateImpl(
const bool _force)
override;
90 protected:
virtual void Fini()
override;
93 public:
virtual std::string Topic()
const override;
97 public:
void SetActive(
bool _value)
override;
105 public: ignition::math::Angle AngleMin()
const;
109 public:
void SetAngleMin(
const double _angle);
113 public: ignition::math::Angle AngleMax()
const;
117 public:
void SetAngleMax(
const double _angle);
121 public:
double AngleResolution()
const;
125 public:
double RangeMin()
const;
129 public:
double RangeMax()
const;
138 public:
double RangeResolution()
const;
142 public:
int RayCount()
const;
146 public:
int RangeCount()
const;
150 public:
int VerticalRayCount()
const;
154 public:
int VerticalRangeCount()
const;
158 public: ignition::math::Angle VerticalAngleMin()
const;
162 public:
void SetVerticalAngleMin(
const double _angle);
166 public: ignition::math::Angle VerticalAngleMax()
const;
170 public:
void SetVerticalAngleMax(
const double _angle);
174 public:
double VerticalAngleResolution()
const;
185 public:
double Range(
const int _index)
const;
189 public:
void Ranges(std::vector<double> &_ranges)
const;
200 public:
double Retro(
const int _index)
const;
211 public:
int Fiducial(
const unsigned int _index)
const;
215 public:
unsigned int CameraCount()
const;
219 public:
bool IsHorizontal()
const;
227 public:
double RayCountRatio()
const;
235 public:
double RangeCountRatio()
const;
239 public:
double HorzFOV()
const;
243 public:
double CosHorzFOV()
const;
247 public:
double VertFOV()
const;
251 public:
double CosVertFOV()
const;
255 public:
double HorzHalfAngle()
const;
259 public:
double VertHalfAngle()
const;
264 std::function<
void(
const float *,
unsigned int,
unsigned int,
265 unsigned int,
const std::string &)> _subscriber);
268 public:
virtual bool IsActive()
const override;
271 private:
void Render();
275 private: std::unique_ptr<GpuRaySensorPrivate> dataPtr;
virtual bool IsActive() const override
Returns true if sensor generation is active.
int RayCount() const
Get the ray count.
virtual ~GpuRaySensor()
Destructor.
double RangeMin() const
Get the minimum range.
double Retro(const int _index) const
Get detected retro (intensity) value for a ray.
event::ConnectionPtr ConnectNewLaserFrame(std::function< void(const float *, unsigned int, unsigned int, unsigned int, const std::string &)> _subscriber)
Connect to the new laser frame event.
double HorzHalfAngle() const
Get (horizontal_max_angle + horizontal_min_angle) * 0.5.
Forward declarations for the common classes.
Definition: Animation.hh:26
void Update(bool _force) override
Update the sensor.
boost::shared_ptr< GpuLaser > GpuLaserPtr
Definition: RenderTypes.hh:106
double VertFOV() const
Get the vertical field-of-view.
sensors
Definition: SensorManager.hh:36
int VerticalRangeCount() const
Get the vertical scan line count.
void ResetLastUpdateTime() override
reset timing related members
Forward declarations for transport.
void SetActive(bool _value) override
Set whether the sensor is active or not.
double HorzFOV() const
Get the horizontal field of view of the laser sensor.
void SetVerticalAngleMin(const double _angle)
Set the vertical scan bottom angle.
double NextRequiredTimestamp() const override
Return the next timestamp going to be used by the sensor.
virtual bool UpdateImpl(const bool _force) override
This gets overwritten by derived sensor types.
virtual void Init() override
Initialize the ray.
double CosHorzFOV() const
Get Cos Horz field-of-view.
ignition::math::Angle VerticalAngleMax() const
Get the vertical scan line top angle.
virtual void Load(const std::string &_worldName, sdf::ElementPtr _sdf) override
Load the sensor with SDF parameters.
double Range(const int _index) const
Get detected range for a ray.
int Fiducial(const unsigned int _index) const
Get detected fiducial value for a ray.
ignition::math::Angle VerticalAngleMin() const
Get the vertical scan bottom angle.
double RangeResolution() const
Get the range resolution If RangeResolution is 1, the number of simulated rays is equal to the number...
GPU based laser sensor.
Definition: GpuRaySensor.hh:50
virtual void Fini() override
Finalize the ray.
ignition::math::Angle AngleMax() const
Get the maximum angle.
int VerticalRayCount() const
Get the vertical scan line count.
virtual std::string Topic() const override
Returns the topic name as set in SDF.
bool IsHorizontal() const
Gets if sensor is horizontal.
boost::shared_ptr< Connection > ConnectionPtr
Definition: CommonTypes.hh:134
GAZEBO_VISIBLE void Init(google::protobuf::Message &_message, const std::string &_id="")
Initialize a message.
double CosVertFOV() const
Get Cos Vert field-of-view.
double VertHalfAngle() const
Get (vertical_max_angle + vertical_min_angle) * 0.5.
rendering::GpuLaserPtr LaserCamera() const
Returns a pointer to the internally kept rendering::GpuLaser.
void SetAngleMin(const double _angle)
Set the scan minimum angle.
void SetVerticalAngleMax(const double _angle)
Set the vertical scan line top angle.
GpuRaySensor()
Constructor.
Base class for sensors.
Definition: Sensor.hh:51
double VerticalAngleResolution() const
Get the vertical angle in radians between each range.
void SetAngleMax(const double _angle)
Set the scan maximum angle.
double RayCountRatio() const
Return the ratio of horizontal ray count to vertical ray count.
double AngleResolution() const
Get radians between each range.
double RangeCountRatio() const
Return the ratio of horizontal range count to vertical range count.
int RangeCount() const
Get the range count.
double RangeMax() const
Get the maximum range.
void Ranges(std::vector< double > &_ranges) const
Get all the ranges.
unsigned int CameraCount() const
Gets the camera count.
ignition::math::Angle AngleMin() const
Get the minimum angle.
bool NeedsUpdate() override
Return true if the sensor needs to be updated.