OccupancyGridMap.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/maps/COccupancyGridMap2D.h>
13 #include <mrpt/obs/CObservation2DRangeScan.h>
14 #include <mrpt/obs/CSinCosLookUpTableFor2DScans.h>
15 #include <mrpt/opengl/CPointCloud.h>
16 #include <mrpt/opengl/CSetOfObjects.h>
17 #include <mrpt/poses/CPose2D.h>
19 
20 #include <mutex>
21 
22 namespace mvsim
23 {
29 {
31  public:
33  virtual ~OccupancyGridMap();
34 
36 
37  virtual void loadConfigFrom(const rapidxml::xml_node<char>* root) override
38  {
40  }
41 
42  virtual void simul_pre_timestep(const TSimulContext& context) override;
43 
44  const mrpt::maps::COccupancyGridMap2D& getOccGrid() const { return grid_; }
45  mrpt::maps::COccupancyGridMap2D& getOccGrid() { return grid_; }
46 
47  protected:
48  virtual void internalGuiUpdate(
49  const mrpt::optional_ref<mrpt::opengl::COpenGLScene>& viz,
50  const mrpt::optional_ref<mrpt::opengl::COpenGLScene>& physical, bool childrenOnly) override;
51 
52  mrpt::maps::COccupancyGridMap2D grid_;
53 
55  mrpt::opengl::CSetOfObjects::Ptr gl_grid_;
57 
58  struct TFixturePtr
59  {
60  TFixturePtr() = default;
61  b2Fixture* fixture = nullptr;
62  };
63 
65  {
66  TInfoPerCollidableobj() = default;
67 
68  mrpt::poses::CPose2D pose;
69  b2Body* collide_body = nullptr;
70  mrpt::obs::CObservation2DRangeScan::Ptr scan;
71  std::vector<TFixturePtr> collide_fixtures;
73  };
74 
75  std::vector<TInfoPerCollidableobj> obstacles_for_each_obj_;
76  std::vector<mrpt::opengl::CSetOfObjects::Ptr> gl_obs_clouds_;
77 
79  std::vector<mrpt::opengl::CPointCloud::Ptr> gl_obs_clouds_buffer_;
80 
81  mrpt::obs::CSinCosLookUpTableFor2DScans sincos_lut_;
82 
84  double restitution_;
86 };
87 } // namespace mvsim
mvsim::VisualObject::parent
World * parent()
Definition: VisualObject.h:51
mvsim
Definition: Client.h:21
mvsim::OccupancyGridMap::simul_pre_timestep
virtual void simul_pre_timestep(const TSimulContext &context) override
Definition: OccupancyGridMap.cpp:156
mvsim::OccupancyGridMap::TFixturePtr
Definition: OccupancyGridMap.h:58
WorldElementBase.h
mvsim::OccupancyGridMap::TInfoPerCollidableobj::collide_fixtures
std::vector< TFixturePtr > collide_fixtures
Definition: OccupancyGridMap.h:71
mvsim::OccupancyGridMap::grid_
mrpt::maps::COccupancyGridMap2D grid_
Definition: OccupancyGridMap.h:52
mvsim::OccupancyGridMap::TInfoPerCollidableobj::collide_body
b2Body * collide_body
Definition: OccupancyGridMap.h:69
mvsim::OccupancyGridMap::restitution_
double restitution_
Elastic restitution coef (default: 0.01)
Definition: OccupancyGridMap.h:84
mvsim::OccupancyGridMap::gl_obs_clouds_buffer_
std::vector< mrpt::opengl::CPointCloud::Ptr > gl_obs_clouds_buffer_
Definition: OccupancyGridMap.h:79
mvsim::OccupancyGridMap::getOccGrid
const mrpt::maps::COccupancyGridMap2D & getOccGrid() const
Definition: OccupancyGridMap.h:44
mvsim::OccupancyGridMap::getOccGrid
mrpt::maps::COccupancyGridMap2D & getOccGrid()
Definition: OccupancyGridMap.h:45
mvsim::OccupancyGridMap::doLoadConfigFrom
void doLoadConfigFrom(const rapidxml::xml_node< char > *root)
Definition: OccupancyGridMap.cpp:40
b2Body
A rigid body. These are created via b2World::CreateBody.
Definition: b2_body.h:128
mvsim::OccupancyGridMap::TFixturePtr::fixture
b2Fixture * fixture
Definition: OccupancyGridMap.h:61
mvsim::OccupancyGridMap
Definition: OccupancyGridMap.h:28
mvsim::OccupancyGridMap::TInfoPerCollidableobj::TInfoPerCollidableobj
TInfoPerCollidableobj()=default
mvsim::OccupancyGridMap::show_grid_collision_points_
bool show_grid_collision_points_
Definition: OccupancyGridMap.h:83
mvsim::OccupancyGridMap::gui_uptodate_
bool gui_uptodate_
Definition: OccupancyGridMap.h:54
mvsim::OccupancyGridMap::gl_grid_
mrpt::opengl::CSetOfObjects::Ptr gl_grid_
call of internalGuiUpdate()
Definition: OccupancyGridMap.h:56
mvsim::TSimulContext
Definition: basic_types.h:58
mvsim::OccupancyGridMap::internalGuiUpdate
virtual void internalGuiUpdate(const mrpt::optional_ref< mrpt::opengl::COpenGLScene > &viz, const mrpt::optional_ref< mrpt::opengl::COpenGLScene > &physical, bool childrenOnly) override
Definition: OccupancyGridMap.cpp:97
DECLARES_REGISTER_WORLD_ELEMENT
#define DECLARES_REGISTER_WORLD_ELEMENT(CLASS_NAME)
Definition: WorldElementBase.h:53
b2Fixture
Definition: b2_fixture.h:116
mvsim::OccupancyGridMap::TInfoPerCollidableobj::scan
mrpt::obs::CObservation2DRangeScan::Ptr scan
Definition: OccupancyGridMap.h:70
mvsim::OccupancyGridMap::gl_obs_clouds_
std::vector< mrpt::opengl::CSetOfObjects::Ptr > gl_obs_clouds_
Definition: OccupancyGridMap.h:76
mvsim::OccupancyGridMap::TInfoPerCollidableobj::pose
mrpt::poses::CPose2D pose
Definition: OccupancyGridMap.h:68
mvsim::OccupancyGridMap::OccupancyGridMap
OccupancyGridMap(World *parent, const rapidxml::xml_node< char > *root)
Definition: OccupancyGridMap.cpp:28
mvsim::World
Definition: World.h:82
mvsim::OccupancyGridMap::sincos_lut_
mrpt::obs::CSinCosLookUpTableFor2DScans sincos_lut_
Definition: OccupancyGridMap.h:81
mvsim::OccupancyGridMap::lateral_friction_
double lateral_friction_
(Default: 0.5)
Definition: OccupancyGridMap.h:85
rapidxml::xml_node< char >
mvsim::OccupancyGridMap::TInfoPerCollidableobj
Definition: OccupancyGridMap.h:64
mvsim::OccupancyGridMap::TInfoPerCollidableobj::max_obstacles_ranges
float max_obstacles_ranges
Definition: OccupancyGridMap.h:72
mvsim::OccupancyGridMap::loadConfigFrom
virtual void loadConfigFrom(const rapidxml::xml_node< char > *root) override
Definition: OccupancyGridMap.h:37
root
root
mvsim::OccupancyGridMap::obstacles_for_each_obj_
std::vector< TInfoPerCollidableobj > obstacles_for_each_obj_
Definition: OccupancyGridMap.h:75
mvsim::OccupancyGridMap::TFixturePtr::TFixturePtr
TFixturePtr()=default
mvsim::OccupancyGridMap::gl_obs_clouds_buffer_cs_
std::mutex gl_obs_clouds_buffer_cs_
Definition: OccupancyGridMap.h:78
mvsim::OccupancyGridMap::~OccupancyGridMap
virtual ~OccupancyGridMap()
Definition: OccupancyGridMap.cpp:38
mvsim::WorldElementBase
Definition: WorldElementBase.h:27


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