|
@@ -1,25 +1,31 @@
|
|
|
# 4.1 ROS2话题介绍
|
|
|
|
|
|
-你好,我是小鱼。你还记得ROS镇的故事吗?后来ROS2镇长来了之后,王二订报的方式也发生了改变,让我们一起来看看吧。
|
|
|
+大家好,我是小鱼。上一章节中,我们采用了面向对象的方法创建了作家李四和单身狗王二,本节课我们就通过ROS2的话题机制,让李四发布小说,让王二付费订阅小说。
|
|
|
|
|
|
-## 1.讲个故事
|
|
|
+## 1.背景故事
|
|
|
|
|
|
-李四是一名擅长写小说的作家,王二是一名喜欢看小说且单身多年的单身狗。王二最喜欢看李四写的《艳娘传奇》这个小说。
|
|
|
+李四是一名擅长写小说的作家,既然是作家,肯定要写文章才行,所以李四就写了一本颜色小说《艳娘传奇》。
|
|
|
|
|
|
-所以王二(Node)出于对《艳娘传奇》(Topic)的兴趣,订阅了(Subscribe)李四(Node)发布(Publish)的小说。
|
|
|
+王二是一名单身多年的单身狗,单身狗没啥爱好,但看《艳娘传奇》肯定是必看的。
|
|
|
|
|
|
+所以本节课我们就要想办法让王二可以看到李四写的小说,有什么好的办法吗?
|
|
|
+
|
|
|
+办法就是ROS2的话题机制。
|
|
|
+
|
|
|
+我们让王二(Node)通过订阅(Subscribe)李四(Node)发布(Publish)的《艳娘传奇》(Topic)来欣赏小说的。
|
|
|
|
|
|
|
|
|
## 2.话题介绍
|
|
|
|
|
|
-看完上面的内容,我们来总结一下,上面其实讲了一下ROS2中Topic通信方式。Topic是一种发布订阅模型。
|
|
|
+故事其实就是讲了一下ROS2中Topic通信方式,Topic通信模型是一种发布订阅模型。
|
|
|
|
|
|
-这里的王二和李四可以理解为两个节点,这两个节点可以在同一个功能包下,也可以在不同的功能包下。
|
|
|
+### 2.1 话题的发布订阅模型
|
|
|
|
|
|
-李四节点会创建一个发布者(Publisher)来发布一个话题(艳娘传奇,小鱼取个英文名叫sexy_girl)。王二也是一个节点,他创建了一个订阅者(Subscriber)来订阅李四发布的话题sexy_girl。
|
|
|
+这里的王二和李四两个节点,通过话题来互相通信(传递数据)。
|
|
|
|
|
|
-那艳娘传奇的内容是什么呢?我们暂且规定为由文字组成的字符串(连插图都没的那种)。
|
|
|
+李四节点会创建一个发布者(Publisher)来发布一个话题(艳娘传奇,小鱼取个英文名叫sexy_girl)。单身汉王二节点,他创建了一个订阅者(Subscriber)来订阅李四发布的话题sexy_girl。
|
|
|
|
|
|
+那艳娘传奇的内容是什么呢?我们暂且规定为由文字组成的字符串(连插图都没的那种)。
|
|
|
|
|
|
|
|
|
```mermaid
|
|
@@ -32,21 +38,21 @@ B -- 订阅 --> C[Node王二]
|
|
|
|
|
|
|
|
|
|
|
|
-### 2.1话题通信有哪些需要注意的规则呢?
|
|
|
+### 2.2 话题通信有哪些需要注意的规则呢?
|
|
|
|
|
|
需要满足以下规则:
|
|
|
|
|
|
- 话题名字是关键,订阅者必须知道话题的名称才能完成订阅;
|
|
|
-- 同一个人可以订阅多个话题,同时也可以发布多个话题,就像一本书的作者也可以是另外一本书的读者;
|
|
|
+- 同一个人(节点)可以订阅多个话题,同时也可以发布多个话题,就像一本书的作者也可以是另外一本书的读者;
|
|
|
- 同一个小说不能有多个作者(版权问题),但跟小说不一样,同一个话题可以有多个发布者。
|
|
|
|
|
|
|
|
|
|
|
|
+## 3.话题相关的工具
|
|
|
|
|
|
+### 3.1 RQT工具之rqt_graph
|
|
|
|
|
|
-## 3.topic工具
|
|
|
-
|
|
|
-### 3.1 查看节点关系查看rqt_graph
|
|
|
+查看节点关系查看rqt_graph
|
|
|
|
|
|
ROS2作为一个强大的工具,在运行过程中,我们是可以通过命令来看到节点和节点之间的数据关系的。
|
|
|
|
|
@@ -62,13 +68,12 @@ rqt_graph
|
|
|
|
|
|

|
|
|
|
|
|
-#### 3.1.1 rqt_graph
|
|
|
|
|
|
> 你可以尝试改变菜单栏的选项,看一看下面图的变化,感受一下rqt_graph工具的强大。
|
|
|
|
|
|
这是一个很重要的工具,小鱼在学习和使用ROS2的过程中经常会用到它,来看一看数据到底是怎么走的,它可以帮我们搞清楚一个节点的输入和输出是什么。
|
|
|
|
|
|
-### 3.2 ros2 topic 指令
|
|
|
+### 3.2 ROS2话题相关命令行界面(CLI)工具
|
|
|
|
|
|
还记得上一节的ros2 node指令吗?ros2也支持很多强大的topic指令。可以使用下面的指令查看。
|
|
|
|