[ORB_SLAM2]运行
文章参考:链接: link.
设备配置
- Ubuntu 20.04
- ROS版本:noetic
- OpenCV:3.4.5
安装 ORB_SLAM2
创建环境
如果需要在ROS环境下运行ORB_SLAM,最好将工程放在catkin_ws/src文件夹下:
mkdir -p xxx_ws/src(必须得有 src)
cd xxx_ws
catkin_make
下载并尝试编译
进入src文件,git下,然后尝试编译:
cd src
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
cd ORB_SLAM2
chmod +x build.sh
./build.sh
编译报错处理
1.usleep
图片来源于博客:链接: link.
解决方法: 在报错对应的每个c++文件中或直接在system.h文件中加入
#include <unistd.h>
2.error:static assertion failed:std::map must have the same value_type as its allocator
解决方法: 在ORB_SLAM2的安装路径下打开 /include 文件夹,在 LoopClosing.h 中修改第49-50行,将
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;
3.找不到 -lEigen3::Eigen error ld returned 1 exit status解决方法:
我就只有这三种错误,至此编译成功!
运行ORB_SLAM2
编译完成后会在ORB_SLAM2/Examples文件夹下生成各种可执行文件。我们以单目情况为例,展示如何运行ORB_SLAM2程序。
下载数据集
可以从这个网址下载 Tum数据集.
下载完成后解压缩,最好放到 ORB_SLAM2 的路径下。
本文采用的就是第一条数据集(如图)。
是时候运行了!
首先进入ORB-SLAM2环境中,然后输入代码
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml data/rgbd_dataset_freiburg1_xyz
其中TUM1可以改为TUM2和TUM3.
最后那个地址是你的data的地址。