【ORB-SLAM3】Ubuntu20.04 编译运行ORM-SLAM3

打印 上一主题 下一主题

主题 640|帖子 640|积分 1920

说在前面:网上相干的教程很多,但和我实际碰到的标题还是各有异同,这里把自己的实际安装过程记录下来,以供参考。
一、ORB-SLAM3源码下载

在home下打开终端,终端执行以下命令。
  
  1. git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git
复制代码
二、相干库文件安装

2.1 Eigen 3安装

在home下打开终端,执行以下命令下载源码:
  
  1. git clone https://github.com/eigenteam/eigen-git-mirror
复制代码
 然后依次执行以下命令进行安装:
  
  1. cd eigen-git-mirror
  2. mkdir build && cd build
  3. cmake ..
  4. sudo make install
复制代码
2.2 Pangolin安装

起首执行以下命令安装所需依靠:
  
  1. sudo apt-get install libxkbcommon-dev
  2. sudo apt-get install wayland-protocols
  3. sudo apt install libglew-dev
复制代码
 在home下打开终端,执行以下命令下载源码:
  
  1. git clone https://github.com/stevenlovegrove/Pangolin
复制代码
  然后依次执行以下命令进行安装:
  
  1. mkdir build && cd build
  2. cmake ..
  3. make
  4. sudo make install
复制代码
2.3 OpenCV安装

终端执行以下命令,安装所需依靠:
  
  1. sudo apt update
  2. sudo apt install cmake
  3. sudo apt install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
  4. sudo apt install pkg-config
复制代码
通过以下链接到官网下载源码,我这里下载的是opencv-4.5.0:
https://github.com/opencv/opencv/releases?page=2
将下载的源码解压缩至home下,在opencv目录下打开终端,依次执行以下命令:
  
  1. mkdir build && cd build
  2. cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES ..
  3. make -j4
  4. sudo make install
复制代码
终端执行以下命令:
  
  1. sudo gedit /etc/profile.d/pkgconfig.sh
复制代码
在打开的文件中参加以下代码:
  
  1. export PKG_CONFIG_PATH=/usr/local/lib
  2. /pkgconfig:$PKG_CONFIG_PATH
复制代码
生存并退出。终端执行以下命令,刷新一下:
  
  1. source /etc/profile
复制代码
终端执行以下命令验证是否成功:
  
  1. pkg-config --libs opencv4
复制代码
出现以下内容,则阐明成功:
​终端执行以下命令:
  
  1. sudo gedit /etc/ld.so.conf.d/opencv4.conf
复制代码
在打开的文件中参加以下代码:
  
  1. /usr/local/lib
复制代码
生存并退出。最后执行以下命令,使配置的路径见效。
  
  1. sudo ldconfig
复制代码
在opencv/samples/cpp/example_cmake目录下,依次执行以下命令:
  
  1. cmake .
  2. make
  3. ./opencv_example
复制代码
若出现以下画面,则表示安装成功。
 

2.4 Boost安装

这里安装的是1.75.0版本,可通过下面链接下载源码:
https://archives.boost.io/release/1.75.0/source/boost_1_75_0.tar.gz
将下载的源码解压缩至home下,在boost目录下打开终端,依次执行以下命令:
  1. sudo ./bootstrap.sh
  2. sudo ./b2 install
复制代码
等待执行完成即可。
2.5 DBoW2 and g2o

DBoW2主要用于回环检测,g2o(General Graph Optimization)主要用于图优化。
ORB-SLAM3的源码包自带DBoW2 and g2o,编译时会自动安装,不用管。
三、ORB-SLAM3编译(非ROS)

在home下执行以下命令:
  1. cd ORB_SLAM3
  2. chmod +x build.sh
  3. ./build.sh
复制代码
如果编译时堕落,发起打开build.sh文件,对照其中的命令,一步一步在终端手动执行。(由于我这里没有堕落,就不列举错误了。)
进入如下链接,下载数据集,下载Machine Hall 01:
kmavvisualinertialdatasets – ASL Datasets

在ORB_SLAM3文件夹下,新建一文件夹并定名为dataset,将刚刚下载的数据集压缩包,解压缩至该文件夹下,将其定名为MH01,文件夹条理应如下:ORB_SLAM3/dataset/MH01/mav0
执行以下命令:
  1. ./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml ./dataset/MH01 ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt
复制代码
发现可视化界面没有显示。
在ORB_SLAM3/Examples/Monocular文件夹下,打开mono_euroc.cc文件,将第83行:
  1. ORB_SLAM3::System SLAM(argv[1],argv[2],ORB_SLAM3::System::MONOCULAR, false);
复制代码
 修改为如下:
  1. ORB_SLAM3::System SLAM(argv[1],argv[2],ORB_SLAM3::System::MONOCULAR, true);
复制代码
 改完之后生存,必要重新编译ORB_SLAM3(改动源码,都需重新编译)。在ORB_SLAM3下打开终端依次执行以下命令:
  1. sudo chmod +x build.sh
  2. sudo ./build.sh
复制代码
编译成功后,在终端执行以下命令:
  1. ./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml ./dataset/MH01 ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt
复制代码
 (以下命令也行)
  1. ./Examples/Monocular-Inertial/mono_inertial_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular-Inertial/EuRoC.yaml ./dataset/MH01 ./Examples/Monocular-Inertial/EuRoC_TimeStamps/MH01.txt dataset-MH01_monoi
复制代码
运行效果如下图所示:

四、在ROS中编译ORB-SLAM3

在终端执行以下命令:
  1. gedit ~/.bashrc
复制代码
会自动打开一个文件,在文件末尾添加以下语句(路径根据自己的实际路径来):
  1. export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/ubuntu/ORB_SLAM3/Examples_old/ROS
复制代码
 生存并退出。在终端执行以下命令,刷新下环境:
  1. source ~/.bashrc
复制代码
打开build_ros.sh文件,将里面的内容进行修改:
  1. cd Examples/ROS/ORB_SLAM3
复制代码
改为:
  1. cd Examples_old/ROS/ORB_SLAM3
复制代码
将ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/CMakeLists.txt文件进行如下修改:
第2行增加如下代码:
  1. project(ORB_SLAM3)
复制代码
 第34行:
  1.  将find_package(OpenCV 3.0 QUIET)改为find_package(OpenCV 4.0 QUIET)
复制代码
 第50行增加以下代码(在include_directories内):
  1. ${PROJECT_SOURCE_DIR}/../../../Thirdparty/Sophus
复制代码
将ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/src/AR下的ros_mono_ar.cc文件中的代码:
  1. cv::Mat Tcw = mpSLAM->TrackMonocular(cv_ptr->image,cv_ptr->header.stamp.toSec());
复制代码
改为:
  1. cv::Mat Tcw=ORB_SLAM3::Converter::toCvMat(mpSLAM->TrackMonocular(cv_ptr->image,cv_ptr->header.stamp.toSec()).matrix());
复制代码
将ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/src/AR下的ViewerAR.cc文件中的代码:
  1. vPoints.push_back(pMP->GetWorldPos());
复制代码
  1. cv::Mat Xw = pMP->GetWorldPos();
复制代码
修改为:
  1. vPoints.push_back(ORB_SLAM3::Converter::toCvMat(pMP->GetWorldPos()));
复制代码
  1. cv::Mat Xw = ORB_SLAM3::Converter::toCvMat(pMP->GetWorldPos());
复制代码
终端执行以下命令,查看刚刚添加的路径会不会出现:
  1. echo ${ROS_PACKAGE_PATH}
复制代码
运行效果如下:

在home下依次执行以下命令:
  1. cd ORB_SLAM3
  2. chmod +x build_ros.sh
  3. ./build_ros.sh
复制代码

 


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

涛声依旧在

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表