环境搭建第一步:安装cmake, gcc, g++
sudo apt-get install cmake gcc g++
第二步:安装Eigen
此处安装的是Eigen3.2.1版本,一开始安装Eigen3.4.0,在最后所有环境配置完成后,运行ORBSLAM2时,运行一小段时间就自动退出。不同版本可以在该网站找到
cd Eigenmkdir buildcmake ..makesudo make installsudo cp /usr/local/include/eigen3 /usr/include/eigen3
第三步:安装Pangolin
0.6版本
cd Pangolinmkdir buildcmake ..makesudo make install
安装时报错:
error: ‘AVFMT_RAWPICTURE’ was not declared in this scope
参考该链接在Pangolin/include/pangolin/video/drivers/ffmpeg.h开头加上
#define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22) #define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER #define AVFMT_RAWPICTURE 0x0020
编译安装成功,会有很多的警告,这里可以忽略掉。
测试是否安装成功
cd Pangolincd examples/HelloPangolincmake ..make./HelloPangolin
出现一个显示由红、绿、蓝三个色块拼成的立方体的窗口则说明安装成功。
第四步:安装OpenCV3
3.4.15版本
安装依赖(有些可以不装)sudo apt-get install build-essentialsudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-devsudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev编译安装opencv(时间比较久)cd opencv3mkdir buildcd buildcmake ..make -jsudo make install
测试是否安装成功
cd opencv3/samples/cpp/example_cmake./opencv_example
出现一个窗口,上面显示Hello OpenCV则说明安装成功
第五步:安装其他第三方库以及ORB_SLAM2本体
cd ORB_SLAM2chmod +x build.sh (给执行权限)./build.sh
在源码处有一处改动
参考第二个报错
报错:
error: static assertion failed: std::map must have the same value_type as its allocator static_assert(is_same::value,
解决:打开LoopClosing.h
将原代码中的
typedef map<KeyFrame*,g2o::Sim3,std::less, Eigen::aligned_allocator<std::pair > > KeyFrameAndPose;
修改为
typedef map<KeyFrame*,g2o::Sim3,std::less, Eigen::aligned_allocator<std::pair > > KeyFrameAndPose;
测试
1、进入[网页](Computer Vision Group – Dataset Download (tum.de)),下载对应的数据(点击tgz,就会开始下载对应的数据)
2、进入ORB_SLAM2创建文件夹data,然后将下载好的数据压缩包提取到data中,然后打开终端执行以下命令(此处下载的数据为网页中第一个):
cd ORB_SLAM2./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml data/rgbd_dataset_freiburg1_xyz
若成功搭建,则会显示如下两个窗口
参考
(75条消息) Ubuntu20.04配置ORBSLAM2并运行(保姆级教程)_orbslam2运行_9527风先生的博客-CSDN博客
(75条消息) ORB-SLAM2环境配置以及运行详解(一):ROS与非ROS环境下的安装、编译、离线数据集测试_FrozenFreak的博客-CSDN博客