ROS2 foxy 学习2 : 话题topic通讯

Topics are one of the communication types that connects nodes.\话题是通讯方式

ros2 模块化设计,有很多节点 node,节点之间通讯通过topic进行。

  • topic的作用相当于物理总线, 传输的内容就是message.
  • 通讯模式: 可以同时 1对1 ; 1对多; 多对1

启动环境:
ros2 run turtlesim turtlesim_node

ros2 run turtlesim turtle_teleop_key
#打开ros graphic\
#rqt_graph is a graphical introspection tool. 
rqt_graph

The graph is depicting how the /turtlesim node and the /teleop_turtle node are com

ROS 2的Foxy版本是ROS(Robot Operating System)的一个稳定版本,其中包含了一些新的特性和改进。在ROS 2 Foxy中,话题通信仍然是一个重要的概念。 在ROS 2中,话题是一种用于传递消息的机制。通过发布者(Publisher)和订阅者(Subscriber)之间的话题通信,节点可以共享信息。话题的消息类型在编译时确定,并且使用ROS 2的接口定义语言(IDL)来描述。 要进行话题通信,首先需要定义消息类型。可以使用ROS 2提供的标准消息类型,也可以自定义消息类型。接下来,在发布者节点中创建一个发布者对象,并指定要发布的话题名称和消息类型。然后,在订阅者节点中创建一个订阅者对象,并指定要订阅的话题名称和消息类型。 发布者节点将消息发布到话题上,而订阅者节点将从话题上接收到发布者发送的消息。这样,节点之间就可以实现信息的传递和共享。 以下是一个简单的示例代码,演示了如何在ROS 2 Foxy中进行话题通信: 发布者节点代码: ```python import rclpy from std_msgs.msg import String def main(args=None): rclpy.init(args=args) node = rclpy.create_node('publisher') publisher = node.create_publisher(String, 'topic_name') msg = String() msg.data = 'Hello, ROS 2!' while rclpy.ok(): publisher.publish(msg) rclpy.spin_once(node) node.destroy_node() rclpy.shutdown() if __name__ == '__main__': main() ``` 订阅者节点代码: ```python import rclpy from std_msgs.msg import String def callback(msg): print('Received message:', msg.data) def main(args=None): rclpy.init(args=args) node = rclpy.create_node('subscriber') subscriber = node.create_subscription(String, 'topic_name', callback) rclpy.spin(node) node.destroy_node() rclpy.shutdown() if __name__ == '__main__': main() ``` 在上面的示例中,发布者节点创建了一个发布者对象,并使用`node.create_publisher`方法指定了要发布的话题名称。每次循环中,它都会发布一个包含字符串消息的消息对象。 订阅者节点创建了一个订阅者对象,并使用`node.create_subscription`方法指定了要订阅的话题名称和回调函数。每当收到来自发布者的消息时,回调函数将被调用,并打印出接收到的消息内容。 这只是一个简单的示例,实际中可能会涉及更复杂的消息类型和逻辑。但是,通过这个基本的框架,你可以开始在ROS 2 Foxy中进行话题通信
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值