使用evo工具评估ORB_SLAM2在TUM数据集上的运行轨迹
目录
- 一、安装evo工具
- 二、运行RGB-D基准数据集
- 1.下载TUM数据集
- 2.关联rgb图像和depth图像
- 3.运行rgb-d数据集
- 三、使用evo评估
- 1.常用指令
- 2.绝对轨迹误差
- 3.相对位姿误差
一、安装evo工具
最新的evo工具支持的Python环境为Python 3.8+
,有下面两种方法安装最新版本的evo:
1.命令行利用pip工具直接安装
pip install evo --upgrade --no-binary evo
2.源代码安装
git clone https://github.com/MichaelGrupp/evo.git
cd evo
pip install --editable . --upgrade --no-binary evo
二、运行RGB-D基准数据集
1.下载TUM数据集
TUM数据集官网下载地址,TUM数据集里面有深度图像和RGB图像。当使用单目模式时,仅用到rgb文件夹里的图片;当使用RGB-D模式时,需要用到depth和rgb两个文件夹里的图片,而且需要associate.py脚本文件关联 RGB 图像和深度图像。我们以rgbd_dataset_freiburg3_long_office_household
数据集为例。
2.关联rgb图像和depth图像
在这步中我们需要使用RGB 图像和深度图像的关联文件,ORB-SLAM2的作者在examples/RGB-D/associations/路径下提供了某些序列的关联文件。我们也可以使用 TUM官网提供的python 脚本associate.py关联 RGB 图像和深度图像。将associate.py脚本放到下载并且解压好的rgbd_dataset_freiburg3_long_office_household/路径下,执行以下命令:
python associate.py rgb.txt depth.txt > associations.txt
上面命令的含义就是对齐彩色图像和深度图像的时间戳,然后关联结果写入到associations.txt
中。
3.运行rgb-d数据集
接下来执行运行命令,最熟悉不过了:
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUMX.yaml PATH_TO_SEQUENCE_FOLDER ASSOCIATIONS_FILE
将TUMX.yaml改为TUM1.yaml,TUM2.yaml或TUM3.yaml,分别用于freiburg1,freiburg2和freiburg3序列。将PATH_TO_SEQUENCE_FOLDER
改为解压好的数据集文件夹路径。将ASSOCIATIONS_FILE
改为相应关联文件的路径。
简单来说命令分为五个部分:
- TUM RGB-D可执行文件
- 训练好的词袋
- 参数文件
- 解压好的数据集路径
- 关联文件路径
rgbd_tum程序运行完成之后,会保存相机和关键帧轨迹文件到ORB_SLAM2根目录下。
三、使用evo评估
1.常用指令
绘制单个轨迹,groundtruth.txt是数据集的真实轨迹,-p
表示绘制图像。
evo_traj tum groundtruth.txt -p
三维空间中数据集中相机的真实轨迹图像,存在闭环,单位是m。
xyz坐标系的视图,显示各个时间下相机的x、y、z坐标,纵轴单位为m,横轴单位为s。
rpy视图,显示各个时间下相机的r、p、y坐标,纵轴单位为deg,横轴单位为s。
绘制多个轨迹:真实轨迹和刚刚运行得到的相机轨迹。
evo_traj tum groundtruth.txt CameraTrajectory.txt -p
上面的轨迹在旋转和平移上不对齐,可以通过--ref
参数指定参考轨迹,并且添加参数-a来对齐轨迹
evo_traj tum --ref=groundtruth.txt CameraTrajectory.txt -p -a
可以看到运行轨迹和真实轨迹几乎一致,看不出来又两根线,ORB_SLAM2强大的后端优化和闭环在这里就体现出来了。
轨迹图都如此的吻合,xyz坐标必然也很精确,相比而言z坐标误差较大。
rpy坐标下,y很精确,r和p有较大误差。
如果是单目程序,还需要添加一个参数-s
进行尺度上面的对齐
evo_traj tum --ref=groundtruth.txt CameraTrajectory.txt -p -a -s
或者直接使用参数-as
同时使用旋转和平移以及尺度上面的对齐
evo_traj tum --ref=groundtruth.txt CameraTrajectory.txt -p -as
通过观察,上面的轨迹在x和y轴上面变化不大,可以添加参数--plot_mode=xz
将轨迹压缩在xz平面上。
evo_traj tum --ref=groundtruth.txt CameraTrajectory.txt -p -as --plot_mode=xz
大多数情况下,还是选择将轨迹投影到xy平面上,就是俯视图。
通过上面的实践,我们总结常用的命令格式如下:
evo_traj tum --ref=groundtruth.txt CameraTrajectory.txt -p -as
evo_traj tum --ref=groundtruth.txt CameraTrajectory.txt -p -as --plot_mode=xy
2.绝对轨迹误差
evo_ape tum groundtruth.txt CameraTrajectory.txt -p -as
max:表示最大误差;mean:平均误差;median:误差中位数;min:最小误差;rmse:均方根误差;sse:和方差/误差平方和;std:标准差。
APE w.r.t. translation part (m)
(with Sim(3) Umeyama alignment)max 0.025939mean 0.009091
median 0.008388min 0.000931rmse 0.009895sse 0.243401std 0.003906
3.相对位姿误差
和绝对轨迹误差参数相同,使用相机轨迹的原因在于它包含了关键帧轨迹,反映的是全局一致的地图。
evo_rpe tum groundtruth.txt CameraTrajectory.txt -p -as
RPE w.r.t. translation part (m)
for delta = 1 (frames) using consecutive pairs
(with Sim(3) Umeyama alignment)max 0.030021mean 0.004404median 0.003749min 0.000176rmse 0.005210sse 0.067444std 0.002783
照片本质上是拍照时的场景在相机的成像平面上留下的一个投影。它以二维的形式反映了三维的世界。显然,这个过程丢掉了场景的一个维度,也就是所谓的深度(或距离)。
使用evo工具评估ORB_SLAM2在TUM数据集上的运行轨迹相关推荐
- 手把手教你用EVO工具评估SLAM数据集TUM、KITTI、EuRoC(附代码)
EVO工具评估TUM/KITTI/EuRoC 数据集 (1) 评估TUM数据集 以RGB-D数据集:rgbd_dataset_freiburg3_walking_xyz数据集为例 绘制轨迹并对齐: e ...
- 周末学习总结(LIO标定+kitti数据集的使用+evo工具的使用+开源数据集+ssh的使用)
周末学习总结 LIO标定 lidar_IMU_calib lidar_align kitti数据集的使用 开源数据集 evo工具的使用 ssh 的使用 LIO标定 网上开源的标定包,用的比较多的是浙江 ...
- SLAM中evo评估工具(用自己的数据集评估vinsFusion)
目录: 配置标题文件修改 源码修改 第一处 第二处 第三处 重新编译工程 安装evo 1.安装命令 2.常用指令 运行vinsFusion生成位姿估计文件 使用evo评估轨迹 配置标题文件修改 主要根 ...
- TUM数据集官方说明相应的评估文件evaluate_rpe.py和evaluate_ate.py的使用
一.TUM数据集使用方法 TUM数据集的格式解读地址:https://vision.in.tum.de/data/datasets/rgbd-dataset/file_formats TUM的RGBD ...
- rosbag命令 | EVO工具 的使用
目录 一 rosbag录制及查看 1 rosbag话题录制 2 rosbag信息查看 3 rosbag转换格式(bag2txt) 4 rosbag截取录制时间 二 EVO工具使用命令 1 evo_tr ...
- vins-mono保存、重载地图、evo工具测试
vins-mono保存.重载地图.evo工具测试 地图保存与加载 先跑起来 修改地图保存的路径 保存地图 重载地图 evo测评 evo工具 修改数据格式 使用evo绘制轨迹 与双目ORB_SLAM2进 ...
- 利用Realsense D435和Mocap制作TUM数据集
利用Realsense D435和Mocap制作TUM数据集 开门见山 步骤 开门见山 步骤 如果有Mocap,根据mocap系统指示获取Groundtruth,我实验室的mocap为optitrac ...
- EVO工具的安装和使用(window10)
给测试的同学简单说一下EVO的安装与使用哈,从Python环境到EVO使用,会比较啰嗦,有经验的同学可以自己跳着看哈(写的有点急,有错告诉我,我改一下)(建议认真,对着步骤做,有些同学复制命令,粘贴时 ...
- ROS下获取kinectv2相机的仿照TUM数据集格式的彩色图和深度图
准备工作: 1. ubuntu16.04上安装iai-kinect2, 2. 运行roslaunch kinect2_bridge kinect2_bridge.launch, 3. 运行 rosru ...
最新文章
- springboot数据源配置属性
- CSS弹出二级多列菜单和DIV布局实例 - 仿IBM官网首页
- Codeforces Round #639 (Div. 2)(AB)
- c语言结构体中整形数组初始化,c – 将{0,0}在结构体中初始化数组?
- 用ajax替换html代码,替换Ajax响应一个div的内部HTML(Replace inner HTML of a div w
- 中国信通院专家当选ITU-T分布式账本焦点组副主席
- RTT 使用menuconfig 和cubeMux 在移植过来的模板工程上增加一个串口2
- springboot 2.4.4java.sql.SQLException Access denied for user ‘root‘@‘localhost‘ (using password YES)
- bzoj1814: Ural 1519 Formula 1 动态规划 插头dp
- FPS游戏自动枪械识别+压枪(以PUBG为例)
- 用python实现千图成像工具,快给你的男/女神做一个吧~
- 中国移动商城登陆WP8应用商店
- 不用U盘从linux重装win系统,不用U盘和光盘安装win7旗舰版系统
- 用C语言实现推箱子小游戏基础程序
- NodeMcu arduino ESP8266 使用Ticker库(多任务处理)
- Python+Django+sqlite3实现基于内容的音乐推荐系统
- matlab sskf,[转载]fortran语言常用函数
- 任务的同步与通信_读书笔记_6
- 关于COM类工厂80070005和8000401a错误分析及解决办法(DCOM)
- office365离线安装