Grid3d.h
Go to the documentation of this file.
1 
18 #pragma once
19 
20 #include <nav_msgs/OccupancyGrid.h>
21 #include <octomap/OcTree.h>
22 #include <pcl/point_cloud.h>
23 #include <pcl/point_types.h>
24 #include <sensor_msgs/PointCloud2.h>
25 #include <tf/tf.h>
26 
27 namespace amcl3d
28 {
29 class Grid3d
30 {
31 public:
32  explicit Grid3d(const double sensor_dev);
33  virtual ~Grid3d();
34 
35  bool open(const std::string& map_path);
36 
37  bool buildGridSliceMsg(const float z, nav_msgs::OccupancyGrid& msg) const;
38  bool buildMapPointCloudMsg(sensor_msgs::PointCloud2& msg) const;
39  void buildGrid3d2WorldTf(const std::string& global_frame_id, tf::StampedTransform& tf) const;
40 
41  float computeCloudWeight(const std::vector<pcl::PointXYZ>& points, const float tx, const float ty, const float tz,
42  const float a) const;
43  bool isIntoMap(const float x, const float y, const float z) const;
44  void getMinOctomap(float& x, float& y, float& z) const;
45 
46 private:
47  bool loadOctomap(const std::string& map_path);
48  void computePointCloud();
49 
50  bool saveGrid(const std::string& grid_path);
51  bool loadGrid(const std::string& grid_path);
52  void computeGrid();
53 
54  inline uint32_t point2grid(const float x, const float y, const float z) const;
55 
57  double sensor_dev_;
58 
60  std::unique_ptr<octomap::OcTree> octomap_;
61  float max_x_, max_y_, max_z_;
64 
66  pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_;
67 
69  struct GridCell
70  {
71  float dist, prob;
72  GridCell() : dist(-1.f), prob(0.f)
73  {
74  }
75  };
76  std::unique_ptr<GridCell[]> grid_;
79 };
80 
81 } // namespace amcl3d
bool isIntoMap(const float x, const float y, const float z) const
Definition: Grid3d.cpp:154
virtual ~Grid3d()
Definition: Grid3d.cpp:29
bool loadGrid(const std::string &grid_path)
Definition: Grid3d.cpp:265
uint32_t point2grid(const float x, const float y, const float z) const
Definition: Grid3d.cpp:353
f
bool open(const std::string &map_path)
Definition: Grid3d.cpp:33
std::unique_ptr< octomap::OcTree > octomap_
Octomap parameters.
Definition: Grid3d.h:60
std::unique_ptr< GridCell[]> grid_
Definition: Grid3d.h:76
TFSIMD_FORCE_INLINE const tfScalar & y() const
float max_x_
Definition: Grid3d.h:61
uint32_t grid_step_y_
Definition: Grid3d.h:78
void computeGrid()
Definition: Grid3d.cpp:302
bool buildGridSliceMsg(const float z, nav_msgs::OccupancyGrid &msg) const
Definition: Grid3d.cpp:61
bool loadOctomap(const std::string &map_path)
Definition: Grid3d.cpp:166
bool saveGrid(const std::string &grid_path)
Definition: Grid3d.cpp:239
float computeCloudWeight(const std::vector< pcl::PointXYZ > &points, const float tx, const float ty, const float tz, const float a) const
Definition: Grid3d.cpp:122
float min_oct_y_
Definition: Grid3d.h:62
uint32_t grid_size_
Definition: Grid3d.h:77
Include Grid.hpp.
Definition: Grid3d.cpp:23
uint32_t grid_size_y_
Definition: Grid3d.h:77
uint32_t grid_step_z_
Definition: Grid3d.h:78
3D probabilistic grid cell
Definition: Grid3d.h:69
TFSIMD_FORCE_INLINE const tfScalar & x() const
float min_oct_z_
Definition: Grid3d.h:62
float max_y_
Definition: Grid3d.h:61
bool buildMapPointCloudMsg(sensor_msgs::PointCloud2 &msg) const
Definition: Grid3d.cpp:101
uint32_t grid_size_x_
Definition: Grid3d.h:77
float one_div_res_
Definition: Grid3d.h:63
TFSIMD_FORCE_INLINE const tfScalar & z() const
void buildGrid3d2WorldTf(const std::string &global_frame_id, tf::StampedTransform &tf) const
Definition: Grid3d.cpp:113
void computePointCloud()
Definition: Grid3d.cpp:215
uint32_t grid_size_z_
Definition: Grid3d.h:77
void getMinOctomap(float &x, float &y, float &z) const
Definition: Grid3d.cpp:159
Grid3d(const double sensor_dev)
Definition: Grid3d.cpp:25
float max_z_
Definition: Grid3d.h:61
pcl::PointCloud< pcl::PointXYZ >::Ptr cloud_
3D point cloud representation of the map
Definition: Grid3d.h:66
double sensor_dev_
Init parameter.
Definition: Grid3d.h:57
float min_oct_x_
Definition: Grid3d.h:62
float resolution_
Definition: Grid3d.h:63


amcl3d
Author(s): Francisco J.Perez-Grau
autogenerated on Sun Sep 15 2019 04:08:05