一、orb-slam2是什么?
1、介绍
ORB-SLAM2是一种基于单目、双目和RGB-D相机的实时视觉SLAM(Simultaneous Localization and Mapping,即同时定位与地图构建)系统。该系统由西班牙Zaragoza大学的Raul Mur-Artal教授和Juan D. Tardos教授等人开发,于2016年首次发布,是ORB-SLAM的改进版本。ORB-SLAM2在ORB-SLAM的基础上进行了多项改进,提高了系统的鲁棒性、精度和效率。
2、主要特点
多相机支持:ORB-SLAM2支持单目、双目和RGB-D相机,可以适应不同的应用场景和传感器限制。
实时性能:系统采用了高效的ORB特征点提取和描述符匹配技术,以及图优化和闭环检测算法,实现了高速、实时的地图构建和相机定位。
鲁棒性:在处理模糊、遮挡、光照变化和动态场景等复杂情况下,ORB-SLAM2具有较强的鲁棒性和稳定性。
易于使用和扩展:ORB-SLAM2提供了易于使用和扩展的接口和工具,允许用户自定义算法和参数,以满足不同的应用需求。
3、应用场景
自动驾驶、无人机定位与导航、机器人导航、增强现实与虚拟现实、人体运动与分析等
二、安装
根据参考[1]及orb-slam2的github进行编译orb-slam2前的库,即cmake,gcc,g++,git,eigen,pangolin,opencv3(注意,一定是3,而不是4,因为不支持4)。
1、cmake,gcc,g++,git安装
sudo apt-get install cmake gcc g++ git
2、eigen安装
apt安装(之后会有个报错,但不影响使用):
sudo apt-get install libeigen3-dev
源码编译安装:
3、pangolin安装
根据参考[1]进行0.6版本的安装,即在用户目录下打开终端执行
sudo apt-get install libxkbcommon-dev
sudo apt-get install wayland-protocols
sudo apt install libglew-dev
cd Pangolin-0.6
mkdir build
cd build
cmake ..
make -j
sudo make install
4、opencv3安装
根据参考[1]进行opencv3.4.5的安装,即
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
cd opencv-3.4.15
mkdir build
cd build
cmake ..
make -j
sudo make install
过程中会出现无法定位软件包libjasper-dev的错误,根据参考[2]进行换源下载即可
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt upgrade
sudo apt install libjasper1 libjasper-dev
剩下的按照参考[1]进行即可,在执行
sudo updatedb
会报错command not found,只需执行
sudo apt-get install mlocate
再重新执行sudo updatedb即可。
三、orb-slam2编译安装
我是自己下的官网的代码进行编译,然后解决报错,如果不想自己解决报错,可以使用参考[1]提供的代码。
根据orb-slam的readme进行编译安装。先下载代码。
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
再进行安装
cd ORB_SLAM2
chmod +x build.sh
./build.sh
可见build.sh中已为我们提供了编译安装DBoW2、g2o等库的命令
之后执行编译orb-slam2
mkdir build && cd build
cmake ..
make -j
在执行cmake命令时,会报错error: static assertion failed: std::map must have the same val
根据参考[3]进行修改即可。
在执行make命令时,会报错EIGEN_DEPRECATED const unsigned int AlignedBit = 0x80
原因是我们apt下载的eigen库太新,经过之后的测试,不影响,如果不想报这个错,请源码编译。
报错‘usleep’ was not declared in this scope,这个报错会出现在很多源代码里,根据参考[4],不断改一个,重新编译即可,这里给出所有要加入预编译库的文件
src下:LocalMapping.cc,LoopClosing.cc,System.cc,Tracking.cc,Viewer.cc
Examples下的Monocular,RGB-D,Stereo中的所有.cc文件
最后即可编译成功。测试是否成功,可根据参考[1]进行。
测试成功。
四、参考
参考[1]:Ubuntu20.04配置ORBSLAM2并运行(保姆级教程)_在ubuntu20.04上安装并运行orb-slam2(保姆级教程)-CSDN博客