rai
厂商无关的ROS 2机器人具身智能Agent框架,让机器人在物理世界中理解自然语言、执行复杂多模态任务
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
厂商无关的ROS 2机器人具身智能Agent框架,让机器人在物理世界中理解自然语言、执行复杂多模态任务
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一个场景:农场的自动拖拉机在果园里行驶时,突然遇到一棵倒下的树挡住了去路。传统机器人只会停在那里等待人工干预——因为它的"思维"只停留在"检测到障碍物就停下"的简单规则上。但配备了 RAI 的拖拉机不一样:它会分析眼前的情况,评估各种方案——是绕过去?把树推开?还是呼叫远程操控员?——然后选择最优解执行。
这背后反映的,正是具身智能(Embodied AI)领域的核心挑战:如何让人工智能不仅能"看"和"听",更能像人一样在真实物理世界中感知、理解、推理并行动。RobotecAI 团队作为 ROS(机器人操作系统)生态的头号贡献者,于 2025 年推出了 RAI(Robotics AI Agent)框架,目标就是让任何 ROS 机器人快速拥有这种能力。RAI 已发表在 arXiv(论文编号 2505.07532),并在 ROSCon 2024 上进行了主题演讲分享。
RAI 是一个厂商无关(vendor-agnostic)的具身智能 Agent 框架,基于 ROS 2 生态构建,用 Python 开发,专注于让机器人在真实物理环境中执行复杂的多模态任务。它不绑定任何特定的 AI 厂商——OpenAI、Anthropic、Google、Ollama(本地)、AWS Bedrock 都可以作为底层模型供应商,通过统一的配置接口切换。
从架构上看,RAI 采用了模块化单仓(monorepo)结构,409 个 Python 文件组织在多个功能包中:
| 子包 | 功能定位 |
|---|---|
| rai_core | 核心框架:Agent 基类、Connector、Aggregator、Runner |
| rai_whoami | 从机器人文档/URDF 自动提取并合成"自我认知"信息 |
| rai_s2s | 语音转文字(ASR)和文字转语音(TTS)模块 |
| rai_sim | 与物理仿真环境的集成(O3DE 等) |
| rai_bench | 评测套件:自动化测试 Agent、模型、工具、仿真器 |
| rai_perception | 基于开放集检测和 ML 技术的目标识别工具 |
| rai_semap | 语义建图工具 |
| rai_nomad | NoMaD 导航模型集成 |
RAI 的 Agent 以 BaseAgent 为核心抽象基类,定义了统一的生命周期接口(启动/停止/日志),所有具体 Agent 都派生自此基类。Agent 通过 LangChain 集成实现 ReAct(Reasoning + Acting)模式的推理循环:接收感知输入 → 调用 LLM 推理 → 生成工具调用 → 执行 ROS 2 动作 → 观察结果 → 循环迭代。
LangChain 集成还扩展了多模态消息类型,支持在同一消息中携带文本、图像(base64 编码)和音频数据,实现机器人对视觉信息的原生理解。
Connector 是 RAI 的通信抽象层,通过泛型设计(BaseConnector[T])支持多种通信模式:
send_message/receive_messageservice_call 带超时控制start_action/terminate_action 管理长时间运行任务HRIConnector 则进一步扩展了人机交互场景的多模态消息(文本+图像+音频),内置与 LangChain 消息格式的自动转换。
rai_whoami 模块让机器人能够"认识自己":输入机器人的文档目录、URDF 文件或图像,它会自动从中提取物理参数(自由度、关节类型、末端执行器)、传感器规格、行为能力等元信息,合成一个"自我描述"文档。这个描述会在 Agent 推理时被注入到 LLM 提示词中,让模型理解"我能做什么"而非盲目尝试。
语音交互则由 rai_s2s 处理,集成了 Whisper(ASR)和 SileroVAD(语音活动检测)模型,支持本地离线语音识别,以及 ElevenLabs 等云端 TTS 引擎。
rai_sim 通过 ROS 2 Bridge 连接 O3DE(Open 3D Engine)物理仿真引擎,实现虚拟环境中的 Agent 行为评测。rai_bench 提供了标准化的 Benchmark 框架,可量化评估 Agent 在不同任务(导航、操控、对话)上的成功率、效率和鲁棒性。
| 维度 | 技术选型 |
|---|---|
| 编程语言 | Python 3.10–3.12(核心) + C++(rai_interfaces ROS 消息) |
| 构建工具 | uv(Python 包管理)+ colcon(ROS 2 工作空间构建) |
| AI 集成 | LangChain(Agent 编排)+ OpenAI/Anthropic/Google/Ollama(LLM) |
| 机器人框架 | ROS 2 Jazzy / Humble |
| 容器化 | 官方 Dockerfile(基于 osrf/ros:jazzy-desktop-full,支持 DEPENDENCIES=core_only/all_groups) |
| 评测工具 | pytest + pytest-timeout + pytest-cov |
| 代码质量 | pre-commit(Ruff)+ conventional commits 规范 |
上手门槛比想象中要陡峭一些,主要原因在于 ROS 2 的强依赖。安装流程要求先装好 ROS 2 Jazzy(或 Humble),然后用 uv sync 安装 Python 依赖,最后用 colcon build --symlink-install 编译 C++ 消息包。整个过程在 Ubuntu 22.04/24.04 上约需 30 分钟。
官方的 Docker 支持缓解了一部分痛苦:Dockerfile 已完整配置了 ROS 2 环境、CUDA 支持(nvidia-docker)和 uv 工具链,但不支持 docker-compose 一键启动,仍需手动配置。GPU 支持需要 NVIDIA 驱动和 Docker 的 --gpus 参数,建议至少 4GB 显存。
RAI 的最大价值在于降低了具身智能的应用门槛。过去要让一个机器人理解"去厨房拿一杯水"这样的自然语言指令,需要自研一整套感知-推理-控制链路;现在只需配置 LLM 模型、导入 ROS 2 接口定义、定义工具集,三步即可完成。
但它也有明显局限:目前主要面向研究人员和技术开发者,没有图形化配置界面;ROS 2 的强依赖意味着非 ROS 生态的机器人(如纯 PLC 控制的工业机械臂)无法直接使用;此外 Agent 的安全边界和 fail-safe 机制在评测文档中着墨不多,在真实工业场景中落地仍需额外加固。
从生态角度看,RAI 已成为 ROS 社区具身智能工作组(Embodied AI Community Group)的核心项目之一,与 MoveIt、Nav2 等成熟 ROS 生态深度集成,代表了"让专业机器人框架 AI 化"的明确趋势。随着多模态大模型能力的持续提升,这类框架的实用价值将快速增长。