MVSim
Lightweight simulator for 2.5D vehicles and robots
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
mvsim::IMU Class Reference

#include <IMU.h>

Inheritance diagram for mvsim::IMU:
Inheritance graph
[legend]
Collaboration diagram for mvsim::IMU:
Collaboration graph
[legend]

Public Member Functions

 IMU (Simulable &parent, const rapidxml::xml_node< char > *root)
 
virtual void loadConfigFrom (const rapidxml::xml_node< char > *root) override
 
virtual void simul_pre_timestep (const TSimulContext &context) override
 
virtual void simul_post_timestep (const TSimulContext &context) override
 
void registerOnServer (mvsim::Client &c) override
 
- Public Member Functions inherited from mvsim::SensorBase
 SensorBase (Simulable &vehicle)
 
void registerOnServer (mvsim::Client &c) override
 
virtual void simulateOn3DScene ([[maybe_unused]] mrpt::opengl::COpenGLScene &gl_scene)
 
double sensor_period () const
 
Simulablevehicle ()
 
const Simulablevehicle () const
 
- Public Member Functions inherited from mvsim::VisualObject
 VisualObject (World *parent, bool insertCustomVizIntoViz=true, bool insertCustomVizIntoPhysical=true)
 
 VisualObject (const VisualObject &)=delete
 
VisualObjectoperator= (const VisualObject &)=delete
 
 VisualObject (VisualObject &&)=delete
 
VisualObjectoperator= (VisualObject &&)=delete
 
virtual void guiUpdate (const mrpt::optional_ref< mrpt::opengl::COpenGLScene > &viz, const mrpt::optional_ref< mrpt::opengl::COpenGLScene > &physical)
 
Worldparent ()
 
const Worldparent () const
 
void customVisualVisible (const bool visible)
 
bool customVisualVisible () const
 
const std::optional< Shape2p5 > & collisionShape () const
 
void showCollisionShape (bool show)
 
- Public Member Functions inherited from mvsim::Simulable
 Simulable (World *parent)
 
virtual void apply_force (const mrpt::math::TVector2D &force, const mrpt::math::TPoint2D &applyPoint=mrpt::math::TPoint2D(0, 0))
 
virtual VisualObjectmeAsVisualObject ()
 
mrpt::math::TTwist2D getRefVelocityLocal () const
 
mrpt::math::TTwist2D getVelocityLocal () const
 
mrpt::math::TTwist2D getRefVelocityGlobal () const
 
mrpt::math::TTwist2D getComVelocityGlobal () const
 
mrpt::math::TPose3D getPose () const
 
mrpt::math::TPose3D getPoseNoLock () const
 No thread-safe version. Used internally only.
 
mrpt::math::TVector3D getLinearAcceleration () const
 
void setPose (const mrpt::math::TPose3D &p, bool notifyChange=true) const
 
void setRefVelocityLocal (const mrpt::math::TTwist2D &dq)
 
mrpt::poses::CPose2D getCPose2D () const
 Alternative to getPose()
 
mrpt::poses::CPose3D getCPose3D () const
 Alternative to getPose()
 
const std::string & getName () const
 
void setName (const std::string &s)
 
bool isInCollision () const
 
bool hadCollision () const
 
void resetCollisionFlag ()
 
const b2Body * b2d_body () const
 
b2Body * b2d_body ()
 
WorldgetSimulableWorldObject ()
 
const WorldgetSimulableWorldObject () const
 
virtual void freeOpenGLResources ()
 
virtual std::optional< float > getElevationAt ([[maybe_unused]] const mrpt::math::TPoint2D &worldXY) const
 

Protected Member Functions

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
 
void notifySimulableSetPose (const mrpt::math::TPose3D &newPose) override
 
mrpt::math::TPose3D getRelativePose () const override
 
void setRelativePose (const mrpt::math::TPose3D &p) override
 
void internal_simulate_imu (const TSimulContext &context)
 
- Protected Member Functions inherited from mvsim::SensorBase
bool should_simulate_sensor (const TSimulContext &context)
 
Worldworld ()
 
const Worldworld () const
 
bool parseSensorPublish (const rapidxml::xml_node< char > *node, const std::map< std::string, std::string > &varValues)
 
void reportNewObservation (const std::shared_ptr< mrpt::obs::CObservation > &obs, const TSimulContext &context)
 
void reportNewObservation_lidar_2d (const std::shared_ptr< mrpt::obs::CObservation2DRangeScan > &obs, const TSimulContext &context)
 
void make_sure_we_have_a_name (const std::string &prefix)
 Assign a sensible default name/sensor label if none is provided:
 
- Protected Member Functions inherited from mvsim::VisualObject
bool parseVisual (const rapidxml::xml_node< char > &rootNode)
 Returns true if there is at least one <visual>...</visual> entry.
 
bool parseVisual (const JointXMLnode<> &rootNode)
 
virtual void internalGuiUpdate (const mrpt::optional_ref< mrpt::opengl::COpenGLScene > &viz, const mrpt::optional_ref< mrpt::opengl::COpenGLScene > &physical, bool childrenOnly=false)=0
 
void addCustomVisualization (const mrpt::opengl::CRenderizable::Ptr &glModel, const mrpt::poses::CPose3D &modelPose={}, const float modelScale=1.0f, const std::string &modelName="group", const std::optional< std::string > &modelURI=std::nullopt, const bool initialShowBoundingBox=false, const std::optional< double > &scaleOverride=std::nullopt)
 
void setCollisionShape (const Shape2p5 &cs)
 

Protected Attributes

double orientationStdNoise_ = 0.005
 [rad]
 
ImuNoiseModel noiseModel_
 
bool measure_orientation_ = false
 If true, the IMU will also measure orientation.
 
mrpt::obs::CObservationIMU obs_model_
 
std::mutex last_obs_cs_
 
mrpt::obs::CObservationIMU::Ptr last_obs_
 
mrpt::opengl::CSetOfObjects::Ptr gl_sensor_origin_
 
mrpt::opengl::CSetOfObjects::Ptr gl_sensor_origin_corner_
 
mrpt::random::CRandomGenerator rng_
 
- Protected Attributes inherited from mvsim::SensorBase
Simulablevehicle_
 The vehicle this sensor is attached to.
 
double sensor_period_ = 0.1
 
double sensor_last_timestamp_ = 0
 
std::string publishTopic_
 
std::map< std::string, std::string > varValues_
 Filled in by SensorBase::loadConfigFrom()
 
- Protected Attributes inherited from mvsim::VisualObject
Worldworld_
 
std::shared_ptr< mrpt::opengl::CSetOfObjects > glCustomVisual_
 
std::shared_ptr< mrpt::opengl::CSetOfObjects > glCollision_
 
int32_t glCustomVisualId_ = -1
 
const bool insertCustomVizIntoViz_ = true
 
const bool insertCustomVizIntoPhysical_ = true
 
- Protected Attributes inherited from mvsim::Simulable
std::string name_
 

Additional Inherited Members

- Public Types inherited from mvsim::SensorBase
using Ptr = std::shared_ptr< SensorBase >
 
- Public Types inherited from mvsim::Simulable
using Ptr = std::shared_ptr< Simulable >
 
- Static Public Member Functions inherited from mvsim::SensorBase
static SensorBase::Ptr factory (Simulable &parent, const rapidxml::xml_node< char > *xml_node)
 
static std::shared_ptr< mrpt::opengl::CSetOfObjects > GetAllSensorsOriginViz ()
 
static std::shared_ptr< mrpt::opengl::CSetOfObjects > GetAllSensorsFOVViz ()
 
static void RegisterSensorFOVViz (const std::shared_ptr< mrpt::opengl::CSetOfObjects > &o)
 
static void RegisterSensorOriginViz (const std::shared_ptr< mrpt::opengl::CSetOfObjects > &o)
 
- Static Public Member Functions inherited from mvsim::VisualObject
static void FreeOpenGLResources ()
 
- Static Public Attributes inherited from mvsim::VisualObject
static double GeometryEpsilon
 

Detailed Description

An Inertial Measurement Unit (IMU) sensor.

Supports the continuous-time IMU noise model from Forster et al. (2016) with per-channel white noise and bias random walk. See ImuNoiseModel for full details.

Member Function Documentation

◆ getRelativePose()

mrpt::math::TPose3D mvsim::IMU::getRelativePose ( ) const
inlineoverrideprotectedvirtual

Like getPose(), but gets the relative pose with respect to the parent object, or just exactly like getPose() (global pose) if this is a top-level entity.

Reimplemented from mvsim::Simulable.

◆ loadConfigFrom()

virtual void mvsim::IMU::loadConfigFrom ( const rapidxml::xml_node< char > *  root)
overridevirtual

Loads the parameters common to all sensors. Should be overriden, and they call to this base method.

Reimplemented from mvsim::SensorBase.

◆ setRelativePose()

void mvsim::IMU::setRelativePose ( const mrpt::math::TPose3D &  p)
inlineoverrideprotectedvirtual

Changes the relative pose of this object with respect to its parent, or the global frame if its a top-level entity.

Reimplemented from mvsim::Simulable.

◆ simul_post_timestep()

virtual void mvsim::IMU::simul_post_timestep ( const TSimulContext context)
overridevirtual

Override to do any required process right after the integration of dynamic equations for each timestep. IMPORTANT: Reimplementations MUST also call this base method, since it is in charge of important tasks (e.g. update q_, dq_)

Reimplemented from mvsim::Simulable.

◆ simul_pre_timestep()

virtual void mvsim::IMU::simul_pre_timestep ( const TSimulContext context)
overridevirtual

Process right before the integration of dynamic equations for each timestep: set action forces from motors, update friction models, etc.

Reimplemented from mvsim::Simulable.

Member Data Documentation

◆ last_obs_

mrpt::obs::CObservationIMU::Ptr mvsim::IMU::last_obs_
protected

Last simulated obs

◆ noiseModel_

ImuNoiseModel mvsim::IMU::noiseModel_
protected

Stochastic IMU noise model (white noise + bias random walk).


The documentation for this class was generated from the following file: