本机是在安装视觉SLAM十四讲例程所需依赖的前提下进行ORB_SLAM3环境的配置,视觉SLAM十四讲依赖库安装参考:https://blog.csdn.net/qq_30196905/article/details/125733019
ORB_SLAM3源码地址:GitHub - UZ-SLAMLab/ORB_SLAM3: ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM
带注释版本:
GitHub - electech6/ORB_SLAM3_detailed_comments: Detailed comments for ORB-SLAM3
参考以下博客:
1.Ubuntu20.04 —新系统从头安装ORB-SLAM3过程(2022年)_@曾记否的博客-CSDN博客_orb-slam3安装
2.Ubuntu20.04配置ORB_SLAM3并简单运行_Leonard2021的博客-CSDN博客_ubuntu运行orbslam
3.Ubuntu20.04安装并运行ORB_SLAM3(一路顺风版)_9527风先生的博客-CSDN博客_ubuntu运行orbslam
一、各类依赖库
1、Pangolin(推荐0.6,我装的0.8)
2、OpenCV3(我装的3.4.15)
3、Eigen3(二进制安装)
4、G2O
5、Sophus
(前面1~5在视觉SLAM十四讲里已经安装过了,这里不再安装,查看ORB_SLAM3编译脚本,可以发现各个第三方库只有make编译命令,而没有make install,表明当前库只是安装在当前文件夹下,而不影响系统中已经安装过的库,所以不需要修改,可以把make -j 改为make -j12)
6、DBoW2
在源码包的ThirdParty下有,build.sh里面已经写好安装命令
二、修改Cmakelists文件
1.找到find_package(OpenCV 4.4),删除它,如果使用OpenCV3.4.15,则加上以下代码:
# 使用OpenCV3.4.15
set(CMAKE_PREFIX_PATH "/usr/local/OpenCV3")
find_package(OpenCV 3 REQUIRED)
if(NOT OpenCV_FOUND)
message(FATAL_ERROR "OpenCV 3 not found.")
endif()
如果使用3.0的版本,编译时会报警告G2O依赖4.2版本,所以还是用4.2,则加上以下代码:
# 使用OpenCV4.2
find_package(OpenCV 4 REQUIRED)
if(NOT OpenCV_FOUND)
message(FATAL_ERROR "OpenCV 4 not found.")
endif()
2.在find_package(Eigen3 3.1.0 REQUIRED)后面加上include_directories("/usr/include/eigen3")。
3.找到Check C++11 or C++0x support的位置,把到endif()的语句全部注释掉,换成:
参考:ubuntu20.04 编译orb-slam3踩坑_神人掌观山河的博客-CSDN博客_orbslam3编译
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_EXTENSIONS OFF)
add_definitions(-DCOMPILENDWITHC11)
4.把Examples和Examples_old文件夹里面的.cc文件里面monotonic_clock全部替换成steady_clock
5.运行ORB_SLAM3的时候,可能没有画面,是因为程序中没有打开可视化界面:
打开mono_euroc.cc的第83行,把false改为true
ORB_SLAM3::System SLAM(argv[1],argv[2],ORB_SLAM3::System::MONOCULAR, true);
6.修改G2O的Cmakelists文件(否则后面运行ROS版本的会出现问题):
参考链接:ORB_SLAM3运行时segment fault_iri_descent的博客-CSDN博客
Thirdparty/g2o/CMakeLists.txt中,把以下语句后面的-march native句子删除
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3")
三、编译源码
cd ORB_SLAM3
chmod +x build.sh
./build.sh
四、ROS接口编译
参考链接:ORB_SLAM3 + ROS采坑实录(从零开始的毕设生活第一弹)_藏原走的博客-CSDN博客
sudo gedit ~/.zshrc
添加以下语句:
# 配置ORB_SLAM3的ROS环境
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/traveller/CLionProjects/ORB_SLAM3/Examples_old/ROS
# 打开build_ros.sh 脚本,修改内容如下(修改cd命令后面的路径):
echo "Building ROS nodes"
cd Examples_old/ROS/ORB_SLAM3
mkdir build
cd build
cmake .. -DROS_BUILD_TYPE=Release
make -j12
# 执行build_ros.sh 脚本
chmod +x build_ros.sh
./build_ros.sh
编译可能会报错,需要修改路径ORB_SLAM3/Examples_old/ROS/ORB_SLAM3下的Cmakelists文件:
1.把C++11改为C++14:
# 改为C++14
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_EXTENSIONS OFF)
add_definitions(-DCOMPILENDWITHC11)
2.使用OpenCV4.2:
# 使用OpenCV4.2
find_package(OpenCV 4 REQUIRED)
if(NOT OpenCV_FOUND)
message(FATAL_ERROR "OpenCV 4 not found.")
endif()
3.添加Eigen库头文件地址:
include_directories("/usr/include/eigen3")
4.添加Sophus库依赖:
在include_directories中加入:
${PROJECT_SOURCE_DIR}/../../../Thirdparty/Sophus
5.把AR部分注释掉:
# Node for monocular camera (Augmented Reality Demo)
# rosbuild_add_executable(MonoAR
# src/AR/ros_mono_ar.cc
# src/AR/ViewerAR.h
#src/AR/ViewerAR.cc
#)
#target_link_libraries(MonoAR
#${LIBS}
#)
五、下载数据集并运行测试
一般是下载ASL格式的文件,如果用ROS,则下载BAG类型的,参考博客:Ubuntu20.04 —— 新系统从头安装ORB-SLAM3过程(2022年)_@曾记否的博客-CSDN博客_orb-slam3安装
Tips:从官网下的时候把链接复制,用迅雷下载速度更快。
百度网盘:SLAM数据集(百度网盘)_熊猫飞天的博客-CSDN博客_data_odometry_velodyne.zip
//根据数据集路径直接运行以下代码
./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml ./dataset/MH01 ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt
六、ROS版本运行测试:
参考链接:
Ubuntu 20.04 安装 ORB_SLAM3(包含ROS版)_cgnerds的博客-CSDN博客
ORB_SLAM3 + ROS采坑实录(从零开始的毕设生活第一弹)_藏原走的博客-CSDN博客
# setp01
roscore
# step02
rosrun ORB_SLAM3 Mono_Inertial Vocabulary/ORBvoc.txt Examples/Monocular-Inertial/EuRoC.yaml
# step03
# 其实就是把话题名称修改一下,否则订阅不到话题,也可以修改源码中的subscriber
# 数据集的地址修改为自己的
rosbag play dataset/MH_01_easy.bag /cam0/image_raw:=/camera/image_raw /imu0:=/imu
七、安装SLAM测评工具evo
evo是一个很好的测评工具,它可以根据时间戳将轨迹进行对齐,同时可以将不同尺度的轨迹按照你指定的标准轨迹进行拉伸对齐,并可以算出均方差等评定参数,用于测评slam算法性能。
参考:Ubuntu20.04安装evo(详细教程)【亲测有效】_学无止境的小龟的博客-CSDN博客_安装evo
sudo pip install evo --upgrade --no-binary evo -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
使用方法参考: