📅  最后修改于: 2023-12-03 15:34:44.723000             🧑  作者: Mango
在ROS中,订阅者(Subscriber)是一种ROS节点,它可以监听特定的Topic,并接收和处理来自发布者(Publisher)发送的消息。Python语言可以用于创建和管理ROS节点,并且它提供了一个方便的ROS库来实现ROS节点之间的通信。
本文主要介绍如何使用Python语言创建ROS订阅者,并订阅消息来实现特定的功能。
在Python中,首先需要导入rospy
库,用来创建ROS节点。有两个必要的步骤要完成,在创建新节点之前,必须首先初始化rospy
:
#!/usr/bin/env python
import rospy
# 初始化ROS节点
rospy.init_node('my_subscriber', anonymous=True)
上述代码初始化了一个名为my_subscriber
的新ROS节点,并将其设置为匿名。当节点被初始化后,就可以开始创建订阅者节点。
在ROS中,订阅者监听来自发布者的消息。在Python语言中,使用rospy.Subscriber()
函数可以创建一个新的订阅者对象。
# 创建订阅者节点
sub = rospy.Subscriber('topic_name', MsgType, callback)
其中,topic_name
是订阅的Topic名称,MsgType
是Topic消息的类型,callback
是一个回调函数,用于处理每个收到的消息。下面是一个示例代码:
#!/usr/bin/env python
import rospy
from std_msgs.msg import String
def callback(data):
rospy.loginfo(rospy.get_caller_id()+"I heard %s",data.data)
# 初始化ROS节点
rospy.init_node('my_subscriber', anonymous=True)
# 创建订阅者节点
sub = rospy.Subscriber('chatter', String, callback)
# 循环等待回调函数
rospy.spin()
上述代码创建了一个名为“my_subscriber”的ROS节点,并订阅了一个名为“chatter”的Topic。每当收到来自发布者发布的消息时,callback
回调函数将被调用,并执行日志记录语句。
每当订阅者节点收到一个来自发布者发布的消息时,它都将调用它的回调函数。在Python中,回调函数通常采用以下格式:
def callback(data):
# 处理收到的消息
其中,data
是收到的消息实例。在这个函数中,可以使用rospy.loginfo()
函数向终端打印收到的消息。
当节点被初始化并订阅者被创建后,剩下的工作是等待来自发布者的消息并执行回调函数。在Python中,可以使用rospy.spin()
函数在节点中循环等待收到的消息。在循环中调用回调函数,并在收到每个消息时执行处理过程。
rospy.spin()
在这个教程中,我们介绍了如何使用Python语言创建ROS订阅者节点,并订阅来自发布者发布的消息。我们学习了如何初始化ROS节点,创建订阅者并定义回调函数来处理接收到的消息。我们还介绍了如何等待来自发布者的消息并执行回调函数来完成功能。
从这个基础开始,你可以创建更复杂的ROS节点和通信系统,用Python或其他支持ROS的编程语言实现各种应用场景。