安装环境:虚拟机VMware运行的Ubuntu版本是18.04。
主要参考:
ORB SLAM3安装方法一
ORB SLAM3安装方法二
Ubuntu20.04安装ORB SLAM3参考:
1、https://blog.csdn.net/kuvinxu/article/details/125992909
2、https://blog.csdn.net/kuvinxu/article/details/126233165
最好创建一个文件夹,将要下载的文件都放在这个文件夹中。
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git
sudo apt-get install libeigen3-dev
先git下载
git clone https://github.com/stevenlovegrove/Pangolin.git
安装依赖
sudo apt install libglew-dev
sudo apt install cmake
sudo apt install libpython2.7-dev
sudo apt install pkg-config
sudo apt install libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols
编译
cd Pangolin
mkdir build
cd build
cmake ..
cmake --build .
测试
在你所放置的Pangolin文件下,运行此示例,效果显示是一个红绿蓝立方体,表示即为安装成功。
cd build/examples/HelloPangolin
./HelloPangolin
参考ORB SLAM3安装方法二
最新的ORB-SLAM3要求OpenCV 4.4及以上,但是最好不要安装OpenCV4以上。4默认不会生成.pc文件,最后查看版本的时候查看不到,找不到包。
查看已安装的opencv版本
pkg-config --modversion opencv
DBoW2主要用于回环检测,g2o(General Graph Optimization)主要用于图优化。
ORB-SLAM3的源码包自带DBoW2 and g2o,编译时会自动安装,不用管。
参考博文:https://blog.csdn.net/holly_Z_P_F/article/details/118031317
官方源码编译
cd ORB_SLAM3
chmod +x build.sh
./build.sh
注意:在这之前先打开ORB-SLAM3对应的CMakeLists.txt
找到 find_package(OpenCV 4.4)这行代码,将OpenCV版本号改为find_package(OpenCV 3.2)
因为我们之前安装的就是3.2版本的,而在最新的ORB-SLAM3中要求是4.4及以上版本,改成3.2不影响实验
注意:这个build.sh是官方给的安装脚本,执行这个即可编译。但会出现报错:
这个报错原因就是内存不够,我虚拟机分配的1G内存,执行最后一步对ORB SLAM3进行编译的时候会疯狂的吃内存。
打开build.sh这个脚本,脚本里面内容如下:
echo "Configuring and building Thirdparty/DBoW2 ..."
cd Thirdparty/DBoW2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j
cd ../../g2o
echo "Configuring and building Thirdparty/g2o ..."
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j
cd ../../../
echo "Uncompress vocabulary ..."
cd Vocabulary
tar -xf ORBvoc.txt.tar.gz
echo "Configuring and building ORB_SLAM3 ..."
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j
把这里面的make -j 换成了make -j4 来执行
因为 make -j 的话会自动检测你的核心数,选用合适的数量。我感觉是我分配的太多了,我分了八核,编译时候16G内存都不够,后来我改成了 make -j4 竟然编译好了,而且也不是很慢,就不到十分钟的样子。如果一直不行的话,可以试试换成 make 单核编译,就是速度慢一些而已。
因此建议依次执行如下每条指令进行编译。
在ORB_SLAM3文件夹下打开终端
cd Thirdparty/DBoW2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4
在/ORB_SLAM3下开终端
cd Thirdparty/g2o
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4
在/ORB_SLAM3下开终端
cd Thirdparty/Sophus
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4
在/ORB_SLAM3下开终端
cd Vocabulary
tar -xf ORBvoc.txt.tar.gz
cd ..
在/ORB_SLAM3下开终端
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4
第5步 编译ORB_SLAM3 是最容易出错的,解决办法参考https://blog.csdn.net/qq_64991046/article/details/132011407
EuRoc数据集下载地址:https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets#downloads
下载比较慢,有百度网盘的可以用下面这个地址,我将所有EuRoc数据集(包括bag格式和ASL格式)都下载下来放里面了,链接永久有效
链接:https://pan.baidu.com/s/1-48M4G-CJ-j_AFSeLr8XDw?pwd=wd0s
提取码:wd0s
如图,Downloads下的ASL Dataset Format,点击任意link下载即可/ORB_SLAM3下新建Datasets,将下载好的文件Vicon Room 102放入Datasets,并改名为V102 。
然后在ORB-SLAM3文件夹下创建一个文件夹dataset,
在dataset文件夹下将解压的数据集文件夹放进来
ma_slam /ORB-SLAM3/dataset/V102/mav0
然后,在ORB-SLAM3的源码中,有一个Examples文件夹
里面有一个脚本euroc_examples.sh,打开这个脚本
PS. 最新的ORB-SLAM3版本已经找不到了,可以去下面这个链接拷贝过来
https://github.com/electech6/ORB_SLAM3_detailed_comments
并且里面还有ORB-SLAM3的详细注释,打开这个脚本,里面有ORB-SLAM3各种运行模式针对各个数据集的运行指令,选择下载数据集对应模式下的指令,提取出来(以V102、单目+IMU为例):
./Examples/Monocular-Inertial/mono_inertial_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular-Inertial/EuRoC.yaml “$pathDatasetEuroc”/V102 ./Examples/Monocular-Inertial/EuRoC_TimeStamps/V102.txt dataset-V102_monoi
我加粗的地方需要改,“$pathDatasetEuroc”改为 ./dataset/V102,表示数据集所在的路径。(将dataset-V102_monoi 删除才会保存轨迹,我也不懂为什么,虽然带不带都不会报错)
最终得到下面这条指令
./Examples/Monocular-Inertial/mono_inertial_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular-Inertial/EuRoC.yaml ./dataset/V102 ./Examples/Monocular-Inertial/EuRoC_TimeStamps/V102.txt
报错解决:加载共享库报错解决
在ORB-SLAM3文件夹下打开终端执行这条指令
ORB-SLAM3成功运行
ps.这里好像出了一点小错误,存储轨迹出错了但神奇的是,仍然能看见存储的轨迹文件。