教程目的
小白入门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,出现任何问题基本都是路径问题,仔细检查路径。
运行中的状态,结束后窗口自动关闭,并在终端显示这一行
这是将运行后的数据存在这个文件中,后续用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
结果如下
运行多轨迹
数据集自带真实值文件,文件名后缀是.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,将两个文件放进去
打开终端,运行
cd /home/用户名/output
evo_traj tum KeyFrameTrajectory.txt --ref=data.tum -p --plot_mode xyz -a --correct_scale
计算绝对位姿误差
打开终端,运行
cd /home/用户名/output
mkdir results
evo_ape tum data.tum KeyFrameTrajectory.txt -va --plot --plot_mode xyz -s --save_results results/ape.zip
计算相对位姿误差
打开终端,运行
cd /home/用户名/output
mkdir results
evo_rpe tum data.tum KeyFrameTrajectory.txt -va --plot --plot_mode xyz -s --save_results results/rpe.zip
结果比较
打开终端,运行
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
只有一个运行结果,所以看不出来对比结果。有多个结果比较时,可以参见官网实例。
大功告成!!!