ROS2核心概念与架构详解:从零开始机器人操作系统(1)

张开发
2026/4/9 20:29:39 15 分钟阅读

分享文章

ROS2核心概念与架构详解:从零开始机器人操作系统(1)
一、顶级架构一句话总结节点 → DDS通信 → 话题/服务/动作 → 参数 → 工具链 → 机器人应用ROS2Robot Operating System 2是新一代开源机器人操作系统采用DDS作为通信中间件去掉了ROS1的Master节点提供更好的实时性和安全性。二、ROS2 vs ROS1核心对比1. 主要区别特性ROS1ROS2通信中间件自定义TCP/UDPDDSData Distribution ServiceMaster节点有单点故障无去中心化实时性有限支持硬实时安全性基础支持加密认证多机器人复杂原生支持跨平台Linux为主Linux/Windows/macOSPython版本Python2/3Python32. ROS2的优势去中心化架构没有Master节点任何节点故障不影响其它节点。DDS通信工业级通信标准支持QoS服务质量配置。实时性支持硬实时操作系统RTOS。安全性支持DDS-Security提供加密和认证。多语言支持C、Python、Java等。三、ROS2核心概念1. 节点Node节点是ROS2的基本执行单元每个节点负责一个特定功能。#!/usr/bin/env python3 import rclpy from rclpy.node import Node class MinimalNode(Node): def __init__(self): super().__init__(minimal_node) self.get_logger().info(ROS2节点已启动) def main(argsNone): rclpy.init(argsargs) node MinimalNode() rclpy.spin(node) node.destroy_node() rclpy.shutdown() if __name__ __main__: main()2. 话题Topic话题是节点间的单向异步通信方式发布-订阅模式。特性说明通信模式发布者-订阅者方向性单向同步性异步数据连续性连续数据流典型应用传感器数据、机器人状态3. 服务Service服务是节点间的双向同步通信方式请求-响应模式。特性说明通信模式客户端-服务端方向性双向同步性同步数据连续性单次请求-响应典型应用计算服务、参数查询4. 动作Action动作是节点间的双向异步通信方式支持反馈和取消。特性说明通信模式动作客户端-动作服务端方向性双向同步性异步数据连续性目标-反馈-结果典型应用导航、机械臂运动5. 参数Parameter参数是节点的配置选项支持运行时修改。class ParamNode(Node): def __init__(self): super().__init__(param_node) # 声明参数 self.declare_parameter(robot_name, my_robot) self.declare_parameter(max_speed, 1.0) # 获取参数 robot_name self.get_parameter(robot_name).value max_speed self.get_parameter(max_speed).value self.get_logger().info(f机器人名称: {robot_name}) self.get_logger().info(f最大速度: {max_speed})四、ROS2架构详解1. 中间件层MiddlewareROS2使用DDS作为通信中间件┌─────────────────────────────────────────┐│ 用户应用层Nodes │├─────────────────────────────────────────┤│ ROS Client Library (rcl) │├─────────────────────────────────────────┤│ ROS Middleware (rmw) │├─────────────────────────────────────────┤│ DDS Implementation ││ (FastDDS, CycloneDDS, RTI Connext) │├─────────────────────────────────────────┤│ 网络传输层 │└─────────────────────────────────────────┘2. DDSData Distribution ServiceDDS是OMG对象管理组织定义的工业级通信标准DCPSData-Centric Publish-Subscribe以数据为中心的发布订阅。DDSI-RTPSDDS互操作协议。QoSQuality of Service服务质量策略。3. QoS策略服务质量ROS2提供多种QoS策略配置QoS策略说明应用场景历史记录History保留多少历史数据传感器数据缓存深度Depth历史记录队列大小控制队列长度可靠性Reliability可靠传输/尽力而为关键数据vs非关键数据持久性Durability数据持久化晚加入的订阅者截止期限Deadline数据必须在多长时间内到达实时系统寿命Lifespan数据有效期数据过期from rclpy.qos import QoSProfile, ReliabilityPolicy, DurabilityPolicy # 定义QoS配置 qos_profile QoSProfile( reliabilityReliabilityPolicy.BEST_EFFORT, durabilityDurabilityPolicy.VOLATILE, depth10 ) # 使用QoS创建发布者 self.publisher self.create_publisher( String, sensor_data, qos_profile )更多内容请看下回。

更多文章