安装ORB-SLAM3教程

2023-05-16

安装ORB-SLAM3教程

  • 一、ROS一键安装(首次学ROS的话)
  • 二、ORB_SLAM3所依赖的包有pangolin,EIGEN3,OPENCV,DBoW2 和 g2o
    • 1、安装工具
    • 2、安装EIGEN3.3.4
    • 3.安装pangolin0.6
      • (1)安装依赖
      • (2)获得pangolin的稳定版本安装包
      • (3)编译安装
      • (4)报错
      • (5)测试
    • 4.安装opencv3.4.2
    • 5.DBoW2 和 g2o
  • 三、(非ROS)编译ORB_slam3
    • 1.下载源码
    • 2.编译
      • (1)编译Thirdparty/DBoW2
      • (2)编译Thirdparty/g2o
      • (3)编译Thirdparty/Sophus
      • (4)解压/ORB_SLAM3/Vocabulary/ORBvoc.txt.tar.gz
      • (5)编译ORB_SLAM3
      • (6)报错
  • 四、数据集下载及运行,评估
    • 1.下载:EuRoC 数据集下载序列(ASL 格式)
    • 2.运行:以下网址中ORB_SLAM3/euroc_examples.sh 脚本内有各个数据集执行命令
    • 3.评估:评估脚本euroc_eval_examples.sh,也在第五点的网址https://github.com/j4mf/ORB_SLAM3中可以得到
  • 五、运行相机(我用的是 Intel D455)
    • 1.相机安装
    • 2.修改参数文件
  • 六、ROS部分编译
    • 1.添加环境变量
    • 2.ROS下编译
    • 3.报错
  • 七、ROS运行

一、ROS一键安装(首次学ROS的话)

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

输入1,就根据提示一步一步来

二、ORB_SLAM3所依赖的包有pangolin,EIGEN3,OPENCV,DBoW2 和 g2o

1、安装工具

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

2、安装EIGEN3.3.4

直接源码安装

sudo apt-get install libeigen3-dev

3.安装pangolin0.6

(1)安装依赖

sudo apt install libglew-dev libpython2.7-dev

(2)获得pangolin的稳定版本安装包

(pangolin0.6版本下载) (0.6版本下载)选择Source code(tar.gz)
(安装出错参考) pangolin安装出错解决

(3)编译安装

mkdir build
cd build
cmake ..
make
sudo make install	
//安装后pangolin将在  /usr/local/include/中找到

(4)报错

可能会是缺少依赖:

sudo apt install libgl1-mesa-dev
sudo apt install libglew-dev
sudo apt install libpython2.7-dev
sudo apt install pkg-config
sudo apt install libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols

(5)测试

在你所放置的Pangolin文件下

cd build/examples/HelloPangolin
./HelloPangolin

运行此示例,效果显示是一个红绿蓝立方体,表示即为安装成功

4.安装opencv3.4.2

教程一: ubuntu16.04+Opencv3.4.3+opencv_contrib3.4.3安装编译全过程
教程二:ubuntu18.04中安装opencv3.2

5.DBoW2 和 g2o

DBoW2 和 g2o 在源码的第三方库中,无需下载,后面直接编译即可。

三、(非ROS)编译ORB_slam3

1.下载源码

ORB_SLAM3官网下载

git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git

2.编译

打开ORB_SLAM3中build.sh可以看到5个需要编译的第三方库
直接执行以下命令,可一次性编译这5个文档,一次成功是最省事了,但报错不易查找问题

cd ORB_SLAM3
chmod +x build.sh
./build.sh

故建议单独进行编译

(1)编译Thirdparty/DBoW2

在ORB_SLAM3文件夹下打开终端

cd Thirdparty/DBoW2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4

(2)编译Thirdparty/g2o

在/ORB_SLAM3下开终端

cd Thirdparty/g2o
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4

(3)编译Thirdparty/Sophus

在/ORB_SLAM3下开终端

cd Thirdparty/ Sophus
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4

(4)解压/ORB_SLAM3/Vocabulary/ORBvoc.txt.tar.gz

在/ORB_SLAM3下开终端

cd Vocabulary
tar -xf ORBvoc.txt.tar.gz
cd ..

(5)编译ORB_SLAM3

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4

(6)报错

报错1:Could not find a configuration file for package “OpenCV” that is compatible
with requested version “4.4”.
原因:此处我安装的是opencv3.4.2
解决:将/ORB_SLAM3/CMakeLists.txt中第33行
find_package(OpenCV 4.4)
此处的4.4改为3.4.2即可,即
find_package(OpenCV 3.4.2)
再次编译
报错2:realsense2config.cmake
解决:sudo apt-get install ros-melodic-realsense2-camera

四、数据集下载及运行,评估

1.下载:EuRoC 数据集下载序列(ASL 格式)

EuRoC 数据集下载
如图,Downloads下的ASL Dataset Format,点击任意link下载即可
/ORB_SLAM3下新建Datasets,将下载好的文件MH_01_easy(就是图中第一个Machine Hall 01)放入Datasets,并改名为MH01
ROS bag也下载一个
在这里插入图片描述

2.运行:以下网址中ORB_SLAM3/euroc_examples.sh 脚本内有各个数据集执行命令

另一个ORB_SLAM3
找到MH01对应sensor的命令运行即可,如:

 ./Examples/Stereo/stereo_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo/EuRoC.yaml /home/nj/ORB_SLAM3/Datasets/MH01 ./Examples/Stereo/EuRoC_TimeStamps/MH01.txt dataset-MH01_stereo

在这里插入图片描述

3.评估:评估脚本euroc_eval_examples.sh,也在第五点的网址https://github.com/j4mf/ORB_SLAM3中可以得到

./euroc_examples.sh

五、运行相机(我用的是 Intel D455)

1.相机安装

sudo apt-get install ros-melodic-realsense2-camera

(先硬件连接好后,测试摄像头能否正常打开,启动)

roslaunch realsense_camera rs_rgbd.launch

2.修改参数文件

修改相机启动文件路径:/opt/ros/melodic/share/realsense2_camera/launch/rs_rgbd.launch
在此路径下/opt/ros/melodic/share/realsense2_camera/launch/打开终端

sudo gedit rs_rgbd.launch

改1:第78行,第79行改false为true


改2:图像大小改为640*480


保存
在路径/ORB_SLAM3/Examples/Stereo-Inertial下RealSense_D435i.yaml文件内参等配置按需要进行修改
运行脚本开始运行ORB-SLAM3:

./Examples/Stereo-Inertial/stereo_inertial_realsense_D435i Vocabulary/ORBvoc.txt ./Examples/Stereo-Inertial/RealSense_D435i.yaml

这是连接相机进行实际环境的显示情况
在这里插入图片描述

六、ROS部分编译

原作者将ROS部分放到了/ORB_SLAM3/Examples_old位置,后续编译是进入old中

1.添加环境变量

打开bashrc,执行

sudo gedit ~/.bashrc

在~/.bashrc中添加环境变量,将以下复制粘贴到最后一行:

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM3/Examples_old/ROS

(绿色PATH改为自己的路径,如我的是:/home/nj/ORB_SLAM3/Examples_old/ROS)

2.ROS下编译

cd Examples_old/ROS/ORB_SLAM3
mkdir build
cd build
cmake .. -DROS_BUILD_TYPE=Release
make -j4

3.报错

报错1:/home/nj/ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/…/…/…/include/ImuTypes.h:29:10: fatal error: sophus/se3.hpp: 没有那个文件或目录
#include <sophus/se3.hpp>
解决1:找到ORB_SLAM3/Examples_old/ROS/ORB_SLAM3下的CMakeLists.txt 修改它,include_directories中添加

 ${PROJECT_SOURCE_DIR}/../../../Thirdparty/Sophus 

再次编译
报错2:
(1)
在这里插入图片描述

(2)
在这里插入图片描述

(3)
在这里插入图片描述

解决:
(1)找到ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/src/AR下的ros_mono_ar.cc文件:
将第151行的 cv::Mat Tcw = mpSLAM→TrackMonocular(cv_ptr→image,cv_ptr→header.stamp.toSec());
替换为:

 cv::Mat Tcw;
 Sophus::SE3f  Tcw_SE3f = mpSLAM->TrackMonocular(cv_ptr->image,cv_ptr->header.stamp.toSec());
 Eigen::Matrix4f Tcw_Matrix = Tcw_SE3f.matrix();
 cv::eigen2cv(Tcw_Matrix, Tcw);

(2)找到ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/src/AR下的ViewerAR.cc文件:
将第405行的vPoints.push_back(pMP→GetWorldPos());
替换为:

cv::Mat WorldPos;
cv::eigen2cv(pMP->GetWorldPos(), WorldPos);
vPoints.push_back(WorldPos);

(3)还是ViewerAR.cc文件:
将532行的cv::Mat Xw = pMP→GetWorldPos();
替换为:

cv::Mat Xw;
cv::eigen2cv(pMP->GetWorldPos(), Xw);

重新编译
报错3:
在这里插入图片描述

解决:加头文件
在/ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/src/AR/ViewerAR.h中加入如下:

#include <Eigen/Dense>
#include <opencv2/core/eigen.hpp>
#include <opencv2/opencv.hpp>

再次重新编译,可算ok了

七、ROS运行

1.开启三个终端

roscore

2.在ORB_SLAM3下打开终端(每开一次都要source)

source /home/nj/ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/build/devel/setup.bash
rosrun ORB_SLAM3 Stereo Vocabulary/ORBvoc.txt Examples_old/Stereo/EuRoC.yaml /home/nj/下载/MH_01_easy.bag

(第一个参数为系统的主程序执行文件 Stereo

第二个参数为特征词典 Vocabulary/ORBvoc.txt

第三个参数为相机参数 Examples_old/Stereo/EuRoC.yaml
后续如果要使用自己的数据集,是需要修改这个文件的。而这个地方,也需要注意你下载的数据集和相机参数文件对应

第四个参数为数据集路径 /home/nj/下载/MH_01_easy.bag)
3.跑包

 rosbag play --pause –clock MH_01_easy.bag /cam0/image_raw:=/camera/left/image_raw /cam1/image_raw:=/camera/right/image_raw /imu0:=/imu

出现问题:
运行显示如下,无法跟踪上,是话题没同步还是哪里对应上
在这里插入图片描述

原因:上面的命令是启动双目的配置,但文件中缺少左右摄像头标定的内参,所以无法跟踪,需要的话就标了放进去编译启动,下面是以现有参数,启动单目,表明能运行成功就好
解决:
路径/home/nj/ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/src/ros_mono_inertial.cc源码中查看订阅话题/camera/image_raw,100
在这里插入图片描述

开启三个终端
1.

roscore

2.在ORB_SLAM3下打开终端(每开一次都要source)

source /home/nj/ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/build/devel/setup.bash

rosrun ORB_SLAM3 Mono Vocabulary/ORBvoc.txt Examples_old/Monocular-Inertial/EuRoC.yaml
 rosbag play --pause MH_01_easy.bag /cam0/image_raw:=/camera/image_raw /imu0:=/imu

在这里插入图片描述

结束

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

安装ORB-SLAM3教程 的相关文章

  • Jetson安装ORB_SLAM3(一)

    ROS和Opencv的安装还是看之前的文章 Could not find a package configuration file provided by 34 realsense2 34 with any of the following
  • ORB-SLAM3运行过程记录

    试着运行ORB SLAM3 xff0c 做的部分修改 在ORB SLAM3 Examples ROS ORB SLAM3 src中修改ros rgbd cc的topic订阅 xff1a xff08 参考https blog csdn net
  • Jetson Tx2上跑MYNT_EYE的ORB SLAM示例

    愁呀 xff0c 按照官网的说明文档 xff0c 好长时间郁闷在跑不起来 每次都是在加载词袋时报bad malloc 打开MYNT EYE ORB SLAM2 Sample Vocabulary ORBvoc txt词袋看见1082073行
  • ORB-SLAM3的Euroc数据集测试

    xff08 一 xff09 测试运行 不同模式测试过程 xff08 以MH 03为例 xff09 1 pure mono 运行SLAM xff1a cd ORB SLAM3 Example run slam Monocular mono e
  • 【逐函数详细讲解ORB_SLAM2算法和C++代码|PnPsolver|1-22】

    它实现了一种名为EPnP xff08 Efficient Perspective n Point xff09 的算法 xff0c 该算法能够从2D 3D点对之间的关系中估计相机的位姿 PnPsolver类的主要功能如下 xff1a 通过使用
  • 逐函数详细讲解ORB_SLAM2算法和C++语法|System|2-2

    span class token comment Create SLAM system It initializes all system threads and gets ready to process frames span ORB
  • D435i跑通ORB-SLAM2

    这篇文章主要记录我的实现过程 根据官方安装文档 xff0c 并参考以下两篇博客 xff0c 可以比较顺利的实现 xff1a Realsense D435i 在ubuntu上安装SDK与ROS Wrapper 运行ORB SLAM2 RTAB
  • ubuntu18.04安装ORB_SLAM3以及遇到的问题

    目录 1 安装c 43 43 11 2 安装Pangolin a xff09 安装依赖 b xff09 编译pangolin 切换到pangolin下载包里面 3 安装opencv 4 eigen3安装 5 boost安装 6 编译ORB
  • 视觉SLAM | 在ROS上运行ORB-SLAM2

    本文直接使用的github上的orb slam 2 ros实现在ROS上运行ORB SLAM2 xff0c 这个ros包能够得到相机的位姿以及稀疏点云 xff0c 而且删掉了对Pangolin的依赖 xff0c 进行可视化时要用RViz 运
  • SLAM--intel realsense2在ORB SLAM2 和 ORB SLAM3下建图和重定位(ubuntu 20.04, opencv 4.2.0 以上)

    用intel 的realsense相机实现orb slam2 和 orb slam3 ubuntu 20 04系统 链接地址 ORB SLAM2 可建图 xff0c github https github com zouyuelin ORB
  • Ubuntu18.04下使用D435i跑ROS包和ORB-SLAM2

    Ubuntu18 04下使用D435i跑ROS包和ORB SLAM2相关问题 前言主要问题及解决方法汇总一 realsense包版本问题二 无法定位安装包问题三 警告问题四 如何检测是否发布五 利用D435i跑ORB SLAM2一点注意 后
  • 4、ORB-SLAM闭环检测之通过词袋寻找当前关键帧和闭环候选帧之间的匹配

    目录 1 SearchByBoW 2 图解每一步实现原理 2 1 通过词袋模型寻找匹配 2 2 通过旋转直方图来筛除离群点 3 期待您加入 前面 我们已经了解到了sim3的求解流程 具体计算过程中有三步比较重要 1 寻找两关键帧之间的粗匹配
  • ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM

    摘要 ORB SLAM3是第一个能够让单目 立体相机和RGB D相机与针孔和鱼眼镜头模型解耦进行视觉 视觉 43 惯性和多地图SLAM的系统 第一个主要的创新是一个基于特征的紧密集成视觉 43 惯性SLAM系统 xff0c 它完全依赖于最大
  • ORB_SLAM2的单目SLAM提高关键帧的个数

    一 前言 最近在结合ORB SLAM2和Map2DFusion xff0c 来做无人机航拍视频建图 xff0c 基本完成了pipeline xff0c 但发现出来的效果没有Map2DFusion官方的效果好 xff08 第一张图是我自己处理
  • 安装ORB-SLAM3教程

    安装ORB SLAM3教程 一 ROS一键安装 xff08 首次学ROS的话 xff09 二 ORB SLAM3所依赖的包有pangolin EIGEN3 OPENCV xff0c DBoW2 和 g2o1 安装工具2 安装EIGEN3 3
  • ORB_SLAM3初试

    源码地址 xff1a orb salm3 github 论文地址 orb slam3 paper ORB SLAM3提供了单目 xff0c 双目 xff0c rgbd 以及各自结合IMU的数据分析实现 demo运行效果展示 xff1a 在不
  • slambook2+ch7+orb_self 源码的一点小问题

    slambook2 43 ch7 43 orb self 源码的一点小问题 43 解读 源码详细解读小错误调试 xff0c 有的真的属实自己菜运行结果 源码详细解读 下面是一些个人的见解内联代码片 span class token comm
  • ORB-SLAM2中关键知识点总结

    目录 1 ORB SLAM2的总体框架是怎样的 xff1f 2 ORB SLAM2是怎样完成初始化的 xff1f 3 ORB SLAM2是如何进行Tracking的 xff1f 4 ORB SLAM2是如何选取关键帧的 xff1f 5 OR
  • 使用zed摄像头跑ORB_SLAM2

    zed ros wrapper安装 首先对zed ros wrapper安装 xff1a 具体操作步骤及代码的参考链接 xff1a https github com stereolabs zed ros wrapper git mkdir
  • OpenCV 3 中的 FLANN 错误

    我运行的是 Ubuntu 14 04 我正在尝试使用 openCV 3 运行 FLANN 但出现错误 下面的所有内容都是通过使用 AKAZE 和 ORB 进行尝试的 但代码来自我尝试使用 ORB 的情况 我使用 ORB 来查找描述符和关键点

随机推荐