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-SLAM2 运行 —— ROS + Android 手机摄像头
在Ubuntu 20.04上构建ROS 2 Foxy Fitzroy