使用EVO

一.安装

打开终端,输入如下内容即可安装evo的最新版。

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

注意了,最新版本的evo只支持Python3.6+,因此如果你在用Python 2.7,最高能安装的evo版本是1.12.0,可以输入pip install evo==1.12.0安装。顺便解释一下–no-binary evo的意思,作者在Github中说,如果没有这个参数,绘图时标签可能会有点问题,因此建议按作者说的来。


安装好之后终端输入:evo,如下图所示。

在这里插入图片描述

二.使用EVO

关于上述功能的官方解释:

国际惯例,先附上一个参数详解的文章https://www.freesion.com/article/1774434121/

————————————————
一些参数的含义

指令功能
evo_ape用于评估绝对位姿误差
evo_rpe用于评估相对位姿误差
evo_traj这个主要是用来画轨迹、输出轨迹文件、转换数据格式等功能
evo_res比较来自evo_ape或evo_rpe生成的一个或多个结果文件的工具
evo_fig(实验)工具,用于重新打开序列化图(使用–serialize_plot保存)
evo_config这个主要用于evo工具全局设置和配置文件操作
原文链接:https://blog.csdn.net/u013564470/article/details/126284625


定性的分析:可视化轨迹*********

  1. evo_traj:直接画出轨迹
    参考的基准轨迹不一样,所以这俩个命令绘制出的轨迹不完全一样;
    其中ref是参考轨迹,-va是对齐后的详细信息,-p是画出图像
0)轨迹的长度,记录位置个数,持续时长信息:
evo_traj tum a.txt
(1)单独绘制轨迹:
evo_traj tum a.txt -p
(2)将多个轨迹画到一起 : 
//进一步当我们想要画两个或者两个以上的轨迹时:
evo_traj tum a.txt b.txt c.txt -p
//如果我们想要两个轨迹匹配到同一个原点那么可以使用参数如下:
evo_traj tum a.txt b.txt c.txt -p --align_origin 
又比如下面的命令:
evo_traj kitti 0.txt 1.txt --ref=0.txt -p --plot_mode=xz
//解释:上面命令中参数--ref表示设置轨迹为参考,--plot_mode=xz表示轨迹投影到xz轴显示。

还有一些额外的可选项通过-h选项查看参数的介绍和用法。

(3)也可以使用–plot_mode {xy,xz,yx,yz,zx,zy,xyz}来选择单独绘制某个平面的信息

如:evo_traj tum KeyFrameTrajectory.txt CameraTrajectory2.txt --ref KeyFrameTrajectory.txt -va -p --plot_mode=xy



定量的分析:计算轨迹误差****************
2. evo_ape:绝对位姿误差的计算()
使用ape的时候无需给出–ref 的文件,tum 后第一个文件即为标准文件,也就是:
evo_ape tum 真实.txt 测试.txt -va -p

//选择的参数介绍
evo_ape tum KeyFrameTrajectory.txt KeyFrameTrajectory.txt  -va -p

//选择的参数介绍
evo_ape tum -h   

//获得单目SLAM生成的轨迹文件时,此时我们需要和真实轨迹进行对比,
//但是我们知道单目SLAM是没有尺度的,所以两个轨迹一定不会一样大,
//所以我们需要对轨迹进行sim(3)相似变换,那么evo就会自动的对轨迹的位移、旋转、
//参数-a、-s、-p即为选择的参数,分别表示进行轨迹的匹配和尺度修正,以及-p表示画图误差的图和两个轨迹的图
//尺度进行对齐,完成这个任务的代码如下:
evo_ape tum data.tum CameraTrajectory.txt -a -p -s
  
  1. evo_rpe:相对位姿误差的计算,该命令用于比较两个轨迹之间的相对轨迹误差,也就是两个时间戳相同时刻的轨迹轨迹误差,更具体来说,两组轨迹持续时间相同,但是采样频率不同,那么之间就会有一些少量的相同时间戳,那么这些相同的时间戳就可以进行一对一比较误差。同样的这些误差也会有平均误差、最大、最小误差等等结果。
命令使用方法如下:
 //使用rpe的时候无需给出–ref 的文件,tum 后第一个文件即为标准文件,也就是:`evo_rpe tum 真实.txt 测试.txt  -va -p`
//evo_rpe xxx a.txt b.txt
如:evo_rpe tum KeyFrameTrajectory.txt KeyFrameTrajectory.txt  -va -p
//evo_rpe命令依然可以添加一些可选参数项,你同样可以使用如下命令查看可选参数的具体介绍和用法:
evo_rpe xxx -h
//解释:其中xxx为tum、kitti等

4.1. 使用evo_res对精度进行ATE/RPE结果对比:

(官方地址:https://gitcode.net/mirrors/michaelgrupp/evo?utm_source=csdn_github_accelerator
在上面,我们已经分别将ORB和SPTAM的轨迹与真值进行了对比,得到了各自的精度。但我们肯定还想知道各个方法间的精度对比,这就需要用evo_res命令了。
例如,在这里,我们使用evo_ape (groundtruth.txt是参考(ground truth))计算来自ORB-SLAM和S-PTAM的两条轨迹的绝对位姿误差,并将单个结果绘制并保存到evo_res的.zip文件中:

(1) 第一个轨迹(ORB Stereo):

mkdir results
evo_ape kitti KITTI_00_gt.txt KITTI_00_ORB.txt -va --plot --plot_mode xz --save_results results/ORB.zip

(2)第二个轨迹(S-PTAM):

evo_ape kitti KITTI_00_gt.txt KITTI_00_SPTAM.txt -va --plot --plot_mode xz --save_results results/SPTAM.zip

(3)将俩个结果在一个度量标准下进行比较
Evo_res可以用来比较来自指标的多个结果文件,即:

  • 打印信息和统计信息(默认)
  • 绘制结果图
  • 将统计信息保存在一个表中

在这里,我们使用上面的结果来生成一个图表和表格,并且将结果保存在一个pdf文件中:


evo_res results/*.zip -p --save_plot results/results.pdf

在这里插入图片描述
按照大佬们的指示,然后就可以写论文了(狂笑。)
注意:我的电脑之前环境错乱过,所以有时候并不能生成zip结果文件,不知道为啥子,所以这里将results文件夹的路径改成 ./results ,另外(绝对路径不好使,只能是./)
我自己的命令应该为:

# 先新建一个 results 文件夹
*******************
ape生成zip压缩包使用命令1:
evo_ape tum groundtruth.txt PLRGBDCameraTrajectory.txt -va --plot --plot_mode xz --save_results ./results/PLRGBD.zip
ape生成zip压缩包使用命令2:
evo_ape tum groundtruth.txt ORB2CameraTrajectory.txt -va --plot --plot_mode xz --save_results ./results/ORB.zip
使用evo_res命令3:evo_res ./results/*.zip -p --save_plot results/results.pdf

生成的结果是
在这里插入图片描述
results.pdf内容是:
在这里插入图片描述
终端输出的是:
在这里插入图片描述

其中:

  • max:表示最大误差;
  • mean:平均误差;
  • median:误差中位数;
  • min:最小误差;
  • rmse:均方根误差;
  • sse:和方差、误差平方和;
  • std:标准差。

且将该结果保存在一个csv文件中,可以将终端结果生成一个表格:

evo_res results/*.zip -p --save_table results/results.csv

(另外:同门在雷达仿真中直接使用测试轨迹和真是轨迹的rosbag数据格式也使用evo_res命令进行对比来者,猜测在视觉中也能用:evo_traj tum traj_1.txt traj_2.txt traj_3.txt --save_as_bag)

三.使用脚本批量处理轨迹文件并且使用evo评估

参考:https://blog.csdn.net/phy12321/article/details/109902015

#!/bin/bash
function echo_and_run { echo -e "\$ $@" ; read input; "$@" ; read input; }
echo "********** EVO Testing ************"
echo "evo on sequence $2"
cd /home/phy12321/code/Multi_view_Cylinder_Net/Logs/"${1}" || exit
ref_pose="/dataset/kitti/poses/${2}.txt"
pred_pose="${1}/pred_pose_${2}.txt"
save_results="${1}/evo_ape_${2}.zip"
save_plot="${1}/ape_${2}.pdf"
echo -e "\n\n" | echo_and_run evo_ape kitti "${ref_pose}" "${pred_pose}" --save_results "${save_results}" -v --plot_mode xz --save_plot "${save_plot}"

ref_pose="/dataset/kitti/poses/${2}.txt"
pred_pose="${1}/pred_pose_${2}.txt"
save_results="${1}/evo_rpe_${2}.zip"
save_plot="${1}/results/rpe_${2}.pdf"
echo -e "\n\n" | echo_and_run evo_rpe kitti "${ref_pose}" "${pred_pose}" -v --save_results "${save_results}" -va --plot_mode xz --save_plot "${save_plot}"

四 。evo_config用法

如果你想要对某一项参数进行修改,比如你想修改输出的图像格式,你可以使用如下命令:
evo_config set plot_export_format png

又比如你想做如下的操作:
1.将画图背景更改成白色网格
evo_config set plot_seaborn_style whitegrid
2.将字体改为衬线型并调为1.2倍大小
evo_config set plot_fontfamily serif plot_fontscale 1.2 
3.将画图所使用的线型改为 -
evo_config set plot_reference_linestyle - 
4.将所画图的图像大小调整为10 9(宽 高)
evo_config set plot_figsize 10 9 
5.当你想要将配置还原为默认时,只需要使用命令:
evo_config reset
当你对evo的使用有一个大致的理解之后,我觉得你再摸索和使用就会方便很多,当你看完本篇博客之后,如果你还想进一步了解它更细致的使用,你可以浏览的evo在github上的wiki,网址为:https://github.com/MichaelGrupp/evo/wiki


————————————————
版权声明:本文为CSDN博主「一点儿也不萌的萌萌」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011341856/article/details/104594392

五. 评估激光雷达SLAM轨迹与单目视觉SLAM轨迹精度

原文链接:https://blog.csdn.net/u011341856/article/details/104594392

当你需要评估视觉SLAM与激光SLAM的轨迹精度时。
(1)你的激光雷达与相机是捆绑在一起。此时相机和激光雷达理论上一定具有形状一样的轨迹,不管你是把哪个轨迹作为参考轨迹,你都需要做如下操作:

  • 将激光雷达的轨迹保存为tum数据格式(timestamp x y z q_x q_y q_z q_w),千万不要保存为kitti数据集的格式,因为没有时间戳,无法进行尺度修正和对齐变换。
  • 激光雷达轨迹和相机轨迹要在时间戳和轨迹起终点上都对齐。做法是:删减激光雷达的轨迹使得起点和终点和相机轨迹是一样的,然后将相机轨迹的初始位置对应的时间设置为激光雷达的开始时间,终点时间也依次设置,并记录你激光雷达轨迹的每一个位置对应的时间。这么设置的目的就是为了后续两个轨迹的匹配。
  • 使用evo进行轨迹显示或者计算误差等操作,可以参考如下命令。
evo_traj tum a.txt b.txt --ref=a.txt --correct_scale -a -p
-a:轨迹对齐;
--correct_scale:修正尺度。

(2)相机和激光雷达分别不同次测量。首先要保证两种轨迹是走的同样的路线,形状上不要有太大的差异。然后按照(1)中的方法进行轨迹和时间戳的对齐,然后进行evo评估操作。

另外,这位博主按照evo的思路自己实现了一个带尺度的轨迹对齐算法,如果你有兴趣了解轨迹对齐是什么原理,可以参考这位博主的这部分代码,这个代码也可以作为一个对齐之后的可视化工具,查看每一个对应点之间的位置。
地址:https://github.com/zm0612/align_trajectory

(3)如果相机和激光雷达不但不是同时测量,而且两次测量的轨迹也不一致,可以参考我的另外一篇博客,其中有介绍怎么应对这种情况下的轨迹对齐。
《激光slam坐标系和视觉slam坐标系对齐,两个slam系统之间坐标对齐,轨迹对齐,时间戳对齐》:https://blog.csdn.net/u011341856/article/details/109113247




原文链接:https://blog.csdn.net/u011341856/article/details/104594392

附1:上一个evo参数大全集:

https://blog.csdn.net/qq_34213260/article/details/112548249
官方的参考来源:https://github.com/MichaelGrupp/evo/wiki


附2 列出常用参数:

保存图片

--save_plot  保存的路径
如保存成pdf文件:--save_plot results/results.pdf

合并轨迹

--merge

给出数据的最大时间戳差异

--t_max_diff “具体差异”
  • 4
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
HTC EVO 4G烧号图文教程手机烧号全过程 浏览: 16881 | 更新: 2012-01-11 15:28 | 标签: htc . 17 4 . 全文阅读 分步阅读 步骤 1 2 3 4 5 6 7 8 HTC EVO 4G烧号图文教程 手机烧号全过程,希望对想烧号的朋友.有所帮助! 工具/原料 HTC EVO 4G 电脑,,数据线 驱动 步骤/方法 一:装驱动 数据线连上手机,手机会提示找到新设备,选择安装,选择安装文件位置,安装就可以了 二:找端口 手机键盘输入##3424#,进入写号模式 查看端口 如我的端口是COM84 三:安装QPST和QXDM QPST: QXDM: 下载请参考,参考资料地址 四:清ESN和MEID(方法自己搜一下) 五:下载解SPC软件(baidu搜索)选好端口 点读SPC(S)记住你的SPC, 写号的前提 六:安装workshop2.7,开始写号 本人使用的是workshop3.5,用法与workshop2.7一致,见下图找到端口,我这边是COM84 打开workshop3.5 选好端口 我的是COM84 Connect 然后READ 输入SPC 密码270551 点SPC,点SEND,解锁点OK完成 写ESN,之前请好ESN了,现在写ESN输入ESN 然后Write,现实success即可Read 进行修改 写IMSI 吧MIN和DIR NUBER为IMSI 46003后几位,MCC改为460,MNC改为03,SID为各地,见附录,NID 65535,按上面图片更改即可 接下去EVDO设置很简单 输入AN AAA即可 IP Behaviour 改为simple IP,其他数据按图片设置,然后write更新PRL最后关闭点YES 没有workshop3.5的朋友,写号设置EVDO如下 第一步:启动QPST 并连接上所选串口,确认选择连接了pre 后,进入ServiceProgramming 界面,读取话机数据,检查CDMA/CDMA2 中使用的数据是否与你当前写号配置一致。升级1.1/1.2 后MCC 和MNC 会发生变化请在此重新写入。在SYSTEM 选项卡中,检查输入你的Home SID/NID。 进入“M.IP”Sheet 界面,这里将是能否通过数据验证并EV 的关键。数据需如图填写,Mobile IP项一定要选择Simple IP only。第0项的profile里面,请将NAI修改为你手机的IMSI号;第二步:在“M.IP”Sheet 界面选择列表中第二项进行编辑。此处NAI 的填写与真正的PPP 拨号密码及EV 的AN/AAA 无关,请按图示格式以确保能通过认证。确保清空MN-HA SPI、MN-AAASPI、DMU Mobile Authenticator 三项。此处请反复读写确认。在NAI 和Tethered 输入框中,将“ESN 号@sprintpcs.com”填入NAI,将”ESN 号@modem.sprintpcs.com”填入Tethered.第三步:PPP 拨号选项卡分别如图设置UM 及AN,此处仍请逐项检查,反复读写,保证内容正确,将UM 和AN 两界面都调整后一次性提交“Writeto Phone”写入手机。填写User:“[email protected]”、Password:“vnet***”;填写Special Settings 中的Primary 和secondary DNS,都为“255.255.255.255”填写完UM后,在AN菜单项中填写你的 IMSI为用户名,密码为AN-AAA最后到手机的 设置——无线控制——移动网络设置 里面 改成 evdo only 确认一下手机能否上EVDO | 我按照这个方法,EVDOXX成功,欢迎大家交流 注意事项 写号有风险,需要谨慎!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值