OccupancyGridMap.h
Go to the documentation of this file.
1 /*+-------------------------------------------------------------------------+
2  | MultiVehicle simulator (libmvsim) |
3  | |
4  | Copyright (C) 2014-2023 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 {
25 {
27  public:
29  virtual ~OccupancyGridMap();
30 
32 
33  virtual void loadConfigFrom(const rapidxml::xml_node<char>* root) override
34  {
35  doLoadConfigFrom(root);
36  }
37 
38  virtual void simul_pre_timestep(const TSimulContext& context) override;
39 
40  const mrpt::maps::COccupancyGridMap2D& getOccGrid() const { return grid_; }
41  mrpt::maps::COccupancyGridMap2D& getOccGrid() { return grid_; }
42 
43  protected:
44  virtual void internalGuiUpdate(
45  const mrpt::optional_ref<mrpt::opengl::COpenGLScene>& viz,
46  const mrpt::optional_ref<mrpt::opengl::COpenGLScene>& physical,
47  bool childrenOnly) override;
48 
49  mrpt::maps::COccupancyGridMap2D grid_;
50 
52  mrpt::opengl::CSetOfObjects::Ptr gl_grid_;
54 
55  struct TFixturePtr
56  {
57  TFixturePtr() = default;
58  b2Fixture* fixture = nullptr;
59  };
60 
62  {
63  TInfoPerCollidableobj() = default;
64 
65  mrpt::poses::CPose2D pose;
66  b2Body* collide_body = nullptr;
67  mrpt::obs::CObservation2DRangeScan::Ptr scan;
68  std::vector<TFixturePtr> collide_fixtures;
69  float max_obstacles_ranges = 0;
70  };
71 
72  std::vector<TInfoPerCollidableobj> obstacles_for_each_obj_;
73  std::vector<mrpt::opengl::CSetOfObjects::Ptr> gl_obs_clouds_;
74 
76  std::vector<mrpt::opengl::CPointCloud::Ptr> gl_obs_clouds_buffer_;
77 
78  mrpt::obs::CSinCosLookUpTableFor2DScans sincos_lut_;
79 
81  double restitution_;
83 };
84 } // namespace mvsim
mrpt::maps::COccupancyGridMap2D grid_
mrpt::maps::COccupancyGridMap2D & getOccGrid()
mrpt::obs::CObservation2DRangeScan::Ptr scan
double lateral_friction_
(Default: 0.5)
const mrpt::maps::COccupancyGridMap2D & getOccGrid() const
std::vector< mrpt::opengl::CPointCloud::Ptr > gl_obs_clouds_buffer_
mrpt::obs::CSinCosLookUpTableFor2DScans sincos_lut_
virtual void internalGuiUpdate(const mrpt::optional_ref< mrpt::opengl::COpenGLScene > &viz, const mrpt::optional_ref< mrpt::opengl::COpenGLScene > &physical, bool childrenOnly) override
A rigid body. These are created via b2World::CreateBody.
Definition: b2_body.h:128
std::vector< mrpt::opengl::CSetOfObjects::Ptr > gl_obs_clouds_
OccupancyGridMap(World *parent, const rapidxml::xml_node< char > *root)
std::vector< TInfoPerCollidableobj > obstacles_for_each_obj_
#define DECLARES_REGISTER_WORLD_ELEMENT(CLASS_NAME)
std::mutex gl_obs_clouds_buffer_cs_
double restitution_
Elastic restitution coef (default: 0.01)
void doLoadConfigFrom(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
mrpt::opengl::CSetOfObjects::Ptr gl_grid_
call of internalGuiUpdate()


mvsim
Author(s):
autogenerated on Tue Jul 4 2023 03:08:21