ROS2自学笔记:话题

这篇博客详细介绍了ROS2中的话题通信机制,包括发布/订阅模型、异步通信和.msg消息结构。通过hello world示例展示了如何创建发布者和订阅者节点,并在实际的相机检测红色物体的应用中加以应用。同时,还提到了如何安装和使用USB相机驱动,以及如何监控和检查ROS2话题的相关命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

话题实现节点之间的通讯。话题有这样几个基本特定:
1 发布、订阅模型:发出一个话题的节点称为发布者,接受一个话题的节点称为订阅者
2 订阅者和发布者不唯一:每一个节点都可以发布或订阅话题,实现多对多通信
3 异步通信:一个话题发布后可以在之后被订阅
4 .msg文件定义通信的消息结构:话题通信有着标准的通信格式,称为消息

示例:hello world发布及订阅
发布者:

import rclpy
from rclpy.node import Node
from std_msgs.msg import String

class PublisherNode(Node):
	def __init__(self, name):
		super().__init__(name)
		self.pub = self.create_publisher(String, "chatter", 10)
		self.timer = self.create_timer(0.5, self.timer_callback)

	def timer_callback(self):
		msg = String()
		msg.data = 'Hello World'
		self.pub.publish(msg)
		self.get_logger().info('Publishing: "%s"' % msg.data)

def main(args=None):
	rclpy.init(args=args)
	node = PublisherNode("topic_helloworld_pub")
	rclpy.spin(node)
	node.destroy_node()
	rclpy.shutdown()

1 from std_msgs.msg import String
导入String消息类型

2 self.pub = self.create_publisher(String, “chatter”, 10)
创建发布者对象self.pub,构造方法为create_publisher,该方法三个参数:消息类型,消息名称,缓存长度(对于无法及时发出的话题,会缓存10桢,之后删去老信息)

3 self.timer = self.create_timer(0.5, self.timer_callback)
创建计时器self.timer,参数:以秒为单位的时间,每次计时结束后执行方法

4 self.pub.publish(msg)
发布消息msg,msg为之前创建的String

5 self.get_logger().info(‘Publishing: “%s”’ % msg.data)
在终端打出信息Publishing: Hello World

订阅者:

import rclpy
from rclpy.node import Node
from std_msgs.msg import String

class SubscriberNode(Node):

	def 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值