欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ORB-SLAM、ORB-SLAM2跑通,运行EuRoC数据集,用EVO评估

程序员文章站 2022-06-12 09:07:26
...

教程目的

小白入门ORB两周,历经千辛万苦跑完了ORB和ORB2,并运行了EuRoC数据集,感谢各路CSDN大神,特此总结!
环境Ubuntu16.04,虚拟机VMware14,建议运行内存8G以上。

ORB-SLAM

首先一定要看github上面的readme.txt,地址:https://github.com/raulmur/ORB_SLAM
按照github上的步骤安装好所需的东西,另附一位大神的中文教程,十分详细,地址:
https://blog.csdn.net/Fishmemory/article/details/53288140
https://blog.csdn.net/u011392872/article/details/78816746
安装过程困难重重,附上大神指导博客,目前解决了我遇到的所有问题,地址:
https://blog.csdn.net/Jinxiaoyu886/article/details/88851884
https://blog.csdn.net/u010811078/article/details/59481126
https://blog.csdn.net/weixin_42056625/article/details/88050474
https://blog.csdn.net/sinat_38343378/article/details/78883919
在cmake和make过程中都会遇到问题,冷静,好好在上面几篇大神总结中找找,肯定有解决办法,大神总结的很完善,我就不多BB了,最后完美运行了example.bag就成功了,祝大家一切顺利。
如果最后实在解决不了,建议重装系统,尤其是安装一些工具的时候,经常运行

sudo apt-get update

如果出现依赖项问题,就会很麻烦,尽快百度解决,解决不了果断点重装系统吧。

ORB-SLAM2

ORB2是对ORB的扩展,如果你完美的运行了ORB,那么会很容易make出ORB2,如果你直接从ORB2开始,中途遇到问题可以从上面的博客中找到解决方法,都是共通的。
同样按照github指示操作,地址:https://github.com/raulmur/ORB_SLAM2
默认大家已经运行了ORB,忽略之前的环境安装环节。
1、克隆文件

git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2

你也可以从github上下载zip解压,但是记得最后文件夹名称改为ORB_SLAM2。
2、打开终端运行

cd ORB_SLAM2
chmod +x build.sh
./build.sh

显示进度完成100%就可以了。

跑通EuRoC数据集

这部分在github上也有详细描述,包括单目相机(Monocular)、双目相机(Stereo)、RGB-D(RGB-D)相机,包括TUM数据集、KITTI数据集和EuRoC数据集,本人运行的是单目的EuRoC数据集,具体操作如下:
1、下载数据集,地址:http://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets,下不下来的可以用迅雷试试,很大,这里我用的是MH05的包。
2、将下载好的数据集放在home文件夹下,打开终端,运行下面命令

cd ORB_SLAM2
./Examples/Monocular/mono_euroc Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml /home/用户名/EuRoC/mav0/cam0/data Examples/Monocular/EuRoC_TimeStamps/MH05.txt 

用户名写你的客户机名称,如果EuRoC文件夹在别的路径下,更改即可,如果下载的是其他数据包,对应更改末尾的MH05.txt,出现任何问题基本都是路径问题,仔细检查路径。
ORB-SLAM、ORB-SLAM2跑通,运行EuRoC数据集,用EVO评估运行中的状态,结束后窗口自动关闭,并在终端显示这一行
ORB-SLAM、ORB-SLAM2跑通,运行EuRoC数据集,用EVO评估
这是将运行后的数据存在这个文件中,后续用EVO评测时,会用他与真实值作对比。

EVO评测

这部分借鉴博客
https://blog.csdn.net/gyhjlauy/article/details/100598260
https://blog.csdn.net/A_L_A_N/article/details/88708979
https://blog.csdn.net/gaoyuzhong123/article/details/103211830

安装EVO

打开终端,运行

sudo apt install python-pip
pip install evo --upgrade --no-binary evo

出现下面问题

Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/usr/lib/python2.7/dist-packages/dateutil/relativedelta.pyc'
Consider using the `--user` option or check the permissions.

运行

pip install evo --upgrade --no-binary evo --user

测试(运行单轨迹,数据集真实值)

打开终端,运行

cd ~/home/用户名/EuRoC/mav0/state_groundtruth_estimate0
evo_traj euroc data.csv --plot

出现问题

name:	data
infos:	19753 poses, 91.747m path length, 98.760s duration
/usr/lib/python2.7/dist-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment.
  warnings.warn('Matplotlib is building the font cache using fc-list. This may take a moment.')
[ERROR] Unhandled error in evo.main_traj
Traceback (most recent call last):
  File "/home/jinshan.lan/.local/lib/python2.7/site-packages/evo/entry_points.py", line 90, in launch
    main_module.run(args)
  File "/home/jinshan.lan/.local/lib/python2.7/site-packages/evo/main_traj.py", line 342, in run
    from evo.tools.plot import PlotMode
  File "/home/jinshan.lan/.local/lib/python2.7/site-packages/evo/tools/plot.py", line 36, in <module>
    import mpl_toolkits.mplot3d.art3d as art3d
  File "/usr/lib/python2.7/dist-packages/mpl_toolkits/__init__.py", line 2, in <module>
    __import__('pkg_resources').declare_namespace(__name__)
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2927, in <module>
    @_call_aside
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2913, in _call_aside
    f(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2940, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 637, in _build_master
    return cls._build_from_requirements(__requires__)
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 650, in _build_from_requirements
    dists = ws.resolve(reqs, Environment())
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 834, in resolve
    raise VersionConflict(dist, req).with_context(dependent_req)
ContextualVersionConflict: (numpy 1.11.0 (/usr/lib/python2.7/dist-packages), Requirement.parse('numpy>=1.12.0'), set(['pandas']))
 
[ERROR] evo module evo.main_traj crashed - no logfile written (disabled)

运行

pip install numpy --upgrade --user

结果如下
ORB-SLAM、ORB-SLAM2跑通,运行EuRoC数据集,用EVO评估

运行多轨迹

数据集自带真实值文件,文件名后缀是.csv,需将.csv文件形式的groundtruth转换为TUM形式的轨迹文件,打开终端,运行

cd /home/用户名/EuRoC/mav0/state_groundtruth_estimate0
evo_traj euroc data.csv --save_as_tum

格式转换参考: https://github.com/MichaelGrupp/evo/wiki/Formats
前文通过测试程序得到TUM形式的轨迹文件:KeyFrameTrajectory.txt(保存在ORB_SLAM2文件夹下)。将轨迹文件复制放入同一个文件夹中,建议新建一个文件夹output,将两个文件放进去
ORB-SLAM、ORB-SLAM2跑通,运行EuRoC数据集,用EVO评估打开终端,运行

cd /home/用户名/output
evo_traj tum KeyFrameTrajectory.txt --ref=data.tum -p --plot_mode xyz -a --correct_scale

ORB-SLAM、ORB-SLAM2跑通,运行EuRoC数据集,用EVO评估

计算绝对位姿误差

打开终端,运行

cd /home/用户名/output
mkdir resultsevo_ape tum data.tum KeyFrameTrajectory.txt  -va --plot --plot_mode xyz -s --save_results results/ape.zip

ORB-SLAM、ORB-SLAM2跑通,运行EuRoC数据集,用EVO评估ORB-SLAM、ORB-SLAM2跑通,运行EuRoC数据集,用EVO评估ORB-SLAM、ORB-SLAM2跑通,运行EuRoC数据集,用EVO评估

计算相对位姿误差

打开终端,运行

cd /home/用户名/output
evo_rpe tum data.tum KeyFrameTrajectory.txt  -va --plot --plot_mode xyz -s --save_results results/rpe.zip

ORB-SLAM、ORB-SLAM2跑通,运行EuRoC数据集,用EVO评估ORB-SLAM、ORB-SLAM2跑通,运行EuRoC数据集,用EVO评估ORB-SLAM、ORB-SLAM2跑通,运行EuRoC数据集,用EVO评估

结果比较

打开终端,运行

cd /home/用户名/output/results
evo_rpe tum data.tum KeyFrameTrajectory.txt  -va --plot --plot_mode xyz -s --save_results results/rpe.zip
evo_res ape.zip -p --save_table table.csv

ORB-SLAM、ORB-SLAM2跑通,运行EuRoC数据集,用EVO评估
只有一个运行结果,所以看不出来对比结果。有多个结果比较时,可以参见官网实例。

大功告成!!!

相关标签: ORB-SLAM slam