ROS2 listener
时间: 2023-08-02 08:09:31 浏览: 145
ros2_java_examples:ROS2 Java绑定的示例Java应用程序
好的,您想了解ROS2中Listener的相关内容,是吗?
在ROS2中,Listener是一个节点(Node),用于订阅(Subscribe)其他节点发布(Publish)的消息(Message)。通过使用Listener,您可以接收其他节点发送的消息,并对其进行处理和响应。
下面是一个简单的ROS2 Listener示例,它订阅了一个名为“chatter”的Topic,并在接收到消息时将其输出到控制台上:
```python
import rclpy
from std_msgs.msg import String
def callback(msg):
print('I heard: [%s]' % msg.data)
def listener():
rclpy.init()
node = rclpy.create_node('listener')
sub = node.create_subscription(String, 'chatter', callback)
while rclpy.ok():
rclpy.spin_once(node)
rclpy.shutdown()
if __name__ == '__main__':
listener()
```
在上面的代码中,我们首先导入了ROS2的Python客户端库(rclpy)和String消息类型。然后,我们定义了一个回调函数(callback),该函数在收到消息时被调用。最后,我们创建了一个名为“listener”的节点,并使用它来订阅名为“chatter”的Topic,并将回调函数与该Topic相关联。在主循环中,我们使用rclpy.spin_once()函数等待来自其他节点的消息,直到程序被中断为止。
当您执行上面的代码时,它将开始运行,并等待来自其他节点的消息。如果您打开一个新的终端并使用以下命令发布一个消息:
```
ros2 topic pub chatter std_msgs/String "data: 'Hello, world!'"
```
您将在运行Listener的终端上看到以下输出:
```
I heard: [Hello, world!]
```
这就是ROS2的Listener的基本用法。您可以在其中添加更多的逻辑和处理代码,以实现您的特定应用程序需求。
阅读全文