Camera.hh
Go to the documentation of this file.
1 /*
2  * Copyright 2019 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 SDF_CAMERA_HH_
18 #define SDF_CAMERA_HH_
19 
20 #include <string>
21 #include <gz/math/Pose3.hh>
22 #include <gz/utils/ImplPtr.hh>
23 
24 #include <sdf/Error.hh>
25 #include <sdf/Element.hh>
26 #include <sdf/Noise.hh>
27 #include <sdf/sdf_config.h>
28 
29 namespace sdf
30 {
31  // Inline bracket to help doxygen filtering.
32  inline namespace SDF_VERSION_NAMESPACE {
36  enum class PixelFormatType
37  {
39  L_INT8,
40  L_INT16,
41  RGB_INT8,
42  RGBA_INT8,
43  BGRA_INT8,
44  RGB_INT16,
45  RGB_INT32,
46  BGR_INT8,
47  BGR_INT16,
48  BGR_INT32,
49  R_FLOAT16,
51  R_FLOAT32,
57  };
58 
61  {
63  public: Camera();
64 
68  public: bool operator==(const Camera &_alt) const;
69 
74  public: bool operator!=(const Camera &_alt) const;
75 
82  public: Errors Load(ElementPtr _sdf);
83 
86  public: std::string CameraInfoTopic() const;
87 
90  public: void SetCameraInfoTopic(const std::string& _cameraInfoTopic);
91 
96  public: sdf::ElementPtr Element() const;
97 
100  public: std::string Name() const;
101 
104  public: void SetName(const std::string &_name);
105 
108  public: bool Triggered() const;
109 
112  public: void SetTriggered(bool _triggered);
113 
116  public: std::string TriggerTopic() const;
117 
120  public: void SetTriggerTopic(const std::string &_triggerTopic);
121 
124  public: gz::math::Angle HorizontalFov() const;
125 
128  public: void SetHorizontalFov(const gz::math::Angle &_hfov);
129 
132  public: uint32_t ImageWidth() const;
133 
136  public: void SetImageWidth(uint32_t _width);
137 
140  public: uint32_t ImageHeight() const;
141 
144  public: void SetImageHeight(uint32_t _height);
145 
149  public: PixelFormatType PixelFormat() const;
150 
153  public: void SetPixelFormat(PixelFormatType _format);
154 
157  public: std::string PixelFormatStr() const;
158 
161  public: void SetPixelFormatStr(const std::string &_fmt);
162 
165  public: uint32_t AntiAliasingValue() const;
166 
169  public: void SetAntiAliasingValue(uint32_t _antiAliasingValue);
170 
173  public: double DepthNearClip() const;
174 
177  public: void SetDepthNearClip(double _near);
178 
181  public: double DepthFarClip() const;
182 
185  public: void SetDepthFarClip(double _far);
186 
189  public: double NearClip() const;
190 
193  public: void SetNearClip(double _near);
194 
197  public: void SetHasDepthCamera(bool _camera);
198 
201  public: bool HasDepthCamera() const;
202 
207  public: void SetHasDepthNearClip(bool _near);
208 
211  public: bool HasDepthNearClip() const;
212 
217  public: void SetHasDepthFarClip(bool _far);
218 
221  public: bool HasDepthFarClip() const;
222 
225  public: double FarClip() const;
226 
229  public: void SetFarClip(double _far);
230 
234  public: void SetHasSegmentationType(bool _type);
235 
238  public: bool HasSegmentationType() const;
239 
242  public: const std::string &SegmentationType() const;
243 
246  public: void SetSegmentationType(const std::string &_type);
247 
251  public: void SetHasBoundingBoxType(bool _type);
252 
255  public: bool HasBoundingBoxType() const;
256 
259  public: const std::string &BoundingBoxType() const;
260 
263  public: void SetBoundingBoxType(const std::string &_type);
264 
267  public: bool SaveFrames() const;
268 
271  public: void SetSaveFrames(bool _save);
272 
275  public: const std::string &SaveFramesPath() const;
276 
279  public: void SetSaveFramesPath(const std::string &_path);
280 
283  public: const Noise &ImageNoise() const;
284 
287  public: void SetImageNoise(const Noise &_noise);
288 
291  public: double DistortionK1() const;
292 
295  public: void SetDistortionK1(double _k1);
296 
299  public: double DistortionK2() const;
300 
303  public: void SetDistortionK2(double _k2);
304 
307  public: double DistortionK3() const;
308 
311  public: void SetDistortionK3(double _k3);
312 
315  public: double DistortionP1() const;
316 
319  public: void SetDistortionP1(double _p1);
320 
323  public: double DistortionP2() const;
324 
327  public: void SetDistortionP2(double _p2);
328 
331  public: const gz::math::Vector2d &DistortionCenter() const;
332 
335  public: void SetDistortionCenter(const gz::math::Vector2d &_center);
336 
340  public: const gz::math::Pose3d &RawPose() const;
341 
345  public: void SetRawPose(const gz::math::Pose3d &_pose);
346 
351  public: const std::string &PoseRelativeTo() const;
352 
357  public: void SetPoseRelativeTo(const std::string &_frame);
358 
366  public: const std::string OpticalFrameId() const;
367 
371  public: void SetOpticalFrameId(const std::string &_frame);
372 
379  public: std::string LensType() const;
380 
384  public: void SetLensType(const std::string &_type);
385 
389  public: bool LensScaleToHfov() const;
390 
394  public: void SetLensScaleToHfov(bool _scale);
395 
398  public: double LensC1() const;
399 
402  public: void SetLensC1(double _c1);
403 
406  public: double LensC2() const;
407 
410  public: void SetLensC2(double _c2);
411 
414  public: double LensC3() const;
415 
418  public: void SetLensC3(double _c3);
419 
422  public: double LensFocalLength() const;
423 
426  public: void SetLensFocalLength(double _f);
427 
431  public: const std::string &LensFunction() const;
432 
436  public: void SetLensFunction(const std::string &_fun);
437 
441  public: gz::math::Angle LensCutoffAngle() const;
442 
446  public: void SetLensCutoffAngle(const gz::math::Angle &_angle);
447 
451  public: int LensEnvironmentTextureSize() const;
452 
456  public: void SetLensEnvironmentTextureSize(int _size);
457 
460  public: double LensIntrinsicsFx() const;
461 
464  public: void SetLensIntrinsicsFx(double _fx);
465 
468  public: double LensIntrinsicsFy() const;
469 
472  public: void SetLensIntrinsicsFy(double _fy);
473 
476  public: double LensIntrinsicsCx() const;
477 
480  public: void SetLensIntrinsicsCx(double _cx);
481 
484  public: double LensIntrinsicsCy() const;
485 
488  public: void SetLensIntrinsicsCy(double _cy);
489 
492  public: double LensProjectionFx() const;
493 
496  public: void SetLensProjectionFx(double _fx_p);
497 
500  public: double LensProjectionFy() const;
501 
504  public: void SetLensProjectionFy(double _fy_p);
505 
508  public: double LensProjectionCx() const;
509 
512  public: void SetLensProjectionCx(double _cx_p);
513 
516  public: double LensProjectionCy() const;
517 
520  public: void SetLensProjectionCy(double _cy_p);
521 
524  public: double LensProjectionTx() const;
525 
528  public: void SetLensProjectionTx(double _tx);
529 
532  public: double LensProjectionTy() const;
533 
536  public: void SetLensProjectionTy(double _ty);
537 
540  public: double LensIntrinsicsSkew() const;
541 
544  public: void SetLensIntrinsicsSkew(double _s);
545 
550  const std::string &_format);
551 
555  public: static std::string ConvertPixelFormat(PixelFormatType _type);
556 
559  public: uint32_t VisibilityMask() const;
560 
563  public: void SetVisibilityMask(uint32_t _mask);
564 
567  public: bool HasLensIntrinsics() const;
568 
571  public: bool HasLensProjection() const;
572 
578  public: sdf::ElementPtr ToElement() const;
579 
581  GZ_UTILS_IMPL_PTR(dataPtr)
582  };
583  }
584 }
585 
586 #endif
Information about a monocular camera sensor.
Definition: Camera.hh:61
bool HasDepthFarClip() const
Get whether the depth camera far clip distance was set.
double DistortionK1() const
Get the radial distortion coefficient k1.
double LensC1() const
Get lens custom function linear scaling constant.
double DepthFarClip() const
Get the far clip distance for the depth camera.
void SetTriggered(bool _triggered)
Set whether the camera should be triggered by a topic.
void SetBoundingBoxType(const std::string &_type)
Set the boundingbox type.
void SetHasDepthCamera(bool _camera)
Set whether the depth camera has been specified.
uint32_t VisibilityMask() const
Get the visibility mask of a camera.
uint32_t ImageHeight() const
Get the image height in pixels.
void SetDistortionP1(double _p1)
Set the tangential distortion coefficient p1.
void SetSaveFrames(bool _save)
Set whether frames should be saved.
void SetHasDepthFarClip(bool _far)
Set whether the depth camera far clip distance has been specified.
static std::string ConvertPixelFormat(PixelFormatType _type)
Convert a PixelFormatType to a string.
void SetLensC3(double _c3)
Set lens custom function angle offset constant.
void SetFarClip(double _far)
Set the far clip distance.
bool SaveFrames() const
Get whether frames should be saved.
void SetLensProjectionFx(double _fx_p)
Set the lens projection matrix X focal length in pixels.
void SetDepthNearClip(double _near)
Set the near clip distance for the depth camera.
void SetImageWidth(uint32_t _width)
Set the image width in pixels.
void SetLensFocalLength(double _f)
Set lens custom function focal length.
void SetDepthFarClip(double _far)
Set the far clip distance for the depth camera.
PixelFormatType PixelFormat() const
Get the pixel format.
void SetLensEnvironmentTextureSize(int _size)
Set environment texture size.
void SetAntiAliasingValue(uint32_t _antiAliasingValue)
Set the anti-aliasing value.
gz::math::Angle HorizontalFov() const
Get the horizontal field of view in radians.
double DistortionP2() const
Get the tangential distortion coefficient p2.
void SetHasSegmentationType(bool _type)
Set whether the segmentation type has been specified.
double LensFocalLength() const
Get lens custom function focal length.
void SetSegmentationType(const std::string &_type)
Set the segmentation type.
const std::string & PoseRelativeTo() const
Get the name of the coordinate frame relative to which this object's pose is expressed.
void SetName(const std::string &_name)
Set the name of the camera.
static PixelFormatType ConvertPixelFormat(const std::string &_format)
Convert a string to a PixelFormatType.
void SetLensProjectionFy(double _fy_p)
Set the lens projection matrix Y focal length in pixels.
void SetLensProjectionTx(double _tx)
Set the lens projection matrix X translation in pixels.
const std::string & BoundingBoxType() const
Get the boundingbox type.
void SetDistortionK1(double _k1)
Set the radial distortion coefficient k1.
double LensProjectionFx() const
Get the lens projection matrix X focal length in pixels.
double DistortionK3() const
Get the radial distortion coefficient k3.
double LensProjectionFy() const
Get the lens projection matrix Y focal length in pixels.
std::string PixelFormatStr() const
Get the pixel format as a string.
bool HasDepthCamera() const
Get whether the depth camera was set.
void SetLensIntrinsicsFx(double _fx)
Set the lens intrinsic matrix X focal length in pixels.
const std::string OpticalFrameId() const
Get the name of the coordinate frame relative to which this object's camera_info message header is ex...
void SetLensIntrinsicsSkew(double _s)
Set the lens XY axis skew.
int LensEnvironmentTextureSize() const
Get environment texture size.
double DistortionK2() const
Get the radial distortion coefficient k2.
void SetLensScaleToHfov(bool _scale)
Set lens scale to horizontal field of field.
void SetPixelFormat(PixelFormatType _format)
Set the pixel format type.
void SetSaveFramesPath(const std::string &_path)
Set the path in which to save frames.
void SetOpticalFrameId(const std::string &_frame)
Set the name of the coordinate frame relative to which this object's camera_info is expressed.
void SetDistortionP2(double _p2)
Set the tangential distortion coefficient p2.
sdf::ElementPtr Element() const
Get a pointer to the SDF element that was used during load.
double LensIntrinsicsFy() const
Get the lens intrinsic matrix Y focal length in pixels.
void SetImageNoise(const Noise &_noise)
Set the noise values related to the image.
double FarClip() const
Get the far clip distance.
void SetImageHeight(uint32_t _height)
Set the image height in pixels.
bool Triggered() const
Get whether the camera is triggered by a topic.
void SetRawPose(const gz::math::Pose3d &_pose)
Set the pose of the camera.
double LensIntrinsicsFx() const
Get the lens intrinsic matrix X focal length in pixels.
double LensProjectionTx() const
Get the lens projection matrix X translation in pixels.
bool HasBoundingBoxType() const
Get whether the boundingbox type was set.
double NearClip() const
Get the near clip distance.
void SetDistortionK2(double _k2)
Set the radial distortion coefficient k2.
uint32_t ImageWidth() const
Get the image width in pixels.
void SetPixelFormatStr(const std::string &_fmt)
Set the pixel format from a string.
bool HasLensProjection() const
Get whether or not the camera has projection values set.
bool LensScaleToHfov() const
Get lens scale to horizontal field of field.
const gz::math::Pose3d & RawPose() const
Get the pose of the camer.
double LensIntrinsicsCx() const
Get the lens intrinsic matrix X principal point in pixels.
double LensC3() const
Get lens custom function angle offset constant.
double DepthNearClip() const
Get the near clip distance for the depth camera.
std::string Name() const
Get the name of the camera.
bool HasLensIntrinsics() const
Get whether or not the camera has instrinsics values set.
bool HasDepthNearClip() const
Get whether the depth camera near clip distance was set.
void SetLensCutoffAngle(const gz::math::Angle &_angle)
Set lens cutoff angle.
std::string TriggerTopic() const
Get the topic that will trigger the camera.
void SetLensProjectionTy(double _ty)
Set the lens projection matrix Y translation in pixels.
double LensProjectionCy() const
Get the lens projection matrix Y principal point in pixels.
void SetPoseRelativeTo(const std::string &_frame)
Set the name of the coordinate frame relative to which this object's pose is expressed.
void SetLensIntrinsicsFy(double _fy)
Set the lens intrinsic matrix Y focal length in pixels.
bool operator!=(const Camera &_alt) const
Return true this Camera object does not contain the same values as the passed in parameter.
uint32_t AntiAliasingValue() const
Get the anti-aliasing value.
void SetLensIntrinsicsCy(double _cy)
Set the lens intrinsic matrix Y principal point in pixels.
void SetLensC1(double _c1)
Set lens custom function linear scaling constant.
Errors Load(ElementPtr _sdf)
Load the camera sensor based on an element pointer.
void SetLensIntrinsicsCx(double _cx)
Set the lens intrinsic matrix X principal point in pixels.
void SetLensType(const std::string &_type)
Set the lens type.
double LensIntrinsicsCy() const
Get the lens intrinsic matrix Y principal point in pixels.
const std::string & SegmentationType() const
Get the segmentation type.
sdf::ElementPtr ToElement() const
Create and return an SDF element filled with data from this camera.
double LensIntrinsicsSkew() const
Get the lens XY axis skew.
void SetDistortionK3(double _k3)
Set the radial distortion coefficient k3.
std::string LensType() const
Get the lens type.
void SetHasDepthNearClip(bool _near)
Set whether the depth camera near clip distance has been specified.
void SetDistortionCenter(const gz::math::Vector2d &_center)
Set the distortion center or principal point.
std::string CameraInfoTopic() const
Get the camera info topic.
void SetNearClip(double _near)
Set the near clip distance.
const Noise & ImageNoise() const
Get the image noise values.
void SetLensC2(double _c2)
Set lens custom function angular scaling constant.
void SetLensProjectionCx(double _cx_p)
Set the lens projection matrix X principal point in pixels.
gz::math::Angle LensCutoffAngle() const
Get lens cutoff angle.
bool HasSegmentationType() const
Get whether the segmentation type was set.
void SetLensProjectionCy(double _cy_p)
Set the lens projection matrix Y principal point in pixels.
double LensProjectionCx() const
Get the lens projection matrix X principal point in pixels.
void SetCameraInfoTopic(const std::string &_cameraInfoTopic)
Set the camera info topic.
void SetHorizontalFov(const gz::math::Angle &_hfov)
Set the horizontal field of view in radians.
double LensC2() const
Get lens custom function angular scaling constant.
void SetLensFunction(const std::string &_fun)
Set lens custom function.
void SetHasBoundingBoxType(bool _type)
Set whether the boundingbox type has been specified.
double DistortionP1() const
Get the tangential distortion coefficient p1.
const gz::math::Vector2d & DistortionCenter() const
Get the distortion center or principal point.
const std::string & SaveFramesPath() const
Get the path in which to save frames.
void SetVisibilityMask(uint32_t _mask)
Set the visibility mask of a camera.
const std::string & LensFunction() const
Get lens custom function.
bool operator==(const Camera &_alt) const
Return true if both Camera objects contain the same values.
double LensProjectionTy() const
Get the lens projection matrix Y translation in pixels.
void SetTriggerTopic(const std::string &_triggerTopic)
Set the topic that will trigger the camera.
The Noise class contains information about a noise model, such as a Gaussian distribution.
Definition: Noise.hh:48
PixelFormatType
The set of pixel formats.
Definition: Camera.hh:37
std::vector< Error > Errors
A vector of Error.
Definition: Types.hh:95
std::shared_ptr< Element > ElementPtr
Definition: Element.hh:55
namespace for Simulation Description Format parser
Definition: Actor.hh:35
#define SDFORMAT_VISIBLE
Use to represent "symbol visible" if supported.
Definition: system_util.hh:25