【ORB-SLAM3】从零开始安装到用安卓手机采集mono+imu数据跑自己的数据

本文大致记录三个部分:
1.配置ORB-SLAM3的运行环境并跑通数据集
2.配置ORB-SLAM3魔改版,标定设备,采集数据,启动ORB-SLAM3
3.安装evo插件,进行评估,后期可能会加入ORB-SLAM3和VINS的精度比较

介绍

我的电脑以及Ubuntu系统情况:
联想台式电脑 win11系统安装Ubuntu18.04,另外也介绍了网卡和显卡的驱动安装问题。
根据ORB-SLAM3的官方介绍,我们整理一下所需要准备的工具和依赖:

  • cmake3.22、git、OpenCV3.2.0、Pangolin0.6、eigen3.3.3

1.安装ROS(ROS1)以及其他依赖

在之前的一篇博客中,介绍了ROS的详细安装方法,网上也有很详细的教程,各种坑基本也有人踩过,其中比较烦人的一点就是网络代理问题(应该是吧)。但是现在网上鱼香ROS大佬发明了一种一键安装ROS的方法—一键安装ROS。 可以自动检测Ubuntu版本,找到对应的ROS进行安装,甚至还可以自动切换源…太牛了。虽然但是,如果时间比较充裕,还是建议用虚拟机手动试一下,这样能更好的熟悉Linux。
安装指令如下:

wget http://fishros.com/install -O fishros && . fishros

ROS是一个管理机器人的操作平台,里面有很多指令来控制你的设备。这里安装ROS是想着是不是可以用ROS来启动ORB-SLAM3呢,后续也可能加入VINS,甚至是测试一些相机,都需要ROS来发布命令节点。而且ROS是自带一些环境的,比如比较难安装的OpenCV,因为我的是Ubuntu18.04,上述指令会自动安装ROS-melodic。

pkg-config --modversion opencv

在这里插入图片描述
我们并没有安装OpenCV,所以这里的3.2.0版本是ROS-melodic自带的。
ROS安装完成了,这里有一个小问题,因为我们安装过程中选择了自动换源,大佬写的脚本会将我们的源换成最合适的,但是会造成后续的下载无法进行(我是这样的),建议再去软件和更新中换回来

【ORB-SLAM3】从零开始安装到用安卓手机采集mono+imu数据跑自己的数据_第1张图片
一些编译或者下载过程的依赖,git和g++自己安装就好了,一般没有什么问题。

2.安装Cmake

我之前装机的时候用到了Cmake,但是是用apt从仓库中下载的,查询了一下版本,显示的是cmake3.10,建议升级,我记得好像后续安装evo有一步要求version大于3.12。
tips:cmake的升级方式有很多,但是千万别卸载原先的再升级,cmake是支持版本覆盖的,如果卸载掉原来的版本,一些依赖也会挂掉

# 查看cmake版本
cmake --version

1)下载源码安装包(也可以官网自己选择合适的版本):

wget https://cmake.org/files/v3.22/cmake-3.22.1.tar.gz

2)解压缩后进入目录:

# 给予最高的读写和执行权限
chmod 777 ./configure
./configure

tips:ubuntu 下修改文件访问权限chmod 777 -R *血的教训!没事别乱开权限!

3) 编译&安装:

make
sudo make install

4)替换一下原先的版本位置:

sudo update-alternatives --install /usr/bin/cmake cmake /usr/local/bin/cmake 1 --force

tips:这一步好像是指向问题,我只见过Python有这种情况,但是网上很多教程是有的,应该是不用加也可以,保险起见还是加上

5)查看版本:

cmake --version

3.安装Pangolin

Pangolin是用来可视化的,这一步对版本要求很高,我之前用v0.6版本是通过了的。
安装Pangolin 0.6(稳定版):官网下载地址

1)安装依赖项:

sudo apt-get install libglew-dev libboost-dev libboost-thread-dev libboost-filesystem-dev
sudo apt-get install ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev libpng-dev

#2)解压、编译、安装:

#  在主目录下(把第三方库全部放在这里)
mkdir 3rdparty
cd 3rdparty

unzip Pangolin-0.6.zip
cd Pangolin-0.6

mkdir build && cd build

cmake -DCPP11_NO_BOOST=1 ..
make
sudo make install

3)验证:

在pangolin-0.6下有个examples文件,里面有源码文件HelloPangolin,自己cmake编译一下出现立方体即可。
【ORB-SLAM3】从零开始安装到用安卓手机采集mono+imu数据跑自己的数据_第2张图片

4.安装OpenCV

因为我们之前是安装过ROS的,其自带的OpenCV3.2.0官网上也是符合要求:
在这里插入图片描述
所以节约时间就不在折腾了,如果后续版本出现版本问题,再慢慢排查。
因为安装OpenCV实在是有点慢…
这里检查一下版本、库文件、头文件就行:

pkg-config --modversion opencv
pkg-config --cflags opencv
pkg-config --libs   opencv

5.安装eigen3

eigen3是一个矩阵库,基本上不管是哪个slam都需要这个库的。eigen库有个特点就是该库只有头文件,干净整洁,不需要依赖其他,调用的时候也很方便。
就不推荐直接安装了(sudo apt-get install libeigen3-dev),因为安装的版本取决于你的仓库,下载的eigen也不一定是我们想要的。
源码安装:文件

# 还是放到之前建好的3rdparty下
cd eigen3.3.3
mkdir build && cd build
# 这一步是编译生成执行程序
cmake .. && make  

#  这一步是把头文件放到本地的usr/local/include中
sudo make install

# 防止后续源代码调用头文件get不到,我们把头文件向上一步包含
sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include

【ORB-SLAM3】从零开始安装到用安卓手机采集mono+imu数据跑自己的数据_第3张图片
至此,所有的环境准备已完成。

6.安装ORB-SLAM3

1)进入文件,打开CMakeLists.txt,修改命令

git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3

将find_package(Eigen3 3.1.0 REQUIRED)修改为

find_package(Eigen3 REQUIRED)

2)build.bash文件查看

其中make -j会自动跑满你的cpu线程,性能弱一点的可以自行更改调用参数。
这个文件也可以看到,ORB-SLAM3用的g2o优化库(非线性优化)和DBow2库(回环检测相关)它本身是包含的,自己调用不需要我们配置了。
【ORB-SLAM3】从零开始安装到用安卓手机采集mono+imu数据跑自己的数据_第4张图片

3)给与权限 执行

chmod +x build.sh

# 查看颜色发生改变,可以执行
ls -la 

./build.sh
#  我是直接编译通过了的,有问题可以将问题复制,自行查询,应该都是少了一些依赖,直接apt就好了

7.测试ORB-SLAM3

1)先去EuRoc数据集官网下个数据

https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets
tips:因为vins集成ros效果非常好,vins-mono测试的时候我们直接下载.bag文件就好了,但是ORB-SLAM3有源码启动方式和ros启动两种方式,我们感受一下源码启动方式,这样能清楚的看出来orb运行所需要的文件以及格式。
进入官网后,不要点击bag了,向上去点击link链接,这里我下载的是Machine Hall下面的MH_01_easy,下载一整个压缩文件,解压缩后发现里面有一个mav0文件夹,一整个复制,在我们的ORB-SLAM3文件夹下新建一个名为datasets的文件夹,放入。
【ORB-SLAM3】从零开始安装到用安卓手机采集mono+imu数据跑自己的数据_第5张图片
你可以用tree命令来看看mav0里面有啥,包含的关系怎样的。

2)跑数据集

先贴一条命令:

./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml ./datasets/MH01 ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt dataset-MH01_mono

1.从命令中可以看出,终端的执行位置是在ORB-SLAM3文件夹下,不要执行错位置,包含关系还是挺复杂的。
2. ./Examples/Monocular/mono_euroc 是一个可执行文件,文件下还有他的源码
3. ./Vocabulary/ORBvoc.txt 是他的词袋路径,用于回环检测
4. ./Examples/Monocular/EuRoC.yaml yaml肯定是配置文件了,相机内参和畸变参数之类的
5. ./datasets/MH01 这个是要跑的文件
6. ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt 这个是他配置好的时间戳了,不懂为啥要分开…,一帧一帧的图片与之对应
7. dataset-MH01_mono 这个是要保存的轨迹文件名称,测试不加这一行也可以

【ORB-SLAM3】从零开始安装到用安卓手机采集mono+imu数据跑自己的数据_第6张图片
【ORB-SLAM3】从零开始安装到用安卓手机采集mono+imu数据跑自己的数据_第7张图片

OK!
–2023-05-11,后续继续更

你可能感兴趣的:(android,ubuntu)