# ROS 2 Python 示例代码:发布者和订阅者
import rclpy
from rclpy.node import Node
from std_msgs.msg import String
class MinimalPublisher(Node):
def __init__(self):
super().__init__('minimal_publisher')
self.publisher_ = self.create_publisher(String, 'topic', 10)
timer_period = 0.5 # seconds
self.timer = self.create_timer(timer_period, self.timer_callback)
self.i = 0
def timer_callback(self):
msg = String()
msg.data = 'Hello World: %d' % self.i
self.publisher_.publish(msg)
self.get_logger().info('Publishing: "%s"' % msg.data)
self.i += 1
class MinimalSubscriber(Node):
def __init__(self):
super().__init__('minimal_subscriber')
self.subscription = self.create_subscription(
String,
'topic',
self.listener_callback,
10)
self.subscription # prevent unused variable warning
def listener_callback(self, msg):
self.get_logger().info('I heard: "%s"' % msg.data)
def main(args=None):
rclpy.init(args=args)
minimal_publisher = MinimalPublisher()
minimal_subscriber = MinimalSubscriber()
rclpy.spin(minimal_publisher)
rclpy.spin(minimal_subscriber)
# Destroy the node explicitly
# (optional - otherwise it will be done automatically
# when the garbage collector destroys the node object)
minimal_publisher.destroy_node()
minimal_subscriber.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()
导入必要的模块:
rclpy
是 ROS 2 的 Python 客户端库。Node
类是创建节点的基础类。String
是标准消息类型,用于传递字符串数据。MinimalPublisher 类:
minimal_publisher
的节点。create_publisher
方法创建一个发布者,发布到名为 topic
的主题。timer_callback
方法。timer_callback
方法中,创建并发布一条消息,并在控制台打印发布的消息内容。MinimalSubscriber 类:
minimal_subscriber
的节点。create_subscription
方法创建一个订阅者,订阅名为 topic
的主题。listener_callback
方法,在控制台打印接收到的消息内容。main 函数:
rclpy.spin
使节点持续运行。这个示例展示了如何使用 Python 在 ROS 2 中创建一个简单的发布者和订阅者。
上一篇:python resample
下一篇:python指定参数类型
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站