ATE定义

参考link

安装evo

由于ros1使用python2.7,如果需要使用evo里将rosbag转为tum格式的命令,需要安装evo1.12.0。因为更高版本的evo就不支持python2.7了。注意pip必须保证pip2。

git clone https://github.com/MichaelGrupp/evo.git -b v1.12.0
cd evo
pip2 install --editable . --upgrade --no-binary evo
python setup.py install

测试安装成功

evo_ape -h
cd test/data
evo_traj kitti KITTI_00_ORB.txt KITTI_00_SPTAM.txt --ref=KITTI_00_gt.txt -p --plot_mode=xz
evo_ape kitti KITTI_00_gt.txt KITTI_00_ORB.txt -va --plot --plot_mode xz
evo_rpe tum fr2_desk_groundtrutr2_desk_ORB.txt -va --plot --plot_mode xyz

ros录制轨迹包

rosbag record  -O  bag_name.bag /ekf_pose /ndt_pose

查看rosbag 类型

rosbag    info   bag_name.bag

rosbag 分割

rosbag filter input.bag output.bag "(topic == '/velodyne_point_cloud' or topic =='/visensor/imu' or topic == '/visensor/left/image_raw') and (t.to_sec() >= 1506117983.884751 and t.to_sec() <= 1506118069.884751)"

使用evo把rosbag转tum

evo_traj bag bag_name.bag /ekf_pose --save_as_tum
evo_traj bag bag_name.bag /ndt_pose --save_as_tum

两种轨迹可视化

evo_traj tum ndt_pose.tum --ref=ekf_pose.tum -p --plot_mode=xy -v --sync --save_plot traj_map.pdf

RPE指标(相对轨迹误差)

evo_rpe tum ekf_pose.tum ndt_pose.tum  -v -p --plot_mode=xy

APE指标(绝对轨迹误差)

制作groundtruth的tum:相关代码在此仓库中

git clone https://gitee.com/wangchunzheng/tum.git

代码说明:

首先把待操作的tum文件放入main.py同级文件夹内
然后修改main.py中 “# 设置groundtruth的位姿值”注释下面代码
euler欧拉角格式:euler(roll, pitch, yaw),编号从0~2
trans位置坐标格式:trans(x, y, z),编号从0~2

最后生成ekf_pose_gt.tum和ndt_pose_gt.tum。下面进行evo评估。
位置结果

evo_ape tum ekf_pose_gt.tum ekf_pose.tum -v -p --plot_mode=xy --save_plot ekf_APE_trans.pdf -r trans_part
evo_ape tum ndt_pose_gt.tum ndt_pose.tum -v -p --plot_mode=xy --save_plot ndt_APE_trans.pdf -r trans_part

姿态结果

evo_ape tum ekf_pose_gt.tum ekf_pose.tum -v -p --plot_mode=xy --save_plot ekf_APE_rot.pdf -r angle_rad
evo_ape tum ndt_pose_gt.tum ndt_pose.tum -v -p --plot_mode=xy --save_plot ndt_APE_rot.pdf -r angle_rad

在evo设置输出误差项对应的option为-r/–pose_relation,并有如下模式:
full, trans_part, angle_rad, angle_deg, rot_part
相比较而言,用平移误差单位为m,旋转误差单位可以是度或弧度,更容易理解。

注意,如果是雷达与相机两坐标系比较,由于刚性连接,两者原点存在固定旋转矩阵,需要转换;如果是ndt_pose与ekf_pose两坐标系比较,原点相同,采样频率不同倒问题不大,但采样时间不同,比方说在当前时间戳前后0.01秒之内的,可以认为是对应的位姿。另外,如果想消除z轴的影响,可以将高度数据设置为0。

evo_traj tum -h 帮助

optional arguments:-h, --help            show this help message and exit-f, --full_check      run all checks and print all statsalgorithm options:-a, --align           alignment with Umeyama's method (no scale) - requires --ref-s, --correct_scale   scale correction with Umeyama's method - requires --ref--n_to_align N_TO_ALIGNthe number of poses to use for Umeyama alignment, counted from the start (default: all)--align_origin        align the trajectory origin to the origin of the reference trajectory--sync                associate trajectories via matching timestamps - requires --ref--transform_left TRANSFORM_LEFTpath to a .json file with a transformation to apply to  the trajectories (left multiplicative)--transform_right TRANSFORM_RIGHTpath to a .json file with a transformation to apply to the trajectories (right_multiplicative)--propagate_transformwith --transform_right: transform each pose and  propagate resulting drift to the next.--invert_transform    invert the transformation of the .json file--ref REF             trajectory that will be marked/used as the reference--t_offset T_OFFSET   add a constant timestamp offset (not adding to --ref  trajectory)--t_max_diff T_MAX_DIFFmaximum timestamp difference for data association--merge               merge the trajectories in a single trajectoryoutput options:-p, --plot            show plot window--plot_relative_time  show timestamps relative to the start of the reference--plot_mode {xy,xz,yx,yz,zx,zy,xyz}the axes for plot projection--ros_map_yaml ROS_MAP_YAMLyaml file of an ROS 2D map image (.pgm/.png) that will be drawn into the plot--save_plot SAVE_PLOTpath to save plot--save_table SAVE_TABLEpath to save table with statistics--serialize_plot SERIALIZE_PLOTpath to serialize plot (experimental)--save_as_tum         save trajectories in TUM format (as *.tum)--save_as_kitti       save poses in KITTI format (as *.kitti)--save_as_bag         save trajectories in ROS bag as <date>.bag--logfile LOGFILE     Local logfile path.usability options:--no_warnings         no warnings requiring user confirmation-v, --verbose         verbose output--silent              don't print any output--debug               verbose output with additional debug info-c CONFIG, --config CONFIG.json file with parameters (priority over command line args)

翻译

可选参数:
-h  显示此帮助消息并退出
-f      检查运行所有检查并打印所有统计数据算法选项:
-a  Umeyama方法对齐(无刻度)-需要 --ref
-s  Umeyama方法纠正刻度 -需要 --ref
--n_to_align N_TO_ALIGN 用于Umeyama对齐的位姿数,从开始算起(默认值:全部)
--align_origin  将轨迹原点与参考轨迹的原点对齐
--sync  匹配时间戳同步关联轨迹 -需要--ref
--transform_left TRANSFORM_LEFT json文件的路径,带有要应用于轨迹的旋转矩阵(左乘法)
--transform_right TRANSFORM_RIGHT       json文件的路径,带有要应用于轨迹的旋转矩阵(右乘法)
--propagate_transform   使用--transform_right:变换每个姿势,并将产生的漂移传播到下一个姿势。
--invert_transform      json文件里旋转矩阵的逆
--ref REF       将被标记/用作参考的轨迹
--t_offset T_OFFSET     添加一个恒定的时间戳偏移量(不添加到--ref轨迹)
--t_max_diff T_MAX_DIFF     数据关联的最大时间戳差异
--merge     将轨迹合并为一条轨迹输出选项:
-p      显示绘图窗口
--plot_relative_time        显示相对于引用开始的时间戳
--plot_mode {xy,xz,yx,yz,zx,zy,xyz}     用于绘图投影的轴
--ros_map_yaml ROS_MAP_YAML     ROS 2D地图图像(.pgm/.png)的yaml文件,将绘制到绘图中
--save_plot SAVE_PLOT       保存绘图的路径
--save_table SAVE_TABLE     使用统计信息保存表的路径
--serialize_plot SERIALIZE_PLOT     序列化绘图的路径(实验)
--save_as_tum       以tum格式保存traj(另存为*.tum)
--save_as_kitti     以kitti格式保存pose(如*.kitti)
--save_as_bag       以rosbag格式保存轨迹(如<date>.bag)
--logfile LOGFILE       本地日志文件路径。可用性选项:
--no_warnings       无需用户确认的警告
-v      详细输出
--silent        不打印任何输出
--debug     带有额外调试信息的详细输出
-c CONFIG, --config CONFIG      .json文件和参数(优先级高于命令行参数)

evo_ape tum -h 帮助内容

Absolute pose error (APE) metric app for TUM trajectory files - (c) evo
authorspositional arguments:位置参数:ref_file              reference trajectory file 在前est_file              estimated trajectory file 在后optional arguments:可选参数:-h, --help            show this help message and exit--t_max_diff T_MAX_DIFF            maximum timestamp difference for data association  数据关联的最大时间戳差异--t_offset T_OFFSET    constant timestamp offset for data association 数据关联的常数时间戳偏移量algorithm options:-r {full,trans_part,rot_part,angle_deg,angle_rad}, --pose_relation {full,trans_part,rot_part,angle_deg,angle_rad} {平移误差(单位米)、旋转误差(矩阵二范数)、(单位度)、(单位弧度)}pose relation on which the APE is based APE评估的位姿参数-a, --align           alignment with Umeyama's method (no scale)-s, --correct_scale   correct scale with Umeyama's method--n_to_align N_TO_ALIGNthe number of poses to use for Umeyama alignment, counted from the start (default: all)--align_origin        align the trajectory origin to the origin of thereference trajectoryoutput options:-p, --plot            show plot window--plot_mode {xy,xz,yx,yz,zx,zy,xyz}the axes for plot projection--plot_colormap_max PLOT_COLORMAP_MAXthe upper bound used for the color map plot (default:maximum error value)--plot_colormap_min PLOT_COLORMAP_MINthe lower bound used for the color map plot (default:minimum error value) 用于颜色贴图打印的下限(默认值:最小错误值)--plot_colormap_max_percentile PLOT_COLORMAP_MAX_PERCENTILEpercentile of the error distribution to be used as theupper bound of the color map plot (in %, overrides--plot_colormap_max) 用作颜色映射图上限的误差分布的百分位数(单位:%)--plot_full_ref       plot the full, unsynchronized reference trajectory 绘制完整的、不同步的参考轨迹--ros_map_yaml ROS_MAP_YAMLyaml file of an ROS 2D map image (.pgm/.png) that willbe drawn into the plot --save_plot SAVE_PLOTpath to save plot--serialize_plot SERIALIZE_PLOTpath to serialize plot (experimental)--save_results SAVE_RESULTS.zip file path to store results--logfile LOGFILE     Local logfile path.usability options:--no_warnings         no warnings requiring user confirmation-v, --verbose         verbose output--silent              don't print any output--debug               verbose output with additional debug info-c CONFIG, --config CONFIG.json file with parameters (priority over command lineargs)

使用evo评测ekf_pose和ndt_pose相关推荐

  1. evo评测VINS-MONO---代码修改、数据格式转换、数据测试

    数据格式(data formal):TUM/EuRoC/Kitti数据集 格式转换 修改VINS-mono轨迹保存代码 由于VINS-Mono保存的轨迹格式与EVO所使用的格式不同,VISNmono输 ...

  2. ORB-SLAM3轨迹保存与evo评测

    ORB-SLAM3轨迹保存与evo评测 为了利用evo对ORB-SLAM3进行评测,花了一点时间走了一些弯路,简单记录一下同时也为需要的人提供一点参考. 我主要用的是ROS接口,用单目+imu跑的Eu ...

  3. evo评测VINS-MONO---TUM数据集

    为了想测试室外场景下VINS-MONO定位情况,室外环境的KITTY数据集因无时间戳,EVO测评较困难. 故选择TUM数据集,outdoors1~8(户外):在校园内的室外场景拍摄,但是数据包里只在开 ...

  4. 1MORE EVO 评测

    万魔推出了新款降噪豆--1MORE EVO,除了延续了上一代轻奢设计语言之外,还采用了3D陶瓷材料设计,耳机会更精致有质感.1MORE EVO在音质和降噪两大方面全新进化,Hi-Res Wireles ...

  5. Vins-fusion GPS融合部分测试(自己的数据ZED+RTK)

    经过前一段时间的积累,目前暂时成功实现了用自己的数据测试实现Vins-fusion+GPS融合,其实放在数据采集处理上的时间比较多,踩了很多坑,效果在一些部分还不是很好,后期持续优化吧 其中黑色轨迹为 ...

  6. 哥伦布视图_在整个赛季中挖洞哥伦布蓝夹克的表现

    哥伦布视图 As a Blue Jackets fan, it is a common experience to lament the team's seeming to start the sea ...

  7. visual assist x太卡了_带你纵横职场的高阶EVO笔记本 华硕灵耀X纵横评测

    首款Intel EVO认证笔记本 华硕灵耀X纵横来袭 作为全球前五大PC厂商,华硕在笔记本行业拥有完善的产品布局,尤其是在高端轻薄型笔记本品类,以灵耀为代表的系列产品无论是在设计上,还是在性能上,都是 ...

  8. SLAM评测工具EVO常用功能介绍【正在刷夜的李哈哈】

    看完这个我觉得你肯定会用evo了 前言 官方网页介绍 实际使用方法 绘制轨迹:evo_traj 比较绝对位姿误差:eva_ape 比较相对位姿误差:evo_rpe 如何对比kitti数据集下的轨迹(k ...

  9. 微星 Summit E16Flip Evo和 微星 Summit E14 Flip Evo区别对比 评测

    该系列笔记本通过英特尔 Evo 平台认证,支持 360° 翻转,搭载 16:10 黄金比例显示屏,配备全新 13 代酷睿处理器 Raptor Lake i7-1360P,拥有 12 核(4 个性能核 ...

最新文章

  1. mysql slave 配置_【mysql5.6】 数据库主从(Master/Slave)配置记录
  2. 1.6 为什么使用向上转型而不直接创建子类对象?
  3. openresty获取nginx请求url中的所有参数
  4. leetcode 878. Nth Magical Number | 878. 第N个神奇的数字(数学问题)
  5. 机器不学习:CNN 入门讲解1-什么是卷积
  6. 硬盘检测工具Smartmontools安装、部署、使用
  7. 无需羡慕,今后.NET开发想拿30k也可以毫不费劲!
  8. 论文浅尝 | 利用边缘标签的网络嵌入强化方法
  9. android 串口一直打开_串口通讯你真的会了吗?不妨来看看这些经验
  10. 安装2000数据库的时候挂起
  11. 幸福框架:可扩展的、动态的、万能的 编号生成器
  12. C51单片机LCD1602驱动程序
  13. 基于SURF算法的图像拼接方法
  14. Qt实现YOLO目标检测及其界面制作
  15. Ubuntu20.04 虚拟机 联网
  16. Mac电脑如何设置屏幕保护程序的颜色?
  17. shell学习四十三天----临时性文件的建立与使用
  18. C2: 宽基窄基 场内场外
  19. 穿过黑暗的夜,才懂黎明的晨
  20. 每日新闻:阿里、商汤设立人工智能实验室;美光科技收购英特尔股份;2019十大战略科技发展趋势;北京明年允许自动驾驶车辆开展测试...

热门文章

  1. 每天作死一道题——1、2扑克牌魔术(趣题学算法)
  2. 驱动的安装和卸载工具 Pnputil的使用方法
  3. 2021年年终总结:工作10年宝妈级别的前端开发工程师年终总结
  4. 《麻省理工斯隆商学院过程咨询课II》
  5. 微信小程序云开发之云数据操作
  6. 排球比赛第一局计分系统
  7. android p一加6好吗,一加6T出厂便搭载Android P,你期不期待?
  8. R语言实现文本挖掘和tagxedo词云可视化技术
  9. C#实现RPC(远程过程调用)
  10. Java 虚拟机枚举 GC Roots 解析