本文主要介绍Rosbag和evo常用的一些命令。
一、rosbag命令详细解读
1. rosbag record 录制时使用
rosbag record -a 录制所有话题 rosbag record -a test.bag 录制所有话题,到指定包下 rosbag record /topic_name 录制指定话题(默认按照录制结束时间命名) rosbag record -O filename.bag /topic_name 指定生成数据包的名字filename.bag并录制指定话题 rosbag record -b 4092 /topic_name 扩大录制内存限制
2. rosbag play 回放时使用
rosbag play name.bag 回放数据包
rosbag play -r 1.5 name.bag 1.5倍速回放,按一定频率回放,-r选项用来设定消息发布速率;
rosbag play -l name.bag 按一定频率回放,-l选项用来设定循环播放;
rosbag play name.bag --topic /topic1 只播放感兴趣的topic;
-d 用来指定延迟播放的时间(sec);
-s 参数用来指定从几秒开始;rosbag play -s 10 xx.bag
-u 参数表示仅播放包的前几秒信息;rosbag play -u 10 xx.bag
-r 参数用来指定播放速度
-l 循环播放
在上述播放命令执行期间,空格键可以暂停播放。
如果想修改topic名字播放
rosbag play file.bag /topic_name:=/reame_topic_name
#//topic_name是原topic,reame_topic_name是新topic
rosbag play --pause record.bag 启动时暂停按空格键开始回放 rosbag play recorded1.bag recorded2.bag 如果播放两个及以上bag包,那么他们会第一帧对其,后面根据第一帧时间戳的时间差播放。
rosbag play -s 5 recorded1.bag 启动5秒进入包中。
回放完后,我一般会用 rostopic list
查看下发布的主题,确保是我需要的:
rostopic list
3. rosbag info 查看bag包的信息
rosbag info 包名.bag #查看录制包的信息
rosbag info -h 用于获取关于 rosbag 工具的更多信息
rosbag info -y name.bag 输出yaml配置参数
rosbag info -y -k duration name.bag 输出 bag 中指定域的信息,比如只显示持续时间
rosbag info 显示包文件内容的可读摘要,包括开始和结束时间,主题及其类型,消息计数、频率以及压缩统计信息,常见用法如下:
显示一个 bag 包的信息:
rosbag info name.bag $ rosbag info foo.bag path: foo.bag version: 2.0 duration: 1.2s start: Jun 17 2010 14:24:58.83 (1276809898.83) end: Jun 17 2010 14:25:00.01 (1276809900.01) size: 14.2 KB messages: 119 compression: none [1/1 chunks] types: geometry_msgs/Point [4a842b65f413084dc2b10fb484ea7f17] topics: /points 119 msgs @ 100.0 Hz : geometry_msgs/Point
4. rosbag help 查看帮助信息
rosbag --help
5. rosbag check 检查包
rosbag check xxx.bag 检查一个 bag 在当前系统中是否可以回放
6. rosbag compress 压缩包
rosbag compress xxx.bag 如果录制的 bag 很大,我们可以压缩它,默认的压缩格式是 bz2 rosbag compress -j xxx.bag 可以添加 -j 手动指定压缩格式为 bz2 rosbag compress --lz4 xxx.bag 也可以使用 LZ4 来压缩数据
7. rosbag decompress 解压缩包
rosbag decompress xxx.bag 压缩完后,使用需要解压缩
8. rosbag filter 截取包
rosbag filter temp.bag temp1.bag "topic=='/odom' or topic=='/tf'" rosbag文件提取话题数据,生成temp1.bag只保留/odom,/tf数据 rosbag filter my.bag out.bag "t.to_sec() >= 123564.77 and t.to_sec() <= 794545.88" 过滤,保留某个时间段的数据
rostopic echo -b file_name.bag -p /odom > odom_name.txt 将file_name.bag文件中/odom话题的消息转换到odom_name.txt文件中
9. rosbag fix 修复包
rosbag fix name.bag 修复包(暂时没用)
10. rosbag reindex 备份包
rosbag reindex xxx.bag 如果回放遇到问题,提示 reindex 的话,直接执行即可,这个会自动生成一个原 bag 的备份
11. rosbag 转换格式(bag2txt)
rostopic echo -b file_name.bag -p /topic_name > Txt_name.txt #在bag下将指定话题转换成txt
二、EVO工具使用命令
1. evo_ape命令
计算绝对位姿误差,常被用作绝对轨迹误差。
比较估计轨迹和参考轨迹并计算整个轨迹的统计数据,适用于测试轨迹的全局一致性。
通过 evo_ape +数据格式 + --help查看更多参数的含义以及如何使用(如:evo_ape euroc --help)。
evo_ape 格式 参考轨迹 估计轨迹 [可选项] #格式:包括kitti、euroc、tum等数据格式 #可选项:有对齐命令、画图、保存结果等
-r full ———考虑旋转和平移误差得到的ape,无单位(unit-less) -r trans_part ———考虑平移部分得到的ape,单位为m -r rot_part ———考虑旋转部分得到的ape,无单位(unit-less) -r angle_deg ———考虑旋转角得到的ape,单位°(deg) -r angle_rad ———考虑旋转角得到的ape,单位弧度(rad) 不添加-r和可选项,则默认为trans_part
-v ———详细模式/-verbose mode
-a ———采用SE(3) Umeyama对齐,只处理平移和旋转(轨迹匹配)
-as ———采用Sim(3) Umeyama对齐,同时处理平移旋转和尺度
-s ———仅对齐尺度(尺度修正)
不添加-s表示默认尺度对齐参数为1.0,即不进行尺度对齐
注:单目SLAM是没有尺度的,所以两个轨迹一定不会一样大)
--plot ———画图 --plot_mode xyz———选择三维xyz画图模式,可选参数[xy, xz, yx, yz, zx, zy, xyz],默认为xyz
--save_plot ———保存画图结果,后接保存路径 --save_result———存储结果,后接保存路径以及压缩文件名称,存储后得到zip压缩文件
栗1:
evo_ape kitti 参轨.txt 估轨.txt -r full --plot --plot_mode xyz #-r full:计算考虑平移和旋转部分误差的ape #省略-a:进行平移和旋转对齐 #省略-v: 以详细模式显示 #–plot: 画图 #–plot_mode: 选择三维xyz画图模式,可选参数为[xy, xz, yx, yz, zx, zy, xyz],默认为xyz
栗2:
#多个轨迹画到一起 evo_traj tum 1**.txt 2**.txt --ref 1**.txt -va -p #其中ref是参考轨迹,-va是对齐后的详细信息,-p是画出图像
栗3:
evo_ape euroc 参轨.csv 估轨.txt -r full -va --plot --plot_mode xyz --save_plot ./VINSplot --save_results ./VINS.zip #VINSplot: 表示存储在当前路径下的名称为VINSplot的文件中。 #保存文件的类型可以通过evo_config设置。 #常见的可以保存成png,pdf等,详见evo_config部分
栗4:
evo_ape kitti a.txt b.txt #不进行画图 此时的终端输出为: max:表示最大误差; mean:平均误差; median:误差中位数; min:最小误差; rmse:均方根误差; sse:和方差、误差平方和; std:标准差。
2. evo_rpe命令
evo_rpe是相对位姿评估工具,evo_ape是绝对位姿评估工具。
两者使用方式基本一样
3. evo_traj命令
evo_traj 命令用于绘制轨迹,比较两个 topic 数据之间的的偏差 ,输出轨迹文件,转换数据格式等功能。evo共支持kitti、tum、euroc这三个公开数据集格式,同时也支持bag文件里的topic。
evo_traj bag 包名.bag /话题名1 /话题名2 .... -p //该命令:适用于一个录制包下,相同消息类型的话题 //参数-p 可绘制出轨迹的图形,两个 topic 对应的坐标曲线。
evo_traj可以将轨迹转换成其他格式(因euroc格式只对euroc数据集的groundtruth数据有意义,所以没有–save_as_euroc)。
* | –save_as_bag | –save_as_kitti | –save_as_tum |
---|---|---|---|
bag | yes | yes | yes |
euroc | yes | yes | yes |
kitti | no(no timestamps) | yes | no(no timestamps) |
tum | yes | yes | yes |
evo_traj euroc data.csv --save_as_tum #将euroc转换成tum格式
ps:可通过 evo_traj +数据格式 + --help查看更多参数的含义以及使用(evo_traj euroc --help )
4. evo_res命令
5. evo_fig命令
6.evo_config命令
evo_config show——查看设置文件中的参数和参数的简要注释
evo_config set以下参数:(evo配置工具)
参数 | 含义 | 可选项 |
---|---|---|
plot_export_format | 输出图像时图像存储格式 | 常用png,pdf等 |
plot_linewidth | 作图时线的宽度 | matplotlib支持的宽度,默认1.5 |
plot_reference_color | 图像中参考轨迹的颜色 | black,red,green等 |
plot_reference_linestyle | 参考轨迹的线型 | matplotlib支持的线型,默认– |
plot_seaborn_style | 图像背景和网格 | whitegrid,darkgrid,white,dark |
plot_split | 是否分开显示/存储图像 | false/true |
plot_figsize | 画图的图像大小 | 默认宽高均为6,可使用其他值 |
table_export_format | 表格数据输出格式 | 常用 csv,excel,latex,json |
例如: evo_config set plot_seaborn_style whitegrid 将画图背景更改成白色网格 evo_config set plot_fontfamily serif plot_fontscale 1.2 将字体改为衬线型并调为1.2倍大小 evo_config set plot_reference_linestyle - 将画图所使用的线型改为 - evo_config set plot_figsize 10 9 将所画图的图像大小调整为10 9(宽 高) evo_config reset 将参数还原到默认值
evo_config
命令并不怎么常用,多数情况下,我们正常使用是不需要额外设置evo的一些配置项的。
你可以使用如下命令,查看evo默认的一些系统参数设置:
evo_config show --brief
运行上面的命令之后,你的终端上就可以输出如下信息:
{ "console_logging_format": "%(message)s", "euler_angle_sequence": "sxyz", "global_logfile_enabled": false, "plot_axis_marker_scale": 0.0, "plot_backend": "Qt5Agg", "plot_export_format": "pdf", "plot_figsize": [ 6, 6 ], "plot_fontfamily": "sans-serif", "plot_fontscale": 1.0, "plot_invert_xaxis": false, "plot_invert_yaxis": false, "plot_linewidth": 1.5, "plot_multi_cmap": "none", "plot_reference_alpha": 0.5, "plot_reference_color": "black", "plot_reference_linestyle": "--", "plot_seaborn_palette": "deep6", "plot_seaborn_style": "darkgrid", "plot_split": false, "plot_statistics": [ "rmse", "median", "mean", "std", "min", "max" ], "plot_texsystem": "pdflatex", "plot_trajectory_alpha": 0.75, "plot_trajectory_cmap": "jet", "plot_trajectory_linestyle": "-", "plot_usetex": false, "plot_xyz_realistic": true, "ros_map_alpha_value": 1.0, "ros_map_unknown_cell_value": 205, "save_traj_in_zip": false, "table_export_data": "stats", "table_export_format": "csv", "table_export_transpose": true }
如果你想要对某一项参数进行修改,比如你想修改输出的图像格式,你可以使用如下命令:
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
参考文献:
rosbag命令 | EVO工具 的使用_evo bag 绘制轨迹-CSDN博客
ROS 机器人技术 - rosbag 详细使用教程! - 知乎
evo_res指令使用及各参数使用效果_evo res-CSDN博客
标签:plot,name,evo,--,bag,rosbag From: https://www.cnblogs.com/Gaowaly/p/18514045