UserCamera.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_USERCAMERA_HH_
18 #define GAZEBO_RENDERING_USERCAMERA_HH_
19 
20 #include <string>
21 #include <vector>
22 #include <ignition/math/Pose3.hh>
23 #include <ignition/math/Vector2.hh>
24 
27 #include "gazebo/util/system.hh"
28 
29 namespace gazebo
30 {
31  namespace common
32  {
33  class MouseEvent;
34  }
35 
36  // Forward declare private data
37  class UserCameraPrivate;
38 
39  namespace rendering
40  {
43 
46  class GZ_RENDERING_VISIBLE UserCamera : public Camera
47  {
53  public: UserCamera(const std::string &_name, ScenePtr _scene,
54  bool _stereoEnabled = false);
55 
57  public: virtual ~UserCamera();
58 
61  public: void Load(sdf::ElementPtr _sdf);
62 
63  // Documentation inherited
64  public: virtual void SetClipDist(const float _near, const float _far);
65  using Camera::SetClipDist;
66 
68  public: void Load();
69 
71  public: void Init();
72 
74  public: virtual void Update();
75 
85  public: virtual void Render(const bool _force = false);
86  using Camera::Render;
87 
89  public: virtual void PostRender();
90 
92  public: void Fini();
93 
94  // Documentation inherited.
95  public: virtual void SetWorldPose(const ignition::math::Pose3d &_pose);
96 
100  public: void SetInitialPose(const ignition::math::Pose3d &_pose);
101 
104  public: ignition::math::Pose3d InitialPose() const;
105 
108  public: void HandleMouseEvent(const common::MouseEvent &_evt);
109 
112  public: void HandleKeyPressEvent(const std::string &_key);
113 
116  public: void HandleKeyReleaseEvent(const std::string &_key);
117 
120  public: void SetViewController(const std::string &_type);
121 
125  public: void SetViewController(const std::string &_type,
126  const ignition::math::Vector3d &_pos);
127 
130  public: std::string GetViewControllerTypeString();
131 
135  public: void Resize(unsigned int _w, unsigned int _h);
136 
142  public: void SetViewportDimensions(float _x, float _y,
143  float _w, float _h);
144 
147  public: void MoveToVisual(VisualPtr _visual);
148 
151  public: void MoveToVisual(const std::string &_visualName);
152 
155  public: void SetDevicePixelRatio(const double _ratio);
156 
159  public: double DevicePixelRatio() const;
160 
161  // Documentation Inherited
162  public: virtual void CameraToViewportRay(const int _screenx,
163  const int _screeny,
164  ignition::math::Vector3d &_origin,
165  ignition::math::Vector3d &_dir) const;
166 
171  public: virtual void SetRenderTarget(Ogre::RenderTarget *_target);
172 
178  public: void EnableViewController(bool _value) const;
179 
185  public: VisualPtr Visual(const ignition::math::Vector2i &_mousePos,
186  std::string &_mod) const;
187 
191  public: VisualPtr Visual(
192  const ignition::math::Vector2i &_mousePos) const;
193 
196  public: void SetFocalPoint(const ignition::math::Vector3d &_pt);
197 
198  // Documentation inherited
199  public: virtual unsigned int GetImageWidth() const;
200 
201  // Documentation inherited
202  public: virtual unsigned int GetImageHeight() const;
203 
206  public: bool IsCameraSetInWorldFile();
207 
210  public: void SetUseSDFPose(bool _value);
211 
216  public: void SetJoyTwistControl(bool _value);
217 
222  public: void SetJoyPoseControl(bool _value);
223 
226  public: bool StereoEnabled() const;
227 
235  public: void EnableStereo(bool _enable);
236 
237  // Documentation inherited.
238  public: virtual bool SetProjectionType(const std::string &_type);
239 
240  // Documentation inherited.
241  public: virtual ignition::math::Vector2i Project(
242  const ignition::math::Vector3d &_pt) const;
243 
255  protected: virtual bool AttachToVisualImpl(VisualPtr _visual,
256  const bool _inheritOrientation, const double _minDist = 0,
257  const double _maxDist = 0);
258  using Camera::AttachToVisualImpl;
259 
260  // Documentation inherited.
261  protected: virtual void AnimationComplete();
262 
268  protected: virtual bool TrackVisualImpl(VisualPtr _visual);
269 
270  // Documentation inherited.
271  protected: virtual void UpdateFOV();
272 
274  private: void ToggleShowVisual();
275 
279  private: void ShowVisual(bool _show);
280 
283  private: void OnMoveToVisualComplete();
284 
289  private: void OnJoyTwist(ConstJoystickPtr &_msg);
290 
295  private: void OnJoyPose(ConstPosePtr &_msg);
296 
299  private: UserCameraPrivate *dataPtr;
300  };
302  }
303 }
304 #endif
Basic camera sensor.
Definition: Camera.hh:80
Generic description of a mouse event.
Definition: MouseEvent.hh:35
Forward declarations for the common classes.
Definition: Animation.hh:33
A camera used for user visualization of a scene.
Definition: UserCamera.hh:46
A renderable object.
Definition: Visual.hh:59
boost::shared_ptr< Scene > ScenePtr
Definition: RenderTypes.hh:81
std::shared_ptr< Visual > VisualPtr
Definition: RenderTypes.hh:113
GAZEBO_VISIBLE void Init(google::protobuf::Message &_message, const std::string &_id="")
Initialize a message.