CameraSensor.h
Go to the documentation of this file.
1 /*+-------------------------------------------------------------------------+
2  | MultiVehicle simulator (libmvsim) |
3  | |
4  | Copyright (C) 2014-2024 Jose Luis Blanco Claraco |
5  | Copyright (C) 2017 Borys Tymchenko (Odessa Polytechnic University) |
6  | Distributed under 3-clause BSD License |
7  | See COPYING |
8  +-------------------------------------------------------------------------+ */
9 
10 #pragma once
11 
12 #include <mrpt/obs/CObservationImage.h>
13 #include <mrpt/opengl/CFBORender.h>
15 
16 #include <mutex>
17 
18 namespace mvsim
19 {
23 class CameraSensor : public SensorBase
24 {
26 
27  public:
29  virtual ~CameraSensor();
30 
31  // See docs in base class
32  virtual void loadConfigFrom(const rapidxml::xml_node<char>* root) override;
33 
34  virtual void simul_pre_timestep(const TSimulContext& context) override;
35  virtual void simul_post_timestep(const TSimulContext& context) override;
36 
37  void simulateOn3DScene(mrpt::opengl::COpenGLScene& gl_scene) override;
38 
39  void freeOpenGLResources() override;
40 
41  protected:
42  virtual void internalGuiUpdate(
43  const mrpt::optional_ref<mrpt::opengl::COpenGLScene>& viz,
44  const mrpt::optional_ref<mrpt::opengl::COpenGLScene>& physical, bool childrenOnly) override;
45 
46  void notifySimulableSetPose(const mrpt::math::TPose3D& newPose) override;
47 
48  mrpt::math::TPose3D getRelativePose() const override { return sensor_params_.sensorPose(); }
49  void setRelativePose(const mrpt::math::TPose3D& p) override
50  {
51  sensor_params_.setSensorPose(mrpt::poses::CPose3D(p));
52  }
53 
54  // Store here all sensor intrinsic parameters. This obj will be copied as a
55  // "pattern" to fill it with actual scan data.
56  mrpt::obs::CObservationImage sensor_params_;
57 
58  std::mutex last_obs_cs_;
60  mrpt::obs::CObservationImage::Ptr last_obs_;
61  mrpt::obs::CObservationImage::Ptr last_obs2gui_;
62 
63  std::shared_ptr<mrpt::opengl::CFBORender> fbo_renderer_rgb_;
64 
67  bool gui_uptodate_ = false;
68 
69  std::optional<TSimulContext> has_to_render_;
70  std::mutex has_to_render_mtx_;
71 
72  float rgbClipMin_ = 1e-2, rgbClipMax_ = 1e+4;
73 
74  mrpt::opengl::CSetOfObjects::Ptr gl_sensor_origin_, gl_sensor_origin_corner_;
75  mrpt::opengl::CSetOfObjects::Ptr gl_sensor_fov_, gl_sensor_frustum_;
76 };
77 } // namespace mvsim
mvsim::VisualObject::parent
World * parent()
Definition: VisualObject.h:51
mvsim
Definition: Client.h:21
mvsim::CameraSensor::has_to_render_
std::optional< TSimulContext > has_to_render_
Definition: CameraSensor.h:69
mvsim::CameraSensor::last_obs2gui_
mrpt::obs::CObservationImage::Ptr last_obs2gui_
Definition: CameraSensor.h:61
mvsim::CameraSensor::loadConfigFrom
virtual void loadConfigFrom(const rapidxml::xml_node< char > *root) override
Definition: CameraSensor.cpp:33
mvsim::CameraSensor::simulateOn3DScene
void simulateOn3DScene(mrpt::opengl::COpenGLScene &gl_scene) override
Definition: CameraSensor.cpp:155
mvsim::CameraSensor::freeOpenGLResources
void freeOpenGLResources() override
Definition: CameraSensor.cpp:262
mvsim::CameraSensor::~CameraSensor
virtual ~CameraSensor()
Definition: CameraSensor.cpp:31
mvsim::SensorBase
Virtual base class for all sensors.
Definition: SensorBase.h:34
mvsim::CameraSensor::has_to_render_mtx_
std::mutex has_to_render_mtx_
Definition: CameraSensor.h:70
mvsim::CameraSensor::rgbClipMin_
float rgbClipMin_
Definition: CameraSensor.h:72
mvsim::CameraSensor::internalGuiUpdate
virtual void internalGuiUpdate(const mrpt::optional_ref< mrpt::opengl::COpenGLScene > &viz, const mrpt::optional_ref< mrpt::opengl::COpenGLScene > &physical, bool childrenOnly) override
Definition: CameraSensor.cpp:83
mvsim::CameraSensor::last_obs_cs_
std::mutex last_obs_cs_
Definition: CameraSensor.h:58
mvsim::TSimulContext
Definition: basic_types.h:58
mvsim::CameraSensor::gl_sensor_origin_
mrpt::opengl::CSetOfObjects::Ptr gl_sensor_origin_
Definition: CameraSensor.h:74
mvsim::CameraSensor::gl_sensor_fov_
mrpt::opengl::CSetOfObjects::Ptr gl_sensor_fov_
Definition: CameraSensor.h:75
mvsim::CameraSensor::gui_uptodate_
bool gui_uptodate_
Definition: CameraSensor.h:67
mvsim::CameraSensor::simul_pre_timestep
virtual void simul_pre_timestep(const TSimulContext &context) override
Definition: CameraSensor.cpp:153
mvsim::CameraSensor::getRelativePose
mrpt::math::TPose3D getRelativePose() const override
Definition: CameraSensor.h:48
rapidxml::xml_node< char >
mvsim::Simulable
Definition: Simulable.h:39
mvsim::CameraSensor::gl_sensor_frustum_
mrpt::opengl::CSetOfObjects::Ptr gl_sensor_frustum_
Definition: CameraSensor.h:75
mvsim::CameraSensor::notifySimulableSetPose
void notifySimulableSetPose(const mrpt::math::TPose3D &newPose) override
Definition: CameraSensor.cpp:254
mvsim::CameraSensor::gl_sensor_origin_corner_
mrpt::opengl::CSetOfObjects::Ptr gl_sensor_origin_corner_
Definition: CameraSensor.h:74
mvsim::CameraSensor
Definition: CameraSensor.h:23
mvsim::CameraSensor::rgbClipMax_
float rgbClipMax_
Definition: CameraSensor.h:72
root
root
mvsim::CameraSensor::sensor_params_
mrpt::obs::CObservationImage sensor_params_
Definition: CameraSensor.h:56
mvsim::CameraSensor::simul_post_timestep
virtual void simul_post_timestep(const TSimulContext &context) override
Definition: CameraSensor.cpp:239
mvsim::CameraSensor::last_obs_
mrpt::obs::CObservationImage::Ptr last_obs_
Definition: CameraSensor.h:60
SensorBase.h
DECLARES_REGISTER_SENSOR
#define DECLARES_REGISTER_SENSOR(CLASS_NAME)
Definition: SensorBase.h:120
mvsim::CameraSensor::setRelativePose
void setRelativePose(const mrpt::math::TPose3D &p) override
Definition: CameraSensor.h:49
mvsim::CameraSensor::fbo_renderer_rgb_
std::shared_ptr< mrpt::opengl::CFBORender > fbo_renderer_rgb_
Definition: CameraSensor.h:63
mvsim::CameraSensor::CameraSensor
CameraSensor(Simulable &parent, const rapidxml::xml_node< char > *root)
Definition: CameraSensor.cpp:25


mvsim
Author(s):
autogenerated on Wed May 28 2025 02:13:07