Camera.hh
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2012 Open Source Robotics Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16 */
17 #ifndef GAZEBO_RENDERING_CAMERA_HH_
18 #define GAZEBO_RENDERING_CAMERA_HH_
19 
20 #include <memory>
21 #include <functional>
22 
23 #include <boost/enable_shared_from_this.hpp>
24 #include <string>
25 #include <utility>
26 #include <list>
27 #include <vector>
28 #include <deque>
29 #include <sdf/sdf.hh>
30 #include <ignition/math/Angle.hh>
31 #include <ignition/math/Color.hh>
32 #include <ignition/math/Matrix4.hh>
33 #include <ignition/math/Pose3.hh>
34 #include <ignition/math/Quaternion.hh>
35 #include <ignition/math/Vector2.hh>
36 #include <ignition/math/Vector3.hh>
37 
38 #include "gazebo/msgs/msgs.hh"
39 
40 #include "gazebo/transport/Node.hh"
42 
43 #include "gazebo/common/Event.hh"
44 #include "gazebo/common/PID.hh"
45 #include "gazebo/common/Time.hh"
46 
50 
51 #include "gazebo/msgs/MessageTypes.hh"
52 #include "gazebo/util/system.hh"
53 
54 // Forward Declarations
55 namespace Ogre
56 {
57  class Texture;
58  class RenderTarget;
59  class Camera;
60  class Viewport;
61  class SceneNode;
62  class AnimationState;
63 }
64 
65 namespace gazebo
66 {
69  namespace rendering
70  {
71  class MouseEvent;
72  class ViewController;
73  class Scene;
74  class CameraPrivate;
75 
79 
84  class GZ_RENDERING_VISIBLE Camera :
85  public boost::enable_shared_from_this<Camera>
86  {
91  public: Camera(const std::string &_namePrefix, ScenePtr _scene,
92  bool _autoRender = true);
93 
95  public: virtual ~Camera();
96 
99  public: virtual void Load(sdf::ElementPtr _sdf);
100 
102  public: virtual void Load();
103 
111  public: void UpdateCameraIntrinsics(
112  const double _cameraIntrinsicsFx, const double _cameraIntrinsicsFy,
113  const double _cameraIntrinsicsCx, const double _cameraIntrinsicsCy,
114  const double _cameraIntrinsicsS);
115 
128  public: static ignition::math::Matrix4d BuildNDCMatrix(
129  const double _left, const double _right,
130  const double _bottom, const double _top,
131  const double _near, const double _far);
132 
147  public: static ignition::math::Matrix4d BuildPerspectiveMatrix(
148  const double _intrinsicsFx, const double _intrinsicsFy,
149  const double _intrinsicsCx, const double _intrinsicsCy,
150  const double _intrinsicsS,
151  const double _clipNear, const double _clipFar);
152 
172  public: static ignition::math::Matrix4d BuildProjectionMatrix(
173  const double _imageWidth, const double _imageHeight,
174  const double _intrinsicsFx, const double _intrinsicsFy,
175  const double _intrinsicsCx, const double _intrinsicsCy,
176  const double _intrinsicsS,
177  const double _clipNear, const double _clipFar);
178 
180  public: virtual void Init();
181 
184  public: void SetRenderRate(const double _hz);
185 
188  public: double RenderRate() const;
189 
195  public: virtual void Render(const bool _force = false);
196 
200  public: virtual void PostRender();
201 
207  public: virtual void Update();
208 
212  public: virtual void Fini();
213 
216  public: bool Initialized() const;
217 
221  public: void SetWindowId(unsigned int _windowId);
222 
225  public: unsigned int WindowId() const;
226 
229  public: void SetScene(ScenePtr _scene);
230 
233  public: ignition::math::Vector3d WorldPosition() const;
234 
237  public: ignition::math::Quaterniond WorldRotation() const;
238 
241  public: virtual void SetWorldPose(const ignition::math::Pose3d &_pose);
242 
245  public: ignition::math::Pose3d WorldPose() const;
246 
249  public: void SetWorldPosition(const ignition::math::Vector3d &_pos);
250 
253  public: void SetWorldRotation(const ignition::math::Quaterniond &_quat);
254 
257  public: void Translate(const ignition::math::Vector3d &_direction);
258 
263  public: void Roll(const ignition::math::Angle &_angle,
264  ReferenceFrame _relativeTo = RF_LOCAL);
265 
270  public: void Pitch(const ignition::math::Angle &_angle,
271  ReferenceFrame _relativeTo = RF_LOCAL);
272 
277  public: void Yaw(const ignition::math::Angle &_angle,
278  ReferenceFrame _relativeTo = RF_WORLD);
279 
283  public: virtual void SetClipDist(const float _near, const float _far);
284 
287  public: void SetHFOV(const ignition::math::Angle &_angle);
288 
291  public: ignition::math::Angle HFOV() const;
292 
295  public: ignition::math::Angle VFOV() const;
296 
300  public: void SetImageSize(const unsigned int _w, const unsigned int _h);
301 
304  public: void SetImageWidth(const unsigned int _w);
305 
308  public: void SetImageHeight(const unsigned int _h);
309 
312  public: virtual unsigned int ImageWidth() const;
313 
316  public: unsigned int ImageMemorySize() const;
317 
320  public: unsigned int TextureWidth() const;
321 
324  public: virtual unsigned int ImageHeight() const;
325 
328  public: unsigned int ImageDepth() const;
329 
332  public: std::string ImageFormat() const;
333 
336  public: unsigned int TextureHeight() const;
337 
340  public: size_t ImageByteSize() const;
341 
347  public: static size_t ImageByteSize(const unsigned int _width,
348  const unsigned int _height,
349  const std::string &_format);
350 
356  public: double ZValue(const int _x, const int _y);
357 
360  public: double NearClip() const;
361 
364  public: double FarClip() const;
365 
368  public: void EnableSaveFrame(const bool _enable);
369 
372  public: bool CaptureData() const;
373 
376  public: void SetSaveFramePathname(const std::string &_pathname);
377 
381  public: bool SaveFrame(const std::string &_filename);
382 
385  public: Ogre::Camera *OgreCamera() const;
386 
389  public: Ogre::Viewport *OgreViewport() const;
390 
393  public: unsigned int ViewportWidth() const;
394 
397  public: unsigned int ViewportHeight() const;
398 
401  public: ignition::math::Vector3d Up() const;
402 
405  public: ignition::math::Vector3d Right() const;
406 
409  public: virtual float AvgFPS() const;
410 
413  public: virtual unsigned int TriangleCount() const;
414 
417  public: void SetAspectRatio(float _ratio);
418 
421  public: float AspectRatio() const;
422 
425  public: void SetSceneNode(Ogre::SceneNode *_node);
426 
429  public: Ogre::SceneNode *SceneNode() const;
430 
436  public: virtual const unsigned char *ImageData(const unsigned int i = 0)
437  const;
438 
441  public: std::string Name() const;
442 
445  public: std::string ScopedName() const;
446 
449  public: void SetName(const std::string &_name);
450 
452  public: void ToggleShowWireframe();
453 
456  public: void ShowWireframe(const bool _s);
457 
460  public: void SetCaptureData(const bool _value);
461 
463  public: void SetCaptureDataOnce();
464 
478  public: bool StartVideo(const std::string &_format,
479  const std::string &_filename = "");
480 
485  public: bool StopVideo();
486 
492  public: bool SaveVideo(const std::string &_filename);
493 
500  public: bool ResetVideo();
501 
504  public: void CreateRenderTexture(const std::string &_textureName);
505 
508  public: ScenePtr GetScene() const;
509 
516  public: bool WorldPointOnPlane(const int _x, const int _y,
517  const ignition::math::Planed &_plane,
518  ignition::math::Vector3d &_result);
519 
527  public: virtual void CameraToViewportRay(const int _screenx,
528  const int _screeny,
529  ignition::math::Vector3d &_origin,
530  ignition::math::Vector3d &_dir) const;
531 
534  public: virtual void SetRenderTarget(Ogre::RenderTarget *_target);
535 
544  public: void AttachToVisual(const std::string &_visualName,
545  const bool _inheritOrientation,
546  const double _minDist = 0.0, const double _maxDist = 0.0);
547 
556  public: void AttachToVisual(uint32_t _id,
557  const bool _inheritOrientation,
558  const double _minDist = 0.0, const double _maxDist = 0.0);
559 
562  public: void TrackVisual(const std::string &_visualName);
563 
566  public: Ogre::Texture *RenderTexture() const;
567 
570  public: ignition::math::Vector3d Direction() const;
571 
576  public: event::ConnectionPtr ConnectNewImageFrame(
577  std::function<void (const unsigned char *, unsigned int, unsigned int,
578  unsigned int, const std::string &)> _subscriber);
579 
588  public: static bool SaveFrame(const unsigned char *_image,
589  const unsigned int _width, const unsigned int _height,
590  const int _depth, const std::string &_format,
591  const std::string &_filename);
592 
595  public: common::Time LastRenderWallTime() const;
596 
601  public: bool IsVisible(VisualPtr _visual);
602 
607  public: bool IsVisible(const std::string &_visualName);
608 
610  public: bool IsAnimating() const;
611 
616  public: virtual bool MoveToPosition(const ignition::math::Pose3d &_pose,
617  const double _time);
618 
626  public: bool MoveToPositions(
627  const std::vector<ignition::math::Pose3d> &_pts,
628  const double _time,
629  std::function<void()> _onComplete = NULL);
630 
633  public: std::string ScreenshotPath() const;
634 
637  public: DistortionPtr LensDistortion() const;
638 
644  public: virtual bool SetProjectionType(const std::string &_type);
645 
649  public: std::string ProjectionType() const;
650 
655  public: virtual bool SetBackgroundColor(const common::Color &_color)
656  GAZEBO_DEPRECATED(9.0);
657 
661  public: virtual bool SetBackgroundColor(
662  const ignition::math::Color &_color);
663 
666  public: ignition::math::Matrix4d ProjectionMatrix() const;
667 
671  public: virtual ignition::math::Vector2i Project(
672  const ignition::math::Vector3d &_pt) const;
673 
676  public: VisualPtr TrackedVisual() const;
677 
681  public: bool TrackIsStatic() const;
682 
687  public: void SetTrackIsStatic(const bool _isStatic);
688 
693  public: bool TrackUseModelFrame() const;
694 
700  public: void SetTrackUseModelFrame(const bool _useModelFrame);
701 
705  public: ignition::math::Vector3d TrackPosition() const;
706 
710  public: void SetTrackPosition(const ignition::math::Vector3d &_pos);
711 
715  public: double TrackMinDistance() const;
716 
720  public: double TrackMaxDistance() const;
721 
726  public: void SetTrackMinDistance(const double _dist);
727 
732  public: void SetTrackMaxDistance(const double _dist);
733 
739  public: bool TrackInheritYaw() const;
740 
746  public: void SetTrackInheritYaw(const bool _inheritYaw);
747 
749  protected: virtual void RenderImpl();
750 
752  protected: void ReadPixelBuffer();
753 
757  protected: bool TrackVisualImpl(const std::string &_visualName);
758 
762  protected: virtual bool TrackVisualImpl(VisualPtr _visual);
763 
773  protected: virtual bool AttachToVisualImpl(const std::string &_name,
774  const bool _inheritOrientation,
775  const double _minDist = 0, const double _maxDist = 0);
776 
786  protected: virtual bool AttachToVisualImpl(uint32_t _id,
787  const bool _inheritOrientation,
788  const double _minDist = 0, const double _maxDist = 0);
789 
799  protected: virtual bool AttachToVisualImpl(VisualPtr _visual,
800  const bool _inheritOrientation,
801  const double _minDist = 0, const double _maxDist = 0);
802 
805  protected: std::string FrameFilename();
806 
809  protected: virtual void AnimationComplete();
810 
812  protected: virtual void UpdateFOV();
813 
815  protected: virtual void SetClipDist();
816 
821  protected: static double LimitFOV(const double _fov);
822 
829  protected: virtual void SetFixedYawAxis(const bool _useFixed,
830  const ignition::math::Vector3d &_fixedAxis =
831  ignition::math::Vector3d::UnitY);
832 
834  private: void LoadCameraIntrinsics();
835 
843  private: void ConvertRGBToBAYER(unsigned char *_dst,
844  const unsigned char *_src, const std::string &_format,
845  const int _width, const int _height);
846 
850  private: static int OgrePixelFormat(const std::string &_format);
851 
854  private: void OnCmdMsg(ConstCameraCmdPtr &_msg);
855 
857  private: void CreateCamera();
858 
860  protected: std::string name;
861 
863  protected: std::string scopedName;
864 
866  protected: std::string scopedUniqueName;
867 
869  protected: sdf::ElementPtr sdf;
870 
872  protected: unsigned int windowId;
873 
875  protected: unsigned int textureWidth;
876 
878  protected: unsigned int textureHeight;
879 
881  protected: Ogre::Camera *camera;
882 
884  protected: Ogre::Viewport *viewport;
885 
887  protected: Ogre::SceneNode *sceneNode;
888 
890  protected: unsigned char *saveFrameBuffer;
891 
893  protected: unsigned char *bayerFrameBuffer;
894 
896  protected: unsigned int saveCount;
897 
899  protected: std::string screenshotPath;
900 
902  protected: int imageFormat;
903 
905  protected: int imageWidth;
906 
908  protected: int imageHeight;
909 
911  protected: Ogre::RenderTarget *renderTarget;
912 
914  protected: Ogre::Texture *renderTexture;
915 
917  protected: bool captureData;
918 
920  protected: bool captureDataOnce;
921 
923  protected: bool newData;
924 
927 
929  protected: ScenePtr scene;
930 
932  protected: event::EventT<void(const unsigned char *,
933  unsigned int, unsigned int, unsigned int,
934  const std::string &)> newImageFrame;
935 
937  protected: std::vector<event::ConnectionPtr> connections;
938 
940  protected: std::list<msgs::Request> requests;
941 
943  protected: bool initialized;
944 
946  protected: Ogre::AnimationState *animState;
947 
950 
952  protected: std::function<void()> onAnimationComplete;
953 
956  private: std::unique_ptr<CameraPrivate> dataPtr;
957  };
959  }
960 }
961 #endif
bool WorldPointOnPlane(const int _x, const int _y, const ignition::math::Planed &_plane, ignition::math::Vector3d &_result)
Get point on a plane.
virtual ~Camera()
Destructor.
bool TrackUseModelFrame() const
Get whether this camera's position is relative to tracked models.
virtual float AvgFPS() const
Get the average FPS.
unsigned int WindowId() const
Get the ID of the window this camera is rendering into.
bool TrackVisualImpl(const std::string &_visualName)
Implementation of the Camera::TrackVisual call.
float AspectRatio() const
Get the apect ratio.
virtual void CameraToViewportRay(const int _screenx, const int _screeny, ignition::math::Vector3d &_origin, ignition::math::Vector3d &_dir) const
Get a world space ray as cast from the camera through the viewport.
Definition: JointMaker.hh:39
std::string ProjectionType() const
Return the projection type as a string.
std::string scopedUniqueName
Scene scoped name of the camera with a unique ID.
Definition: Camera.hh:866
VisualPtr TrackedVisual() const
Get the visual tracked by this camera.
bool IsVisible(VisualPtr _visual)
Return true if the visual is within the camera's view frustum.
void TrackVisual(const std::string &_visualName)
Set the camera to track a scene node.
Ogre::AnimationState * animState
Animation state, used to animate the camera.
Definition: Camera.hh:946
void ShowWireframe(const bool _s)
Set whether to view the world in wireframe.
virtual void PostRender()
Post render.
void AttachToVisual(const std::string &_visualName, const bool _inheritOrientation, const double _minDist=0.0, const double _maxDist=0.0)
Attach the camera to a scene node.
virtual void Init()
Initialize the camera.
void SetRenderRate(const double _hz)
Set the render Hz rate.
Forward declarations for the common classes.
Definition: Animation.hh:26
bool StopVideo()
Turn off video recording.
ReferenceFrame
Frame of reference.
Definition: RenderTypes.hh:244
void SetWindowId(unsigned int _windowId)
std::vector< event::ConnectionPtr > connections
The camera's event connections.
Definition: Camera.hh:937
A Time class, can be used to hold wall- or sim-time. stored as sec and nano-sec.
Definition: Time.hh:47
bool SaveVideo(const std::string &_filename)
Save the last encoded video to disk.
std::string Name() const
Get the camera's unscoped name.
#define NULL
Definition: CommonTypes.hh:31
void SetHFOV(const ignition::math::Angle &_angle)
Set the camera FOV (horizontal)
bool SaveFrame(const std::string &_filename)
Save the last frame to disk.
boost::shared_ptr< Distortion > DistortionPtr
Definition: RenderTypes.hh:198
World frame.
Definition: RenderTypes.hh:253
void SetWorldRotation(const ignition::math::Quaterniond &_quat)
Set the world orientation.
virtual void UpdateFOV()
Update the camera's field of view.
std::string ScopedName() const
Get the camera's scoped name (scene_name::camera_name)
void EnableSaveFrame(const bool _enable)
Enable or disable saving.
ScenePtr GetScene() const
Get the scene this camera is in.
Ogre::Viewport * viewport
Viewport the ogre camera uses.
Definition: Camera.hh:884
virtual unsigned int ImageWidth() const
Get the width of the image.
Ogre::Texture * renderTexture
Texture that receives results from rendering.
Definition: Camera.hh:914
void Pitch(const ignition::math::Angle &_angle, ReferenceFrame _relativeTo=RF_LOCAL)
Rotate the camera around the y-axis.
void Yaw(const ignition::math::Angle &_angle, ReferenceFrame _relativeTo=RF_WORLD)
Rotate the camera around the z-axis.
void SetImageSize(const unsigned int _w, const unsigned int _h)
Set the image size.
ignition::math::Vector3d Direction() const
Get the camera's direction vector.
static double LimitFOV(const double _fov)
Limit field of view taking care of using a valid value for an OGRE camera.
sdf::ElementPtr sdf
Camera's SDF values.
Definition: Camera.hh:869
void CreateRenderTexture(const std::string &_textureName)
Set the render target.
common::Time LastRenderWallTime() const
Get the last time the camera was rendered.
virtual void RenderImpl()
Implementation of the render call.
void SetTrackPosition(const ignition::math::Vector3d &_pos)
Set the position of the camera when tracking a visual.
bool ResetVideo()
Reset video recording.
virtual void AnimationComplete()
Internal function used to indicate that an animation has completed.
void SetSceneNode(Ogre::SceneNode *_node)
Set the camera's scene node.
virtual bool SetBackgroundColor(const common::Color &_color) GAZEBO_DEPRECATED(9.0)
Set background color for viewport (if viewport is not null)
void SetCaptureDataOnce()
Capture data once and save to disk.
void SetTrackIsStatic(const bool _isStatic)
Set whether this camera is static when tracking a model.
size_t ImageByteSize() const
Get the image size in bytes.
unsigned int TextureWidth() const
Get the width of the off-screen render texture.
Ogre::Camera * camera
The OGRE camera.
Definition: Camera.hh:881
void SetSaveFramePathname(const std::string &_pathname)
Set the save frame pathname.
ignition::math::Matrix4d ProjectionMatrix() const
Return the projection matrix of this camera.
Local frame.
Definition: RenderTypes.hh:247
std::string ImageFormat() const
Get the string representation of the image format.
bool TrackIsStatic() const
Get whether this camera is static when tracking a model.
unsigned char * bayerFrameBuffer
Buffer for a bayer image frame.
Definition: Camera.hh:893
Ogre::RenderTarget * renderTarget
Target that renders frames.
Definition: Camera.hh:911
A class for event processing.
Definition: Event.hh:97
static ignition::math::Matrix4d BuildNDCMatrix(const double _left, const double _right, const double _bottom, const double _top, const double _near, const double _far)
Computes the OpenGL NDC matrix.
boost::shared_ptr< Scene > ScenePtr
Definition: RenderTypes.hh:82
bool initialized
True if initialized.
Definition: Camera.hh:943
void Roll(const ignition::math::Angle &_angle, ReferenceFrame _relativeTo=RF_LOCAL)
Rotate the camera around the x-axis.
Ogre::SceneNode * SceneNode() const
Get the camera's scene node.
virtual unsigned int ImageHeight() const
Get the height of the image.
bool captureData
True to capture frames into an image buffer.
Definition: Camera.hh:917
void SetName(const std::string &_name)
Set the camera's name.
bool TrackInheritYaw() const
Get whether this camera inherits the yaw rotation of the tracked model.
void SetImageWidth(const unsigned int _w)
Set the image height.
virtual bool AttachToVisualImpl(const std::string &_name, const bool _inheritOrientation, const double _minDist=0, const double _maxDist=0)
Attach the camera to a scene node.
rendering
Definition: RenderEngine.hh:31
ignition::math::Vector3d TrackPosition() const
Return the position of the camera when tracking a model.
unsigned int windowId
ID of the window that the camera is attached to.
Definition: Camera.hh:872
Ogre::Viewport * OgreViewport() const
Get a pointer to the Ogre::Viewport.
event::EventT< void(const unsigned char *, unsigned int, unsigned int, unsigned int, const std::string &)> newImageFrame
Event triggered when a new frame is generated.
Definition: Camera.hh:934
void SetTrackInheritYaw(const bool _inheritYaw)
Set whether this camera inherits the yaw rotation of the tracked model.
Ogre::Texture * RenderTexture() const
Get the render texture.
std::string scopedName
Scene scoped name of the camera.
Definition: Camera.hh:863
unsigned int ImageDepth() const
Get the depth of the image in bytes per pixel.
ignition::math::Angle HFOV() const
Get the camera FOV (horizontal)
ScenePtr scene
Pointer to the scene.
Definition: Camera.hh:929
bool MoveToPositions(const std::vector< ignition::math::Pose3d > &_pts, const double _time, std::function< void()> _onComplete=NULL)
Move the camera to a series of poses (this is an animated motion).
unsigned int saveCount
Number of saved frames.
Definition: Camera.hh:896
ignition::math::Vector3d Up() const
Get the viewport up vector.
int imageFormat
Format for saving images.
Definition: Camera.hh:902
unsigned int textureHeight
Height of the render texture.
Definition: Camera.hh:878
Ogre::SceneNode * sceneNode
Scene node that controls camera position and orientation.
Definition: Camera.hh:887
static ignition::math::Matrix4d BuildPerspectiveMatrix(const double _intrinsicsFx, const double _intrinsicsFy, const double _intrinsicsCx, const double _intrinsicsCy, const double _intrinsicsS, const double _clipNear, const double _clipFar)
Computes the OpenGL perspective matrix.
virtual void SetWorldPose(const ignition::math::Pose3d &_pose)
Set the global pose of the camera.
std::string screenshotPath
Path to saved screenshots.
Definition: Camera.hh:899
double FarClip() const
Get the far clip distance.
bool StartVideo(const std::string &_format, const std::string &_filename="")
Turn on video recording.
void SetTrackMaxDistance(const double _dist)
Set the maximum distance between the camera and tracked visual.
virtual unsigned int TriangleCount() const
Get the triangle count.
void Translate(const ignition::math::Vector3d &_direction)
Translate the camera.
double RenderRate() const
Get the render Hz rate.
boost::shared_ptr< Connection > ConnectionPtr
Definition: CommonTypes.hh:134
std::function< void()> onAnimationComplete
User callback for when an animation completes.
Definition: Camera.hh:952
virtual const unsigned char * ImageData(const unsigned int i=0) const
Get a pointer to the image data.
double ZValue(const int _x, const int _y)
Get the Z-buffer value at the given image coordinate.
unsigned int TextureHeight() const
Get the height of the off-screen render texture.
GAZEBO_VISIBLE void Init(google::protobuf::Message &_message, const std::string &_id="")
Initialize a message.
virtual void SetRenderTarget(Ogre::RenderTarget *_target)
Set the camera's render target.
std::string ScreenshotPath() const
Get the path to saved screenshots.
static ignition::math::Matrix4d BuildProjectionMatrix(const double _imageWidth, const double _imageHeight, const double _intrinsicsFx, const double _intrinsicsFy, const double _intrinsicsCx, const double _intrinsicsCy, const double _intrinsicsS, const double _clipNear, const double _clipFar)
Computes the OpenGL projection matrix by multiplying the OpenGL Normalized Device Coordinates matrix ...
double TrackMaxDistance() const
Return the maximum distance to the tracked visual.
std::list< msgs::Request > requests
List of requests.
Definition: Camera.hh:940
virtual void Update()
virtual void Render(const bool _force=false)
Render the camera.
bool newData
True if new data is available.
Definition: Camera.hh:923
Defines a color.
Definition: Color.hh:36
void ReadPixelBuffer()
Read image data from pixel buffer.
event::ConnectionPtr ConnectNewImageFrame(std::function< void(const unsigned char *, unsigned int, unsigned int, unsigned int, const std::string &)> _subscriber)
Connect to the new image signal.
virtual void SetClipDist()
Set the clip distance based on stored SDF values.
void SetAspectRatio(float _ratio)
Set the aspect ratio.
common::Time prevAnimTime
Previous time the camera animation was updated.
Definition: Camera.hh:949
bool CaptureData() const
Return the value of this->captureData.
void SetWorldPosition(const ignition::math::Vector3d &_pos)
Set the world position.
#define GAZEBO_DEPRECATED(version)
Definition: system.hh:328
ignition::math::Vector3d Right() const
Get the viewport right vector.
ignition::math::Vector3d WorldPosition() const
Get the camera position in the world.
common::Time lastRenderWallTime
Time the last frame was rendered.
Definition: Camera.hh:926
virtual void Load()
Load the camera with default parameters.
void UpdateCameraIntrinsics(const double _cameraIntrinsicsFx, const double _cameraIntrinsicsFy, const double _cameraIntrinsicsCx, const double _cameraIntrinsicsCy, const double _cameraIntrinsicsS)
Updates the camera intrinsics.
virtual void Fini()
Finalize the camera.
double NearClip() const
Get the near clip distance.
void SetTrackMinDistance(const double _dist)
Set the minimum distance between the camera and tracked visual.
bool Initialized() const
Return true if the camera has been initialized.
bool IsAnimating() const
Return true if the camera is moving due to an animation.
std::shared_ptr< Visual > VisualPtr
Definition: RenderTypes.hh:114
std::string name
Name of the camera.
Definition: Camera.hh:860
void SetScene(ScenePtr _scene)
Set the scene this camera is viewing.
unsigned char * saveFrameBuffer
Buffer for a single image frame.
Definition: Camera.hh:890
Ogre::Camera * OgreCamera() const
Get a pointer to the ogre camera.
int imageWidth
Save image width.
Definition: Camera.hh:905
void ToggleShowWireframe()
Toggle whether to view the world in wireframe.
unsigned int ViewportHeight() const
Get the viewport height in pixels.
unsigned int textureWidth
Width of the render texture.
Definition: Camera.hh:875
bool captureDataOnce
True to capture a frame once and save to disk.
Definition: Camera.hh:920
ignition::math::Quaterniond WorldRotation() const
Get the camera's orientation in the world.
Camera(const std::string &_namePrefix, ScenePtr _scene, bool _autoRender=true)
Constructor.
DistortionPtr LensDistortion() const
Get the distortion model of this camera.
Basic camera sensor.
Definition: Camera.hh:84
unsigned int ViewportWidth() const
Get the viewport width in pixels.
virtual bool MoveToPosition(const ignition::math::Pose3d &_pose, const double _time)
Move the camera to a position (this is an animated motion).
virtual void SetFixedYawAxis(const bool _useFixed, const ignition::math::Vector3d &_fixedAxis=ignition::math::Vector3d::UnitY)
Tell the camera whether to yaw around its own local Y axis or a fixed axis of choice.
virtual bool SetProjectionType(const std::string &_type)
Set the type of projection used by the camera.
unsigned int ImageMemorySize() const
Get the memory size of this image.
int imageHeight
Save image height.
Definition: Camera.hh:908
ignition::math::Angle VFOV() const
Get the camera FOV (vertical)
void SetTrackUseModelFrame(const bool _useModelFrame)
Set whether this camera's position is relative to tracked models.
virtual ignition::math::Vector2i Project(const ignition::math::Vector3d &_pt) const
Project 3D world coordinates to 2D screen coordinates.
void SetCaptureData(const bool _value)
Set whether to capture data.
std::string FrameFilename()
Get the next frame filename based on SDF parameters.
void SetImageHeight(const unsigned int _h)
Set the image height.
ignition::math::Pose3d WorldPose() const
Get the world pose.
double TrackMinDistance() const
Return the minimum distance to the tracked visual.