VMware虚拟机中ubuntu使用记录(9)—— 如何在Ubuntu18.04中安装运行ROS版本的ORB_SLAM3(踩坑记录!!!)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

本次教程是介绍如何运行ROS版本的ORB_SLAM3,所需的环境如下:
Ubuntu18.04、ros版本:melodic
Opencv4.5.2、Pangolin0.6、
Boost库1.77.0版本、Eigen3.3.4
注意:以下的教程和所遇到的问题解决,都是在v0.4-beta版本的ORB_SLAM源码,不同的版本解决的方法不太一样!!!!!

一、创建ROS工作空间(已创建可忽略)

最好先创建个文件夹,把待会要下载的东西都放到这个文件夹下,
1)创建工作空间,终端输入:

roscore
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace

2)编译工作空间

cd ~/catkin_ws/
catkin_make

3)使得工作空间的环境变量生效

source devel/setup.bash

4)使得环境变量在所有的终端中都有效(将路径添加进.bashrc文件中):

按个人的喜好,此步骤不是必选项,执行这段代码之后,意味着电脑开机就自动生效该工作空间的ROS环境

echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc

5)保存.bashrc文件,查看添加的环境变量是否生效:

source ~/.bashrc

6)查看添加的环境变量是否生效,创建一个新终端,输入

echo $ROS_PACKAGE_PATH

回车之后会显示如下语句,如果打印的路径中包含当前工作空间的路径,则环境变量设置成功,整个操作页面如下图所示:

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

二、安装所需的库依赖

若从未安装编译过ORB_SLAM3,且没安装过Pangolin、Opencv、Eengen3等相应的库,参考《在Ubuntu18.04下安装运行非ROS版的ORB_SLAM3》中的库安装过程:
VMware虚拟机中ubuntu使用记录(8)—— 如何在Ubuntu18.04中安装运行非ROS版本的ORB_SLAM3跑官方数据集(全程手把手教学安装)

若有安装过则可跳过相应的步骤即可。

三、ROS版本的ORB_SLAM3的编译和安装

1.下载源码

ORB_SLAM的github下载的源码中,也包含了ros版本的代码,本次使用的时v0.4-beta的版本,
将文件夹重命名为ORB_SLAM3(方便起见)移动到刚创建好的工作空间中,也就是/home/chen/catkin_ws/src目录中(其中chen是我自己Ubuntu的用户名)
在这里插入图片描述

2. 编译非ROS版本源码

(1) 使用build.sh进行编译
编译build_ros.sh前要先编译build.sh,确保所需要的环境已经配置好
进入catkin_ws/src/ORB_SLAM3目录下,打开中终端输入:

chmod +x build.sh
./build.sh

注意:若在src/ROB_SLAM3目录外编译过,则需要删除里面的build文件夹再执行上述步骤,出现编译错误则参考《非ROS环境下运行ORB_SLAM3》中的记录过程:

3. 编译ROS版本源码

ros版本的源码存放在Example或Example_old文件夹中
(1) 编译前的准备
1)去掉警告提醒
编译前建议修改build_ros.sh(改成j2)和/Example/ROS/ORB_SLAM3目录下的CMakeList(加上-w)文件

2)对相关路径进行配置
将源码中的 Examples/ROS/ORB_SLAM3 路径添加到ROS_PACKAGE_PATH环境变量中,重新打开一个终端:

sudo gedit ~/.bashrc

在**~/.bashrc的最后一行加入以下代码(chen换成自己的用户名)

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/chen/catkin_ws/src/ORB_SLAM3/Examples/ROS

生效环境,终端输入:

source ~/.bashrc

打印刚刚添加的地址:

echo ${ROS_PACKAGE_PATH}

如果能正确显示刚刚加入的地址则正常。

(2) 使用build_ros.sh进行编译
配置完成后,在catkin_ws/src/ORB_SLAM3目录下打开终端:

chmod +x build_ros.sh
./build_ros.sh

出现如下页面,则编译成功:

在这里插入图片描述

四、运行ORB_SLAM3的官方数据集

1.数据集的下载

本次教程使用选用Euroc数据集,网址如下:

https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets#downloads

要下载ROS bag中的数据集,也就是.bag文件,如下图所示:

在这里插入图片描述

2. 数据集测试运行

编译成功以后会生成一个Stereo的node在ORB_SLAM3的结点里,然后我们把ORB-SLAM3的ros文件夹中的ros_stereo.cc文件里的topic左图右图替换成自己想要运行的数据集的topic(可以是自己录制的bag包或者其他)启动roscore进入ORB-SLAM3中,EuRoc为相机内参,需要时把它替换为自己的相机内参.

(1)查看ROS包的话题
以Machine Hall 01数据集为例,下载页面如下图:
在这里插入图片描述
下载完成后,可以得到一个.bag后缀的ROS包MH_01_easy.bag
在存放.bag文件的目录下
打开终端输入:
启动ros:

roscore

播放ros包:


rosbag play MH_01_easy.bag

在运行rosbag的同时,再打开终端输入

rostopic list

查看rosbag话题,如下图所示:

在这里插入图片描述
(2) 修改ros_stereo.cc文件
/cam0/image raw和/cam1/image raw为双目相机左右目对应的数据话题,
然后,修改Examples/ROS/ORB_SLAM3/src下的ros_stereo.cc里面的message_filters::Subscriber里的订阅的话题,改成和rosbag的一致,修改的位置如下图所示:
在这里插入图片描述

然后重新编译源码:

./build_ros.sh

(3) 播放rosbag测试ORB
启动ros,打开终端1输入:

roscore 

在/catkin_ws/src/ORB_SLAM3目录下,打开终端2:

rosrun ORB_SLAM3 Stereo Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml true

上一步调出窗口的同时,在数据集的目录,打开终端3:

rosbag play MH_01_easy.bag

(4) 可能的报错
rosrun运行官方数据时出现报错:段错误(核心已转移),具体的报错信息如下:

在这里插入图片描述

解决:
修改ROS/ORB_SLAM3目录下CMakeList.txt文件里的opencv版本,改成和src/ORB_SLAM3目录下CMakeList.txt文件里opencv的版本一致,均为opencv4. 如下图所示:

在这里插入图片描述

最后,ORB-SLAM3就运行起来了,运行的界面如下:

在这里插入图片描述

总结

以上就是运行ROS版本的ORB_SLAM的全部详细教程,主要是介绍了关于在ubuntu18.04中运行ORB_SLAM3的所有依赖的库的安装过程,和所遇到的一些报错的解决方法,最后也详细介绍如何下载,播放rosbag的形式,运行ORB_SLAM进行建图,下期分享如何在ubuntu18.04系统中使用自己的单目摄像头运行ORB_SLAM3。有什么问题,可以评论区里面交流讨论。

  • 30
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值