ROS2学习笔记:DDS

DDS为数据为中心模型。DDS里所有节点可以在DataBus发布和订阅消息,不过DataBus有许多并行通路,各个节点互不干扰

DDS全面数据分发服务(data distribution service),是为实时系统设计的数据分发、订阅标准
在这里插入图片描述
DDS有很多不同厂商提供的版本。在ROS2里面,ROS Middleware确保任何版本都和上层软件兼容,以提高软件复用率

DDS的QoS传输策略:
1 Deadline:在每一个时间范围内必须传输一次数据
2 History:历史数据缓存大小
3 Reliability:在BEST_EFFORT模式会加快传输,但是可能会丢失数据。在RELIABLE模式数据会完整传输,但可能较慢

对于通信双方QoS传输策略必须完全一致才能进行通信
示例:
在终端创建一个发布者:

ros2 topic pub /chatter std_msgs/Int32 “data: 42” --qos-reliability best_effort

这里QoS设置通信可靠性为best_effort

再创建一个订阅者

ros2 topic echo /chatter --qos-reliability reliable

这里QoS设为reliable,和前者不符。会发现订阅者尽管订阅的话题名称和发布者一致,但由于QoS不同无法通信

将订阅者里reliable改为best_effort会恢复通信

ros2 topic info (查询节点) --verbose

查询发布者详细信息,包括QoS信息
在这里插入图片描述

在程序里面配置QoS设置:
还是利用hello world话题通信程序作为例子,不过在这里我们为发布者和订阅者都配置QoS设置。

发布者

import rclpy
from rclpy.node import Node
from std_msgs.msg import String
from rclpy.qos import QoSProfile, QoSReliabilityPolicy, QoSHistoryPolicy

class PublisherNode(Node):
	
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值