6.4 继续学习 rostopic
Last updated
Last updated
现在我们已经了解了什么是ROS的消息,接下来我们开始结合消息来使用rostopic。
rostopicpub可以把数据发布到当前某个正在广播的话题上。 用法:
示例
以上命令会发送一条消息给turtlesim,告诉它以2.0大小的线速度和1.8大小的角速度开始移动。
这是一个非常复杂的例子,因此让我们来详细分析一下其中的每一个参数。
这条命令将会发布消息到某个给定的话题。
(单个破折号)这个参数选项使rostopic发布一条消息后马上退出。
这是消息所发布到的话题名称。
这是所发布消息的类型。
(双破折号)这会告诉命令选项解析器接下来的参数部分都不是命令选项。
这在参数里面包含有破折号-(比如负号)时是必须要添加的。
正如之前提到的,在一个turtlesim/Velocity消息里面包含有两个浮点型元素:linear和angular。
在本例中2.0是linear的值,1.8是angula的值。
这些参数其实是按照YAML语法格式编写的,这在YAML文档中有更多的描述。
你可能已经注意到turtle已经停止移动了。 这是因为turtle需要一个稳定的频率为1Hz的命令流来保持移动状态。 我们可以使用rostopic pub -r
命令来发布一个稳定的命令流:
我们也可以看一下rqt_graph中的情形 可以看到rostopic发布器节点(红色)正在与rostopic echo节点(绿色)进行通信:
正如你所看到的,turtle正沿着一个圆形轨迹连续运动。 我们可以在一个新终端中通过rostopic echo命令来查看turtlesim所发布的数据。
rostopic hz命令可以用来查看数据发布的频率。 用法:
我们看一下turtlesim_node发布/turtle/pose时有多快:
你会看到:
现在我们可以知道了turtlesim正以大约60Hz的频率发布数据给turtle。 我们也可以结合rostopic type和rosmsg show命令来获取关于某个话题的更深层次的信息:
到此我们已经完成了通过rostopic来查看话题相关情况的过程,接下来我将使用另一个工具来查看turtlesim发布的数据。
这条命令以1Hz的频率发布速度命令到速度话题上。