ORB-SLAM2 在线构建稠密点云(室内RGBD篇)

该博客介绍了如何在ROS中利用ORB-SLAM2进行稠密点云和八叉树地图的构建,解决了原ORB-SLAM2仅支持稀疏点云的问题。作者对ORB-SLAM2源码进行了修改,增加了关键帧输出接口和位姿发布话题,并创建了一个独立的ROS功能包`orbslam2_pointcloud_mapping`。博客中提供了详细的安装和运行步骤,包括数据集的使用,展示了最终的运行效果。
摘要由CSDN通过智能技术生成

在这一篇博客(我参考了各位大佬的博客)主要在ROS环境下通过读取深度相机的数据,基于ORB-SLAM2这个框架实现在线构建点云地图(稀疏和稠密点云)和八叉树地图的构建(Octomap,未来用于路径规划)。涉及到两个代码,一个是修改后的ORB_SLAM2[1]和ROS节点orbslam2_pointcloud[2],这两部分代码(也包括了双目的部分)我都放在了码云上面了。

 

ORB_SLAM2代码安装(稠密点云版)

由于ORB-SLAM2在构建的时候只在地图中保留了ORB特征,建立稀疏点云地图,好在ORB-SLAM2这个框架结构比较清晰,只需要单独添加一个线程用于维护点云地图,将ORB-SLAM2生成的关键帧传入点云地图构建线程,利用传入关键帧来生成点云地图,这就是基本思路了。其实这个工作高翔博士(ORB_SLAM2_PointCloud )在早期就已经做过了,并上传到了github中。但是使用这个方法有以下两个问题:

  • 编译过程不方便(各种.so文件以及各种.h头文件需要导入ROS工作空间)
  • 只支持RGBD模式,我们是希望能够在室外也可以用,这就需要系统对双目相机的支持。



那么在本文中,我们对原版的ORB_SLAM2的 ROS 部分做了修改

  1. 在节点中增加了关键帧输出接口
  2. 增加了ROS的位姿发布话题



然后将稠密点云的构建放在ROS中,写成独立的功能包 orbslam2_pointcloud_mapping

我的运行环境:Ubuntu18.04 + ROS Melodic + PCL1.8

安装过程

1、首先需要安装PCL点云库,可以参考博客《Ubuntu18.04安装PC》。不过安装了ROS之后就已经把PCL安装好了。

2、下载修改后的orb_slam2源码

git clone https://gitee.com/zeende/orb_slam2

下载后源码可以不放在自己的ROS workstation中,具体的编译过程参考之前的博客ORB_SLAM2配置过程(应该没有bug了,编译卡死的话改成make -j1,单线程)

3、下载稠密点云构建的ROS功能包 orbslam2_pointcloud_mapping

git clone https://gitee.com/zeende/orbslam2_pointcloud_mapping

Note:下载后把下面代码中点云保存路径改成自己的

此图像的alt属性为空;文件名为4.png

路径:orbslam2_pointcloud_mapping/src/PointCloudMapper.cc

4、catkin_make 编译ROS工作空间

整体思路

整个建图过程分为三个部分:第一部分为驱动部分,负责驱动传感器,这里由数据集代替;第二部分为位姿估计,由ORB_SLAM2获取相机数据,输出相机位姿;最后由建图部分实现三维场景恢复,为复杂场景机器人导航提供环境地图。

具体内容:有空再写

数据集测试

我用的数据集

链接: https://pan.baidu.com/s/1awd_quLk_DbrUYtR3PT0Ig 密码: l4r2
--来自百度网盘超级会员V4的分享

首先 roscore ;

进入ORB_SLAM2下,执行

rosrun ORB_SLAM2 astra Vocabulary/ORBvoc.txt Examples/ROS/ORB_SLAM2/TUM1_ROSbag.yaml

启动建图节点

roslaunch pointcloud_mapping tum1.launch

进入数据集bag的目录

rosbag play rgbd_dataset_freiburg1_desk.bag

运行效果如下:

  •  

     

  •  

     



TODO

 

 

 

参考链接:ORB-SLAM2 在线构建稠密点云(一)

评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值