当前位置: 首页 > article >正文

ROS2的发展历史、核心架构和应用场景

以下是对**ROS2(Robot Operating System 2)**的发展历史、核心架构和应用场景的详细解析,覆盖其技术演变、关键特性和生态系统:


一、ROS2的诞生背景:从ROS1到ROS2

1. ROS1的历史与局限
  • ROS1的起源
    2007年斯坦福大学与Willow Garage联合推出ROS(元操作系统),目标是标准化机器人软件开发,提供通信中间件工具链软件包生态
    • 主要贡献
      • 发布-订阅模型(Topic)、服务(Service)、参数服务器等核心机制。
      • 开源社区(ROS Wiki、Package Index)推动机器人研发协作。
    • 典型问题
      • 实时性弱:基于TCP/UDP的单主节点(ROS Master)易成单点故障,通信延迟不可控。
      • 跨平台限制:依赖Linux,Windows/RTOS支持差,难以嵌入工业设备。
      • 安全缺陷:缺乏加密和身份验证,无法满足工业与自动驾驶需求。
      • 网络隔离限制:仅适用于局域网,云端或广域网通信困难。
2. ROS2的设计目标

2014年启动ROS2项目,目标是通过去中心化架构现代化通信协议解决ROS1的瓶颈:

  • 实时性与可靠性:支持硬实时系统(如工业机械臂)。
  • 多平台支持:适配Linux/Windows/RTOS,兼容嵌入式设备(ARM、FPGA)。
  • 去中心化:消除主节点依赖,提升鲁棒性。
  • 安全性:支持TLS加密与DDS安全策略。
  • 跨网络通信:支持广域网(如5G网络下的远程控制)。

二、ROS2的核心架构演变

1. 通信中间件:从ROS1自定义协议到DDS
  • DDS(Data Distribution Service)的引入
    ROS2底层采用DDS作为默认通信协议(ISO标准协议),实现实时、可靠、去中心化的数据分发。
    • 核心优势
      • 服务质量(QoS)策略:可配置可靠性(Reliable/Best Effort)、持久性(Transient Local)、生命周期(Liveliness)等参数。
      • 多播支持:优化多节点通信效率。
      • 兼容工业标准:适配RTI Connext DDS、Fast DDS、Cyclone DDS等实现。
    • DDS与ROS2的接口层
      • ROS Middleware Interface(RMW):抽象DDS接口,允许用户切换不同DDS供应商(如切换rmw_cyclonedds_cpp)。
2. 去中心化的节点管理
  • 节点生命周期
    ROS2节点明确划分初始化、活跃、关闭等阶段,支持动态启停和资源回收。
    • 节点间自动发现:无需ROS Master,通过DDS的发现协议(如SPDP、SEDP)发现通信对端。
  • 执行器模型
    提供MultiThreadedExecutorStaticSingleThreadedExecutor优化多线程任务调度。
3. 通信机制升级
  • Topic/Service/Action的增强
    • Topic:支持QoS配置(如传感器数据使用Best Effort,控制指令使用Reliable)。
    • Service:同步通信,支持超时与取消。
    • Action:异步长时任务(如导航),支持进度反馈与中止。
  • Parameter与Launch系统
    • 动态参数:支持节点运行时修改参数(通过rclcpp::Parameter)。
    • Python/XML/YAML Launch文件:支持复杂系统启动依赖管理。
4. 安全与权限控制
  • SROS2(Secure ROS2)
    整合DDS安全规范,支持:
    • 身份认证:数字证书验证节点身份。
    • 数据加密:TLS/DTLS保护通信内容。
    • 访问控制:策略文件定义节点权限(如限制某些节点只能订阅特定Topic)。
5. 硬件与操作系统扩展
  • Micro-ROS
    针对资源受限的微控制器(如STM32、ESP32),提供轻量级ROS2客户端库,支持实时任务调度。
  • 多操作系统支持
    适配Linux(Ubuntu/ROS2 Galactic/Humble)、Windows、QNX、VxWorks等。

三、ROS2的发展历程与版本迭代

1. 里程碑版本
版本代号发布时间核心特性
Ardent Apalone2017.12首个生产级版本,支持DDS和跨平台
Bouncy Bolson2018.07引入生命周期节点与参数回调
Foxy Fitzroy2020.06首个LTS(长期支持)版,完善CLI工具(ros2cli)
Galactic Geochelone2021.05强化安全(SROS2)、支持ROS1桥接(ros1_bridge)
Humble Hawksbill2022.05改进ROS2-ROS1兼容性,优化实时性能
Iron Irwini2023.05支持Python 3.10,增强分布式调度能力
2. 社区与生态
  • 官方包(ros.repos):核心功能包(如导航nav2、感知vision_opencv)。
  • 企业支持
    • Open Robotics:主导开发,提供商业支持(如ROS2定制化服务)。
    • Intel、NVIDIA:优化硬件加速(如GPU推理与Isaac ROS)。
    • Bosch、Toyota:应用于自动驾驶与工业机器人。

四、ROS2的典型应用场景

1. 自动驾驶
  • 传感器融合:激光雷达、摄像头数据通过ROS2 Topic传输,支持QoS保障低延迟。
  • 分布式计算:DDS实现车端-云端协同(如高精地图更新)。
2. 工业自动化
  • 实时控制:通过Micro-ROS与PLC通信,硬实时任务(如机械臂轨迹规划)。
  • 数字孪生:Gazebo仿真与物理设备通过ROS2同步。
3. 服务机器人
  • 导航与SLAMnav2包支持动态路径规划与多地图管理。
  • 多机协同:跨网络通信(如仓库AGV集群调度)。

五、挑战与未来方向

1. 现存挑战
  • 复杂度提升:DDS配置与QoS策略需较高学习成本。
  • 硬件兼容性:部分嵌入式平台仍需定制中间件。
  • 生态过渡:ROS1遗留代码迁移(如使用ros1_bridge混合运行)。
2. 技术趋势
  • 与AI框架融合:ROS2节点集成PyTorch/TensorRT推理(如NVIDIA Isaac Sim)。
  • 云原生支持:Kubernetes部署ROS2节点,实现弹性扩展。
  • 标准化加速:Autoware(自动驾驶)、ROS-Industrial(工业)推动垂直领域规范。

六、总结

ROS2通过拥抱DDS和去中心化架构,解决了ROS1在实时性、可靠性和跨平台方面的根本缺陷,成为下一代机器人开发的事实标准。随着自动驾驶、工业4.0和AI技术的推动,ROS2将持续整合新技术(如5G、边缘计算),并在安全性、易用性和生态协同上进一步突破。

相关文章:

ROS2的发展历史、核心架构和应用场景

以下是对**ROS2(Robot Operating System 2)**的发展历史、核心架构和应用场景的详细解析,覆盖其技术演变、关键特性和生态系统: 一、ROS2的诞生背景:从ROS1到ROS2 1. ROS1的历史与局限 ROS1的起源: 2007年…...

[unity 点击事件] 区域响应点击事件,排除子节点区域,Raycast Target 应用

当我打开一个二级弹窗后,希望可以通过点击弹窗以外的区域来关闭该弹窗。一开始我是在弹窗主节点上挂载了一个 button 组件,该 button 注册的点击事件中关闭该弹窗。在子节点(一个背景图)的image组件上启用 Raycast Target 选项&am…...

鸿蒙生态全解析:应用适配分享

一、鸿蒙系统的技术底座与适配挑战 HarmonyOS NEXT 作为全场景分布式操作系统,通过统一的技术底座和声明式开发框架,实现了 "一次开发,多端部署" 的跨设备协同能力。其核心优势在于: 弹性部署架构:一套系统…...

el-select 可搜索下拉框 在ios、ipad 无法唤出键盘,造成无法输入

下一篇:el-select 可搜索下拉框,选中选项后,希望立即失去焦点,收起键盘,执行其他逻辑 【效果图】:分组展示选项 >【去界面操作体验】 首先,通过 夸克浏览器的搜索: el-select 在 ipad 输入框…...

深度剖析:域名与DNS安全的全方位解读

导语 在互联网的庞大体系中,域名如同我们访问网络资源的“门牌号”,而DNS则像是将门牌号翻译为具体地址的“翻译官”。然而,这看似平常的域名与DNS系统,却面临着诸多安全风险。一旦遭受攻击,可能导致网站无法访问、用户数据泄露等严重后果。了解域名与DNS安全知识,对保障…...

使用ZMQ和protobuf实现C++程序与Python程序的通信

文章目录 背景一 应用场景与需求二 Protobuf: 跨语言数据交换的基石三 通信方案 ZMQ (ZeroMQ) —— 高性能消息中间件四 进阶: 安全性与性能优化五 实践例子: 工厂温度监控系统5.1 场景描述5.2 Protobuf数据结构定义5.3 C数据采集与发布5.4 Python数据接收与可视化5.5 关键实现…...

Linux实现生产者消费者模型

目录 概念及优势 代码实现 概念及优势 生产者消费者模型是一种用于线程同步的模型,在这个模型中有两种角色,生产者生产数据,消费者消费数据。有三种关系,生产者与生产者,消费者与消费者,生产者与消费者。…...

AI驱动下的智能异常处置:海量多元异构数据的挑战与应对

摘要 在QCon北京会议上,AI驱动的智能异常处置成为焦点。会议深入探讨了平台复杂性及处理海量多元异构数据时所面临的挑战,特别是异常识别与根本原因定位的难题。这些挑战要求技术从业者不断优化算法,以提升数据处理效率和准确性。 关键词 …...

Axure设计之中继器表格——拖动列调整位置教程(中继器)

一、原理介绍 实现表格列的拖动排序,主要依赖Axure的动态面板和中继器两大核心功能: 动态面板交互控制 将表格的列标题封装在动态面板中,通过拖拽事件(开始、移动、结束)捕捉用户操作 在拖拽过程中实时计算鼠标位置&…...

基于大数据的各品牌手机销量数据可视化分析系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,各品牌手机销量数据可视化分析系统当然不能排除在外。基于大数据的各品牌手机销量数据可视化分析系统是在实际应用和软件工程的开发原理之…...

Open CASCADE学习|基于AIS_PointCloud显示点集

定义与用途 AIS_PointCloud是OpenCASCADE中用于表示和管理点云数据的类,能够高效地绘制大量任意彩色点集。它通过Graphic3d_ArrayOfPoints将点数据传递给OpenGL图形驱动程序,以将设定点绘制为“点精灵”数组,且点数据被打包到顶点缓冲区对象…...

c++随记

内存溢出与内存泄漏的区别 今天老师提出的概念问题,搜索了一下 # 内存泄漏与内存溢出的区别 内存泄漏(Memory Leak)和内存溢出(Memory Overflow/Out of Memory)是两种常见的内存相关问题,但它们的含义和产生原因不同: ## 内存泄漏 (Memor…...

GOC作业

实验室logo 题目描述 绘制烧毁实验室logo,它是由半径120,颜色6号色的空心元构成,中间的图案由线段长度为75,半径为15的实心圆构成,颜色从1号色开始,到6号色,如图所示 代码参考: …...

本地部署仓库管理工具 Gitlab 并实现外部访问

Gitlab是一款自托管的 Git 仓库管理工具,它提供了完整的代码管理功能,包括代码托管、版本控制、代码合并请求、问题追踪、持续集成等。 本文将详细的介绍如何利用 Docker 在本地部署 Gitlab 并结合路由侠实现外网访问本地部署的 Gitlab 。‌ 第一步&am…...

华鲲振宇天工TG225 B1国产服务器试装openEuler22.03 -SP4系统

今天测试了一下在华鲲振宇公司的天工TG225 B1国产服务器上进行openEuler22.03 -SP4操作系统的试装,本文记录整个测试过程。 一、服务器信息 1、服务器型号 Huakun TG225 B1 (D) 2、登录IPMI帐户信息 初始用户名Tech.ON 密码TianGong8000 二、磁盘RAID配置 测试…...

自然语言处理NLP-文本预处理

在自然语言处理(NLP)中,文本预处理是构建高效模型的关键步骤。原始文本通常包含噪声和不一致性,直接影响模型性能。通过预处理,可以提取结构化信息、减少计算复杂度,并提升模型对语义的理解能力。 一、为什…...

linux常用指令(9)

加油同志们,我们离胜利不远了,再有两天我们就可以了解完linux的一些基本常用指令了,到时我们便可以进入一些shell脚本语法了,那么话不多说,来看. 1.more指令 功能描述:more指令是一个基于vi编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容. 基本语法…...

【windows搭建lvgl模拟环境之VSCode】

搭建vscodelvgl8.3所有资料,0积分 通过在windows搭建LVGL模拟环境方便UI界面开发和调试,后续只需将相关的代码移植到项目中即可,方便调试,PC上支持下列模拟器: 本文说明两种方法搭建模拟器环境,分别采用&am…...

【BFS染色问题】P1162填涂颜色例题+核心逻辑

文章目录 【算法思路】【代码示例】 BFS处理染色问题的核心逻辑 【算法思路】 要判断一个数字 0 是否在闭合圈内,可以换个角度思考。不在闭合圈内的 0 是可以从方阵的边界出发,通过上下左右移动,只经过其他 0 到达的。 思路①.我们可以从方…...

【多学科稳定EI会议大合集】计算机应用、通信信号、电气能源工程、社科经管教育、光学光电、遥感测绘、生物医学等多学科征稿!

在当今科技高速发展的时代,多学科领域的学术交流与融合显得尤为重要。以下是稳定EI会议合集,涵盖计算机、信息通信、电气能源、社科经管教育、光学遥感、生物医学等多个学科领域。 会议皆已通过国际知名出版社出版审核,EI检索稳定&#xff0…...

ElasticSearch -- 部署完整步骤

前期准备 创建用户: sudo useradd hadoop sudo passwd hadoop# 密码 xxx系统层面,禁用内存交换 sudo swapoff -a修改 sudo vi /etc/security/limits.conf hadoop hard memlock unlimited hadoop soft memlock unlimited hadoop soft nofile 65536 had…...

医学交互作用分析步骤和目的(R语言)

医学交互作用分析的目的和用途(R语言) 医学交互作用分析一直是医学数据分析的组成部分,总结最近的一些认识。 目的: 在独立危险因素鉴定的研究中,(独立危险因素的)交互作用可以作为独立危险因…...

创新前沿 | 接管主机即刻增量CDP备份,高效保障接管期间业务安全!

科力锐创新前沿系列 接管主机增量CDP备份 高效保障接管业务安全 当核心系统遭遇系统故障或误操作导致数据逻辑损毁等,往往需要将生产业务主机接管起来,继续对外提供服务,保障业务连续性。 然而,你的接管主机真的安全吗?一旦接…...

《基于python游戏设计与实现》开题报告

个人主页:@大数据蟒行探索者 一、研究背景、目的及意义 (一)研究背景 游戏的普及与成功:随着智能手机的普及和网络技术的发展,手机游戏产业逐渐成熟,成为娱乐文化产业的重要组成部分。《开心消消乐》作为一款休闲类游戏,自上线以来凭借其简单易上手的玩法和丰富的…...

Netty源码—7.ByteBuf原理三

大纲 9.Netty的内存规格 10.缓存数据结构 11.命中缓存的分配流程 12.Netty里有关内存分配的重要概念 13.Page级别的内存分配 14.SubPage级别的内存分配 15.ByteBuf的回收 9.Netty的内存规格 (1)4种内存规格 (2)内存申请单位 (1)4种内存规格 一.tiny:表示从…...

(免费开源)图片去水印以及照片擦除功能,你会选择使用吗?

图片去水印以及相关人物擦除是一个非常小众的需求,就是将原本图片上的文字或者logo去除让变成一个干净的图片,但市面上很多都是付费的,今天就介绍一下这款免费工具。 工具演示效果 工具介绍 名称:lama-projct 利用AI模型训练LaM…...

2025-03-26 学习记录--C/C++-PTA 6-2 顺序表操作集

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻 一、题目描述 ⭐️ 6-2 顺序表操作集 本题要求实现顺序表的操作集。 函数接口定义: 👇🏻 …...

SQL-木马植入、报错注入及其他

一、读写权限确认 show global variables like %secure%; 查看mysql全局变量的配置,当输入以上命令时,结果 secure_file_priv 空的时候,任意读写 secure_file_priv 某个路径的时候,只能在规定的那个路径下读写 secure_file_pri…...

用C#实现UDP服务器

对UDP服务器的要求 如同TCP通信一样让UDP服务端可以服务多个客户端 需要具备的条件: 1.区分消息类型(不需要处理分包、黏包) 2.能够接收多个客户端的消息 3.能够主动给自己发过消息的客户端发消息(记录客户端信息)…...

React 组件之间的通信

React 组件通信 对于 React 组件之间的通信,我们首先了解一下 React 组件通信的设计理念。 单向数据流(Unidirectional Data Flow) 数据流向明确: 在 React 中,数据总是从父组件流向子组件(通过 Props 传…...