0


Ubuntu20.04在ROS下运行ORB-SLAM3

1.前言:

    小白配置ORB-SLAM3的过程真的辛酸。。各种各样的弄,跑出来一堆bug,很多还搜不出来到处找原因。之前也没有配置过其他视觉SLAM算法,从头开始的,以此记录一下。也希望对你配置ORB-SLAM3算法有所帮助,也作交流学习。

2.总体配置:

    源码链接:https://github.com/UZ-SLAMLab/ORB_SLAM3

   这个配置可是把我折腾了一番,很多配置都有限定的,这个一定要注意!(下面的配置可能和官网不一样,但是经过测试,肯定是可以使用的。)

    Pangolin-v0.6        链接为:https://github.com/stevenlovegrove/Pangolin/releases

    opencv-4.2.0        链接为:https://github.com/opencv/opencv/releases?page=3

    (Ubuntu20.04自带的opencv的版本就是4.2.0,如果使用的是Ubuntu20.04则不用更改)

    eigen-3.3.4        链接为:Eigen

    DBoW2、g2o和Sophus        这三个库在官方文件中就有给出,在Thirdparty文件夹中。

配置完毕后,可以分别使用下面命令进行编译,安装。

mkdir build
cd build
cmake ..
make -j8
sudo make install
    python安装
sudo apt install libpython2.7-dev

3.数据集

    博主测试的数据集为EuRoC数据集,链接为:kmavvisualinertialdatasets – ASL Datasets

    也可以使用百度网盘进行下载:

    链接: https://pan.baidu.com/s/1yJWnhsWvBbAZJXHRyrVLnw         提取码: e9rz

4.配置ORB-SLAM3

(1)添加环境变量

    下方命令记得**修改为自己的地址**。
gedit ~/.bashrc
# 下方(PATH)为你自己的路径
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:(PATH)/ORB_SLAM3/Examples/ROS
# Ctrl+c保存,退出。
# 在当前终端输入
source ~/.bashrc

(2)修改文件

    配置路径基本上都在为(PATH)/ORB_SLAM3/Examples_old/ROS/ORB_SLAM3或者在(PATH)/Thirdparty中(PATH为自己的路径,需要修改)。这个配置比较麻烦,我参考的链接为:Ubuntu20.04的ROS环境安装ORB-SLAM3详解_下载orbslam3是要在ros的工作空间下载吗-CSDN博客        按照上面的配置方法配置完毕后, 编译依旧会报错。。这个时候简直头皮发麻,不是一个很成熟的东西吗,怎么配置起来这么麻烦。。这个时候建议大家,深吸一口气告诉自己:**今天天气真不错,等会一定一定要好好吃一顿**。

    相信大家缓过来一点了。那么继续吧。。。

    除了上面那些配置,在(PATH)/ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/CMakeLists.txt中的第2行添加
project(ORB_SLAM3)
    接下来是在(PATH)/ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/src/AR下的**ros_mono_ar.cc**中的

第405行 vPoints.push_back(pMP->GetWorldPos());

替换为: vPoints.push_back(ORB_SLAM3::Converter::toCvMat(pMP->GetWorldPos()));

第530行 cv::Mat Xw = pMP->GetWorldPos();

替换为: cv::Mat Xw = ORB_SLAM3::Converter::toCvMat(pMP->GetWorldPos());

    换一个文件,文件为:**ViewerAR.cc**

第151行 cv::Mat Tcw = mpSLAM->TrackMonocular(cv_ptr->image,cv_ptr->header.stamp.toSec());

替换为: cv::Mat Tcw=ORB_SLAM3::Converter::toCvMat(mpSLAM->TrackMonocular(cv_ptr->image,cv_ptr->header.stamp.toSec()).matrix());

5.编译&运行

    终于终于终于到编译啦,但是不要松懈哦,编译的问题可能会非常非常多。

(1)检查环境

    在编译之前,**将Examples_old文件夹下的ROS文件夹整个复制到Examples路径下**。然后可以输入以下命令,检查当前是否处于该环境下:
echo ${ROS_PACKAGE_PATH}
    经常使用Ubuntu的小伙伴,这个命令可能会报一长串结果。我们只需要看最后是不是**PATH/ORB_SLAM3/Examples/ROS**即可,如下:

     如果不正确的话,可以参照(1)添加环境变量中进行配置。

(2)解压部分文件

    啥?还要解压?没错,确实有个地方放的是压缩包,需要解压一下。目录路径为:(PATH)/ORB_SLAM3/Vocabulary中的**ORBvoc.txt.tar.gz**

(3)编译

    在编译前,还需要运行下面命令:(**注意:博主在编译前更改了ORB-SLAM3节点收到的话题名称,如果不想修改则在播放ROS包的时候将话题重映射一下。**)
cd (PATH)/ORB_SLAM3 # 修改成自己的路径
chmod +x build_ros.sh
./build_ros.sh
    编译完成后,在**(PATH)/ORB_SLAM3/Examples/ROS/ORB_SLAM3**会产生一系列文件,如下:

6.运行

     博主使用EuRoC数据集分别跑了Monocular(单目)视觉算法和Monocular-Inertial(单目+IMU)视觉算法。使用的命令分别如下:

单目:

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

运行结果:

单目+IMU:

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

运行结果:

7.部分报错

(1)功能包未找到

    如:  'ORB_SLAM3' not found

    原因:多方面原因造成的。建议仔细按照上述来进行配置,编译完成后,在.../ROS/ORB-SLAM3路径下会生成一系列文件,如下:

(2)AR路径下文件的错误

    如:error: no matching function for call to ‘std::vectorcv::Mat::push_back(Eigen::Vector3f)’

error: conversion from ‘Eigen::Vector3f’ {aka ‘Eigen::Matrix<float, 3, 1>’} to non-scalar type ‘cv::Mat’ requested

error: conversion from ‘Sophus::SE3f’ {aka ‘Sophus::SE3’} to non-scalar type ‘cv::Mat’ requested

    原因:未配置正确,建议参照(2)修改文件中来进行修改。

(3)Pangolin库错误

    如:在运行后报错:terminate called after throwing an instance of 'pangolin::FactoryRegistry::NoMatchingSchemeException'

    原因:Pangolin版本不正确,可能是安装最新版的Pangolin造成的。

(4)缺少库

    如:Failed to load module "canberra-gtk-module"

    原因:未安装库。运行下面命令:
sudo apt-get install libcanberra-gtk-module

(5)ldconfig错误

    如:error while loading shared libraries: libpango_windowing.so: cannot open shared object file: No such file or directory

    原因:在安装完Pangolin之后,需要运行一下以下命令
sudo ldconfig

本文转载自: https://blog.csdn.net/cg1135217680/article/details/135945225
版权归原作者 大大大管的笔记本 所有, 如有侵权,请联系我们删除。

“Ubuntu20.04在ROS下运行ORB-SLAM3”的评论:

还没有评论