ORB-SLAM3学习(Ubuntu20-ROS)
- [0 主要参考文献](#0 主要参考文献)
- [1 ORB-SLAM3安装环境配置](#1 ORB-SLAM3安装环境配置)
-
- [1.0 前言](#1.0 前言)
-
- [1.0.0 关于ORB-SLAM3安装版本选择](#1.0.0 关于ORB-SLAM3安装版本选择)
- [1.0.1 本文配置操作汇总(快速配置)](#1.0.1 本文配置操作汇总(快速配置))
-
- [1.0.1.1 ORB_SLAM3环境配置:](#1.0.1.1 ORB_SLAM3环境配置:)
- [1.0.1.2 ORB_SLAM3安装](#1.0.1.2 ORB_SLAM3安装)
- [1.0.1.3 ORB_SLAM的ROS接口](#1.0.1.3 ORB_SLAM的ROS接口)
- [1.1 C++(11)编译器配置](#1.1 C++(11)编译器配置)
- [1.2 Pangolin安装](#1.2 Pangolin安装)
- [1.3 OpenCV安装](#1.3 OpenCV安装)
- [1.4 Eigen3安装](#1.4 Eigen3安装)
- [1.5 DBoW2 and g2o (Included in Thirdparty folder)](#1.5 DBoW2 and g2o (Included in Thirdparty folder))
- [1.6 python要求](#1.6 python要求)
- [1.7 ROS (optional)](#1.7 ROS (optional))
- [1.8 realsense2(选装 )](#1.8 realsense2(选装 ))
- [2 ORB-SLAM3安装与测试(Building ORB-SLAM3 library and examples)](#2 ORB-SLAM3安装与测试(Building ORB-SLAM3 library and examples))
-
- [2.1 下载ORB-SLAM3源文件](#2.1 下载ORB-SLAM3源文件)
- [2.2 修改CMakeLists文件](#2.2 修改CMakeLists文件)
- [2.3 编译安装](#2.3 编译安装)
- [2.4 测试(EuRoC Examples)](#2.4 测试(EuRoC Examples))
- [3 ORB-SLAM3的ROS接口](#3 ORB-SLAM3的ROS接口)
-
- [3.0 各种问题参考](#3.0 各种问题参考)
- [3.1 设置ORB-SLAM3的ROS接口路径](#3.1 设置ORB-SLAM3的ROS接口路径)
- [3.2 修改ORB-SLAM3的ROS接口CMakeLists文件](#3.2 修改ORB-SLAM3的ROS接口CMakeLists文件)
- [3.3 修改build_ros.sh脚本文件](#3.3 修改build_ros.sh脚本文件)
- [3.4 安装ROS接口](#3.4 安装ROS接口)
- [3.5 ORB-SLAM之ROS测试](#3.5 ORB-SLAM之ROS测试)
-
- [3.5.1 查看数据集topic信息](#3.5.1 查看数据集topic信息)
- [3.5.2 运行](#3.5.2 运行)
0 主要参考文献
安装及问题解决主要参考以下文献:
ubuntu 20.04+ORB_SLAM3 安装并行全记录(无坑版)(一)
ubuntu 20.04+ORB_SLAM3 安装并行全记录(无坑版)(二)
Ubuntu20.04安装orb-slam3
Ubuntu20.04 ------ 新系统从头安装ORB-SLAM3过程(2022年)
Ubuntu18.04 ------ 新系统从头安装ORB-SLAM3过程(2022年)
Ubuntu 20.04配置ORB-SLAM2和ORB-SLAM3运行环境+ROS实时运行ORB-SLAM+Gazebo仿真运行ORB-SLAM2+各种相关库的安装
Ubuntu 20.04 安装 ORB_SLAM3(包含ROS版)
ORB_SLAM3 v1.0 ROS接口编译问题汇总
1 ORB-SLAM3安装环境配置
1.0 前言
1.0.0 关于ORB-SLAM3安装版本选择
目前时间:2023年1月24日。 思考了很久安装ORB-SLAM3哪个版本,因为有博客说新版本似乎有些bug。但看了ORB-SLAM3在github上的发布时间,最近的提交时间为2022年2月10日,感觉应该修改完成了。因此,还是直接选择Master版本,(分支4452a3c):
因为感觉v1.0-release的提升还挺大的。
-OpenCV静态矩阵更改为特征矩阵。跟踪和映射的平均代码加速分别为16%和19%。ORB-SLAM 3论文中报告的时间。
- 新校准文件格式,参见文件Calibration_Tutorial。增加了立体校正和图像大小调整选项。
- 添加了加载/保存地图功能。
- 添加了使用英特尔实感摄像头的实时SLAM示例。
- 修正了几个错误
下面根据官方文档配置依赖环境及安装。
1.0.1 本文配置操作汇总(快速配置)
PS:准备环境为Ubuntu20.04,已安装ROS-Noetic。
# 配置前
ubuntu: 20.04
ROS:Noetic
#配置关键依赖版本:
gcc: 9.4.0
ORB_SLAM3: Master,4452 a3c , Feb 10, 2022
cmake:3.16.3
opencv: 4.2.0 (与ROS版本中使用的一致)
eigen3: 3.3.7 (该版本高于3.2会有大量警告,但无影响)
Pangolin: v0.6 (注意:高版本的库不能工作)
可直接根据所有安装指令安装(依次执行,已安装过的会自动验证跳过),但建议通读文档获取更深的理解。
1.0.1.1 ORB_SLAM3环境配置:
bash
cd ~/ThirdParty
sudo apt install g++
sudo apt install libgl1-mesa-dev libglew-dev cmake
sudo apt install libpython2.7-dev pkg-config libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
git checkout dd801d2
mkdir build
cd build
cmake ..
cmake --build .
sudo apt install libopencv-dev
sudo apt install libeigen3-dev
sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen
sudo ln -s /usr/include/eigen3/unsupported /usr/include/unsupported
sudo apt install libpython2.7-dev
sudo apt-get install ros-noetic-realsense2-camera
1.0.1.2 ORB_SLAM3安装
bash
cd ~/ThirdParty
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3
bash
cd ORB_SLAM3
git checkout 4452a3c
gedit CMakeLists.txt
bash
# find_package(OpenCV 4.4)
find_package(OpenCV 4 REQUIRED)
bash
chmod +x build.sh
./build.sh
1.0.1.3 ORB_SLAM的ROS接口
bash
gedit ~/.bashrc
bash
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/ThirdParty/ORB_SLAM3/Examples_old/ROS
bash
cd /Examples_old/ROS/ORB_SLAM3
gedit CMakeLists.txt
bash
#find_package(OpenCV 3.0 QUIET)
find_package(OpenCV 4 QUIET)
bash
include_directories(
${PROJECT_SOURCE_DIR}
${PROJECT_SOURCE_DIR}/../../../
${PROJECT_SOURCE_DIR}/../../../include
${PROJECT_SOURCE_DIR}/../../../include/CameraModels
${PROJECT_SOURCE_DIR}/../../../Thirdparty/Sophus
${Pangolin_INCLUDE_DIRS}
)
bash
#rosbuild_add_executable(MonoAR
#src/AR/ros_mono_ar.cc
#src/AR/ViewerAR.h
#src/AR/ViewerAR.cc
#)
bash
cd ~/ThirdParty/ORB_SLAM3
gedit build_ros.sh
bash
#cd Examples/ROS/ORB_SLAM3
cd Examples_old/ROS/ORB_SLAM3
bash
chmod +x build_ros.sh
./build_ros.sh
1.1 C++(11)编译器配置
原文:
We use the new thread and chrono functionalities of C++11.
我们使用C++11的新线程和计时功能。
要求:c++11及以上 。保证环境要求:
t
sudo apt install g++
1.2 Pangolin安装
根据ORB-SLAM3官方原文:
We use Pangolin for visualization and user interface. Dowload and install instructions can be found at: https://github.com/stevenlovegrove/Pangolin.
我们使用Pangolin作为可视化和用户界面。下载和安装说明可在以下网址找到:https://github.com/stevenlovegrove/Pangolin.
因此,Pangolin仅作为一个可视化工具,版本没做要求。
但本人在安装v0.6版本必要依赖后编译时警告较多,因此,尝试了安装master版本(分支:fe57db5)后,在ORB-SLAM3编译过程中会出现错误error: 'slots_reference' was not declared in this scope cow_copy_type<list_type, Lockable>
,导致编译不通过,原因是Pangolin版本太高...
因此,还是安装了v0.6版本...
安装过程说明见:SLAM学习系列------ORB-SLAM3之Pangolin安装
安装必要及建议依赖:
c
//必要依赖
sudo apt install libgl1-mesa-dev libglew-dev cmake
// 建议依赖
sudo apt install libpython2.7-dev pkg-config libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols
针对v0.6版本:
t
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
git checkout dd801d2
mkdir build
cd build
cmake ..
cmake --build .
1.3 OpenCV安装
ORB-SLAM3官方原文:
We use OpenCV to manipulate images and features. Dowload and install instructions can be found at: http://opencv.org. Required at leat 3.0. Tested with OpenCV 3.2.0 and 4.4.0.
即,Opencv的作用是:操作图像和特征。最低需要3.0版本。官方使用用Opencv 3.2.0和4.4.0进行测试。
opencv的:下载和安装说明见:http://opencv.org. 根据版本需要下载安装。
note :根据参考文献建议,尽量先装ROS,然后使OpenCV与ROS的版本一样,这样后面用ROS时会少走很多坑。装了ROS noetic就可以直接忽略这一步,省了许多麻烦。
安装:
- ubuntu中提供apt安装版本(默认版本是 4.2.0(2023/1/24),与ROS版本一致)。
t
sudo apt install libopencv-dev
- 如需安装其他版本,可参考上述(文章开头)参考文献。
1.4 Eigen3安装
ORB-SLAM3官方原文:
Required by g2o (see below). Download and install instructions can be found at: http://eigen.tuxfamily.org. Required at least 3.1.0.
安装Eigen3为G2O所需(见下文)。下载安装说明见:http://eigen.tuxfamily.org. 最低需要3.1.0。
ubuntu中同样提供apt安装版本(默认版本是3.3.7),可直接安装即可,但需要注意安装位置位于/usr/include/eigen3
,其存在问题:
1\]而通常我们如果只使用find_package(Eigen3 REQUIRED)命令的话有可能无法找到。
\[2\]在很多程序中include时经常使用#include \