当前位置:   article > 正文

ROS2自学笔记:话题_ros2 subscription

ros2 subscription

话题实现节点之间的通讯。话题有这样几个基本特定:
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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

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
  • 2
  • 3
  • 4
  • 5
  • 6
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/797804
推荐阅读
相关标签
  

闽ICP备14008679号