ROS机器人程序设计(原书第2版)3.7 绘制标量数据图
3.7 绘制标量数据图
我们可以使用ROS中现有的一些通用工具轻松地绘制标量数据图。当然非标量数据也可以绘制,但是要分别在不同的标量域里进行。我们之所以在此仅讨论标量数据,是因为对于大多数非标量数据,有专门的工具能够更好地对其进行表示,我们会在后面进行部分介绍,例如图形、位姿、方向和角度等。
用rqt_plot画出时间趋势曲线
在ROS系统中,标量数据可以根据消息中提供的时间戳作为时间序列绘制。然后,我们就能够在y轴上使用rqt_plot工具绘制标量数据。rqt_plot工具有一套功能强大的参数语法,允许我们在结构化消息中指定多个字段(当然使用了相当简明的方式),也可以在GUI中手动添加或删除主题和字段。
为了能够实际展示rqt_plot工具,我们使用example4节点,它在两个不同的主题中分别发布一个标量和一个矢量(非标量),这两个主题分别是温度(temp)和加速度(accel)。在这些消息中的值是随机生成的,所以它们没有实际意义,仅用于示范曲线绘制。那么首先以下面的命令运行节点:
为了能够画出消息,我们必须知道具体的格式;如果你不知道具体格式则使用rosmg show?<msg type>获取。对于标量数据,我们通常使用data作为字段名来表示实际的值。因此,对于temp主题,数据格式为Int32,运行下面命令:
只要节点正常运行,我们就能看到曲线图随输入消息一直变化。如下图显示。
在示例节点提供的accel主题里,我们看到一个Vector3的消息(你可以通过rostopic type/accel来查看),我们可以在一个plot图中分别绘制三个字段的曲线。Vector3消息包含三个字段x、y和z。我们可以使用逗号(,)来区分字段或者像下面一样使用更加简洁的方式:
绘制的曲线图如下:
我们还可以将每个字段分开绘制。由于rqt_plot不直接支持这个功能,因此我们需要使用rqt_gui将三个图表手动分开,如下图所示:
rqt_plot的GUI支持三种绘图前端。在ROS hydro之前,只有matplotlib支持。现在,我们可以使用更快的QT前端,同时它支持更多的时间序列。可以点击配置(configuration)按钮选择(如右图所示):
相关文章
- 用户活跃,该怎么分析?
- 我用了五步,搭建一个数据分析体系
- 聊聊用户行为分析
- 提高数据可视化效果的五个原则
- 十张图,详解用户分层怎么做
- 使用数据降低医疗保健成本
- 商业智能和数据分析的区别是什么?
- 数据分析终极一问:自然增长率,到底怎么算!
- 使用实时数据面临的主要挑战
- 大数据有助于推动虚拟医疗的未来发展
- 我手把手修改了一篇数据分析报告
- 从评估到落地,详解数据指标体系搭建指南
- 从管、存、算、规、治看数据资产管理
- 聊一聊美化Matplotlib三个小技巧
- 超赞!!3D可视化工具透视神经网络内部
- 终于有人把AB实验讲明白了
- Cloudera Data Platform引入Apache Iceberg的五大原因
- 数据分析MVP方法是什么?该怎么用?
- Apache Flink 在小米的稳定性优化和实践
- 构建下一代万亿级云原生消息架构:Apache Pulsar 在 vivo 的探索与实践