ORB-SLAM2在Ubuntu20上配合ROS编译运行

Posted qq_49164258

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORB-SLAM2在Ubuntu20上配合ROS编译运行相关的知识,希望对你有一定的参考价值。

文章目录


前言

ORB-SLAM2的源码在编译过程中会出现各种问题,现将修改后的源码以及安装说明记录于此。


一、安装ROS

直接使用鱼香ros一行命令安装,非常方便。

wget http://fishros.com/install -O fishros && bash fishros


输入1后回车

继续选择1

然后选择2等待换源,过程中会打印一些信息,大部分是绿色的,如果出现如下图所示的报错,可以按CTRL+C退出该指令,然后重复以上步骤,直到换源成功(打印的都是绿色字样)。

后面会让你选择ROS版本,我们选择1

继续选择1

等待10分钟左右,出现以下信息说明ros安装成功了。

二、相关依赖包的安装

1.安装编译器

sudo apt-get update
sudo apt-get install  cmake gcc g++ git

第二行命令过程中需要输入y确认安装。

2.安装Pangolin和Eigen3

点击链接下载,将该压缩包解压到主目录下

sudo apt-get install libxkbcommon-dev
sudo apt-get install wayland-protocols
sudo apt install libglew-dev
cd Pangolin
mkdir build
cd build
cmake ..
make
sudo make install

安装完成后,可以测试是否安装成功

cd Pangolin
cd examples/HelloPangolin
mkdir build && cd build
cmake ..
make
./HelloPangolin

若出现以下图片,则说明Pangolin安装成功

下面安装Eigen3

sudo apt-get install libeigen3-dev

参考链接:https://blog.csdn.net/weixin_56566649/article/details/124355140

3.opencv版本的相关说明

源码作者使用的是opencv3,但是ros-noetic自带的是opencv4,如果用opencv3来编译orb-slam2,在运行作者给的ros节点例程时会出错,所以这里直接使用opencv4来编译orb-slam2。在安装ros时,就已经帮我们安装好了opencv4,所以无需额外安装。由于兼容性问题,源码中需要修改一些函数名,并在cmakelist文件中指明使用opencv4。
参考链接https://blog.csdn.net/K4762/article/details/105270600
我将修改后的源码放在该链接

三、编译ORB-SLAM2

在工作目录创建catkin_ws工作空间

mkdir catkin_ws
cd catkin_ws
mkdir src
catkin_make

将下载的包解压到~/catkin_ws/src目录中,并改名为ORB_SLAM2,接着编辑.bashrc文件

sudo nano ~/.bashrc

在该文件底下键入

source ~/catkin_ws/devel/setup.bash
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/catkin_ws/src/ORB_SLAM2/Examples/ROS

按ctrl加s保存,再按ctrl加x退出
然后进入ORB_SLAM2文件夹中打开终端

chmod +x build.sh
./build.sh

编译orb-slam2,成功后继续编译orb-slam2的ros例程

chmod +x build_ros.sh
./build_ros.sh

成功之后可以测试一下,因为需要数据集,下载起来比较麻烦,想测试的可以下载,第一个是不用ros的测试集,第二个是用ros的测试集。
将第一个数据集解压到ORB_SLAM2/data文件夹,并在ORB_SLAM2文件夹中运行如下命令

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml data/rgbd_dataset_freiburg1_xyz

接下来演示配合ros运行的例程,打开三个终端,分别运行

roscore
rosrun ORB_SLAM2 Stereo Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml true
rosbag play --pause V1_01_easy.bag /cam0/image_raw:=/camera/left/image_raw /cam1/image_raw:=/camera/right/image_raw

注意该测试要将第二个下载链接中的V1_01_easy.bag文件放在ORB_SLAM2文件夹,第二行和第三行命令要在ORB_SLAM2文件夹目录下运行
第三行命令运行后在你没有任何操作时会是暂停状态,只需在该终端下键入空格键即可运行。


参考链接

http://t.csdn.cn/hjJZM
http://t.csdn.cn/a7IlE
http://t.csdn.cn/9DXZ3

以上是关于ORB-SLAM2在Ubuntu20上配合ROS编译运行的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu下ROS&&Kinect&&ORB-SLAM环境搭建

ORB-SLAM编译记录

ORB-SLAM2 运行 —— ROS + Android 手机摄像头

在Ubuntu 20.04上构建ROS 2 Foxy Fitzroy

在Ubuntu 20.04上构建ROS 2 Foxy Fitzroy

无法在 Ubuntu 20.04 上安装 ROS Melodic