GNSS.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/CObservationGPS.h>
13 #include <mrpt/poses/CPose3D.h>
14 #include <mrpt/random.h>
16 
17 #include <mutex>
18 
19 namespace mvsim
20 {
25 class GNSS : public SensorBase
26 {
28  public:
30  virtual ~GNSS();
31 
32  // See docs in base class
33  virtual void loadConfigFrom(const rapidxml::xml_node<char>* root) override;
34 
35  virtual void simul_pre_timestep(const TSimulContext& context) override;
36  virtual void simul_post_timestep(const TSimulContext& context) override;
37 
38  void registerOnServer(mvsim::Client& c) override;
39 
40  protected:
41  void internalGuiUpdate(
42  const mrpt::optional_ref<mrpt::opengl::COpenGLScene>& viz,
43  [[maybe_unused]] const mrpt::optional_ref<mrpt::opengl::COpenGLScene>& physical,
44  [[maybe_unused]] bool childrenOnly) override;
45 
46  void notifySimulableSetPose(const mrpt::math::TPose3D& newPose) override;
47 
48  mrpt::math::TPose3D getRelativePose() const override { return obs_model_.sensorPose.asTPose(); }
49  void setRelativePose(const mrpt::math::TPose3D& p) override
50  {
51  obs_model_.sensorPose = mrpt::poses::CPose3D(p);
52  }
53 
54  void internal_simulate_gnss(const TSimulContext& context);
55 
56  double horizontal_std_noise_ = 2.0;
57  double vertical_std_noise_ = 4.0;
58 
59  // Store here all default parameters. This obj will be copied as a
60  // "pattern" to fill it with actual data.
61  mrpt::obs::CObservationGPS obs_model_;
62 
63  std::mutex last_obs_cs_;
64 
66  mrpt::obs::CObservationGPS::Ptr last_obs_;
67 
68  mrpt::opengl::CSetOfObjects::Ptr gl_sensor_origin_, gl_sensor_origin_corner_;
69 
70  mrpt::random::CRandomGenerator rng_;
71 };
72 } // namespace mvsim
mvsim::VisualObject::parent
World * parent()
Definition: VisualObject.h:51
mvsim
Definition: Client.h:21
mvsim::GNSS::horizontal_std_noise_
double horizontal_std_noise_
[m]
Definition: GNSS.h:56
mvsim::GNSS
Definition: GNSS.h:25
mvsim::GNSS::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: GNSS.cpp:60
mvsim::GNSS::loadConfigFrom
virtual void loadConfigFrom(const rapidxml::xml_node< char > *root) override
Definition: GNSS.cpp:34
mvsim::GNSS::vertical_std_noise_
double vertical_std_noise_
[m]
Definition: GNSS.h:57
mvsim::GNSS::GNSS
GNSS(Simulable &parent, const rapidxml::xml_node< char > *root)
Definition: GNSS.cpp:27
mvsim::GNSS::obs_model_
mrpt::obs::CObservationGPS obs_model_
Definition: GNSS.h:61
mvsim::GNSS::gl_sensor_origin_
mrpt::opengl::CSetOfObjects::Ptr gl_sensor_origin_
Definition: GNSS.h:68
mvsim::GNSS::last_obs_
mrpt::obs::CObservationGPS::Ptr last_obs_
Definition: GNSS.h:66
mvsim::Client
Definition: Client.h:48
mvsim::SensorBase
Virtual base class for all sensors.
Definition: SensorBase.h:34
mvsim::GNSS::getRelativePose
mrpt::math::TPose3D getRelativePose() const override
Definition: GNSS.h:48
mvsim::GNSS::~GNSS
virtual ~GNSS()
Definition: GNSS.cpp:32
mvsim::GNSS::last_obs_cs_
std::mutex last_obs_cs_
Definition: GNSS.h:63
mvsim::GNSS::notifySimulableSetPose
void notifySimulableSetPose(const mrpt::math::TPose3D &newPose) override
Definition: GNSS.cpp:202
mvsim::TSimulContext
Definition: basic_types.h:58
mvsim::GNSS::simul_post_timestep
virtual void simul_post_timestep(const TSimulContext &context) override
Definition: GNSS.cpp:91
mvsim::GNSS::registerOnServer
void registerOnServer(mvsim::Client &c) override
Definition: GNSS.cpp:210
mvsim::GNSS::simul_pre_timestep
virtual void simul_pre_timestep(const TSimulContext &context) override
Definition: GNSS.cpp:88
mvsim::GNSS::setRelativePose
void setRelativePose(const mrpt::math::TPose3D &p) override
Definition: GNSS.h:49
rapidxml::xml_node< char >
mvsim::Simulable
Definition: Simulable.h:39
mvsim::GNSS::rng_
mrpt::random::CRandomGenerator rng_
Definition: GNSS.h:70
root
root
mvsim::GNSS::internal_simulate_gnss
void internal_simulate_gnss(const TSimulContext &context)
Definition: GNSS.cpp:106
mvsim::GNSS::gl_sensor_origin_corner_
mrpt::opengl::CSetOfObjects::Ptr gl_sensor_origin_corner_
Definition: GNSS.h:68
SensorBase.h
DECLARES_REGISTER_SENSOR
#define DECLARES_REGISTER_SENSOR(CLASS_NAME)
Definition: SensorBase.h:120


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