下载
ORB_SLAM3是一个能够使用单目,立体,RGB-D相机,兼容针孔以及鱼眼相机模型进行视觉、视觉+惯导和多地图的SLAM方案。基于ORB-SLAM和ORBSLAM Visual-Inertial构建,支持抑制轨迹精度发散的短期,中期和长期的数据关联。ORB-SLAM3在次基础上,更进一步,支持历史地图的复用。从而,真正达到一个全局的slam系统:建立一个地图实现精确的定位。
下载链接包含的内容为2020年7月中旬开源的官方源码,压缩包大小约为515M,解压后为802M,给翻墙不方便的朋友。
安装编译ORB-SLAM3
- 运行 build.sh
解压缩后,主文件夹下有4个例子.sh文件和2个安装.sh文件,有数据集版本和ROS版本(安装过程类似),可根据自己需要来是否安装。直接运行build.sh文件即可开始安装。
cd ORB_SLAM3
chmod +x build.sh
./build.sh
- 可能卡死:
由于xx.sh文件中的make -j 选项会执行并行编译,执行后可能会出现死机的问题,最好是把“make -j”改为“make”。 - 可能错误1:
在cmakelists.txt文件中报错,CMake Error at CMakeLists.txt:74 (FIND_PACKAGE):
Could not find a configuration file for package “Eigen3” that is compatible
with requested version “3.1.0”.
The following configuration files were considered but not accepted:
/usr/lib/cmake/eigen3/Eigen3Config.cmake, version: unknown
找不到eigen 3.1.0 ,这是因为在文件的47行处为“find_package(Eigen3 3.1.0 REQUIRED) ”,提示为版本不同,将g2o文件夹以及orb_slam3文件夹中的CMakelist.txt文件中find_package(Eigen3 3.1.0 REQUIRED) 改为find_package(Eigen3 REQUIRED)即可。源码eigen3库的要求的最低版本为3.1.0,或也可改为你实际安装的版本。
- 可能错误2(此处参考链接)
CMakeFiles/ORB_SLAM3.dir/build.make:134: recipe for target ‘CMakeFiles/ORB_SLAM3.dir/src/LoopClosing.cc.o’ failed
make[2]: *** [CMakeFiles/ORB_SLAM3.dir/src/LoopClosing.cc.o] Error 1
在前面出现了非典型报错:
LoopClosing.cc:1056:21: required from here /usr/include/c++/8/bits/stl_map.h:122:21: error: static assertion failed: std::map must have the same value_type as its allocator
static_assert(is_same<typename _Alloc::value_type, value_type>::value,
修改方法为将Loopclosing.h中的:
typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
Eigen::aligned_allocator<std::pair<const KeyFrame*, g2o::Sim3> > > KeyFrameAndPose;
改为:
typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
Eigen::aligned_allocator<std::pair<KeyFrame *const, g2o::Sim3> > > KeyFrameAndPose;
编译完成后可以在example内每个文件夹(不含ROS)里面有生成对应的可执行文件。
运行
- Stereo-Inertial 例子
其中/slam/dataset/EuRoc/MH_01_easy 改为你自己的数据集路径。
./Examples/Stereo-Inertial/stereo_inertial_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo-Inertial/EuRoC.yaml /slam/dataset/EuRoc/MH_01_easy ./Examples/Stereo/EuRoC_TimeStamps/MH01.txt
运行截图如下: