All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Protected Attributes | List of all members
gazebo::rendering::GpuLaser Class Reference

GPU based laser distance sensor. More...

#include <rendering/rendering.hh>

Inheritance diagram for gazebo::rendering::GpuLaser:
Inheritance graph
[legend]

Public Member Functions

 GpuLaser (const std::string &_namePrefix, ScenePtr _scene, bool _autoRender=true)
 Constructor. More...
 
virtual ~GpuLaser ()
 Destructor. More...
 
template<typename T >
event::ConnectionPtr ConnectNewLaserFrame (T _subscriber)
 Connect to a laser frame signal. More...
 
void CreateLaserTexture (const std::string &_textureName)
 Create the texture which is used to render laser data. More...
 
void DisconnectNewLaserFrame (event::ConnectionPtr &_c)
 Disconnect from a laser frame signal. More...
 
virtual void Fini ()
 Finalize the camera. More...
 
double GetCameraCount () const
 Get the number of cameras required. More...
 
double GetCosHorzFOV () const
 Get Cos Horz field-of-view. More...
 
double GetCosVertFOV () const
 Get Cos Vert field-of-view. More...
 
double GetFarClip () const
 Get far clip. More...
 
double GetHorzFOV () const
 Get the horizontal field of view of the laser sensor. More...
 
double GetHorzHalfAngle () const
 Get (horizontal_max_angle + horizontal_min_angle) * 0.5. More...
 
const float * GetLaserData ()
 All things needed to get back z buffer for laser data. More...
 
double GetNearClip () const
 Get near clip. More...
 
double GetRayCountRatio () const
 Get the ray count ratio (equivalent to aspect ratio) More...
 
double GetVertFOV () const
 Get the vertical field-of-view. More...
 
double GetVertHalfAngle () const
 Get (vertical_max_angle + vertical_min_angle) * 0.5. More...
 
virtual void Init ()
 Initialize the camera. More...
 
bool IsHorizontal () const
 Gets if sensor is horizontal. More...
 
virtual void Load (sdf::ElementPtr &_sdf)
 
virtual void Load ()
 Load the camera with default parmeters. More...
 
virtual void notifyRenderSingleObject (Ogre::Renderable *_rend, const Ogre::Pass *_p, const Ogre::AutoParamDataSource *_s, const Ogre::LightList *_ll, bool _supp)
 
virtual void PostRender ()
 Post render. More...
 
void SetCameraCount (double _cameraCount)
 Set the number of cameras required. More...
 
void SetCosHorzFOV (double _chfov)
 Set the Cos Horz FOV. More...
 
void SetCosVertFOV (double _cvfov)
 Set the Cos Horz FOV. More...
 
void SetFarClip (double _far)
 Set the far clip distance. More...
 
void SetHorzFOV (double _hfov)
 Set the horizontal fov. More...
 
void SetHorzHalfAngle (double _angle)
 Set the horizontal half angle. More...
 
void SetIsHorizontal (bool _horizontal)
 Set sensor horizontal or vertical. More...
 
void SetNearClip (double _near)
 Set the near clip distance. More...
 
void SetRangeCount (unsigned int _w, unsigned int _h=1)
 Set the number of laser samples in the width and height. More...
 
void SetRayCountRatio (double _rayCountRatio)
 Sets the ray count ratio (equivalen to aspect ratio) More...
 
void SetVertFOV (double _vfov)
 Set the vertical fov. More...
 
void SetVertHalfAngle (double _angle)
 Set the vertical half angle. More...
 
- Public Member Functions inherited from gazebo::rendering::Camera
 Camera (const std::string &_namePrefix, ScenePtr _scene, bool _autoRender=true)
 Constructor. More...
 
virtual ~Camera ()
 Destructor. More...
 
void AttachToVisual (const std::string &_visualName, bool _inheritOrientation, double _minDist=0.0, double _maxDist=0.0)
 Attach the camera to a scene node. More...
 
void AttachToVisual (uint32_t _id, bool _inheritOrientation, double _minDist=0.0, double _maxDist=0.0)
 Attach the camera to a scene node. More...
 
template<typename T >
event::ConnectionPtr ConnectNewImageFrame (T _subscriber)
 Connect to the new image signal. More...
 
void CreateRenderTexture (const std::string &_textureName)
 Set the render target. More...
 
void DisconnectNewImageFrame (event::ConnectionPtr &_c)
 Disconnect from an image frame. More...
 
void EnableSaveFrame (bool _enable)
 Enable or disable saving. More...
 
float GetAspectRatio () const
 Get the apect ratio. More...
 
virtual float GetAvgFPS ()
 Get the average FPS. More...
 
void GetCameraToViewportRay (int _screenx, int _screeny, math::Vector3 &_origin, math::Vector3 &_dir)
 Get a world space ray as cast from the camera through the viewport. More...
 
bool GetCaptureData () const
 Return the value of this->captureData. More...
 
math::Vector3 GetDirection () const
 Get the camera's direction vector. More...
 
double GetFarClip ()
 Get the far clip distance. More...
 
math::Angle GetHFOV () const
 Get the camera FOV (horizontal) More...
 
size_t GetImageByteSize () const
 Get the image size in bytes. More...
 
virtual const unsigned char * GetImageData (unsigned int i=0)
 Get a pointer to the image data. More...
 
unsigned int GetImageDepth () const
 Get the depth of the image. More...
 
std::string GetImageFormat () const
 Get the string representation of the image format. More...
 
virtual unsigned int GetImageHeight () const
 Get the height of the image. More...
 
virtual unsigned int GetImageWidth () const
 Get the width of the image. More...
 
bool GetInitialized () const
 Return true if the camera has been initialized. More...
 
common::Time GetLastRenderWallTime ()
 Get the last time the camera was rendered. More...
 
std::string GetName () const
 Get the camera's name. More...
 
double GetNearClip ()
 Get the near clip distance. More...
 
Ogre::Camera * GetOgreCamera () const
 Get a pointer to the ogre camera. More...
 
Ogre::SceneNode * GetPitchNode () const
 Get the camera's pitch scene node. More...
 
double GetRenderRate () const
 Get the render Hz rate. More...
 
Ogre::Texture * GetRenderTexture () const
 Get the render texture. More...
 
math::Vector3 GetRight ()
 Get the viewport right vector. More...
 
ScenePtr GetScene () const
 Get the scene this camera is in. More...
 
Ogre::SceneNode * GetSceneNode () const
 Get the camera's scene node. More...
 
std::string GetScreenshotPath () const
 Get the path to saved screenshots. More...
 
unsigned int GetTextureHeight () const
 Get the height of the off-screen render texture. More...
 
unsigned int GetTextureWidth () const
 Get the width of the off-screen render texture. More...
 
virtual unsigned int GetTriangleCount ()
 Get the triangle count. More...
 
math::Vector3 GetUp ()
 Get the viewport up vector. More...
 
math::Angle GetVFOV () const
 Get the camera FOV (vertical) More...
 
Ogre::Viewport * GetViewport () const
 Get a pointer to the Ogre::Viewport. More...
 
unsigned int GetViewportHeight () const
 Get the viewport height in pixels. More...
 
unsigned int GetViewportWidth () const
 Get the viewport width in pixels. More...
 
unsigned int GetWindowId () const
 Get the ID of the window this camera is rendering into. More...
 
bool GetWorldPointOnPlane (int _x, int _y, const math::Plane &_plane, math::Vector3 &_result)
 Get point on a plane. More...
 
math::Pose GetWorldPose ()
 Get the global pose of the camera. More...
 
math::Vector3 GetWorldPosition () const
 Get the camera position in the world. More...
 
math::Quaternion GetWorldRotation () const
 Get the camera's orientation in the world. More...
 
double GetZValue (int _x, int _y)
 Get the Z-buffer value at the given image coordinate. More...
 
bool IsAnimating () const
 Return true if the camera is moving due to an animation. More...
 
bool IsVisible (VisualPtr _visual)
 Return true if the visual is within the camera's view frustum. More...
 
bool IsVisible (const std::string &_visualName)
 Return true if the visual is within the camera's view frustum. More...
 
virtual void Load (sdf::ElementPtr _sdf)
 Load the camera with a set of parmeters. More...
 
virtual bool MoveToPosition (const math::Pose &_pose, double _time)
 Move the camera to a position (this is an animated motion). More...
 
bool MoveToPositions (const std::vector< math::Pose > &_pts, double _time, boost::function< void()> _onComplete=NULL)
 Move the camera to a series of poses (this is an animated motion). More...
 
void Render ()
 Render the camera. More...
 
void Render (bool _force)
 Render the camera. More...
 
void RotatePitch (math::Angle _angle)
 Rotate the camera around the pitch axis. More...
 
void RotateYaw (math::Angle _angle)
 Rotate the camera around the yaw axis. More...
 
bool SaveFrame (const std::string &_filename)
 Save the last frame to disk. More...
 
void SetAspectRatio (float _ratio)
 Set the aspect ratio. More...
 
void SetCaptureData (bool _value)
 Set whether to capture data. More...
 
void SetCaptureDataOnce ()
 Capture data once and save to disk. More...
 
void SetClipDist (float _near, float _far)
 Set the clip distances. More...
 
void SetHFOV (math::Angle _angle)
 Set the camera FOV (horizontal) More...
 
void SetImageHeight (unsigned int _h)
 Set the image height. More...
 
void SetImageSize (unsigned int _w, unsigned int _h)
 Set the image size. More...
 
void SetImageWidth (unsigned int _w)
 Set the image height. More...
 
void SetName (const std::string &_name)
 Set the camera's name. More...
 
void SetRenderRate (double _hz)
 Set the render Hz rate. More...
 
virtual void SetRenderTarget (Ogre::RenderTarget *_target)
 Set the camera's render target. More...
 
void SetSaveFramePathname (const std::string &_pathname)
 Set the save frame pathname. More...
 
void SetScene (ScenePtr _scene)
 Set the scene this camera is viewing. More...
 
void SetSceneNode (Ogre::SceneNode *_node)
 Set the camera's scene node. More...
 
void SetWindowId (unsigned int _windowId)
 
virtual void SetWorldPose (const math::Pose &_pose)
 Set the global pose of the camera. More...
 
void SetWorldPosition (const math::Vector3 &_pos)
 Set the world position. More...
 
void SetWorldRotation (const math::Quaternion &_quat)
 Set the world orientation. More...
 
void ShowWireframe (bool _s)
 Set whether to view the world in wireframe. More...
 
void ToggleShowWireframe ()
 Toggle whether to view the world in wireframe. More...
 
void TrackVisual (const std::string &_visualName)
 Set the camera to track a scene node. More...
 
void Translate (const math::Vector3 &_direction)
 Translate the camera. More...
 
virtual void Update ()
 

Protected Attributes

unsigned int cameraCount
 Number of cameras needed to generate the rays. More...
 
double chfov
 Cos horizontal field-of-view. More...
 
double cvfov
 Cos vertical field-of-view. More...
 
double far
 Far clip plane. More...
 
double hfov
 Horizontal field-of-view. More...
 
double horzHalfAngle
 Horizontal half angle. More...
 
bool isHorizontal
 True if the sensor is horizontal only. More...
 
double near
 Near clip plane. More...
 
double rayCountRatio
 Ray count ratio. More...
 
double vertHalfAngle
 Vertical half angle. More...
 
double vfov
 Vertical field-of-view. More...
 
- Protected Attributes inherited from gazebo::rendering::Camera
Ogre::AnimationState * animState
 Animation state, used to animate the camera. More...
 
unsigned char * bayerFrameBuffer
 Buffer for a bayer image frame. More...
 
Ogre::Camera * camera
 The OGRE camera. More...
 
bool captureData
 True to capture frames into an image buffer. More...
 
bool captureDataOnce
 True to capture a frame once and save to disk. More...
 
std::vector< event::ConnectionPtrconnections
 The camera's event connections. More...
 
int imageFormat
 Format for saving images. More...
 
int imageHeight
 Save image height. More...
 
int imageWidth
 Save image width. More...
 
bool initialized
 True if initialized. More...
 
common::Time lastRenderWallTime
 Time the last frame was rendered. More...
 
std::string name
 Name of the camera. More...
 
bool newData
 True if new data is available. More...
 
event::EventT< void(const
unsigned char *, unsigned int,
unsigned int, unsigned int,
const std::string &)> 
newImageFrame
 Event triggered when a new frame is generated. More...
 
boost::function< void()> onAnimationComplete
 User callback for when an animation completes. More...
 
Ogre::SceneNode * pitchNode
 Scene nod that controls camera pitch. More...
 
common::Time prevAnimTime
 Previous time the camera animation was updated. More...
 
Ogre::RenderTarget * renderTarget
 Target that renders frames. More...
 
Ogre::Texture * renderTexture
 Texture that receives results from rendering. More...
 
std::list< msgs::Request > requests
 List of requests. More...
 
unsigned int saveCount
 Number of saved frames. More...
 
unsigned char * saveFrameBuffer
 
ScenePtr scene
 Pointer to the scene. More...
 
Ogre::SceneNode * sceneNode
 Scene node that controls camera position. More...
 
std::string screenshotPath
 Path to saved screenshots. More...
 
sdf::ElementPtr sdf
 Camera's SDF values. More...
 
unsigned int textureHeight
 Height of the render texture. More...
 
unsigned int textureWidth
 Width of the render texture. More...
 
Ogre::Viewport * viewport
 Viewport the ogre camera uses. More...
 
unsigned int windowId
 ID of the window that the camera is attached to. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from gazebo::rendering::Camera
static size_t GetImageByteSize (unsigned int _width, unsigned int _height, const std::string &_format)
 Calculate image byte size base on a few parameters. More...
 
static bool SaveFrame (const unsigned char *_image, unsigned int _width, unsigned int _height, int _depth, const std::string &_format, const std::string &_filename)
 Save a frame using an image buffer. More...
 
- Protected Member Functions inherited from gazebo::rendering::Camera
virtual void AnimationComplete ()
 Internal function used to indicate that an animation has completed. More...
 
virtual bool AttachToVisualImpl (const std::string &_name, bool _inheritOrientation, double _minDist=0, double _maxDist=0)
 Attach the camera to a scene node. More...
 
virtual bool AttachToVisualImpl (uint32_t _id, bool _inheritOrientation, double _minDist=0, double _maxDist=0)
 Attach the camera to a scene node. More...
 
virtual bool AttachToVisualImpl (VisualPtr _visual, bool _inheritOrientation, double _minDist=0, double _maxDist=0)
 Attach the camera to a visual. More...
 
std::string GetFrameFilename ()
 Get the next frame filename based on SDF parameters. More...
 
void ReadPixelBuffer ()
 Read image data from pixel buffer. More...
 
bool TrackVisualImpl (const std::string &_visualName)
 Implementation of the Camera::TrackVisual call. More...
 
virtual bool TrackVisualImpl (VisualPtr _visual)
 Set the camera to track a scene node. More...
 

Detailed Description

GPU based laser distance sensor.

Constructor & Destructor Documentation

gazebo::rendering::GpuLaser::GpuLaser ( const std::string &  _namePrefix,
ScenePtr  _scene,
bool  _autoRender = true 
)

Constructor.

Parameters
[in]_namePrefixUnique prefix name for the camera.
[in]_sceneScene that will contain the camera
[in]_autoRenderAlmost everyone should leave this as true.
virtual gazebo::rendering::GpuLaser::~GpuLaser ( )
virtual

Destructor.

Member Function Documentation

template<typename T >
event::ConnectionPtr gazebo::rendering::GpuLaser::ConnectNewLaserFrame ( _subscriber)
inline

Connect to a laser frame signal.

Parameters
[in]_subscriberCallback that is called when a new image is generated
Returns
A pointer to the connection. This must be kept in scope.

References gazebo::event::EventT< T >::Connect().

void gazebo::rendering::GpuLaser::CreateLaserTexture ( const std::string &  _textureName)

Create the texture which is used to render laser data.

Parameters
[in]_textureNameName of the new texture.
void gazebo::rendering::GpuLaser::DisconnectNewLaserFrame ( event::ConnectionPtr _c)
inline

Disconnect from a laser frame signal.

Parameters
[in]_cThe connection to disconnect

References gazebo::event::EventT< T >::Disconnect().

virtual void gazebo::rendering::GpuLaser::Fini ( )
virtual

Finalize the camera.

This function is called before the camera is destructed

Reimplemented from gazebo::rendering::Camera.

double gazebo::rendering::GpuLaser::GetCameraCount ( ) const

Get the number of cameras required.

Returns
Number of cameras needed to generate the rays
double gazebo::rendering::GpuLaser::GetCosHorzFOV ( ) const

Get Cos Horz field-of-view.

Returns
2 * atan(tan(this->hfov/2) / cos(this->vfov/2))
double gazebo::rendering::GpuLaser::GetCosVertFOV ( ) const

Get Cos Vert field-of-view.

Returns
2 * atan(tan(this->vfov/2) / cos(this->hfov/2))
double gazebo::rendering::GpuLaser::GetFarClip ( ) const

Get far clip.

Returns
far clip distance
double gazebo::rendering::GpuLaser::GetHorzFOV ( ) const

Get the horizontal field of view of the laser sensor.

Returns
The horizontal field of view of the laser sensor.
double gazebo::rendering::GpuLaser::GetHorzHalfAngle ( ) const

Get (horizontal_max_angle + horizontal_min_angle) * 0.5.

Returns
(horizontal_max_angle + horizontal_min_angle) * 0.5
const float* gazebo::rendering::GpuLaser::GetLaserData ( )

All things needed to get back z buffer for laser data.

Returns
Array of laser data.
double gazebo::rendering::GpuLaser::GetNearClip ( ) const

Get near clip.

Returns
near clip distance
double gazebo::rendering::GpuLaser::GetRayCountRatio ( ) const

Get the ray count ratio (equivalent to aspect ratio)

Returns
The ray count ratio (equivalent to aspect ratio)
double gazebo::rendering::GpuLaser::GetVertFOV ( ) const

Get the vertical field-of-view.

Returns
The vertical field of view of the laser sensor.
double gazebo::rendering::GpuLaser::GetVertHalfAngle ( ) const

Get (vertical_max_angle + vertical_min_angle) * 0.5.

Returns
(vertical_max_angle + vertical_min_angle) * 0.5
virtual void gazebo::rendering::GpuLaser::Init ( )
virtual

Initialize the camera.

Reimplemented from gazebo::rendering::Camera.

bool gazebo::rendering::GpuLaser::IsHorizontal ( ) const

Gets if sensor is horizontal.

Returns
True if horizontal, false if not
virtual void gazebo::rendering::GpuLaser::Load ( sdf::ElementPtr &  _sdf)
virtual
virtual void gazebo::rendering::GpuLaser::Load ( )
virtual

Load the camera with default parmeters.

Reimplemented from gazebo::rendering::Camera.

virtual void gazebo::rendering::GpuLaser::notifyRenderSingleObject ( Ogre::Renderable *  _rend,
const Ogre::Pass *  _p,
const Ogre::AutoParamDataSource *  _s,
const Ogre::LightList *  _ll,
bool  _supp 
)
virtual
virtual void gazebo::rendering::GpuLaser::PostRender ( )
virtual

Post render.

Called afer the render signal.

Reimplemented from gazebo::rendering::Camera.

void gazebo::rendering::GpuLaser::SetCameraCount ( double  _cameraCount)

Set the number of cameras required.

Parameters
[in]_cameraCountThe number of cameras required to generate the rays
void gazebo::rendering::GpuLaser::SetCosHorzFOV ( double  _chfov)

Set the Cos Horz FOV.

Parameters
[in]_chfovCos Horz FOV
void gazebo::rendering::GpuLaser::SetCosVertFOV ( double  _cvfov)

Set the Cos Horz FOV.

Parameters
[in]_cvfovCos Horz FOV
void gazebo::rendering::GpuLaser::SetFarClip ( double  _far)

Set the far clip distance.

Parameters
[in]_farfar clip distance
void gazebo::rendering::GpuLaser::SetHorzFOV ( double  _hfov)

Set the horizontal fov.

Parameters
[in]_hfovhorizontal fov
void gazebo::rendering::GpuLaser::SetHorzHalfAngle ( double  _angle)

Set the horizontal half angle.

Parameters
[in]_anglehorizontal half angle
void gazebo::rendering::GpuLaser::SetIsHorizontal ( bool  _horizontal)

Set sensor horizontal or vertical.

Parameters
[in]_horizontalTrue if horizontal, false if not
void gazebo::rendering::GpuLaser::SetNearClip ( double  _near)

Set the near clip distance.

Parameters
[in]_nearnear clip distance
void gazebo::rendering::GpuLaser::SetRangeCount ( unsigned int  _w,
unsigned int  _h = 1 
)

Set the number of laser samples in the width and height.

Parameters
[in]_wNumber of samples in the horizontal sweep
[in]_hNumber of samples in the vertical sweep
void gazebo::rendering::GpuLaser::SetRayCountRatio ( double  _rayCountRatio)

Sets the ray count ratio (equivalen to aspect ratio)

Parameters
[in]_rayCountRatioray count ratio (equivalent to aspect ratio)
void gazebo::rendering::GpuLaser::SetVertFOV ( double  _vfov)

Set the vertical fov.

Parameters
[in]_vfovvertical fov
void gazebo::rendering::GpuLaser::SetVertHalfAngle ( double  _angle)

Set the vertical half angle.

Parameters
[in]_anglevertical half angle

Member Data Documentation

unsigned int gazebo::rendering::GpuLaser::cameraCount
protected

Number of cameras needed to generate the rays.

double gazebo::rendering::GpuLaser::chfov
protected

Cos horizontal field-of-view.

double gazebo::rendering::GpuLaser::cvfov
protected

Cos vertical field-of-view.

double gazebo::rendering::GpuLaser::far
protected

Far clip plane.

double gazebo::rendering::GpuLaser::hfov
protected

Horizontal field-of-view.

double gazebo::rendering::GpuLaser::horzHalfAngle
protected

Horizontal half angle.

bool gazebo::rendering::GpuLaser::isHorizontal
protected

True if the sensor is horizontal only.

double gazebo::rendering::GpuLaser::near
protected

Near clip plane.

double gazebo::rendering::GpuLaser::rayCountRatio
protected

Ray count ratio.

double gazebo::rendering::GpuLaser::vertHalfAngle
protected

Vertical half angle.

double gazebo::rendering::GpuLaser::vfov
protected

Vertical field-of-view.


The documentation for this class was generated from the following file: