10 #include <mrpt/core/lock_helper.h> 11 #include <mrpt/opengl/CFrustum.h> 12 #include <mrpt/opengl/COpenGLScene.h> 13 #include <mrpt/opengl/stock_objects.h> 14 #include <mrpt/random.h> 15 #include <mrpt/version.h> 22 using namespace mvsim;
45 mrpt::poses::CPose3D(0, 0, 0.5, 90.0_deg, 0, 90.0_deg);
63 params[
"cx"] =
TParamEntry(
"%lf", &rgbCam.intrinsicParams(0, 2));
64 params[
"cy"] =
TParamEntry(
"%lf", &rgbCam.intrinsicParams(1, 2));
65 params[
"fx"] =
TParamEntry(
"%lf", &rgbCam.intrinsicParams(0, 0));
66 params[
"fy"] =
TParamEntry(
"%lf", &rgbCam.intrinsicParams(1, 1));
68 unsigned int rgb_ncols = rgbCam.ncols, rgb_nrows = rgbCam.nrows;
78 rgbCam.ncols = rgb_ncols;
79 rgbCam.nrows = rgb_nrows;
86 const mrpt::optional_ref<mrpt::opengl::COpenGLScene>& viz,
87 [[maybe_unused]]
const mrpt::optional_ref<mrpt::opengl::COpenGLScene>&
89 [[maybe_unused]]
bool childrenOnly)
94 #if MRPT_VERSION >= 0x270 98 mrpt::opengl::stock_objects::CornerXYZSimple(0.15
f);
126 const float frustumScale = 0.4e-3;
127 auto frustum = mrpt::opengl::CFrustum::Create(
134 using namespace mrpt;
138 (-mrpt::poses::CPose3D::FromYawPitchRoll(
139 -90.0_deg, 0.0_deg, -90.0_deg)));
164 using namespace mrpt;
177 auto curObs = mrpt::obs::CObservationImage::Create(
sensor_params_);
185 mrpt::opengl::CFBORender::Parameters p;
193 auto viewport = world3DScene.getViewport();
197 const auto fixedAxisConventionRot =
198 mrpt::poses::CPose3D(0, 0, 0, -90.0_deg, 0.0_deg, -90.0_deg);
203 cam.set6DOFMode(
true);
204 cam.setProjectiveFromPinhole(curObs->cameraParams);
213 const auto rgbSensorPose = vehiclePose + curObs->cameraPose;
215 cam.setPose(rgbSensorPose);
219 auto tle2 = mrpt::system::CTimeLoggerEntry(
bool sensor_has_to_create_egl_context()
mrpt::obs::CObservationImage sensor_params_
std::map< std::string, TParamEntry > TParameterDefinitions
void parse_xmlnode_children_as_param(const rapidxml::xml_node< char > &xml_node, const TParameterDefinitions ¶ms, const std::map< std::string, std::string > &variableNamesValues={}, const char *functionNameContext="", mrpt::system::COutputLogger *logger=nullptr)
mrpt::math::TPose3D getPose() const
static void RegisterSensorFOVViz(const std::shared_ptr< mrpt::opengl::CSetOfObjects > &o)
std::shared_ptr< mrpt::opengl::CFBORender > fbo_renderer_rgb_
bool should_simulate_sensor(const TSimulContext &context)
mrpt::obs::CObservationImage::Ptr last_obs_
std::map< std::string, std::string > varValues_
Filled in by SensorBase::loadConfigFrom()
mrpt::Clock::time_point get_simul_timestamp() const
mrpt::opengl::CSetOfObjects::Ptr gl_sensor_origin_corner_
static void RegisterSensorOriginViz(const std::shared_ptr< mrpt::opengl::CSetOfObjects > &o)
std::shared_ptr< mrpt::opengl::CSetOfObjects > glCustomVisual_
std::optional< TSimulContext > has_to_render_
Simulable & vehicle_
The vehicle this sensor is attached to.
virtual void internalGuiUpdate(const mrpt::optional_ref< mrpt::opengl::COpenGLScene > &viz, const mrpt::optional_ref< mrpt::opengl::COpenGLScene > &physical, bool childrenOnly) override
virtual void simul_post_timestep(const TSimulContext &context) override
mrpt::opengl::CSetOfObjects::Ptr gl_sensor_fov_
virtual void simul_pre_timestep(const TSimulContext &context) override
void simulateOn3DScene(mrpt::opengl::COpenGLScene &gl_scene) override
void reportNewObservation(const std::shared_ptr< mrpt::obs::CObservation > &obs, const TSimulContext &context)
virtual void simul_post_timestep(const TSimulContext &context)
mrpt::obs::CObservationImage::Ptr last_obs2gui_
CameraSensor(Simulable &parent, const rapidxml::xml_node< char > *root)
virtual void loadConfigFrom(const rapidxml::xml_node< char > *root)
mrpt::opengl::CSetOfObjects::Ptr gl_sensor_origin_
mrpt::system::CTimeLogger & getTimeLogger()
virtual void loadConfigFrom(const rapidxml::xml_node< char > *root) override
void freeOpenGLResources() override
void mark_as_pending_running_sensors_on_3D_scene()
std::mutex has_to_render_mtx_
void make_sure_we_have_a_name(const std::string &prefix)
Assign a sensible default name/sensor label if none is provided:
mrpt::opengl::CSetOfObjects::Ptr gl_sensor_frustum_