视觉slam开源算法对比orbslam2和3

本文详细介绍了如何安装和编译ORBSLAM2和ORBSLAM3,并在EUROC数据集的双目序列上运行。同时,通过EVO工具对两种算法的绝对位姿误差(APE)和相对位姿误差(PRE)进行了评价,提供了轨迹对齐和误差分析的方法。
摘要由CSDN通过智能技术生成

参考博客---来源于作者:111111111112454545

安装和编译orbslam2和3

数据集为EUROC数据集--选择双目数据

 

一、对于orbslam2:

这条指令在:按照ORB_SLAM3作者的Github说明,从kmavvisualinertialdatasets – ASL Datasets 下载一个ASL格式的序列(本人下载的Machine Hall 01数据集,简称MH01),之后双击打开ORB-SLAM3源码中的脚本“euroc_examples.sh“,找到包含MH01的指令,并将其改为自己的路径。

./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml /home/hhj/data/MH_01_easy/mav0/cam0/data /home/hhj/data/MH_01_easy/mav0/cam1/data Examples/Stereo/EuRoC_TimeStamps/MH01.txt 

./Examples/Stereo/stereo_euroc 指双目的可执行程序
Vocabulary/ORBvoc.txt
Examples/Stereo/EuRoC.yaml代表相机的参数
/home/du/work/proslma_ws/MH_01_easy/mav0/cam0/data相机0拍摄的照片路径(换成自己的)
/home/du/work/proslma_ws/MH_01_easy/mav0/cam1/data 相机1拍摄的照片(换成自己的)
Examples/Stereo/EuRoC_TimeStamps/MH01.txt 时间戳(通过时间戳调用照片)
 

  1. 运行完会在ORB-SLAM2文件夹下产生CameraTrajectory.txt文件,

  2. 这个文件是用来evo评估时与真实值进行对比。记得复制走不然下次运行会被覆盖

orbslam2运行效果:

二、对于orbslam3

运行双目数据:

./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml /home/hhj/data/MH_01_easy Examples/Stereo/EuRoC_TimeStamps/MH01.txt

./Examples/Stereo/stereo_euroc双目可执行文件
./Vocabulary/ORBvoc.txt
./Examples/Stereo/EuRoC.yaml 相机参数
/home/du/work/proslma_ws/MH_01_easy 数据集路径,换成自己的
./Examples/Stereo/EuRoC_TimeStamps/MH01.txt 时间戳
 

运行效果

 

运行双目+imu的数据:

三、使用evo轨迹评价工具对orbslam2和orbslam3在双目数据下进行比较

用EVO评价绝对位姿误差(APE)和相对位姿误差(PRE):

3.1什么是APE和PRE?-------参考博客

绝对轨迹误差(ATE):将对齐后的轨迹直接与真值比较,求取每个状态的RMSE作为整段轨迹总误差。其计算步骤主要包含两个:(1)轨迹对齐 (2)在对齐轨迹与真值之间计算RMSE。

相对轨迹误差(RTE):将整段轨迹按一定规则截取成若干小段。取每一小段的第一个状态求取与真值的变换,利用这个变换将最后一个状态与真值对齐,计算误差。该计算结果即作为该段的误差。重复上述步骤即可以得到多段误差。

RMSE是所有观测值与真值偏差的平方和与观测次数n比值的平方根 术语解释 剩余标准差S,也称均方差。

3.2evo工具的简单使用

evo支持一下几种数据格式:

TUM 轨迹文件
KITTI 位姿
EUROC .csv和.txt文件
ROS bag文件

3.2.1 evo_traj:直接画出轨迹

evo_traj tum CameraTrajectory_ORBSLAM2.txt

这里画出刚刚得出的orbslam2的轨迹图

3.2.2多个轨迹画到一起

evo_traj tum CameraTrajectory_ORBSLAM2.txt CameraTrajectory_ORBSLAM3.txt --ref CameraTrajectory_ORBSLAM2.txt -va -p

把orbslam2和orbslam3的轨迹图合在一起时出现报错,原因可能是orbslam3中时间精度问题。在orbslam2和orbslam3中system.cc中时间精度输出不一样。需要:

把system.cc里面的Line677和Line685的源码中的1e9*(*lT)变成(*lT)

 效果图:

 

这里我想把orbslam2和orbslam3以及真实轨迹合在一起,但是报错了

应该是真实轨迹data.csv文件类型错误,要转换1下

为了进行evo测评需要将其转换为tum格式,转换后第一个第一列为时间戳信息。第二到第四列为位置信息,后四列为四元数表示旋转信息。转换方式如下:

将euroc转换成tum格式

evo_traj euroc data.csv --save_as_tum

 效果图:

 

3.3EVO评价绝对位姿误差(APE)和相对位姿误差(PRE)

3.2.1orbslam3与真实轨迹的APE和PRE

evo_ape tum data.tum CameraTrajectory_ORBSLAM3.txt -va -p

-va:表示对齐后的详细信息

-p:表示画出图像

这里tum后面的第一个文件就是标准文件,用于比较。

 

 

3.2.1orbslam2与真实轨迹的APE和PRE

 

 3.4综合比较两种算法

evo_res orbslam2_mh01_ape.zip orbslam3_mh01_ape.zip -p

 

evo_res orbslam2_mh01_rpe.zip orbslam3_mh01_rpe.zip -p

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值