今天在 GitHub Trending 上看到一个有意思的项目:Robonix,一个专为具身智能打造的开源操作系统,目标很简单——训练一次,部署到任意机器人上。

一、项目概述

Robonix 探索如何在系统层面构建机器人的"大脑":一套通用中间件,让 AI 模型通过不同的机器人身体来感知、理解、规划和行动,而无需针对每个厂商的 SDK 单独适配。

其核心理念是解耦:

  • 模型(Model)和技能(Skill) 被当作程序(Programs)来看待
  • 机器人硬件 被抽象为可被发现的能力(Capabilities)

这样一来,机器人开发者只需集成一次身体,而模型和技能开发者则基于统一的硬件接口(摄像头、激光雷达、底盘、机械臂、定位、导航、语音等)来编程。

已支持的机器人平台:

机器人主要传感器维护者
AgileX Ranger Mini v3Livox MID-360 + Intel RealSense D435isyswonder
DEEP Robotics Lite3Livox MID-360 + Orbbec Gemini 330Bunnycxk
Unitree Go2机载 lidar + 摄像头 + IMUOrigamii520
WowRobo RoboarmFive-axis LeRobot Koch + Orbbec Gemini 215gaoyz1235
Webots 仿真(TIAGo Lite)RGB-D + Hokuyo lidarsyswonder
Minecraft Bot(仿真)Minecraft 世界接口ZZJJWarth

二、系统架构

Robonix 的架构分为三大层:系统核心层(System)、服务与技能层(Services/Skills)、硬件抽象层(Primitives/Robot Deployments)。

核心系统组件

组件职责
atlas能力注册与发现,所有已注册能力的目录
pilotVLM 驱动的规划与决策循环,生成 RTDL 计划
executorRTDL 计划执行,调度各能力节点
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 索引:

  1. 在独立仓库中创建包,根目录包含 package_manifest.yaml
  2. 提供 package.name、version、description、tags、maintainers
  3. 向 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 可能变更),但核心思路和代码质量都值得关注。