你好,我是小鱼。恭喜你完成了ROS2中非常重要的话题通信部分的学习,本节我们将一起做一个小练习,巩固一下我们的学习成果。
话说李四有个兄弟叫李三,他是李四的哥哥。他看李四写的艳娘传奇非常的有意思,自己也想拿来品鉴一下。但他又不想给李四钱。 所以我们的任务就是,在李家村里创建李三这个节点,然后为其订阅sexy_girl话题数据。
你可以将其分为下面几步:
#!/usr/bin/env python3
import rclpy
from rclpy.node import Node
from std_msgs.msg import String
class Li3Node(Node):
"""
创建一个李三节点,并在初始化时输出一个话
"""
def __init__(self):
super().__init__("li3")
self.get_logger().info("大家好,我是李三,李四他哥,我可以白嫖李四的小说!")
self.sub_ = self.create_subscription(String,"sexy_girl",self.recv_callback,10)
def recv_callback(self,novel):
self.get_logger().info('李三:我已经收到了:%s' % novel.data)
def main(args=None):
"""
ros2运行该节点的入口函数,可配置函数名称
"""
rclpy.init(args=args) # 初始化rclpy
node = Li3Node() # 新建一个节点
rclpy.spin(node) # 保持节点运行,检测是否收到退出指令(Ctrl+C)
rclpy.shutdown() # rcl关闭
entry_points={
'console_scripts': [
"li4_node = village_li.li4:main",
"li3_node = village_li.li3:main"
],
}
从图中可以看到,li3并没有给li4钱。