瀏覽代碼

修改4.2

sangxin 3 年之前
父節點
當前提交
c059abf389
共有 1 個文件被更改,包括 25 次插入15 次删除
  1. 25 15
      docs/chapt4/4.2话题通信实现(Python).md

+ 25 - 15
docs/chapt4/4.2话题通信实现(Python).md

@@ -12,24 +12,24 @@
 
 ### 1.1 如何编写
 
-如果编写一个话题发布者呢?其实很简单,大家记得我们创建李四这个类的时候让其继承了Node节点,像下面这样:
+如果编写一个话题发布者呢?其实很简单,大家记得我们创建作家这个类的时候让其继承了Node节点,像下面这样:
 
 ```
-class Li4Node(Node):
+class WriterNode(Node):
 ```
 
-这是什么意思呢?如果没有学过面向对象的同学可能很懵逼,其实很简单,这种在自己名字里写一个Node的意思就是让Li4Node继承于Node,这样李四就能拥有Node所具备的属性和能力。
+这是什么意思呢?如果没有学过面向对象的同学可能很懵逼,其实很简单,这种在自己名字里写一个Node的意思就是让WriterNode继承于Node,这样李四就能拥有Node所具备的属性和能力。
 
-大家可以把Node理解成人类,Li4Node继承于Node,也就是说李四是一个人类,这样李四就拥有了人类所具备的手和脚等器官,且获得说话吃饭刷B站和关注小鱼公众号的能力了。
+大家可以把Node理解成人类,WriterNode继承于Node,也就是说李四是一个人类,这样李四就拥有了人类所具备的手和脚等器官,且获得说话吃饭刷B站和关注小鱼公众号的能力了。
 
-那代码里的Li4Node继承Node之后,会具备什么能力呢?在本节中用到了以下四个能力:
+那代码里的WriterNode继承Node之后,会具备什么能力呢?在本节中用到了以下四个能力:
 
-- 创建一个话题发布者的能力
+- 创建一个话题发布者的能力 
 - 创建一个定时器的能力
 - 创建一个话题订阅者的能力
 - 获取日志打印器的能力
 
-接下来我们就依次调用Li4Node所继承的能力来实现订阅发布功能。
+接下来我们就依次调用WriterNode所继承的能力来实现订阅发布功能。
 
 
 
@@ -37,7 +37,14 @@ class Li4Node(Node):
 
 用VsCode打开上一章中town_ws工作空间,并打开li4.py。我们在其中添加代码即可。
 
-添加完成后Li4Node类中代码如下:
+编写一个话题发布者一流程:
+
+1. 导入消息类型
+2. 声明并创建发布者
+3. 编写发布逻辑发布数据
+
+
+添加完成后WriterNode类中代码如下:
 
 ```
 #!/usr/bin/env python3
@@ -45,7 +52,7 @@ import rclpy
 from rclpy.node import Node
 from std_msgs.msg import String
 
-class Li4Node(Node):
+class WriterNode(Node):
     """
     创建一个李四节点,并在初始化时输出一句话
     """
@@ -153,6 +160,12 @@ ros2 run village_li li4_node
 
 ### 3.1 代码编写
 
+创建话题订阅者的一般流程:
+1. 导入订阅的话题类型
+2. 创建订阅回调函数
+3. 声明并创建订阅者
+4. 编写订阅回调处理逻辑
+
 在上一部分代码的基础上添加了创建订阅器的函数:
 
 ```
@@ -170,7 +183,7 @@ from rclpy.node import Node
 from std_msgs.msg import String
 from std_msgs.msg import UInt32
 
-class Li4Node(Node):
+class WriterNode(Node):
     """
     创建一个李四节点,并在初始化时输出一个话
     """
@@ -208,7 +221,7 @@ def main(args=None):
     ros2运行该节点的入口函数,可配置函数名称
     """
     rclpy.init(args=args) # 初始化rclpy
-    node = Li4Node()  # 新建一个节点
+    node = WriterNode()  # 新建一个节点
     rclpy.spin(node) # 保持节点运行,检测是否收到退出指令(Ctrl+C)
     rclpy.shutdown() # rcl关闭
 ```
@@ -230,12 +243,9 @@ ros2 run village_li li4_node
 ROS2支持下面两种方式,其中方式2最后是有一个空格的,大家注意
 
 ```
-ros2 topic pub  /sexy_girl_money std_msgs/msg/UInt32 {data:\ 10}
+ros2 topic pub  /sexy_girl_money std_msgs/msg/UInt32 "{data: 10}"
 ```
 
-```
-ros2 topic pub  /sexy_girl_money std_msgs/msg/UInt32 data:\ 10\ 
-```
 
 你可以看到,李四已经收到共计50块钱的稿费了。