modules
simulator
include
mvsim
WorldElements
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>
18
#include <
mvsim/WorldElements/WorldElementBase.h
>
19
20
#include <mutex>
21
22
namespace
mvsim
23
{
28
class
OccupancyGridMap
:
public
WorldElementBase
29
{
30
DECLARES_REGISTER_WORLD_ELEMENT
(
OccupancyGridMap
)
31
public
:
32
OccupancyGridMap
(
World
*
parent
,
const
rapidxml::xml_node<char>
*
root
);
33
virtual
~OccupancyGridMap
();
34
35
void
doLoadConfigFrom
(
const
rapidxml::xml_node<char>
*
root
);
36
37
virtual
void
loadConfigFrom
(
const
rapidxml::xml_node<char>
* root)
override
38
{
39
doLoadConfigFrom
(
root
);
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
54
bool
gui_uptodate_
;
55
mrpt::opengl::CSetOfObjects::Ptr
gl_grid_
;
57
58
struct
TFixturePtr
59
{
60
TFixturePtr
() =
default
;
61
b2Fixture
*
fixture
=
nullptr
;
62
};
63
64
struct
TInfoPerCollidableobj
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
;
72
float
max_obstacles_ranges
= 0;
73
};
74
75
std::vector<TInfoPerCollidableobj>
obstacles_for_each_obj_
;
76
std::vector<mrpt::opengl::CSetOfObjects::Ptr>
gl_obs_clouds_
;
77
78
std::mutex
gl_obs_clouds_buffer_cs_
;
79
std::vector<mrpt::opengl::CPointCloud::Ptr>
gl_obs_clouds_buffer_
;
80
81
mrpt::obs::CSinCosLookUpTableFor2DScans
sincos_lut_
;
82
83
bool
show_grid_collision_points_
;
84
double
restitution_
;
85
double
lateral_friction_
;
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