10 #include <mrpt/core/lock_helper.h> 11 #include <mrpt/opengl/stock_objects.h> 12 #include <mrpt/version.h> 19 #if defined(MVSIM_HAS_ZMQ) && defined(MVSIM_HAS_PROTOBUF) 20 #include <mvsim/mvsim-msgs/ObservationLidar2D.pb.h> 23 using namespace mvsim;
43 params[
"angular_velocity_std_noise"] =
45 params[
"linear_acceleration_std_noise"] =
56 const mrpt::optional_ref<mrpt::opengl::COpenGLScene>& viz,
57 [[maybe_unused]]
const mrpt::optional_ref<mrpt::opengl::COpenGLScene>&
59 [[maybe_unused]]
bool childrenOnly)
65 #if MRPT_VERSION >= 0x270 69 mrpt::opengl::stock_objects::CornerXYZSimple(0.15
f);
99 using mrpt::obs::CObservationIMU;
103 auto outObs = CObservationIMU::Create(
obs_model_);
106 outObs->sensorLabel =
name_;
112 outObs->set(mrpt::obs::IMU_WX, w.x);
113 outObs->set(mrpt::obs::IMU_WY, w.y);
114 outObs->set(mrpt::obs::IMU_WZ, w.z);
119 mrpt::math::TVector3D linAccNoise(0, 0, 0);
122 const mrpt::math::TVector3D linAccLocal =
127 outObs->set(mrpt::obs::IMU_X_ACC, linAccLocal.x);
128 outObs->set(mrpt::obs::IMU_Y_ACC, linAccLocal.y);
129 outObs->set(mrpt::obs::IMU_Z_ACC, linAccLocal.z);
143 using namespace std::string_literals;
147 #if defined(MVSIM_HAS_ZMQ) && defined(MVSIM_HAS_PROTOBUF) mrpt::obs::CObservationIMU::Ptr last_obs_
IMU(Simulable &parent, const rapidxml::xml_node< char > *root)
std::string publishTopic_
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
void registerOnServer(mvsim::Client &c) override
mrpt::math::TTwist2D getTwist() const
bool should_simulate_sensor(const TSimulContext &context)
std::map< std::string, std::string > varValues_
Filled in by SensorBase::loadConfigFrom()
mrpt::opengl::CSetOfObjects::Ptr gl_sensor_origin_
mrpt::Clock::time_point get_simul_timestamp() const
mrpt::random::CRandomGenerator rng_
static void RegisterSensorOriginViz(const std::shared_ptr< mrpt::opengl::CSetOfObjects > &o)
std::shared_ptr< mrpt::opengl::CSetOfObjects > glCustomVisual_
Simulable & vehicle_
The vehicle this sensor is attached to.
mrpt::obs::CObservationIMU obs_model_
void registerOnServer(mvsim::Client &c) override
mrpt::poses::CPose2D getCPose2D() const
Alternative to getPose()
void reportNewObservation(const std::shared_ptr< mrpt::obs::CObservation > &obs, const TSimulContext &context)
virtual void simul_pre_timestep(const TSimulContext &context) override
double angularVelocityStdNoise_
[rad/s]
virtual void simul_post_timestep(const TSimulContext &context)
virtual void loadConfigFrom(const rapidxml::xml_node< char > *root)
mrpt::system::CTimeLogger & getTimeLogger()
virtual void simul_post_timestep(const TSimulContext &context) override
void internal_simulate_imu(const TSimulContext &context)
virtual void loadConfigFrom(const rapidxml::xml_node< char > *root) override
mrpt::opengl::CSetOfObjects::Ptr gl_sensor_origin_corner_
double linearAccelerationStdNoise_
[m/s²]
void make_sure_we_have_a_name(const std::string &prefix)
Assign a sensible default name/sensor label if none is provided:
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
double get_gravity() const
mrpt::math::TVector3D getLinearAcceleration() const