18算法流程与模型架构

本页路线图(由浅入深)
  1. 流程(一 ~ 四),数据飞轮 · 三条铁律 · 归因分层 · 成本账
  2. 架构(五 ~ 九),自驾三代演进 · 具身 VLA · 两域收敛 · 标定的适用边界 · 标注需求的连带变化
  3. 输入输出与边界(十 ~ 十四),输入 · 输出 · 闭环本质 · sim2real · 落地建议
进阶 · 系统层含范式适用边界含 sim2real 现状

一、迭代流程:它是个飞轮,不是流水线

   ①采集 ──► ②质检 ──► ③挖掘 ──► ④标注 ──► ⑤训练 ──► ⑥评测 ──► ⑦真机测试
   路测/遥操作  标定验证   挑哪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 里复用数据。

五、模型架构:自驾的三代演进

三代架构在回答同一个问题:把多相机、激光和时序的信息放到一个统一的中间表征里。 每一代的区别,就是那个表征换了个形式,从各自为战的任务头,到鸟瞰图网格,再到体素与端到端轨迹。

第一代:分模块 + 单模态(2015~2020)

任务代表架构
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 能力看起来"不够新"。

第二代:BEV 统一表征(2020~2023)关键突破

核心思想

把所有传感器(多相机 + 激光)的特征,统一投影到一个鸟瞰图网格上, 然后所有任务都在这个共享表征上跑。

它解决了什么:多相机融合 + 时序融合 + 跨任务复用, 以前每个任务都要单独处理视角问题。

标志性做法,LSS (Lift-Splat-Shoot):

Lift:  对每个像素预测一串深度分布 → 把 2D 特征"抬"成 3D 点云状特征
Splat: 把这些特征"泼"到 BEV 网格上
Shoot: 在 BEV 上跑检测头
这个思路的关键:几何信息从标定参数转移到网络学习

相机没有深度,但模型可以学一个"像素有多远的概率分布",然后用它把 2D 特征反投影到 3D。

几何信息从"标定参数"部分转移到了"网络学习"。

代表:BEVFormer、BEVDet/BEVDepth、PETR、BEVFusion(相机+激光统一 BEV)。

第三代:占据栅格 + 端到端(2023~今)

Occupancy(占据预测)是对"3D 框"的超越:

3D 框占据栅格
输出有限个长方体每个体素是否被占据 + 语义
能表达已知类别物体任意形状(异形障碍物、散落物、施工锥桶)
代价标注便宜标注极贵(要标体素级)

代表:TPVFormer、SurroundOcc、OccNet(Tesla 那套)。

端到端是更大的范式转变:把感知 + 预测 + 规划塞进一个网络,直接输出轨迹。

⚠️ 端到端的收益与代价(与第三节归因分层呼应)
收益:不再有模块间的接口工程,误差不再逐级累积,整体可优化
代价:归因变难了 —— 出错了你分不清是"没看见"还是"看见了但决策错"
      ↑ 这直接命中第三节的 ⑧ 归因环

这就是为什么"可解释性 / 中间监督"在端到端时代反而变成了热门话题 精确地说是把感知模块重新加回来做监督。

六、模型架构:具身的 VLA 范式

架构模板(三段式)

图像 (1~4 视角) ─┐
                 ├─► 视觉编码器 ─► LLM 骨干 ─► 动作头 ─► 动作序列
语言指令 ────────┘   (ViT)         (预训练)    (生成)
本体状态 (关节角) ─────────────────────┘

和自驾第二代的思路同源:都是"用预训练大模型做骨干,接一个任务头"。

真实模型对照(2026 年 4 月的数据)

模型视觉编码器LLM 骨干动作头总参数
Octo自研 ViTTransformer扩散93M
OpenVLASigLIP 400MLLaMA 2 7B离散 token7B
π0PaLI 系自研流匹配~3B
GR00T N1Eagle (NVIDIA)自研双系统:扩散 + MLP~2B
SmolVLASigLIP 400MSmolLM2 135M扩散500M
OpenPISigLIPLLaMA 系流匹配~3B

动作头的三大流派

这是具身架构最独特、也最本质的地方:

流派 1:离散 token(OpenVLA),把每个动作维度分箱成 256 档, 当成"下一个 token"来预测,复用 LLM 的自回归生成机制。缺点是精度受限。

流派 2:扩散(Octo、SmolVLA),把动作生成当作条件去噪过程。16~32 步收敛。

流派 3:流匹配(π0、OpenPI),用直线插值路径(最优传输)代替扩散的弯曲噪声路径, 4~8 步就收敛 → 推理更快,动作轨迹更平滑。

为什么必须用"生成式"动作头,而不是直接回归
问题:同一个状态下,抓杯子的把手可以"从左"也可以"从右" —— 两个都合法。

如果用 MSE 回归:模型会输出两者的平均值 → 一个"正中间"的
                 不合法动作 → 抓空

用扩散/流匹配:模型学到的是【动作的分布】,能采样出某一个模态
              → 要么从左、要么从右,都是合法动作

动作的多模态性(multimodality)是具身区别于自驾的架构根源。

自驾的输出是几何量(框在哪就是哪),回归就够;具身的输出是"决策",天然多模态。

Action Chunking(动作分块),另一个必需的设计

问题:OpenVLA 在 A100 上只有 5–8 Hz,但机器人控制在 50 Hz。差一个数量级。

解法:一次推理预测【一串】未来动作(10–20 步),然后以 50 Hz 逐步执行。

推理 5 Hz  ──►  一次输出 10~20 步  ──►  以 50 Hz 执行完  ──►  再推理

它同时解决两个问题:① 复合误差(决策点变少,误差不再逐步累积); ② 人类演示的非马尔可夫性(演示数据有停顿、犹豫,单步建模学不到)。

GR00T 的双系统:慢思考 + 快反射

慢系统 (2~5 Hz):VLA 骨干,理解场景和语言 → 出高层动作计划
快系统 (200+ Hz):轻量策略,把计划转成电机指令,带反应式反馈

模仿生物学的"深思熟虑 vs 反射"。这和自驾里"端到端规划 + 底层控制"是同一个问题。

七、两个领域正在收敛到同一个范式

传统做法现在
自驾分模块流水线预训练大模型骨干 + 任务头(4D MLLM)
具身分模块流水线预训练大模型骨干 + 动作头(VLA)

两者都在从"手工模块化"走向"大模型 + 微调"。这是当前最值得记住的趋势判断。

八、「标定是命脉」的适用边界

"标定是整条链的命脉"这句话需要限定条件,它成立与否,取决于你走哪条技术路线。

来自一个机器人数据采集服务厂商的实践建议(2026 年 4 月):

一个反直觉的事实

相机内外参应该记录,但大多数 VLA 架构并不需要它们 它们直接从像素学视觉特征。

所以标定的地位要分路径看:

路径标定的地位
端到端 VLA:像素 → 动作退居"建议记录"(为了可复现、可调试),不是硬门槛
几何计算路径:像素 → 3D 点/抓取位姿 → 动作仍是硬前提(反投影、6DoF 位姿全靠它)
动作执行侧:末端位姿控制、运动学、手眼仍是硬前提(这些本身就是几何)
更本质的表述

VLA 让「感知侧」的几何精度不再是硬门槛 (几何信息从"标定参数"转移到了"网络学习"), 但「控制侧」的几何依然是,因为动作活在几何世界里。

这个"转移"在自驾第二代 BEV 里就已经发生过 LSS 用网络学深度分布,本质就是把一部分几何从标定参数搬进了网络。

落到行动上:

一条通用原则

领域里的"铁律"往往绑定在特定范式上。听到"X 是命脉"时, 先问一句 "在哪个范式下?"

九、架构变了,标注需求也跟着变

架构范式标注要什么成本
3D 检测3D 框中
占据预测体素级语义极贵
端到端自驾轨迹 / 行为贵且主观
ACT / Diffusion Policyepisode(观测+动作)便宜(遥操作自带动作)
VLAepisode + 语言描述便宜,但语言质量决定泛化

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"

① 输入不是「或」,是「和」:多模态并发输入

真实输入是同时喂进去的一整组观测,不是"选一个"。

② 「视频」是 N 帧堆叠,不是视频文件

模型吃的不是 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, 是具身智能最核心的困难之一。

十三、sim2real 的现状:仿真与真机的边界

第十二节的结论是"必须真机闭环评测",而真机评测恰恰是最贵、最不能并行的一环 于是仿真替代性就成了整个流程的胜负手。真实状况比一句"有 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)之后, 同一套学习流程、同一台硬件,真机表现明显更稳定。

由此提炼出一条重要区分

域随机化和模型保真度解决的是不同问题:

域随机化     →  在模型周围【扩大分布】
模型保真度   →  改进那个分布【所围绕的模型】

两者不能互相替代 —— 这一点经常被混为一谈

🟡 刚打通的一档:全身 loco-manipulation

CVPR 2026 的 DoorMan 是个很好的标尺,任务是"用单目 RGB 打开各种门", 被当作 loco-manipulation 的压力测试:要同时处理抖动的第一人称视觉、弹簧门把手的力、 门板的圆弧轨迹、以及铰链反作用力下的全身平衡。

指标DoorMan专家遥操作非专家遥操作
成功率83%80%60%
平均耗时15.40 s20.02 s22.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 条合成。合成数据是从真机数据派生出来的 它没有替代真机,它在放大真机。

他们自己的判断:"接触密集操作仍然是主要挑战,学习真实世界的交互动力学 可能是扩展人形操作的下一个方向。",也就是:下一步是学真实世界的动力学, 不是做更准的仿真。

一个反直觉的维度:gap 的另一半在硬件上

这点很少被提及,但讲得很清楚:

sim2real 的另一半:真机本身有多可预测

"我们试图仿真的那台真机,它本身有多可预测?"

子系统规格为什么重要
计算Jetson Orin NX端侧推理,省掉板外往返
控制环1 kHz 低延迟减少"感知到执行"的延迟
操作系统PREEMPT-RT减少实时控制环的调度抖动
IMU8 kHz 更新提供新鲜的姿态估计

而执行器是关键一环。阻抗控制律是:

τ_cmd = Kp(q_d − q) + Kd(q̇_d − q̇) + τ_ff

理想传动下 τ_joint ≈ N · Kt · I (关节力矩应随电机电流可预测地缩放)。但真实执行器有摩擦、背隙、传动损耗、反射惯量。

QDD 架构(低减速比 / 低背隙 / 高背驱性)的价值不是"更理想",而是"更可预测"

"目标不是让真实执行器变得理想,而是让它的行为「一致且可建模」。"

减速比还有一个额外好处:反射惯量大约按减速比的平方缩放, 所以低减速比对不确定性有利。

更好的仿真保真度  →  更好地建模机器人
更好的 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
← 07 投影模型与畸变
返回导读 →
← 上一页 ·  下一页 →
京ICP备19013239号