采用Cartographer、LIO-SAM构建三维点云地图,采用Octomap构建八叉树地图(三维栅格地图)

采用Cartographer、LIO-SAM构建三维点云地图,采用Octomap构建八叉树地图(三维栅格地图)

采用Cartographer构建三维点云地图

采用的数据集是安装Cartographer的一个测试包,网址如下:
https://storage.googleapis.com/cartographer-public-data/bags/backpack_3d/b3-2016-04-05-14-14-00.bag

数据包很大,9个G,慎重下载,然后运行的命令就是这个:

roslaunch cartographer_ros demo_backpack_3d.launch bag_filename:=${HOME}/Downloads/cartographer_3d_deutsches_museum.bag

至于后面这个 bag_filename:= 后面是包的路径,这个各位根据自己的路径进行修改,最好的办法就是删掉后面从$开始的内容,然后直接把下载好的测试包拖进终端里,就会自动生成绝对路径,回车运行就可以了。

这个三维建图会有20分钟左右,并且在建图过程中有个上下楼的情况,然后我理解的Cartographer建图过程是比如你在一楼走动,那就建立一楼的栅格地图,然后比如你开始上楼了,在Z轴上每间隔多少距离建一个二维平面的栅格地图,最终整个三维地图就是由一系列的二维栅格地图组合而来的。

最终的点云地图:

在这里插入图片描述
下面是几张Rviz中的建图和轨迹:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
上面这幅图是某一层的二维栅格地图,其实其它楼层也有建立地图,但是显示的话好像只会显示目前所在的那一层及其附近的二维栅格地图。

最后说一下保存三维地图的命令,其实保存的好像是点云地图,三维栅格地图目前还不知道怎么保存。

rosservice call /finish_trajectory 0
rosservice call /write_state "{filename: '${HOME}/Downloads/b3-2016-04-05-14-14-00.bag.pbstream', include_unfinished_submaps: 'true'}"   #文件名根据自己需要改
roslaunch cartographer_ros assets_writer_backpack_3d.launch bag_filenames:='${HOME}/Downloads/b3-2016-04-05-14-14-00.bag' pose_graph_filename:='${HOME}/Downloads/b3-2016-04-05-14-14-00.bag.pbstream'

运行完成后会有两个文件,一个pbstream,一个ply。

然后再推荐一个ply转pcd的方法:

git clone https://github.com.cnpmjs.org/ryanfb/pcl-tools 
cd pcl-tools 
cmake . 
make 
chmod +x ply2pcd 
./ply2pcd "path/target.ply" "path/out.pcd"   #path/target.ply,path/out.pcd根据自己需求修改

采用LIO-SAM构建三维点云地图

LIO-SAM是近年来提出的一个建图算法,采用了轮式里程计+IMU+激光雷达三个传感器融合建图,效果甚至比Lego-loam还要好,上面的Cartographer测试包用的是IMU+激光雷达两个传感器。

安装依赖:

sudo apt-get install -y ros-melodic-navigation
sudo apt-get install -y ros-melodic-robot-localization
sudo apt-get install -y ros-melodic-robot-state-publisher 

安装gtsam:

git clone https://github.com.cnpmjs.org/borglab/gtsam.git
mkdir build && cd build
cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF ..
sudo make install

下载安装LIO-SAM:

cd ~/catkin_ws/src
git clone https://github.com.cnpmjs.org/TixiaoShan/LIO-SAM.git
cd ../
catkin_make

一般这样运行编译是不会有问题的,然后就是运行官网demo了,一共有三个demo,我都放进网盘里了,需要的大家自己下载:
链接:https://pan.baidu.com/s/1elGNbZKeV91goqIzR-SKEg
提取码:8888

其中如果只运行casual_walk_2.bag不需要修改任何参数,使用默认文件即可;如果要运行其它两个数据包需要修改一些参数,大家上网查阅其他博主的资料哈,我这里没有运行就没有管了。

运行casual_walk.bag:

# 启动lio-sam功能包
roslaunch lio_sam run.launch
# 播放数据集
rosbag play outdoor.bag

最后建完的效果是这样的:

在这里插入图片描述
在这里插入图片描述
效果还是挺不错的。

保存地图:

# 保存地图设置为true
savePCD: true                              # https://github.com/TixiaoShan/LIO-SAM/issues/3
# 设置地图保存路径
savePCDDirectory: "自己设置的路径"        # in your home folder, starts and ends with "/". 

这里的savePCDDirectory要注意一点就是你可以设置绝对路径,比如我的就是/home/xxx/LIO-SAM_demo,它在保存的时候会自动在home目录下再建立一个home/xxx/LIO-SAM_demo文件夹,意思就是这里的路径其实可以不需要前面的/home/xxx这个路径,如果要保存在LIO-SAM_demo文件夹,直接写LIO-SAM_demo就行了。

更改了配置文件后,还需更改一下_TIMEOUT_SIGINT参数,具体方法如下:

sudo gedit /opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/nodeprocess.py

找到_TIMEOUT_SIGINT并调整数值(默认15s,改成60s)。

采用Octomap构建八叉树地图

关于什么是八叉树地图,大家百度一下,有很多大佬有介绍的,这里就不再说明了,只说一下怎么把点云地图转成八叉树地图。

首先是安装,直接下载我给大家分享的就行了:
链接:https://pan.baidu.com/s/1FGgbFQNamkhv1LfINf91Jw
提取码:8888

下载解压好后先把其中的build文件夹删除了,这个是我编译生成的,如果直接下载可能没法直接用,所以编译这一步还是少不了的,具体步骤如下:

 cd octomap
 mkdir build
 cd build
 cmake ..
 make

然后安装一个依赖:

sudo apt-get install liboctomap-dev octomap

执行:

./build.sh 

生成可执行文件pcd2octomap,记得一定要设置可执行,可以打开这个文件的属性看一看。

bin/pcd2octomap carto_demo.pcd carto.bt

这里我是用的carto测试包生成的点云地图进行转换的,其中后缀bt代表是纯色的,如果是ot就是彩色的,这个根据自己需要修改,不过纯色的比彩色的占的内存要小一些。

查看八叉树地图:

octovis carto.bt   #如果生成的是carto.ot文件,则运行的应该是octovis carto.ot

在这里插入图片描述
这个是分辨率为0.05的八叉树地图。

在这里插入图片描述
这个是分辨率为0.4的八叉树地图,很明显看上去每个栅格都大了很多。

当然对于建立点云地图这一步,也可以采用之前博客里有教的用Autoware的ndt点云配准算法建图,应该都是一样的,这个需要小伙伴们自己去测试。

  • 4
    点赞
  • 117
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值