找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1888

积分

0

好友

255

主题
发表于 2025-12-31 02:21:47 | 查看: 26| 回复: 0

自20世纪七八十年代以来,在计算机技术、传感器技术、电子技术等新发展的推动下,机器人技术进入了迅猛发展的黄金时期。机器人技术正从传统的工业制造领域,迅速扩展到家庭服务、医疗看护、教育娱乐、救援探索乃至军事应用等众多领域。

如今,随着人工智能浪潮的兴起,机器人又迎来了全新的发展机遇。机器人与 深度学习 等技术的结合,必将像互联网一般,再次为人们的生活带来深刻的变革。本文将带你认识智能机器人的“灵魂”——机器人操作系统(ROS),并深入剖析其最新一代ROS 2的技术演进。

机器人的发展经历了三个重要阶段:

  • 电气时代(2000年前):机器人主要应用于工业生产,俗称工业机器人,由示教器操控。此时的机器人智能程度不高,只能完全按照预设命令执行动作。该时代更关注驱动器、伺服电机、减速机、控制器等电气设备。
  • 数字时代(2000—2015年):随着计算机和视觉技术的快速发展,机器人的种类不断丰富,涵盖了AGV、视觉检测等应用。机器人配备了更丰富的传感器,但自主思考能力有限,仅能感知局部环境。
  • 智能时代(2015年至今):随着人工智能技术的兴盛,机器人成为AI技术的最佳载体。人形机器人、服务机器人、自动驾驶汽车等应用呈现井喷式发展,智能机器人时代正式拉开序幕。

工业自动化发展三阶段图示

图1:工业自动化发展的三个阶段:电气化、数字化与智能化

硬件是智能机器人的坚实载体,而软件则赋予其灵魂。机器人软件的快速迭代与创新,催生了对通用开发平台的迫切需求。于是,机器人操作系统(Robot Operating System,ROS) 在2007年应运而生。

ROS发展历程

面对日益复杂的智能机器人系统,如何实现高效开发成为一个关键技术问题。斯坦福大学的研究者们尝试给出一个答案,这便是ROS的起点。

ROS的起源

2007年,斯坦福大学的研究人员萌生了一个想法:能否开发一款能协助人们完成洗衣、做饭、整理家务等繁琐任务,并能陪伴互动的个人服务机器人?他们深知这需要融合机械、电路、软件等多个专业领域,于是想到创建一个标准的机器人平台,以便不同团队能够基于同一平台协作开发与分享应用。

初期原型由实验室的零部件组成,后期在资金支持下,他们打造出了外观精致、性能强悍的PR2(Personal Robot 2)机器人。通过不懈努力,PR2已经可以完成叠毛巾、打台球等一系列复杂任务。

PR2机器人应用场景示例

图2:PR2机器人在不同场景下的应用演示

在这款机器人的开发过程中,研究者们构建了一套支持大规模团队协作的通用软件框架,这就是ROS的原型。ROS因PR2而生,但很快从中独立出来,发展成为一个被更多开发者和机器人采用的通用软件系统。

ROS的发展

PR2项目很快获得了Willow Garage公司的青睐与投资。2010年,随着PR2发布,其软件系统被正式命名为机器人操作系统(ROS)并开源。此后,ROS进入了快速发展期。

2011年,ROS领域的入门级爆款机器人TurtleBot发布。这款基于低成本硬件的机器人极大地推动了ROS在教育和研究领域的普及。从2012年开始,ROS社区开始举办每年一度的ROS开发者大会(ROSCon),吸引了包括亚马逊、英特尔等巨头在内的全球开发者参与。

从2014年起,ROS开始跟随Ubuntu操作系统的节奏,每两年推出一个长期支持版(LTS),标志着其走向成熟与稳定。

然而,随着应用场景的拓展,ROS初始设计的局限性逐渐暴露。为了构建一个能适应未来多样化机器人需求的操作系统,全新的ROS 2在2017年底正式发布。历经多年迭代,ROS 2在2022年5月发布了其首个长期支持版——ROS 2 Humble,宣告了ROS 2技术体系的成熟。2024年5月,第二个长期支持版 ROS 2 Jazzy 发布,进一步增强了系统的稳定性与功能。

ROS发展历程时间轴
图3:ROS从诞生到ROS 2 LTS版本发布的发展历程

ROS的特点

ROS的核心目标是提高机器人软件的复用率,其设计高度模块化,主要由四部分组成:

  1. 通信机制:为复杂机器人系统提供高效、安全的数据分发基础。
  2. 开发工具:提供仿真、可视化、调试等易用性工具链。
  3. 应用功能:提供大量接口开放、可二次开发的功能包。
  4. 生态系统:构建了活跃的全球开源开发者社区。

这种“避免重复造轮子”的理念催生了繁荣的ROS生态。如今,无论是在机械臂、移动机器人、水下机器人,还是人形机器人中,都能看到ROS的身影,它已成为机器人领域事实上的软件标准。

ROS在各类机器人中的应用
图4:ROS社区中多样化的机器人应用案例

此外,ROS还具备以下优势:

  • 全球化的社区:汇聚全球智慧,以应用案例的形式沉淀技术结晶。
  • 开源开放的生态:允许企业基于ROS直接开发商业化产品,加速上市进程。
  • 跨平台使用:支持在Linux、Windows及嵌入式系统中运行。
  • 工业应用支持:ROS 2新增了许多特性,以更好地满足工业领域需求。

ROS 2与ROS 1

从名称上看,ROS 2似乎是ROS 1的自然演进,但两者的变化实际上非常巨大。

ROS 1的局限性

ROS最初是为PR2这款家庭服务机器人设计的。PR2设计精良,拥有工作站级算力,主要进行内部有线通信,且成本高昂,主要用于学术研究。

然而,随着ROS的普及,应用它的机器人类型已大不相同。许多机器人在资源受限的嵌入式系统中运行,需要在复杂网络环境下保证通信,并最终作为产品走向市场,甚至用于自动驾驶和航天领域。ROS 1原有的框架在面对这些新需求时,暴露出了实时性差、通信不可靠、存在单点故障等问题。

全新的ROS 2

ROS 2旨在满足未来多样化机器人应用的需求,其设计目标包括:

  1. 多机器人系统:为机器人集群的通信与协作提供标准机制。
  2. 跨平台:可运行于Linux、Windows、macOS、RTOS,甚至微控制器(MCU)上。
  3. 实时性:为运动控制等关键任务提供确定性保障。
  4. 网络连接:在不可靠网络下保障数据完整性与通信安全。
  5. 产品化:具备足够的稳定性和健壮性,可直接用于商业产品。
  6. 项目管理:提供涵盖设计、开发、测试、部署的全流程工具。

为了从根本上满足这些需求,ROS开发者选择了“推倒重来”,在借鉴ROS 1经验的基础上,对系统架构和代码进行了全新设计与实现。

ROS 2与ROS 1的对比

1. 系统架构
ROS 1的核心是节点管理器(Master),所有节点都需在其协调下工作,存在单点故障风险。ROS 2移除了Master,采用节点自发现(Discovery)机制,实现了真正的分布式架构,大大增强了系统的鲁棒性和可扩展性。

ROS 1与ROS 2系统架构对比图
图5:ROS 1(左)与ROS 2(右)的系统架构对比

2. 通信系统
ROS 1基于TCP/UDP通信,在复杂场景下易出现延迟、丢包等问题。ROS 2引入了数据分发服务(Data Distribution Service, DDS)作为底层通信中间件。DDS是一种成熟的工业标准通信协议,专为实时、可靠、高吞吐量的数据分发而设计。

为了让用户无需绑定特定DDS厂商,ROS 2设计了抽象中间件层(RMW)。各DDS厂商只需按照RMW标准实现接口,用户即可通过配置轻松切换底层通信实现,将开发精力聚焦于应用功能本身。

3. 核心概念
为降低迁移成本,ROS 2保留了ROS 1中的核心概念,如工作空间(Workspace)、功能包(Package)、节点(Node)、话题(Topic)、服务(Service)等,其含义与用法基本一致。

4. 编码方式
ROS 2的API接口经过重新设计,更符合现代编程习惯(如面向对象),并充分利用了C++新标准和Python3的特性。虽然API函数名称有所变化,但使用模式与ROS 1相似。以下是一个简单的Python API对比示例:

# 引入Python API接口库
import rclpy      # ROS 2
import rospy      # ROS 1

# 创建Topic发布者对象
self.pub = self.create_publisher(String, "chatter", 10)     # ROS 2
pub = rospy.Publisher('chatter, String, queue_size=10)     # ROS 1

# 创建Topic订阅者对象
self.sub = self.create_subscription(String, "chatter", self.listener_callback, 10) # ROS 2
rospy.Subscriber("chatter", String, listener_callback)                          # ROS 1

# 输出日志信息
self.get_logger().info('Publishing: "%s" ' % msg.data)      # ROS 2
rospy.loginfo("Publishing: "%s" ", msg.data)                  # ROS 1

5. 命令行工具
ROS 2对命令行工具进行了大幅集成,所有操作都统一在ros2主命令之下(如ros2 run, ros2 topic),结构更清晰,易于使用。

ROS 2命令行工具自动补全示例
图6:ROS 2集成的命令行工具,支持丰富的子命令

从系统架构、通信机制到开发方式,ROS 2都是一次全面的革新。它解决了ROS 1在实时性、可靠性、安全性和分布式支持等方面的关键短板,为迎接未来更复杂、更广泛的机器人应用做好了准备。对于希望深入 计算机科学 与机器人系统开发的工程师而言,掌握ROS 2已成为一项重要的技能。如果你对机器人软件开发感兴趣,欢迎到 云栈社区 与其他开发者交流探讨。




上一篇:张朝阳谈35岁职场困局:经验能力反成年龄歧视的根源?
下一篇:分布式一致性模型详解:4大核心方案与选型指南
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-11 11:55 , Processed in 0.337673 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表