今天在 GitHub Trending 上看到一个有意思的项目:Robonix,一个专为具身智能打造的开源操作系统,目标很简单——训练一次,部署到任意机器人上。
一、项目概述
Robonix 探索如何在系统层面构建机器人的"大脑":一套通用中间件,让 AI 模型通过不同的机器人身体来感知、理解、规划和行动,而无需针对每个厂商的 SDK 单独适配。
其核心理念是解耦:
- 模型(Model)和技能(Skill) 被当作程序(Programs)来看待
- 机器人硬件 被抽象为可被发现的能力(Capabilities)
这样一来,机器人开发者只需集成一次身体,而模型和技能开发者则基于统一的硬件接口(摄像头、激光雷达、底盘、机械臂、定位、导航、语音等)来编程。
已支持的机器人平台:
| 机器人 | 主要传感器 | 维护者 |
|---|---|---|
| AgileX Ranger Mini v3 | Livox MID-360 + Intel RealSense D435i | syswonder |
| DEEP Robotics Lite3 | Livox MID-360 + Orbbec Gemini 330 | Bunnycxk |
| Unitree Go2 | 机载 lidar + 摄像头 + IMU | Origamii520 |
| WowRobo Roboarm | Five-axis LeRobot Koch + Orbbec Gemini 215 | gaoyz1235 |
| Webots 仿真(TIAGo Lite) | RGB-D + Hokuyo lidar | syswonder |
| Minecraft Bot(仿真) | Minecraft 世界接口 | ZZJJWarth |
二、系统架构
Robonix 的架构分为三大层:系统核心层(System)、服务与技能层(Services/Skills)、硬件抽象层(Primitives/Robot Deployments)。
核心系统组件
| 组件 | 职责 |
|---|---|
| atlas | 能力注册与发现,所有已注册能力的目录 |
| pilot | VLM 驱动的规划与决策循环,生成 RTDL 计划 |
| executor | RTDL 计划执行,调度各能力节点 |
| scene | 实时环境感知:物体注册表、语义关系、占用栅格 |
| sentinel | 规则驱动的安全门,每次能力调度前校验 |
| liaison | 人机交互网关:聊天、语音、TUI |
| scribe | 结构化持久日志,支持回放和审计 |
| soma | 机器人自描述(身体模型):设备拓扑与原语抽象 |
| vitals | 电力与组件健康监控 |
| keystone | 用户身份、持久化配置、访问策略 |
| chronos | 统一时钟与跨传感器时间戳对齐(PTP/IEEE-1588) |
| nexus | 通信库,支持 gRPC / MCP / ROS 2(不独立运行) |
核心设计哲学
RTDL(Robot Task Description Language) 是 Robonix 的任务描述语言。pilot 生成 RTDL 计划,executor 负责分发执行,并保留每个任务的并发状态和取消能力。
Atlas 能力模型贯穿整个系统:所有 primitives、services、skills 都通过 Atlas 声明自己的能力契约(capability contracts),pilot 在规划时从 Atlas 中检索可用能力,executor 在执行时按契约调度。这与 Docker/Kubernetes 的接口设计思路高度相似——依赖抽象而非具体实现。
技术栈选型
- Rust:系统核心组件(atlas、executor、liaison、pilot、soma、vitals、scribe)使用 Rust 编写,充分利用其内存安全和并发性能
- Python:场景感知(scene)、参考服务实现(memsearch、speech、voiceprint)使用 Python,通过 uv 管理依赖
- 通信层:支持 gRPC(via Tonic)、MCP(Model Context Protocol)、ROS 2(Humbl 推荐),默认使用 Zenoh(RMW)实现无中心通信
- 包管理:Rust 部分通过 Cargo workspace 管理,Python 部分通过 uv workspace + per-package venv 隔离
核心依赖一览(来自 Cargo.toml):
# Async runtime
tokio = { version = "1", features = ["full"] }
# OpenAI-compatible VLM client
async-openai = "0.34.0"
# MCP (Model Context Protocol)
rmcp = { version = "1.3.0", features = ["server", "client"] }
# gRPC
tonic = "0.14"
prost = "0.14"
# TUI
ratatui = "0.30.0"
crossterm = "0.29.0"
三、安装与快速开始
环境要求
- Ubuntu 22.04 / Debian 13(x86_64 或 arm64)
- NVIDIA Jetson(JetPack 6.2,L4T 36.4.3)✅ 已测试
- Rust toolchain(Cargo)
- uv(Astral 的 Python 包管理器)
安装步骤
# 克隆(含子模块,切换到 dev 分支)
git clone --recursive --branch dev https://github.com/syswonder/robonix.git
cd robonix
# 安装 uv(如果没有)
curl -LsSf https://astral.sh/uv/install.sh | sh
export PATH="$HOME/.local/bin:$HOME/.cargo/bin:$PATH"
# 安装 Robonix 系统组件
make install
快速开始(Webots 仿真)
第一步:在终端启动 Webots 仿真:
export DISPLAY=:0
bash examples/webots/sim/start.sh
第二步:在另一终端配置 VLM 并启动 Robonix:
export RMW_IMPLEMENTATION=rmw_zenoh_cpp
export VLM_BASE_URL=https://api.openai.com/v1
export VLM_API_KEY=sk-...
export VLM_MODEL=your-model-name
cd examples/webots
rbnx build
rbnx boot
第三步:在第三终端对话:
rbnx chat
# 尝试:go to room 101
# 或:what can you see?
# 或:explore the office
四、实战:Webots 仿真环境运行
Robonix 提供了多个内置 Webots 仿真世界:
# 指定世界
bash examples/webots/sim/start.sh --world office.wbt
bash examples/webots/sim/start.sh --world apartment.wbt
ROBONIX_WEBOTS_WORLD=break_room.wbt bash examples/webots/sim/start.sh
可用世界包括:office.wbt(默认)、apartment.wbt、complete_apartment.wbt、break_room.wbt、kitchen.wbt。
使用 rbnx shutdown 关闭 Robonix,再执行 bash examples/webots/sim/stop.sh 停止 Webots。
五、开发者指南:构建自己的服务或技能
使用模板项目
git clone https://github.com/syswonder/template-rbnx.git
cd template-rbnx
cp .env.example .env
# 填写 .env 中的 VLM 配置
set -a; source .env; set +a
rbnx build
rbnx boot
rbnx caps # 查看当前可用能力
rbnx chat # 尝试对话
发布社区包
社区包通过 Robonix Package Catalog 索引:
- 在独立仓库中创建包,根目录包含
package_manifest.yaml - 提供
package.name、version、description、tags、maintainers - 向 syswonder/robonix-package-catalog 提交 PR,仅添加
name+repo到catalog.yaml,CI 自动从 GitHub 获取清单并部署
包命名规范:
- Primitive:
primitive-[company]-[model]-[primitive_type]-rbnx - Service:
service-[service_namespace]-rbnx - Skill:
skill-[skill_namespace]-rbnx
六、总结
Robonix 最有价值的地方在于它把"机器人身体"和"AI 智能"彻底解耦了——机器人开发者只需适配一次硬件原语,而 AI 研究者和技能开发者完全不用关心底层传感器型号。这套架构对于推动具身智能从实验室走向真实环境具有重要意义。 项目目前处于早期开发阶段(API 可能变更),但核心思路和代码质量都值得关注。