Skip to content

Commit 3e9983e

Browse files
committed
maintain traversibility info in pointcloud with new point type
1 parent b43aa17 commit 3e9983e

File tree

5 files changed

+80
-7
lines changed

5 files changed

+80
-7
lines changed

elevation_mapping/elevation_mapping/.vscode/settings.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"files.associations": {
3+
"*.cpp": "cpp",
34
"limits": "cpp",
45
"vector": "cpp",
56
"array": "cpp",
@@ -54,6 +55,10 @@
5455
"mutex": "cpp",
5556
"algorithm": "cpp",
5657
"cfenv": "cpp",
57-
"string": "cpp"
58+
"string": "cpp",
59+
"unordered_set": "cpp",
60+
"hash_map": "cpp",
61+
"hash_set": "cpp",
62+
"string_view": "cpp"
5863
}
5964
}

elevation_mapping/elevation_mapping/include/elevation_mapping/GridUtilHash.hpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,14 @@ struct GridPoint{
2727
};
2828

2929
struct GridPointData{
30-
float elevation;
3130
float var;
31+
float obstacle;
32+
float elevation;
33+
float intensity;
3234
int r;
3335
int g;
3436
int b;
35-
float intensity;
36-
GridPointData(float ele_, float var_, int r_, int g_, int b_, float intensity_):elevation(ele_), var(var_),r(r_),g(g_),b(b_),intensity(intensity_){}
37+
GridPointData(float ele_, float var_, int r_, int g_, int b_, float intensity_, float obstacle_):elevation(ele_), var(var_),r(r_),g(g_),b(b_),intensity(intensity_),obstacle(obstacle_){}
3738
};
3839

3940
struct GridPointHashFunc{
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
/*
2+
* PointXYZRGBICO.hpp
3+
*
4+
* Created on: July 1, 2021
5+
* Author: Peter XU
6+
* Institute: ZJU, Robotics 104
7+
*/
8+
9+
#define PCL_NO_PRECOMPILE
10+
11+
#include <pcl/pcl_macros.h>
12+
#include <pcl/point_cloud.h>
13+
#include <pcl/point_types.h>
14+
#include <pcl/impl/instantiate.hpp>
15+
16+
#include <pcl/filters/voxel_grid.h>
17+
#include <pcl/filters/impl/voxel_grid.hpp>
18+
#include <pcl/filters/passthrough.h>
19+
#include <pcl/filters/impl/passthrough.hpp>
20+
#include <pcl/kdtree/kdtree.h>
21+
#include <pcl/kdtree/kdtree_flann.h>
22+
#include <pcl/kdtree/impl/kdtree_flann.hpp>
23+
#include <pcl/search/impl/kdtree.hpp>
24+
#include <boost/shared_ptr.hpp>
25+
26+
struct PointXYZRGBICO
27+
{
28+
PCL_ADD_POINT4D;
29+
PCL_ADD_RGB;
30+
31+
float covariance;
32+
float intensity;
33+
float obstacle;
34+
35+
PointXYZRGBICO() {}
36+
PointXYZRGBICO(const PointXYZRGBICO& input)
37+
{
38+
this->x = input.x;
39+
this->y = input.y;
40+
this->z = input.z;
41+
this->rgb = input.rgb;
42+
this->intensity = input.intensity;
43+
this->covariance = input.covariance;
44+
this->obstacle = input.obstacle;
45+
}
46+
47+
EIGEN_MAKE_ALIGNED_OPERATOR_NEW;
48+
} EIGEN_ALIGN16;
49+
50+
POINT_CLOUD_REGISTER_POINT_STRUCT (PointXYZRGBICO,
51+
(float, x, x)
52+
(float, y, y)
53+
(float, z, z)
54+
(float, rgb, rgb)
55+
(float, intensity, intensity)
56+
(float, covariance, covariance)
57+
(float, obstacle, obstacle)
58+
);
59+
60+
PCL_INSTANTIATE(VoxelGrid, PointXYZRGBICO);
61+
PCL_INSTANTIATE(KdTree, PointXYZRGBICO);
62+
PCL_INSTANTIATE(KdTreeFLANN, PointXYZRGBICO);
63+
64+
typedef pcl::PointCloud<PointXYZRGBICO> PointCloudXYZRGBICO;

elevation_mapping/elevation_mapping/include/elevation_mapping/sensor_processors/SensorProcessorBase.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include "elevation_mapping/PointXYZRGBCE.hpp"
1212
#include "elevation_mapping/PointXYZRGBC.hpp"
1313
#include "elevation_mapping/PointXYZRGBIC.hpp"
14+
#include "elevation_mapping/PointXYZRGBICO.hpp"
1415

1516
// ROS
1617
#include <ros/ros.h>
@@ -32,7 +33,7 @@
3233
#include <memory>
3334

3435
namespace elevation_mapping {
35-
typedef PointXYZRGBIC Anypoint;
36+
typedef PointXYZRGBICO Anypoint;
3637
typedef pcl::PointCloud<Anypoint> pointCloud;
3738

3839
/*!

elevation_mapping/elevation_mapping/src/ElevationMapping.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -427,6 +427,7 @@ void ElevationMapping::savingMap()
427427
pt.r = visualCloud_.points[i].r;
428428
pt.g = visualCloud_.points[i].g;
429429
pt.b = visualCloud_.points[i].b;
430+
pt.obstacle = visualCloud_.points[i].obstacle;
430431
pt.intensity = visualCloud_.points[i].intensity;
431432
pt.covariance = visualCloud_.points[i].covariance;
432433
out_color.push_back(pt);
@@ -685,7 +686,7 @@ void ElevationMapping::updateLocalMap(const sensor_msgs::PointCloud2ConstPtr& ra
685686

686687
GridPoint save_pos(position.x(), position.y());
687688
GridPointData save_data(prevMap_.at("elevation", *iterator), prevMap_.at("variance", *iterator), prevMap_.at("color_r", *iterator),
688-
prevMap_.at("color_g", *iterator), prevMap_.at("color_b", *iterator), prevMap_.at("intensity", *iterator));
689+
prevMap_.at("color_g", *iterator), prevMap_.at("color_b", *iterator), prevMap_.at("intensity", *iterator), prevMap_.at("traver", *iterator));
689690

690691
// Update the grid information within local map
691692
auto got = localMap_.find(save_pos);
@@ -705,6 +706,7 @@ void ElevationMapping::updateLocalMap(const sensor_msgs::PointCloud2ConstPtr& ra
705706
pt.r = prevMap_.at("color_r", *iterator);
706707
pt.g = prevMap_.at("color_g", *iterator);
707708
pt.b = prevMap_.at("color_b", *iterator);
709+
pt.obstacle = prevMap_.at("traver", *iterator);
708710
pt.intensity = prevMap_.at("intensity", *iterator);
709711
pt.covariance = prevMap_.at("variance", *iterator);
710712
visualCloud_.push_back(pt);
@@ -1020,7 +1022,7 @@ void ElevationMapping::pointCloudtoHash(pointCloud localPointCloud, umap& out)
10201022
round_z = localPointCloud.points[i].z;
10211023

10221024
GridPoint save_pos(round_x, round_y);
1023-
GridPointData save_data(round_z, localPointCloud.points[i].covariance, localPointCloud.points[i].r, localPointCloud.points[i].g, localPointCloud.points[i].b, localPointCloud.points[i].intensity);
1025+
GridPointData save_data(round_z, localPointCloud.points[i].covariance, localPointCloud.points[i].r, localPointCloud.points[i].g, localPointCloud.points[i].b, localPointCloud.points[i].intensity, localPointCloud.points[i].obstacle);
10241026
out.insert(make_pair(save_pos, save_data));
10251027
}
10261028
}

0 commit comments

Comments
 (0)