π0——从论文到复现
openpi = 一个把「多相机视觉 + 语言指令」编码成 token,再用 Transformer 预测「动作 token chunk」的 VLA 系统
整体架构图
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| 输入 ├── 多视角 RGB 图像 ├── 语言指令 (prompt) │ ▼ Observation Encoder ├── Vision Encoder (ViT) ├── Language Encoder (Tokenizer + Embedding) │ ▼ Token Fusion ├── 拼接成一个长 token 序列 │ ▼ Backbone Transformer (π0 / π0.5) │ ▼ Action Head ├── Autoregressive Action Chunk │ ▼ 输出 └── 连续机器人动作 (末端位姿 / joint / gripper)
|
1.1 从「推理入口」反推代码
📂 src/openpi/policies/
🧭 总览:policies/ 这一层到底在干嘛?
总括性结论(非常重要):
policies/ = 把“通用 VLA 模型”适配成“某一具体机器人可用的控制策略”
也就是说:
- π 模型:
- 不关心你是 ALOHA、DROID 还是 LIBERO
- 只吃 统一格式的 token / tensor
- Policy:
- 负责 现实世界 ↔ 模型世界 的转换
- 是 embodiment-specific glue code
重点:
1 2 3 4 5 6 7
| policies/ ├── policy.py ⭐ 抽象基类(协议) ├── policy_config.py ⭐ 工厂 & 装配中心 ├── aloha_policy.py ALOHA 机器人适配 ├── droid_policy.py DROID 机器人适配 ├── libero_policy.py LIBERO benchmark 适配 ├── policy_test.py 单元测试 / 示例
|
👉 阅读顺序建议:
1 2 3 4 5 6 7 8 9 10
| policy.py ↓ policy_config.py ↓ droid_policy.py(你大概率用的) ↓ aloha_policy.py / libero_policy.py(对比读) ↓ policy_test.py
|
大规模预训练