Go to the documentation of this file.
17 #ifndef _GAZEBO_RENDERING_GPULASER_HH_
18 #define _GAZEBO_RENDERING_GPULASER_HH_
36 class AutoParamDataSource;
51 class GpuLaserPrivate;
59 :
public Camera,
public Ogre::RenderObjectListener
65 public:
GpuLaser(
const std::string &_namePrefix,
66 ScenePtr _scene,
const bool _autoRender =
true);
72 public:
virtual void Load(sdf::ElementPtr _sdf);
75 public:
virtual void Load();
78 public:
virtual void Init();
81 public:
virtual void Fini();
104 std::function<
void (
const float *_frame,
unsigned int _width,
105 unsigned int _height,
unsigned int _depth,
106 const std::string &_format)> _subscriber);
113 const unsigned int _h = 1);
118 const Ogre::Pass *_p,
const Ogre::AutoParamDataSource *_s,
119 const Ogre::LightList *_ll,
bool _supp);
211 private:
virtual void RenderImpl();
218 private:
void UpdateRenderTarget(Ogre::RenderTarget *_target,
219 Ogre::Material *_material,
221 const bool _updateTex =
false);
224 private:
void CreateOrthoCam();
227 private:
void CreateMesh();
230 private:
void CreateCanvas();
240 private: Ogre::Matrix4 BuildScaledOrthoMatrix(
const float _left,
241 const float _right,
const float _bottom,
const float _top,
242 const float _near,
const float _far);
247 private:
virtual void Set1stPassTarget(Ogre::RenderTarget *_target,
248 const unsigned int _index);
252 private:
virtual void Set2ndPassTarget(Ogre::RenderTarget *_target);
289 private: std::unique_ptr<GpuLaserPrivate> dataPtr;
double vfov
Vertical field-of-view.
Definition: GpuLaser.hh:267
Definition: JointMaker.hh:40
void SetVertFOV(const double _vfov)
Set the vertical fov.
virtual void Load()
Load the camera with default parameters.
double horzHalfAngle
Horizontal half angle.
Definition: GpuLaser.hh:255
Forward declarations for the common classes.
Definition: Animation.hh:27
virtual ~GpuLaser()
Destructor.
double CosVertFOV() const
Get Cos Vert field-of-view.
void SetCosVertFOV(const double _cvfov)
Set the Cos Horz FOV.
void SetIsHorizontal(const bool _horizontal)
Set sensor horizontal or vertical.
void SetHorzFOV(const double _hfov)
Set the horizontal fov.
common
Definition: FuelModelDatabase.hh:37
double NearClip() const
Get near clip.
void SetRangeCount(const unsigned int _w, const unsigned int _h=1)
Set the number of samples in the width and height for the first pass texture.
double hfov
Horizontal field-of-view.
Definition: GpuLaser.hh:264
bool IsHorizontal() const
Gets if sensor is horizontal.
virtual void notifyRenderSingleObject(Ogre::Renderable *_rend, const Ogre::Pass *_p, const Ogre::AutoParamDataSource *_s, const Ogre::LightList *_ll, bool _supp)
void SetNearClip(const double _near)
Set the near clip distance.
void CreateLaserTexture(const std::string &_textureName)
Create the texture which is used to render laser data.
GpuLaser(const std::string &_namePrefix, ScenePtr _scene, const bool _autoRender=true)
Constructor.
double chfov
Cos horizontal field-of-view.
Definition: GpuLaser.hh:270
event::ConnectionPtr ConnectNewLaserFrame(std::function< void(const float *_frame, unsigned int _width, unsigned int _height, unsigned int _depth, const std::string &_format)> _subscriber)
Connect to a laser frame signal.
boost::shared_ptr< Scene > ScenePtr
Definition: RenderTypes.hh:82
unsigned int CameraCount() const
Get the number of cameras required.
double vertHalfAngle
Vertical half angle.
Definition: GpuLaser.hh:258
rendering
Definition: RenderEngine.hh:31
double VertFOV() const
Get the vertical field-of-view.
double HorzFOV() const
Get the horizontal field of view of the laser sensor.
GpuLaserDataIterator< GpuLaser > DataIter
Constant iterator to access laser data.
Definition: GpuLaser.hh:91
double VertHalfAngle() const
Get (vertical_max_angle + vertical_min_angle) * 0.5.
void SetVertHalfAngle(const double _angle)
Set the vertical half angle.
virtual void Fini()
Finalize the camera.
virtual void PostRender()
Post render.
boost::shared_ptr< Connection > ConnectionPtr
Definition: CommonTypes.hh:134
void SetHorzHalfAngle(const double _angle)
Set the horizontal half angle.
double nearClip
Near clip plane.
Definition: GpuLaser.hh:276
void SetRayCountRatio(const double _rayCountRatio)
Sets the ray count ratio (equivalent to aspect ratio)
bool isHorizontal
True if the sensor is horizontal only.
Definition: GpuLaser.hh:282
double rayCountRatio
Ray count ratio.
Definition: GpuLaser.hh:261
double RayCountRatio() const
Get the ray count ratio (equivalent to aspect ratio)
double HorzHalfAngle() const
Get (horizontal_max_angle + horizontal_min_angle) * 0.5.
void SetCosHorzFOV(const double _chfov)
Set the Cos Horz FOV.
virtual void Init()
Initialize the camera.
DataIter LaserDataEnd() const
Return an iterator to one past the end of the laser data.
double CosHorzFOV() const
Get Cos Horz field-of-view.
double farClip
Far clip plane.
Definition: GpuLaser.hh:279
Basic camera sensor.
Definition: Camera.hh:86
DataIter LaserDataBegin() const
Return an iterator to the begining of the laser data.
double cvfov
Cos vertical field-of-view.
Definition: GpuLaser.hh:273
const Bidirectional iterator for laser data
Definition: GpuLaserDataIterator.hh:54
double FarClip() const
Get far clip.
void SetCameraCount(const unsigned int _cameraCount)
Set the number of cameras required.
unsigned int cameraCount
Number of cameras needed to generate the rays.
Definition: GpuLaser.hh:285
GPU based laser distance sensor.
Definition: GpuLaser.hh:60
virtual void Load(sdf::ElementPtr _sdf)
Load the camera with a set of parameters.
void SetFarClip(const double _far)
Set the far clip distance.