OpenBMB/MiniCPM-Robot
GitHub: OpenBMB/MiniCPM-Robot
MiniCPM-Robot 是 OpenBMB 开源的端侧具身智能模型家族,提供机器人通用操作和高性能目标跟踪能力,以小参数量实现超越更大模型的策略表现。
Stars: 25 | Forks: 3
为机器人打造的更智能、更快速的端侧 AI 大脑
English · 中文
- 通用操作:一个统一的 1.5B 通用策略,仅用一套权重即可覆盖所有下游任务。
- 流式上下文:历史观测通过流式推理被纳入模型上下文。对于 60 帧的历史记录,传统重新计算每个决策步骤需要 125 TFLOPs,而流式推理仅需 3.3 TFLOPs。该模型支持长达 1 分钟的视觉上下文记忆,同时保持与传统单帧反应式推理相当的在线成本。
- 高效推理:继承了 MiniCPM-V 4.6 的视觉 token 压缩技术,将每一帧从 256 个视觉 token 减少到 64 个,实现了 4 倍压缩。在 H100、BF16 和单帧输入下,每个决策步骤的模型前向延迟为 120 ms,而 π0.5 为 234 ms。该测量结果不包括任务的自回归解码。
| 方法 | 评测设置 | 开放权重 | 模型大小 | LIBERO | Calvin (ABC→D) | RoboTwin2 (clean+random) | RMBench | |
|---|---|---|---|---|---|---|---|---|
| easy | hard | |||||||
| π₀ | Specialist | ✅ | 3B | 94.4 | 3.9 | 65.9 | 58.4 | — |
| π₀.₅ | Specialist | ✅ | 3B | 96.9 | 4.1 | 82.7 | 76.8 | 10.4 |
| Abot-M0 | Specialist | ✅ | 4B+ | 98.6 | — | 86.1 | 85.1 | — |
| StarVLA-α | Generalist | ✅ | 4B+ | 97.8 | — | 88.7 | 87.8 | — |
| Qwen-VLA | Generalist | ❌ | 5B+ | 97.9 | — | 86.1 | 87.2 | — |
| LingBot-VA | Specialist | ✅ | 5B+ | 98.5 | — | 92.9 | 91.6 | — |
| MiniCPM-RobotManip | Generalist | ✅ | 1.5B | 97.5 | 4.1 | 91.3 | 91.6 | 53.3 |
首先安装并初始化 Conda。配置规范遵循已测试的 Python 3.10 和 PyTorch 2.6.0 (CUDA 12.4) 设置。
cd MiniCPM-RobotManip
conda env create -f environment.yml
### 推理
使用 vla_infer.py 运行单样本推理。至少提供一张图像和一条语言指令;如果省略,机器人状态默认为零。模型返回形状为 (30, 80) 的动作块。
cd MiniCPM-RobotManip
python vla_infer.py \
--image frame.jpg \
--text "Pick up the red block." \
--checkpoint ./checkpoint \
--state-file state.npy \
--embodiment-id 0 \
使用多个 --image 标志进行多视角输入。如果不加 --output,预测的动作将以 JSON 格式打印。
cd MiniCPM-RobotManip
python vla_infer.py \
--image cam_front.jpg \
--image cam_wrist.jpg \
--text "Pick up the red block." \
## MiniCPM-RobotTrack
MiniCPM-RobotTrack 是基于 MiniCPM4-0.5B 构建的用于具身目标跟踪的紧凑型视觉-语言-动作策略,具有以下亮点:
- 质量驱动的自演化数据 pipeline:自动化检查和人工审核可移除异常轨迹、错误动作和无效交互,同时持续的模型-环境交互会添加高价值的训练样本。
- 用于具身跟踪的 DAgger:在大规模通用场景中进行学习后,模型会与模拟器和真实机器人进行交互,以暴露在目标交叉、急转弯、短暂遮挡和多人相交等长尾案例中的失败情况。由专家策略或规则纠正的样本将被聚合到下一轮训练中,以不断提高跟踪和泛化能力。
- 端到端 Go2 优化:跨越视觉捕获、输入编码、推理、动作生成、指令传输和执行的联合优化,在 Unitree Go2 的原生板载计算上实现了稳定在 5+ FPS 的速度,以及大约 180 ms 的端到端延迟。
- 一键式 Go2 Edu 部署和启动:本地部署流程涵盖了环境设置、依赖项、模型加载、相机输入、文本指令、机器人控制,以及一键部署和启动的工作流,无需重建单独的感知、规划和控制栈,即可实现完全本地化、纯视觉的自然语言跟踪。
### 示例
Outdoor Obstacle-aware Tracking
Elevator Tracking
Underground Parking Tracking
### EVT-Bench 结果
结果报告为 SR / TR / CR:成功率和跟踪率越高越好,而碰撞率越低越好。所有数值均为百分比。
方法
开放权重
模型大小
STT
DT
AT
SR ↑ TR ↑ CR ↓
SR ↑ TR ↑ CR ↓
SR ↑ TR ↑ CR ↓
TrackVLA
❌
7.8B+
85.1 78.6 1.7
57.6 63.2 5.8
50.2 63.7 17.1
TrackVLA++
❌
7.8B+
86.0 81.0 2.1
66.5 68.8 4.7
51.2 63.4 15.9
Qwen-RobotNav
❌
4.4B+
77.4 90.0 6.4
— — —
— — —
OmTrackVLA
✅
1.0B+
81.4 82.8 5.1
41.5 58.8 11.3
60.0 73.9 7.6
MiniCPM-RobotTrack
✅
0.9B
84.1 89.8> 3.0
53.2 73.4 13.6
58.0 80.4 9.0
在上述开源的 checkpoint 中,MiniCPM-RobotTrack 获得了最优的 STT SR/TR/CR 和最优的 DT SR/TR。它还在使用 0.5B 骨干网络的 AT 上达到了 80.35 TR。
### 快速开始
#### 1. 创建环境
首先安装并初始化 Conda。配置规范遵循已测试的 Python 3.9、Habitat-Sim 0.3.1、Bullet、PyTorch 2.4.1 和 CUDA 12.1 设置。
cd MiniCPM-RobotTrack
conda env create -f environment.yml
#### 2. 准备模拟器数据和资产
按照
Habitat-Sim 数据指南
和 TrackVLA 资产指南下载 HM3D、MP3D、人类模型和机器人资产。
在项目的 data/ 目录下保留其原始目录结构。
data/
├── datasets/
├── scene_datasets/
├── humanoids/
### 数据准备
#### 1. 未处理的 rollout
每次 Habitat rollout 都会保留其视频、逐步模拟器状态和回合结果。
可运行的 sim_data/raw_sample
示例包含以下格式的逐步记录:
{
"base_velocity": [0.62, 0.00, 0.02],
"collision": false,
"target_distance": 1.72,
"human_center_norm": [0.50, 0.48]
#### 2. 生成轨迹数据
以下命令会保留成功的回合,提取 RGB 帧,并将未来的动作转换为用于微调的轨迹 JSONL:
cd MiniCPM-RobotTrack
python tools/make_tracking_data.py \
--input_root sim_data/raw_sample \
--output_root sim_data/train/stt \
--only_success \
--history 31 \
--horizon 8 \
--dt 0.1 \
对于完整的数据集,请将原始的 STT、DT 和 AT rollout 放在 sim_data/raw/<task> 下,并对每个任务运行相同的命令。
#### 3. 预缓存视觉特征
cd MiniCPM-RobotTrack
for task in stt dt at; do
python tools/precompute_features.py \
--json "sim_data/train/${task}/jsonl" \
--data-root "sim_data/train/${task}" \
--cache-root "sim_data/train/${task}/vision_cache"
处理后的输出包含 frames/、jsonl/ 和
vision_cache/。
sim_data/sample
为 STT、DT 和 AT 各提供了两条处理后的记录,展示了最终的训练数据格式。
### 微调
在为所有三个任务准备好数据和视觉缓存后,运行公开的微调入口:
cd MiniCPM-RobotTrack
可以在 scripts/train.sh 中调整数据路径、batch size、学习率和 epoch 数量。
### 评估
将已发布的完整 Hugging Face 快照下载到
minicpm_robot_track/checkpoints/MiniCPM-RobotTrack/。它包含微调后的
MiniCPM4 骨干网络,并使用 Transformers 的
from_pretrained 加载。评估仍然需要 DINOv3 ViT-S/16 和
SigLIP So400m;现有的本地视觉模型目录可以通过环境变量进行选择:
export DINOV3_MODEL_PATH=/path/to/dinov3-vits16
在环境、模型和模拟器资产准备就绪后,运行每个任务的评估脚本:
cd MiniCPM-RobotTrack
CKPT=minicpm_robot_track/checkpoints/MiniCPM-RobotTrack
bash scripts/eval_stt.sh "$CKPT" results/stt
bash scripts/eval_dt.sh "$CKPT" results/dt
每条命令会运行相应任务的评估。
### Go2 部署
真实机器人的工作流针对搭载 Jetson Orin NX 16GB 的 Unitree Go2 EDU。
已验证的栈为 Jetson Linux R36.5、CUDA 12.6、TensorRT 10.7、
Python 3.10、ROS 2 Humble 和 MAXN 模式 0。部署使用单独的 Jetson
依赖项,且默认为 dry-run,即绝不发送运动
指令。
Go2/D435i RGB -> TCP JPEG -> DINO + SigLIP TensorRT
完整设置使用 Go2 EDU、Orin NX 16GB 和 D435i。内置的 Go2
前置摄像头是默认经过验证的来源;每次安装都必须分别验证
D435i RGB 路径。详细的硬件参数、网络设置、
资产下载说明、刷机说明和实时控制程序均保存在部署文档中:
#### 快速开始
以下步骤假设 JetPack 6 和载板补丁已经安装完毕:
从
openbmb/MiniCPM-RobotTrack 手动下载 checkpoint。
在运行飞行前检查之前,将完整的 Hugging Face 快照,包含自定义模型代码、
tokenizer 文件和 model.safetensors,放置在
MiniCPM-RobotTrack/minicpm_robot_track/checkpoints/MiniCPM-RobotTrack/
中。
cd MiniCPM-RobotTrack
python3 scripts/download_upstream_assets.py
python3 -m pip install --user -r requirements-build.txt
./scripts/export_onnx.sh
sudo nvpmodel -m 0
sudo jetson_clocks
./scripts/build_engines.sh
./scripts/preflight.sh
状态查询与关闭:
cd MiniCPM-RobotTrack
./go2_runtime.py status
./go2_runtime.py stop-control
## 模型库
| 模型 | 描述 | 下载 |
| --- | --- | --- |
| MiniCPM-RobotManip | 用于机器人操作的 1.5B 视觉-语言-动作模型 | [🤗](https://huggingface.co/openbmb/MiniCPM-RobotManip) |
| MiniCPM-RobotTrack | 用于目标跟踪的 0.9B 视觉-语言-动作模型 | [🤗](https://huggingface.co/openbmb/MiniCPM-RobotTrack) |
## 许可证
模型权重和代码在 [Apache-2.0](./LICENSE) 许可证下开源。
## 致谢
MiniCPM-Robot 基于并参考了 MiniCPM、
starVLA、
LeRobot、
DINOv3、SigLIP、Habitat-Lab、Habitat-Sim、EVT-Bench 和 TrackVLA。
我们感谢作者和社区的开源贡献。
第三方模型、模拟器代码、数据集和资产保留其各自的许可证;请参见
THIRD_PARTY_NOTICES.md。