采用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 octomapmkdir buildcd buildcmake ..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点云配准算法建图,应该都是一样的,这个需要小伙伴们自己去测试。

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

  1. A-LOAM构建3d点云地图并实时转存二维栅格地图

    文章参考 A-LOAM/LOAM/Lego-LOAM/SC_Lego_LOAM实时构建3d点云地图与2d栅格地图(octomap) 1 安装 octomap 可以从 apt 安装或者以功能包的形式安装 ...

  2. 3D激光SLAM点云地图pcd转导航可用的2D栅格地图

    本文旨在帮助读者将激光点云地图转为2D栅格地图,以便完成路径规划与导航.本方法将pcd转为pgm的原理是将接收到的点云信息以"/map"话题的形式发布,用map_server来接收 ...

  3. 三维点云数据处理软件供技术原理说明_三维激光扫描技术在地质灾害调查中的应用...

    三维激光扫描技术是近几年发展起来的一种新兴测绘技术,该技术已广泛应用于工程建设与物体三维测量等测绘及相关领域,具有高效率.高精度的独特优势.本文在介绍三维激光扫描仪的工作原理的基础上,以邢台峡谷群地质 ...

  4. 三维点云目标提取总结(续)

    三维点云目标提取(续) 3.三维点云目标提取 3.1一般流程 先根据个人认识总结一下目标提取的一般性步骤: 如上所示,三维点云的目标提取关键性的两步即为:特征提取与选择.分类,是不是整个方法流程与图像 ...

  5. 三维点云数据处理软件供技术原理说明_基于三维点云处理技术的工件识别和匹配...

    1. 引言 目前,随着自动化程度的提高,机器人导航.工业零件检测及抓取等众多领域对计算机视觉系统的要求越来越高 [1],基于二维图像的物体识别已经无法满足日常作业的需求.而由于三维扫描技术的发展,结构 ...

  6. 非抢占式优先算法例题_三维点云的经典算法与前沿技术有哪些?

    三维点云是最重要的三维数据表达方式之一. 从技术角度看,SLAM.三维重建.机器人感知等领域,点云都是最简单且最普遍的表达方式:相对于图像,点云有其不可替代的优势--深度,即三维点云直接提供了三维空间 ...

  7. azure kinect三维点云_万众期待的 【三维点云处理】 课程来啦!

    三维点云是最重要的三维数据表达方式之一. 从技术角度看,SLAM.三维重建.机器人感知等领域,点云都是最简单且最普遍的表达方式:相对于图像,点云有其不可替代的优势-深度,也就是说三维点云直接提供了三维 ...

  8. 广州大学计算机綦科简历,基于八叉树空间分割的三维点云模型密写(綦科,谢冬青,2011)...

    介绍三维GIS应用中,八叉树原理.创建.优化的相关文章 计 算 机 工 程 第37卷 第4期 Computer Engineering V ol.37 No.4 文章编号:1000-3428(2011 ...

  9. 占据栅格地图构建(Occupancy Grid Map)

    移动机器人地图构建问题,主要以gmapping为例,讲解了地图构建的整个流程.看过前面文章的小伙伴肯定都知道,gmapping算法把SLAM问题分解成两个部分,定位问题和地图构建问题.而gmappin ...

最新文章

  1. Swift3.0语言教程删除字符与处理字符编码
  2. pytorch maxpool和卷积尺寸问题
  3. BZOJ2821: 作诗(Poetize)
  4. python 下载公众号文章_python3下载公众号历史文章
  5. 程序员要常做好的几件事
  6. 怎么判断当前的os类型,手机类型
  7. springboot的细节挖掘(ActiveMq集成)
  8. 好系统教你如何禁用或删除启动应用程序以加速Windows
  9. JavaScript之this,new,delete,call,apply
  10. 20165320 我期望的师生关系
  11. 使用MoveIt!+Arbotix控制六自由度机械臂
  12. 数值计算之第三期:直接法解线性方程组
  13. 医疗器械信息系统分析
  14. 触感啥意思_苹果手机系统触感反馈是什么意思
  15. SQL Server 无法启动WMI服务
  16. 5G NR 随机接入 总结
  17. Java黑皮书课后题第6章:*6.7(金融应用:计算未来投资回报率)编写一个方法,计算按照给定的年数和利率计算未来投资回报值,未来投资回报值是用编程练习题2.21中的公式得到的,使用下面方法头
  18. 修改《植物大战僵尸》的游戏存档
  19. (数字ic)CDC跨时钟域可能出现的问题及解决办法总结
  20. 部署JAX-WS Web服务作为战争中的Apache Tomcat(Deploying JAX-WS webservice as War in Apache Tomcat)...

热门文章

  1. LSP协议被劫持导致不能上网
  2. Mathcad的使用与设计
  3. Android Developers:支持不同的屏幕大小
  4. 即便到愚人节,也千万别做的恶作剧!
  5. java-构建乘积数组(剑指offter-数组-简单)
  6. go 文件读Read and ReadString
  7. 第一章 数据与大数据
  8. ap计算机课程的内容,AP系列七|解读AP计算机课程与考试
  9. 高性能计算(HPC)概述
  10. 植被覆盖度(FVC)计算