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

教程目的

小白入门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评估_第1张图片运行中的状态,结束后窗口自动关闭,并在终端显示这一行
命令
这是将运行后的数据存在这个文件中,后续用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 
    import mpl_toolkits.mplot3d.art3d as art3d
  File "/usr/lib/python2.7/dist-packages/mpl_toolkits/__init__.py", line 2, in 
    __import__('pkg_resources').declare_namespace(__name__)
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2927, in 
    @_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评估_第2张图片

运行多轨迹

数据集自带真实值文件,文件名后缀是.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评估_第3张图片打开终端,运行

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

ORB-SLAM、ORB-SLAM2跑通,运行EuRoC数据集,用EVO评估_第4张图片

计算绝对位姿误差

打开终端,运行

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

ORB-SLAM、ORB-SLAM2跑通,运行EuRoC数据集,用EVO评估_第5张图片ORB-SLAM、ORB-SLAM2跑通,运行EuRoC数据集,用EVO评估_第6张图片ORB-SLAM、ORB-SLAM2跑通,运行EuRoC数据集,用EVO评估_第7张图片

计算相对位姿误差

打开终端,运行

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

ORB-SLAM、ORB-SLAM2跑通,运行EuRoC数据集,用EVO评估_第8张图片ORB-SLAM、ORB-SLAM2跑通,运行EuRoC数据集,用EVO评估_第9张图片ORB-SLAM、ORB-SLAM2跑通,运行EuRoC数据集,用EVO评估_第10张图片

结果比较

打开终端,运行

cd /home/用户名/output/results
mkdir 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评估_第11张图片
只有一个运行结果,所以看不出来对比结果。有多个结果比较时,可以参见官网实例。

大功告成!!!

你可能感兴趣的:(ORB-SLAM)