【ROS】话题基础使用

关于ROS中的话题

话题采用异步通信的机制,是节点间用来传输信息的重要总线,使用发布/订阅模型,数据由发布者传输给订阅者,同一话题的订阅者或发布者可以不唯一,即在话题通信过程中为节点间多对多的关系。
消息是话题中传输的数据,具有一定的类型和数据结构,包括ROS提供的标准类型和自定义类型;使用与编程语言无关的 .msg 文件定义,编译过程中生成对应的代码文件。
不过话题相对于服务来讲,实时性不高。

在这里记录下话题相关的基础操作,在本篇文章展开前,需要关注ROS节点等相关内容,具体可以参看链接。现在假设我们还以ROS经典小乌龟案例展开。

此处,我们按照节点那篇博文进入,我们已经打开了小乌龟对话框和节点话题计算图。
【ROS】话题基础使用_第1张图片
【ROS】话题基础使用_第2张图片
刚才已经说了,话题相对于两个节点间的通信中继,从上图中可以看到,根据信息的走向箭头可以知道,/teleop_turtle 为消息发布者,经过矩形框中的 /turtle1/cmd_vel 这个话题, /turtlesim 为消息订阅者,订阅了 /turtle1/cmd_vel 这个话题传输过来的信息。
另外 /turtlesim 作为 /turtle1/cmd_vel话题的订阅者,其也为 /turtle1/pose 和 /turtle1/color_sensor 话题的发布者。
我们知道了节点与话题之间的关系后,可以进一步通过命令进行得到节点与话题间传输的信息内容。

使用命令查看话题的信息

1 打开终端,在终端输入话题相关命令如下:

rostopic -h

【ROS】话题基础使用_第3张图片
从上面可以看到 rostopic 包含了几个命令

rostopic bw /your topic // 显示所用话题的带宽

【ROS】话题基础使用_第4张图片

rostopic delay /your topic // 显示话题的延迟,但是直接调用命令后,显示下面的情况

【ROS】话题基础使用_第5张图片

rostopic echo /your topic // 打印话题中的信息

【ROS】话题基础使用_第6张图片

rostopic info /your topic // 显示话题中使用的信息类型 如这里的 geometry_msgs/Twist

【ROS】话题基础使用_第7张图片

rostopic find msg_type // 查找包含对应消息类型的话题

在这里插入图片描述

rostopic hz /your topic // 监听话题发布者的消息发布速率

【ROS】话题基础使用_第8张图片

rostopic list // 获取当前的话题列表

【ROS】话题基础使用_第9张图片

rostopic type /your topic // 话题的消息类型

在这里插入图片描述

rostopic pub /your_topic /topic_msg_type /msg_value // 为发布者发布信息
例 让小乌龟在y轴上前进3个单位:
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist “linear:
x: 0.0
y: 3.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0”

运行命令前:
【ROS】话题基础使用_第10张图片
运行命令后:
【ROS】话题基础使用_第11张图片

还可以加参数,-r 2 为以 2hz 的发布速度一直在y方向上 以 1单位的速度运动

rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 2 “linear:
x: 0.0
y: 1.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0”

使用 rostopic hz /turtle1/cmd_vel 查看
【ROS】话题基础使用_第12张图片
以上是关于 ROS中话题基本命令的测试,希望对您有帮助!

你可能感兴趣的:(ROS,自动驾驶,人工智能,机器学习)