前言
在之前的工作中,对ORB-SLAM2添加了稠密建图,因此获得了周围环境的点云地图,但是pcd格式的点云无法直接用于路径规划,因此先要转化为pgm格式的文件。
参考链接:
三维pcd地图转二维栅格地图
【LIO-SAM学习记录】地面分割
1.下载map_server
功能包
由于下面需要使用map_server
来保存转换好的地图,而map_server
是navigation
的一部分,所以先下载navigation
功能包
ros.org中map_server介绍
Ubuntu18.04对应的navigation包
我的ubuntu系统是18.04,所以下载melodic-devel
分支里的源文件
#新建工作空间
mkdir -p navigation_ws/src && cd navigation_ws/src
#下载源码
git clone https://github.com/ros-planning/navigation/tree/melodic-devel
cd ..
#编译工作空间
catkin_make
报错1
sudo apt-get install ros-melodic-navigation*
报错2
与上面的参考链接相同
sudo apt-get install ros-melodic-pointcloud-to-laserscan
2.下载代码
#新建工作空间
mkdir -p pcd_to_pgm_ws/src && cd pcd_to_pgm_ws/src
#下载源码
git clone https://github.com/Hinson-A/pcd2pgm_package
cd ..
#编译工作空间
catkin_make
3.执行代码,保存地图
打开pcd2pgm/launch/run.launch
文件,将存放pcd文件的路径
和pcd文件名称
后面的value值改成自己的
之后运行这个launch文件
cd pcd_to_pgm_ws
source devel/setup.bash
roslaunch pcd2pgm run.launch
当打印了上面的信息后就可以启动map_server
的地图保存功能
rosrun map_server map_saver
保存了map.pgm
和map.yaml
文件,同时在原pcd文件夹下,也保存了直通滤波和半径滤波后的pcd文件
4.解决一些问题
1.滤波后的点云不是RGB彩色的
查看ORB-SLAM2_RGBD_DENSE_MAP-master/include/pointcloudmapping.h
,发现这里点云定义的类型是PointCloud<pcl::PointXYZRGBA>
,而pcd_to_pgm_ws/src/pcd2pgm/src/pcd2pgm.cpp
里定义的点云类型是PointCloud<pcl::PointXYZ>
因此,把pcd_to_pgm_ws/src/pcd2pgm/src/pcd2pgm.cpp
里的点云类型PointXYZ
全都改成PointXYZRGBA
然后重新catkin_make
这个功能包就行了