IMU.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/CObservationIMU.h>
13 #include <mrpt/poses/CPose3D.h>
14 #include <mrpt/random.h>
16 
17 #include <mutex>
18 
19 namespace mvsim
20 {
24 class IMU : public SensorBase
25 {
27  public:
29  virtual ~IMU();
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 registerOnServer(mvsim::Client& c) override;
38 
39  protected:
40  void internalGuiUpdate(
41  const mrpt::optional_ref<mrpt::opengl::COpenGLScene>& viz,
42  [[maybe_unused]] const mrpt::optional_ref<mrpt::opengl::COpenGLScene>& physical,
43  [[maybe_unused]] bool childrenOnly) override;
44 
45  void notifySimulableSetPose(const mrpt::math::TPose3D& newPose) override;
46 
47  mrpt::math::TPose3D getRelativePose() const override { return obs_model_.sensorPose.asTPose(); }
48  void setRelativePose(const mrpt::math::TPose3D& p) override
49  {
50  obs_model_.sensorPose = mrpt::poses::CPose3D(p);
51  }
52 
53  void internal_simulate_imu(const TSimulContext& context);
54 
55  double angularVelocityStdNoise_ = 2e-4;
56  double linearAccelerationStdNoise_ = 0.017;
57 
58  // Store here all default parameters. This obj will be copied as a
59  // "pattern" to fill it with actual data.
60  mrpt::obs::CObservationIMU obs_model_;
61 
62  std::mutex last_obs_cs_;
63 
65  mrpt::obs::CObservationIMU::Ptr last_obs_;
66 
67  mrpt::opengl::CSetOfObjects::Ptr gl_sensor_origin_, gl_sensor_origin_corner_;
68 
69  mrpt::random::CRandomGenerator rng_;
70 };
71 } // namespace mvsim
mvsim::VisualObject::parent
World * parent()
Definition: VisualObject.h:51
mvsim
Definition: Client.h:21
mvsim::IMU::last_obs_
mrpt::obs::CObservationIMU::Ptr last_obs_
Definition: IMU.h:65
mvsim::IMU::internal_simulate_imu
void internal_simulate_imu(const TSimulContext &context)
Definition: IMU.cpp:97
mvsim::IMU::simul_post_timestep
virtual void simul_post_timestep(const TSimulContext &context) override
Definition: IMU.cpp:83
mvsim::Client
Definition: Client.h:48
mvsim::SensorBase
Virtual base class for all sensors.
Definition: SensorBase.h:34
mvsim::IMU::internalGuiUpdate
void internalGuiUpdate(const mrpt::optional_ref< mrpt::opengl::COpenGLScene > &viz, [[maybe_unused]] const mrpt::optional_ref< mrpt::opengl::COpenGLScene > &physical, [[maybe_unused]] bool childrenOnly) override
Definition: IMU.cpp:52
mvsim::IMU::rng_
mrpt::random::CRandomGenerator rng_
Definition: IMU.h:69
mvsim::IMU::setRelativePose
void setRelativePose(const mrpt::math::TPose3D &p) override
Definition: IMU.h:48
mvsim::IMU::last_obs_cs_
std::mutex last_obs_cs_
Definition: IMU.h:62
mvsim::IMU
Definition: IMU.h:24
mvsim::IMU::gl_sensor_origin_
mrpt::opengl::CSetOfObjects::Ptr gl_sensor_origin_
Definition: IMU.h:67
mvsim::IMU::notifySimulableSetPose
void notifySimulableSetPose(const mrpt::math::TPose3D &newPose) override
Definition: IMU.cpp:139
mvsim::IMU::getRelativePose
mrpt::math::TPose3D getRelativePose() const override
Definition: IMU.h:47
mvsim::IMU::gl_sensor_origin_corner_
mrpt::opengl::CSetOfObjects::Ptr gl_sensor_origin_corner_
Definition: IMU.h:67
mvsim::IMU::linearAccelerationStdNoise_
double linearAccelerationStdNoise_
[m/s²]
Definition: IMU.h:56
mvsim::TSimulContext
Definition: basic_types.h:58
mvsim::IMU::angularVelocityStdNoise_
double angularVelocityStdNoise_
[rad/s]
Definition: IMU.h:55
mvsim::IMU::obs_model_
mrpt::obs::CObservationIMU obs_model_
Definition: IMU.h:60
mvsim::IMU::registerOnServer
void registerOnServer(mvsim::Client &c) override
Definition: IMU.cpp:147
mvsim::IMU::loadConfigFrom
virtual void loadConfigFrom(const rapidxml::xml_node< char > *root) override
Definition: IMU.cpp:33
mvsim::IMU::simul_pre_timestep
virtual void simul_pre_timestep(const TSimulContext &context) override
Definition: IMU.cpp:80
mvsim::IMU::IMU
IMU(Simulable &parent, const rapidxml::xml_node< char > *root)
Definition: IMU.cpp:26
rapidxml::xml_node< char >
mvsim::Simulable
Definition: Simulable.h:39
root
root
SensorBase.h
DECLARES_REGISTER_SENSOR
#define DECLARES_REGISTER_SENSOR(CLASS_NAME)
Definition: SensorBase.h:120
mvsim::IMU::~IMU
virtual ~IMU()
Definition: IMU.cpp:31


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