ros下运行ORB-SLAM2_RGBD_DENSE_MAP-master稠密建图(带回环检测)

由于ros的导航包需要的是稠密点云图,所以原版的ORB-SLAM2跑出来的结果不符合要求。

环境配置:

         ubuntu18.04+ros melodic+vtk7.1.1

         外加ros melodic自带的库(无需另外安装):opencv3.2.0、pcl1.8.1

         以及配置ORB-SLAM2时已经安装过的库(上篇笔记):pangolin v0.5、eigen 3.3.7

!!!各个库版本一定要对应好,否则后续会出现很多问题。

一、下载源码

https://github.com/xiaobainixi/ORB-SLAM2_RGBD_DENSE_MAP.git

二、编译

编译过程与ORB-SLAM2类似,先是配置环境,在ORB-SLAM2的基础上增加了几个库,参考链接(安装库的过程很详细):

实测 (二)NVIDIA Xavier NX + D435i / 奥比中光Astrapro 相机+ ORB-SLAM 2 + 3 稠密回环建图_全日制一起混的博客-CSDN博客

首先编译非ros下的build.sh

在ORB-SLAM2_RGBD_DENSE_MAP-master文件夹下直接运行

chmod +x build.sh
./build.sh

如果出现错误

make[1]: *** [CMakeFiles/stereo_kitti.dir/all] Error 2
Makefile:90: recipe for target 'all' failed
make: *** [all] Error 2
Converting vocabulary to binary
./build.sh: 行 30: ./tools/bin_vocabulary: 权限不够

就依次编译,这样的话就能通过了,很奇怪不知道为什么。

//ORB-SLAM2_RGBD_DENSE_MAP-master文件夹下
cd Thirdparty/DBoW2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make 

//ORB-SLAM2_RGBD_DENSE_MAP-master文件夹下
cd Thirdparty/g2o
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make

//ORB-SLAM2_RGBD_DENSE_MAP-master文件夹下
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
ORB-SLAM2_RGBD_DENSE_MAP-master文件夹下
./tools/bin_vocabulary

然后在ORB-SLAM2_RGBD_DENSE_MAP-master文件夹下打开终端,运行:

./bin/rgbd_tum Vocabulary/ORBvoc.bin Examples/RGB-D/TUM1.yaml rgbd_dataset_freiburg1_xyz Examples/RGB-D/associations/fr1_xyz.txt

运行结果:

可能会出现点云图都聚集一起的情况,将配置文件TUM1.yaml中的Viewer.KeyFrameLineWidth的数值设置为1。

 viewer画面只有三色坐标轴,不显示点稠密点云图,按下r键即可出现,重新运行,大功告成!!!下图所示。结束后自动保存轨迹和pcd文件。

然后编译ros下的build_ros.sh

在编译过程中由于电脑配置较低,系统容易卡死,把build_ros.sh脚本中的make -j改为make,即可编译成功。

在编译过程最后可能会出现警告

/usr/bin/ld: warning: libboost_system.so.1.65.1., needed by /opt/ros/indigo/lib/libroscpp.so, may conflict with libboost_system.so.1.58.0

是由于最开始配置ORB-SLAM2时安装libboost库是1.65.1版本,而该项目需要的版本是1.58,此处先忽略该警告。

然后开始运行程序:

第一条语句在终端直接运行,

第二条语句在/home/ybl/ORB-SLAM2_RGBD_DENSE_MAP-master文件夹下重新打开终端执行,

第三条语句在/home/ybl/ORB-SLAM2_RGBD_DENSE_MAP-master文件夹下重新打开终端执行,按下空格键后图像显示在可视化窗口中。

roscore
rosrun ORB_SLAM21 RGBD Vocabulary/ORBvoc.bin Examples/ROS/ORB_SLAM21/Asus.yaml
rosbag play --pause rgbd_dataset_freiburg1_rpy.bag

出现错误:

error while loading shared libraries: libboost_system.so.1.58.0: cannot open shared object file

是由于系统中没有libboost_system.so.1.58.0文件,可用

locate libboost_system.so

查看该缺失文件所在地址,输出为

/usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1

/usr/lib/x86_64-linux-gnu/libboost_system.so

可查看到系统中只有1.65.1版本,libboost_system.so是软连接到libboost_system.so.1.65.1的,所以输入

sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1 /usr/lib/x86_64-linux-gnu/libboost_system.so.1.58.0

问题解决!

可能还会有libboost_filesystem.so.1.58.0和libopencv_core3.so.3.3出现同样的错误,同样是用该方法先找到该文件在系统中的所在位置,然后建立软链接。

sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.65.1 /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.58.0

sudo ln -s /usr/lib/x86_64-linux-gnu/libopencv_core.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_core3.so.3.3

然后重新运行程序,可能还会出现稠密点云图只有几个点的情况,修改配置文件Asus.yaml中的

PointCloudMapping.Resolution: 0.000001

可得到稠密点云结果

三、使用gazebo相机模型实时建图

修改话题,并运行,出现段错误的情况,并且点云窗口闪退。参考使用D435i相机跑ORB-SLAM2_RGBD_DENSE_MAP-master稠密建图编译(实时彩色点云地图加回环+保存点云地图)_摆烂女侠的博客-CSDN博客

问题得以解决。

[pcl::VoxelGrid::applyFilter] Leaf size is too small for the input dataset. Integer indices would overflow.

 

  • 29
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值