①采集 ──► ②质检 ──► ③挖掘 ──► ④标注 ──► ⑤训练 ──► ⑥评测 ──► ⑦真机测试
路测/遥操作 标定验证 挑哪1万帧 Xtreme1 PyTorch mAP/成功率 上车/上机
▲ │ ▲ │ ▲ │
│ │ │ │ │ ▼
│ │ │ │ │ ⑧ 失败归因 ★
│ │ │ │ └────────────────────────┤
└──────────┴────────┴────────┴──────────────────────────────────┘
归因结论决定"回到哪一环"
这张图最容易读错的地方:它不是一条流水线,是一个飞轮。 而飞轮的转速,取决于 ⑧ 归因那一环有多快。
常见的想象:改模型 → 跑实验 → 涨点 → 重复。
现实:模型早就够好了。卡住你的是"这类场景训练集里就没有"、 "这帧标注错了"、"标定漂了"。模型改动的收益曲线早就平了,而数据质量的收益还在陡峭段。
训练是最容易的一环,有明确的反馈(loss 降了、mAP 涨了)、能跑实验、能并行。 所以人们天然想待在这一环。
而"这一帧为什么错"是最难受的一环,要拷问自己的数据管道、 承认标定有问题、回去看标注规范。
绝大多数团队的迭代速度,受限于他们多快能把失败归到正确的那一层, 而不是多快能训一个模型。
| 节奏 | 一环 | 耗时 | 内容 |
|---|---|---|---|
| 快循环 | ⑤→⑥ 改代码跑离线评测 | 几小时 | 调模型、调 loss、调后处理 |
| 慢循环 | ①→④ 采集→标定→挖掘→标注 | 天~周 | 补数据、重标定、改标注规范 |
慢循环卡住快循环:你可以在快循环里疯狂刷 100 个实验, 但如果数据本身没变,100 个实验的天花板是同一个数。
这就是为什么"数据工程"比"调模型"更决定一个团队的上限。
飞轮图里的 ⑧ 失败归因,是全流程转速的决定项,也是最值得专门训练的一项技能。它的任务很具体:出问题了(撞了 / 抓空了 / 漏检了),先判断是哪一层错了。排查按这个顺序走:
第 0 层:是评测本身有问题吗? ← 先排除这个,否则后面全白干
├─ 指标定义有偏?(mAP 很高,但漏的全是关键目标)
├─ 测试集泄漏?(训练时见过)
└─ 统计不显著?(只跑了 10 次就下结论)
第 1 层:是数据问题吗? ← 最常见,也最容易被跳过
├─ 这类场景训练集里根本没有 → 回去补采集
├─ 标注错了 → 修标注
├─ 标注规范本身有歧义 → 改规范 + 重标
└─ 类别极不均衡 → 长尾被淹没了
第 2 层:是标定 / 时间同步问题吗? ← 最隐蔽,危害最大
├─ 外参漂移(振动、温度) → 重新标定
├─ 时间戳错位 → 时间标定
└─ 坐标系搞错 → 查 TF 树
第 3 层:是传感器问题吗?
├─ 脏污 / 雨雾 / 过曝 → 这是数据问题,不是模型问题
├─ 点云缺失(黑色 / 镜面物体) → 换传感器或补多视角
└─ 超出量程 → 物理限制,改模型没用
第 4 层:才是模型问题
├─ 容量不够 / 训练不足
├─ 架构不适合这个任务
└─ loss 设计有问题
人的第一反应永远是从第 4 层开始查,因为改模型有明确反馈、感觉"在推进"。 而正确答案通常在第 1~3 层。
所以 Foxglove / Rerun 这类工具的真正价值不是"看数据",而是"快速缩小归因范围"。
在 Foxglove 里把点云投到图像上一看,错位了 → 归因直接跳到第 2 层, 省掉了三轮无效的模型实验。一次归因正确的排查,能省掉几周的弯路。
采集 车队 10 台 × 1 天 2 百万帧 / ~20 TB
挖掘 从全量里挑候选 10,000 帧 (0.5%)
标注 8 分钟/帧 × 10,000 帧 1,333 人时 = 167 人天 ¥53,333
20 人并行 → 墙钟 8.3 天
训练 8×A100 × 2 天 384 GPU时 ¥3,840
离线评测 1 小时 分钟级,可忽略
★ 标注 : 训练 = 13.9 : 1
★ 标注占了 >90% 的成本,而它只碰了 0.5% 的数据
★ 真正的决策不是"标多少",而是"标哪 10,000 帧"
这张账解释了"数据挖掘(③)"这一环为什么存在,也解释了 Xtreme1 为什么要做 相似度图(找出重复样本 = 别浪费钱标一样的帧)。
最容易被忽略的一环就是 ③,它决定了标注预算真正买到的是什么:
| 挑法 | 手段 |
|---|---|
| 基于模型 | 不确定度高 / 预测分歧大的帧(主动学习) |
| 基于场景 | 按天气 / 时段 / 地点 / 场景类型检索 |
| 基于触发器 | 接管、急刹、AEB 触发、异常轨迹 |
| 基于相似度 | 找长尾、去重复(openTSNE 那类) |
业界共识很粗暴:10% 精选数据 > 100% 随机数据。
采集 1 台机器人 × 1 天遥操作 → 200 条 episode × 30s = 1.7 小时真机数据
标注 子任务分段 + 语言 + 成败 → 200×2min = 6.7 人时 ← 很便宜
训练 imitation / RL → ~1 天
评测 10 个任务 × 100 次真机试验
每轮 90s(含复位) → 1,000 次 × 90s = 25 小时 = 3.1 个工作日
⚠️ 只有 1 台机器人 → 墙钟就是 3.1 天,且不能并行
上面两组数字看起来"自驾 8 天 vs 具身 3 天",好像具身更快。 这个比较是无效的,两边任务规模不同(大标注任务 vs 小具身任务)。
真正的差别是性质,不是天数。
| 自动驾驶 | 具身智能 | |
|---|---|---|
| 成本大头 | 标注 >90% | 采集 + 真机评测 |
| 瓶颈能并行吗 | ✅ 能。20 人 8 天,200 人 0.8 天,钱能换时间 | ❌ 不能。1 台机器人就是 1 台,一天就是 24 小时 |
| 评测怎么做 | 可信的离线评测集,几小时跑完 1 万帧 | 必须真机闭环(仿真有 sim2real gap,不敢全信) |
| 迭代次数需求 | 少(站在预训练模型上做增量) | 多(策略从接近零开始,成功率要反复爬) |
能建立起"可信的离线评测集"的领域,迭代就快。
自驾做到了,固定 benchmark,改完代码几小时出数。
具身做不到,任务成功依赖闭环交互和物理细节,只能真机跑,所以每轮以"天"计。
这是一条普适规律,不只适用于机器人: 你能多快、多可信地测出"变好了没有",决定了你能多快迭代。
(这也是为什么"建评测集/评测工具链"这份工作看起来不性感,但杠杆极高。)
具身领域为此在拼命找破局手段:Isaac Lab 几千个环境并行仿真、多机器人集群、 更聪明地从已有 episode 里复用数据。
三代架构在回答同一个问题:把多相机、激光和时序的信息放到一个统一的中间表征里。 每一代的区别,就是那个表征换了个形式,从各自为战的任务头,到鸟瞰图网格,再到体素与端到端轨迹。
| 任务 | 代表架构 |
|---|---|
| 2D 检测 | YOLO 系列、Faster R-CNN、DETR/DINO |
| 3D 检测(激光) | PointPillars、VoxelNet、SECOND、CenterPoint、PV-RCNN |
| 3D 检测(纯视觉) | FCOS3D、DETR3D、PETR |
| 跟踪 | AB3DMOT、CenterPoint tracking、ByteTrack |
| 轨迹预测 | VectorNet、mmTransformer |
激光点云那一路的三种做法(这个分类很经典):
点 → 体素 (VoxelNet) → 3D 卷积 准但慢
点 → 柱子 (PointPillars) → 2D 卷积 快,工业最爱
点 → 直接处理 (PointNet++) → 点云算子 灵活但慢
一个具体的印证:Xtreme1 内置的预标注就是 OpenPCDet(点云检测)+ AB3DMOT(跟踪)+ YOLOR(图像),全是这一代的东西。 这也解释了为什么它的 AI 能力看起来"不够新"。
把所有传感器(多相机 + 激光)的特征,统一投影到一个鸟瞰图网格上, 然后所有任务都在这个共享表征上跑。
它解决了什么:多相机融合 + 时序融合 + 跨任务复用, 以前每个任务都要单独处理视角问题。
标志性做法,LSS (Lift-Splat-Shoot):
Lift: 对每个像素预测一串深度分布 → 把 2D 特征"抬"成 3D 点云状特征
Splat: 把这些特征"泼"到 BEV 网格上
Shoot: 在 BEV 上跑检测头
相机没有深度,但模型可以学一个"像素有多远的概率分布",然后用它把 2D 特征反投影到 3D。
几何信息从"标定参数"部分转移到了"网络学习"。
代表:BEVFormer、BEVDet/BEVDepth、PETR、BEVFusion(相机+激光统一 BEV)。
Occupancy(占据预测)是对"3D 框"的超越:
| 3D 框 | 占据栅格 | |
|---|---|---|
| 输出 | 有限个长方体 | 每个体素是否被占据 + 语义 |
| 能表达 | 已知类别物体 | 任意形状(异形障碍物、散落物、施工锥桶) |
| 代价 | 标注便宜 | 标注极贵(要标体素级) |
代表:TPVFormer、SurroundOcc、OccNet(Tesla 那套)。
端到端是更大的范式转变:把感知 + 预测 + 规划塞进一个网络,直接输出轨迹。
收益:不再有模块间的接口工程,误差不再逐级累积,整体可优化
代价:归因变难了 —— 出错了你分不清是"没看见"还是"看见了但决策错"
↑ 这直接命中第三节的 ⑧ 归因环
这就是为什么"可解释性 / 中间监督"在端到端时代反而变成了热门话题 精确地说是把感知模块重新加回来做监督。
图像 (1~4 视角) ─┐
├─► 视觉编码器 ─► LLM 骨干 ─► 动作头 ─► 动作序列
语言指令 ────────┘ (ViT) (预训练) (生成)
本体状态 (关节角) ─────────────────────┘
和自驾第二代的思路同源:都是"用预训练大模型做骨干,接一个任务头"。
| 模型 | 视觉编码器 | LLM 骨干 | 动作头 | 总参数 |
|---|---|---|---|---|
| Octo | 自研 ViT | Transformer | 扩散 | 93M |
| OpenVLA | SigLIP 400M | LLaMA 2 7B | 离散 token | 7B |
| π0 | PaLI 系 | 自研 | 流匹配 | ~3B |
| GR00T N1 | Eagle (NVIDIA) | 自研 | 双系统:扩散 + MLP | ~2B |
| SmolVLA | SigLIP 400M | SmolLM2 135M | 扩散 | 500M |
| OpenPI | SigLIP | LLaMA 系 | 流匹配 | ~3B |
这是具身架构最独特、也最本质的地方:
流派 1:离散 token(OpenVLA),把每个动作维度分箱成 256 档, 当成"下一个 token"来预测,复用 LLM 的自回归生成机制。缺点是精度受限。
流派 2:扩散(Octo、SmolVLA),把动作生成当作条件去噪过程。16~32 步收敛。
流派 3:流匹配(π0、OpenPI),用直线插值路径(最优传输)代替扩散的弯曲噪声路径, 4~8 步就收敛 → 推理更快,动作轨迹更平滑。
问题:同一个状态下,抓杯子的把手可以"从左"也可以"从右" —— 两个都合法。
如果用 MSE 回归:模型会输出两者的平均值 → 一个"正中间"的
不合法动作 → 抓空
用扩散/流匹配:模型学到的是【动作的分布】,能采样出某一个模态
→ 要么从左、要么从右,都是合法动作
动作的多模态性(multimodality)是具身区别于自驾的架构根源。
自驾的输出是几何量(框在哪就是哪),回归就够;具身的输出是"决策",天然多模态。
问题:OpenVLA 在 A100 上只有 5–8 Hz,但机器人控制在 50 Hz。差一个数量级。
解法:一次推理预测【一串】未来动作(10–20 步),然后以 50 Hz 逐步执行。
推理 5 Hz ──► 一次输出 10~20 步 ──► 以 50 Hz 执行完 ──► 再推理
它同时解决两个问题:① 复合误差(决策点变少,误差不再逐步累积); ② 人类演示的非马尔可夫性(演示数据有停顿、犹豫,单步建模学不到)。
慢系统 (2~5 Hz):VLA 骨干,理解场景和语言 → 出高层动作计划
快系统 (200+ Hz):轻量策略,把计划转成电机指令,带反应式反馈
模仿生物学的"深思熟虑 vs 反射"。这和自驾里"端到端规划 + 底层控制"是同一个问题。
| 传统做法 | 现在 | |
|---|---|---|
| 自驾 | 分模块流水线 | 预训练大模型骨干 + 任务头(4D MLLM) |
| 具身 | 分模块流水线 | 预训练大模型骨干 + 动作头(VLA) |
两者都在从"手工模块化"走向"大模型 + 微调"。这是当前最值得记住的趋势判断。
"标定是整条链的命脉"这句话需要限定条件,它成立与否,取决于你走哪条技术路线。
来自一个机器人数据采集服务厂商的实践建议(2026 年 4 月):
相机内外参应该记录,但大多数 VLA 架构并不需要它们 它们直接从像素学视觉特征。
所以标定的地位要分路径看:
| 路径 | 标定的地位 |
|---|---|
| 端到端 VLA:像素 → 动作 | 退居"建议记录"(为了可复现、可调试),不是硬门槛 |
| 几何计算路径:像素 → 3D 点/抓取位姿 → 动作 | 仍是硬前提(反投影、6DoF 位姿全靠它) |
| 动作执行侧:末端位姿控制、运动学、手眼 | 仍是硬前提(这些本身就是几何) |
VLA 让「感知侧」的几何精度不再是硬门槛 (几何信息从"标定参数"转移到了"网络学习"), 但「控制侧」的几何依然是,因为动作活在几何世界里。
这个"转移"在自驾第二代 BEV 里就已经发生过 LSS 用网络学深度分布,本质就是把一部分几何从标定参数搬进了网络。
落到行动上:
领域里的"铁律"往往绑定在特定范式上。听到"X 是命脉"时, 先问一句 "在哪个范式下?"
| 架构范式 | 标注要什么 | 成本 |
|---|---|---|
| 3D 检测 | 3D 框 | 中 |
| 占据预测 | 体素级语义 | 极贵 |
| 端到端自驾 | 轨迹 / 行为 | 贵且主观 |
| ACT / Diffusion Policy | episode(观测+动作) | 便宜(遥操作自带动作) |
| VLA | episode + 语言描述 | 便宜,但语言质量决定泛化 |
VLA 那条最值得注意:动作是遥操作时天然录下来的,不需要人标! 所以标注成本极低。代价换到了别处:人类得真的去遥操作一遍。
但语言那一栏有个反直觉的要求,同一个任务要变换措辞:
好:"pick up the leftmost object"
差:"do the task"
同一任务要写成:"grab the mug" / "pick up the coffee cup" / "take the cup from the table"
↑ 这样模型的"语言泛化"才学得出来
"图片 / 视频 / 点云"这个描述漏了三样东西,其中一样是最容易被忽略的。完整的模态清单如下:
| 模态 | 具体形式 | 自驾 | 具身 |
|---|---|---|---|
| 视觉 | 多路相机图像 | ✅ 通常 6+ 路 | ✅ 1~4 路(腕部 + 外部) |
| 点云 / 深度 | LiDAR 点云、深度图 | ✅ 主力 | ✅ RGB-D |
| 本体状态 | 关节角、末端位姿、夹爪开合 | — | ✅ 必需 |
| 语言 | 任务指令 | 罕见 | ✅ VLA 必需 |
| 历史动作 | 上一步的动作 | — | ✅ 常见 |
| IMU / 轮速 | 运动信息 | ✅ | 部分 |
# ── 输入 ──────────────────────────────────────
images : (2, 3, 224, 224) # 2 个视角/帧 × RGB × 224×224
proprio : (8,) # 7 个关节角 + 1 个夹爪开合
language : (L,) tokens # "pick up the red cup"
真实输入是同时喂进去的一整组观测,不是"选一个"。
模型吃的不是 mp4,是形状为 (N, H, W, 3) 的 tensor。
而且 N 往往很小,比如 Octo 只用 2 帧。
时序建模靠 attention 在帧之间做,不靠"视频"本身。
(实用细节:图像存的时候要存高分辨率,建议 1280×720, 但 VLA 内部会降采样到 224×224 或 336×336。)
具身是闭环控制问题:同一张图像下,"该往哪动"取决于"我现在在哪"。 没有本体状态,这个问题是欠定的,只有图像时,能看到杯子在桌上, 却不知道手已经伸到哪了,也就不知道下一步该往哪偏。
画架构图时最容易漏掉这一路输入,然后就想不明白模型为什么学不会。
输出是"未来的动作序列",不是"一个标签"。不过这个词在自驾和具身里含义不同,自驾的输出是几何量,具身的输出是动作,所以下面分两张表看。
| 任务 | 输出形式 | 形状 |
|---|---|---|
| 3D 检测 | 一组框 | N × (x,y,z,l,w,h,yaw,cls,v) |
| BEV 语义分割 | 栅格类别图 | H × W |
| 占据预测 | 体素占据 + 语义 | X × Y × Z × (occ, cls) |
| 高精地图 | 矢量折线 + 拓扑 | 点序列 + 连接关系(不是栅格!) |
| 轨迹预测(别车) | 多模态轨迹 + 概率 | M × T × 2 + M 个概率 |
| 规划 / 端到端 | 自车未来轨迹 | T × 2(或 + 速度/曲率) |
| 动作空间 | 形状 | 特点 |
|---|---|---|
| 关节绝对位置 | T × (J+1) | 最通用,J 个关节 + 夹爪;所有 VLA 都能吃 |
| 末端位姿 | T × (7+1) | xyz + 四元数 + 夹爪;跨机器人更可迁移 |
| 关节增量 (delta) | T × (J+1) | 相对量 |
| 底盘速度 | T × 2 | (v, ω) |
| 全身 / 人形 | 高维 | 腿 + 臂 + 手一起 |
落到张量上,具身一次推理的输出长这样:
# ── 输出 ──────────────────────────────────────
actions : (16, 8) # 16 步 action chunk × 8 维动作
# 16 步 @ 50Hz = 0.32 秒的"计划"
① 输出是 chunk(一段),不是单步:T ≈ 10~20 步。这就是 action chunking。
② 输出通常在「归一化空间」:
模型输出的不是 "肘关节 1.37 弧度",而是 [-1, 1] 之间的一个数,
用【数据集统计量做 min-max 归一化】,部署时再反归一化。
为什么?因为不同机器人的关节范围天差地别。
归一化之后,同一套架构才能跨机器人训练 —— 这是 Open X-Embodiment 这类工作能成立的前提。
③ 离散 vs 连续,取决于动作头流派:
OpenVLA(离散 token) : 输出 256 档的 token → 反离散化成数值
Octo / SmolVLA(扩散) : 输出连续向量
π0 / OpenPI(流匹配) : 输出连续向量,4~8 步收敛
自动驾驶·轨迹预测: 这辆车可能【左转 / 右转 / 直行】—— 三个都合法
→ 输出 M 条轨迹 + 概率
具身智能·动作生成: 这个杯子可能【从左抓 / 从右抓】—— 两个都合法
→ 输出动作分布,采样一条
本质是同一类问题:输出空间天然多模态,用纯 MSE 回归会得到"平均值"这种不合法答案。 这就是为什么两侧都在用生成式建模(扩散 / 流匹配 / 混合密度输出),而不是简单回归。
时刻 t:
输入 = 图像_t + 本体状态_t + 语言
输出 = 动作_t … 动作_{t+T}
│
▼ 执行后,机器人动了
时刻 t+1:
输入 = 图像_{t+1} + 本体状态_{t+1} + 语言
▲
「动作_t」把它改变了
| 性质 | 后果 | |
|---|---|---|
| 自驾感知 | 开环观察者,我的输出不影响世界 | 可以离线评测(录好的数据跑一遍) |
| 具身操作 | 闭环参与者,我的输出改变下一帧看到的东西 | 无法只靠离线数据集评测 |
误差会自己累积并放大:
感知差一点 → 动作差一点 → 机器人位置偏了 → 下一帧看到的更偏 → 动作更差 → 崩
这就是为什么具身必须有 action chunking(减少决策点、打断累积链)。
因为策略会改变它自己看到的输入。离线数据集是别人(人类演示者)的轨迹, 策略一旦偏离那条轨迹,就进入了训练数据里从来没出现过的状态分布。
离线指标再好,也不代表闭环里能活下来。
这在强化学习里叫 compounding error / distribution shift, 是具身智能最核心的困难之一。
第十二节的结论是"必须真机闭环评测",而真机评测恰恰是最贵、最不能并行的一环 于是仿真替代性就成了整个流程的胜负手。真实状况比一句"有 gap"复杂得多: sim2real 的成熟度按任务类型分成三档,差异极大。
sim2real 不是一个 gap,是几个 gap,而且成熟度差异极大 最成熟的那一档已经"解决"了,最不成熟的那一档基本没动。
| 领域 | 2026 年状态 | |
|---|---|---|
| ✅ | 腿足运动 / 全身运动模仿 | 基本解决,纯仿真训练,zero-shot 迁移真机 |
| 🟡 | 全身 loco-manipulation(开门、拉抽屉) | 刚打通,纯 RGB zero-shot 到没见过的门,成功率超过人类遥操作 |
| ❌ | 接触密集操作 / 通用操作 | 仍是主要瓶颈,还得靠真机遥操作数据 |
最精炼的总结来自 ROBOTIS 2026 年 9 月的技术博客(他们同时在做人形的全身运动和双臂操作):
"全身运动受益于可扩展的仿真。
操作受益于可扩展的机器人数据。"
"Whole-body motion benefits from scalable simulation. Manipulation benefits from scalable robot data."
实跑数据(ROBOTIS AI Sapiens,23 自由度双足人形):
| 参数 | 值 |
|---|---|
| 并行环境数 | 4,096 个实例 |
| 物理频率 / 策略频率 | 200 Hz / 50 Hz |
| 域随机化 | 地面摩擦与恢复系数、默认关节零位、躯干质心、速度扰动 |
| 训练墙钟时间 | 约 4 小时(一个动作技能) |
| 产出 | policy.onnx + sim2real.yaml |
一个参考动作 → 4,096 个随机化环境 → 一个可部署的全身策略
这条链路是完全打通的,不需要真机数据,纯仿真训练,直接部署。
他们最初用 Isaac Lab 默认的 PhysX 训练:仿真里动作跟踪得很好, 真机上平衡和地面接触响应明显不同。
换到 Newton(NVIDIA + Google DeepMind + Disney Research 联合开发、 Linux Foundation 托管的开源物理引擎,基于 Warp + OpenUSD)之后, 同一套学习流程、同一台硬件,真机表现明显更稳定。
域随机化和模型保真度解决的是不同问题:
域随机化 → 在模型周围【扩大分布】
模型保真度 → 改进那个分布【所围绕的模型】
两者不能互相替代 —— 这一点经常被混为一谈
CVPR 2026 的 DoorMan 是个很好的标尺,任务是"用单目 RGB 打开各种门", 被当作 loco-manipulation 的压力测试:要同时处理抖动的第一人称视觉、弹簧门把手的力、 门板的圆弧轨迹、以及铰链反作用力下的全身平衡。
| 指标 | DoorMan | 专家遥操作 | 非专家遥操作 |
|---|---|---|---|
| 成功率 | 83% | 80% | 60% |
| 平均耗时 | 15.40 s | 20.02 s | 22.55 s |
纯 RGB、端到端、zero-shot 迁移到没见过的真门,成功率追平专家遥操作,效率还快 24%。
| 配置 | 成功率 |
|---|---|
| 完全不做视觉随机化 | 5% ~ 20% ⚠️ |
| 纯色纹理 + 穹顶光照随机 | 65.8% ~ 70% |
| 高保真 PBR + 穹顶光照随机 | 80% ~ 86% |
而"穹顶光照随机化"是最关键的一项,去掉它成功率掉 15~30%。 反倒是纹理多样性收益递减:从 10% 纹理加到 100%,只多 4~8%。
他们刻意不复现任何一个真实场景,所有真机评测场景在训练时完全没见过。
与其精确建模目标环境,不如把分布包络撑开。
| 局限 | 说明 |
|---|---|
| 只验证了开门 | 一种铰链式物体,没验证抽屉 / 旋钮 / 阀门 |
| 依赖预训练全身控制器 | 腿部运动不是从零学的,底层是现成的 WBC |
| 算力开销大 | 5,233 个穹顶光照贴图 + RTX 渲染 + 并行 RL |
| 评测从标准化初始位姿开始 | 机器人固定在门前 1 m、朝向 ±0.3 rad 内,混乱真实环境未验证 |
| 缺长期鲁棒性数据 | 没有连续多门、长时间运行的证据 |
开门这个任务恰好有个特殊性质,门的变体可以【程序化生成】。
5 种款式 × 3 大力学类别(下压把手推 / 下压把手拉 / 推杆门)
尺寸、把手位置、铰链阻尼、门锁阻力矩 —— 全部可以随机化
→ 无限变体,且每个变体都物理合理
不是所有任务都有这个性质。这解释了为什么 sim2real 在 "门 / 腿足 / 简单抓取"上成功,而在"杂乱环境里的开放式操作"上不成立。
这里仿真的角色变了。ROBOTIS 在操作侧(AI Worker,双臂半人形)的流程是:
遥操作采集 → Cosmos Transfer 增广 → GR00T 1.7 微调 → 真机评测
注意:仿真在第一步就被"真机遥操作"顶替了。
| 项 | 值 |
|---|---|
| 真机遥操作采集 | 268 条 episode(约 3 小时) |
| 基础模型 | Isaac GR00T 1.7 |
| 微调 | RTX PRO 6000,约 4 小时 |
| Cosmos 增广 | 300 条合成视频 |
| 合计训练集 | 568 条 |
抓手去够自己的影子,而不是目标物体。
诊断结果:训练分布里的视觉覆盖不足,数据都在相对固定的工作区和光照下采集, 策略没有足够样本学会"把任务相关的物体特征"和"场景相关的线索(比如影子)"分开。
修复手段:用 Cosmos Transfer 2.5 增广已有的真机数据,而不是补一轮真机采集。
"保持机器人轨迹不变,只改变它看到的世界。"
结果:影子鲁棒性改善,而且意外出现了"抓失败后重新接近"的恢复行为 (这个不是增广的目标,所以他们把它当经验观察而非受控结论)。
失败的性质 → 视觉分布问题,不是物理问题
失败在哪发现 → 只有真机上、真实光照下才会出现
修复手段 → 增广真机数据,不是做更多仿真
合成数据的来源 → 从 268 条真机轨迹长出来的
268 条真机 → 300 条合成。合成数据是从真机数据派生出来的 它没有替代真机,它在放大真机。
他们自己的判断:"接触密集操作仍然是主要挑战,学习真实世界的交互动力学 可能是扩展人形操作的下一个方向。",也就是:下一步是学真实世界的动力学, 不是做更准的仿真。
这点很少被提及,但讲得很清楚:
"我们试图仿真的那台真机,它本身有多可预测?"
| 子系统 | 规格 | 为什么重要 |
|---|---|---|
| 计算 | Jetson Orin NX | 端侧推理,省掉板外往返 |
| 控制环 | 1 kHz 低延迟 | 减少"感知到执行"的延迟 |
| 操作系统 | PREEMPT-RT | 减少实时控制环的调度抖动 |
| IMU | 8 kHz 更新 | 提供新鲜的姿态估计 |
而执行器是关键一环。阻抗控制律是:
τ_cmd = Kp(q_d − q) + Kd(q̇_d − q̇) + τ_ff
理想传动下 τ_joint ≈ N · Kt · I
(关节力矩应随电机电流可预测地缩放)。但真实执行器有摩擦、背隙、传动损耗、反射惯量。
"目标不是让真实执行器变得理想,而是让它的行为「一致且可建模」。"
减速比还有一个额外好处:反射惯量大约按减速比的平方缩放, 所以低减速比对不确定性有利。
更好的仿真保真度 → 更好地建模机器人
更好的 QDD 硬件 → 更可预测的关节动力学 → 更容易建模的硬件
缩小 sim2real gap 需要【两边同时做】
实用含义:如果你在做硬件选型,"这个硬件好不好建模"应该成为一个真实的评估维度, 而不只是看性能指标。
| 领域 | 仿真的角色 | 真机数据还是护城河吗 |
|---|---|---|
| 腿足 / 全身运动 | 替代真机数据 | ❌ 不是了,纯仿真训练就能 zero-shot |
| 全身 loco-manipulation | 替代(但有前提) | ⚠️ 部分,前提是任务变体可程序化生成 |
| 接触密集操作 | 放大真机数据 | ✅ 是,而且更清晰了 |
所以准确的判断是:
仿真的替代作用在运动上已经成立,在操作上不成立 操作侧的仿真变成了真机数据的放大器,而不是替代品。 268 条真机 → 300 条合成,合成是从真机派生的。
所以"真机数据是护城河"这个判断在操作侧还在, 而且因为"数据是种子"这件事被验证了,反而更牢固。
护城河会不会破,看这两个比例:
① 合成 : 真机 的数据比例
现在 300 : 268 ≈ 1.1
如果涨到 10:1 甚至 100:1,而且不再需要真机做种子
→ 护城河破了
② 合成数据的"血统"
现在 合成是从真机轨迹【派生】的(改外观、保动作)
如果变成 合成数据【独立生成】,完全不需要真机轨迹
→ 护城河破了
只要合成数据还需要真机做种子,"真机数据是护城河"就成立。
能确认的:
不能确认的:
如果你的任务是单一的、不需要语言条件,不要用 VLA。 ACT 或 Diffusion Policy 更简单、训得更快、单任务成功率往往更高。
VLA 的价值在于多任务 + 语言泛化。为单任务上 VLA 是拿大炮打蚊子。
| 模型 | 微调成本 | 单任务成功率 |
|---|---|---|
| Octo (93M) | 单卡 30 分钟 | 基线 |
| SmolVLA (500M) | 单卡 1~2 小时 | OpenVLA 的 60~75%(单任务微调后差距缩到 5~10%) |
| OpenVLA (7B) | 8 卡 4~8 小时(LoRA 可降到 1~2 卡) | 语言泛化最好 |
①采集 ──► ②质检 ──► ③挖掘 ──► ④标注 ──► ⑤训练 ──► ⑥评测 ──► ⑦真机测试
▲ ▲ │
│ │ ▼
★关键位置★ Xtreme1 在这里 ⑧ 归因 ★关键位置★
Foxglove/Rerun Foxglove/Rerun
MCAP + Foxglove 这类数据可观测性工具,正好落在 ②质检 和 ⑧归因 这两环 而这两环恰恰是"数据飞轮的刹车片"。
这是个杠杆极高的位置:卡住别人的往往不是模型,是看不到问题在哪。 这个位置握着的正是"缩小归因范围"的能力。
但要真正覆盖这两环,还需要补上两块能力:
补齐这两块,一个人就能独立跑完整个飞轮的一圈。
迭代流程:
是【数据飞轮】,不是模型迭代。
三条铁律:① 瓶颈在数据不在模型 ② 瓶颈在归因不在训练
③ 慢循环(数据)卡住快循环(模型)
归因分层:第 0 层评测 → 1 数据 → 2 标定 → 3 传感器 → 4 才是模型
人的第一反应永远从第 4 层查,而答案通常在前三层。
成本结构决定了流程形状:
自驾:标注占 >90%,但【能并行】→ 钱能换时间
具身:瓶颈是采集+真机评测,【不能并行】
最深的一条:能建立可信离线评测集的领域,迭代就快
模型架构:
自驾三代:分模块 → BEV 统一表征 → 占据栅格 + 端到端
具身:VLA 三段式(视觉编码器 + LLM 骨干 + 动作头)
动作头三流派:离散 token / 扩散(16-32步)/ 流匹配(4-8步)
为什么必须生成式:动作天然多模态,MSE 回归会输出"平均值"→ 抓空
两个领域在收敛:都在走向"预训练大模型骨干 + 任务头"
标定的地位取决于范式:
"标定是命脉"只在【几何感知】范式下成立。
端到端 VLA 让【感知侧】的几何不再是硬门槛,
但【控制侧】的几何依然是 —— 因为动作活在几何世界里。
sim2real 现状(三档,成熟度差异极大):
✅ 腿足/全身运动 基本解决,纯仿真 zero-shot(4,096 并行,4 小时/技能)
🟡 全身 loco-manip 刚打通(DoorMan 纯 RGB 开门 83%,超过专家遥操作 80%)
前提:任务变体可【程序化生成】—— 门恰好满足
❌ 接触密集操作 仍是瓶颈,仍靠真机遥操作
仿真在这里的角色是【放大器】不是【替代品】
268 条真机 → 300 条合成,合成从真机派生
⭐ 两个容易被忽略的点:
① gap 的另一半在硬件上 —— "我们要仿真的那台真机有多可预测?"
QDD 低减速比/低背隙的价值不是"更理想"而是"更可建模"
② 域随机化 vs 模型保真度解决【不同】问题,不能互相替代
(PhysX → Newton 换引擎后,同流程同硬件,真机明显更稳)
输入输出:
输入不是"或"是"和";"视频"是 N 帧堆叠;
最易漏的是本体状态(模型必须知道自己手臂在哪)
输出是"未来的动作序列"(chunk),不是标签,且通常在归一化空间
最本质:具身的输出会改变下一时刻的输入 → 闭环
→ 这就是为什么必须真机评测、为什么会有 compounding error