← 返回报告索引
2026-09-03 · 深度整合方案

GOAL:深度数据到底怎么整合进策略

2026-09-03 交接。和 GOAL-TRIAL-DATA-MANAGEMENT.md 是并列的两份 GOAL,可以分开做。
这一份回答:深度采回来之后,用什么方法接进策略?业界怎么做?我们该走哪条?

0. 为什么需要这份 GOAL

到 2026-09-03 为止,深度这摊的真实状态是:

操作者的要求:先查官方方法和论文,看业界一般怎么整合、怎么锁定杯子,再定方案。

这份文件就是那次调研 + 由它得出的计划。


1. 业界怎么做(已查证,带出处)

1.1 三种整合方式,学界的实测排序

Point Cloud Matters: Rethinking the Impact of Different Observation Spaces on Robot Learning

系统比较了 RGB / RGB-D / 点云三种观测空间,结论是:

点云方法经常优于 RGB 和 RGB-D,尤其在泛化和低数据量场景。
原因:点云直接编码三维结构,把几何和语义特征分开。

Towards Fusing Point Cloud and Visual Representations for Imitation Learning 进一步指出:

点云给几何,RGB 给纹理和语义,两者互补,融合优于单一。

对我们的含义:「把深度伪彩成第四路相机」是三种里最弱的一种,

而我之前正是这么设想「路线 B」的。这条要改。

1.2 ★ 最贴合我们处境的一篇 ★

Depth Helps: Improving Pre-trained RGB-based Policy with Depth Information Injection

这篇解决的正是我们的问题:已经有一个 RGB 预训练的策略,怎么加深度而不重训主干。

它怎么做对我们的意义
RGB 主干冻结(ViT + projection 不动)SmolVLA 的 SigLIP 可以不动,避免"分布外输入毁掉预训练特征"那个顾虑
加两个小模块:Depth Completion Module(cross-attention 从 RGB 预测深度特征)+ Depth-Aware Codebook(把深度离散化,抗噪)只训这两个小模块,不训主干
每个任务只要约 20 条真机轨迹我们有 30 集 —— 数量够
推理时可以只用 RGB(RGB-only 63.15% vs RGB-D 63.95%,只掉 0.8%)部署更省事:深度只在训练时需要
提升:57.95% → 63.95%,长时程任务提升最大(约 12%)

注意事项(论文自己说的):要成对的 RGB-D 训练数据(我们有);

三阶段训练(warmup / alignment / codebook);codebook 在某些任务类型上会掉点;

真机实验用了双相机,第三人称视角会让深度感知变难——而我们的深度相机正是装在头上的第三人称。

1.3 怎么"锁定杯子"——业界的标准做法

结论:没有人用「找最近的一团」这种手写规则。标准做法是开放词表检测 + 分割。

Grounded SAM 是当前的通用管线:

Grounding DINO 按文本查询定位物体 → SAM 生成分割掩码。

近期的自主机器人如 MOKA 和 OK-Robot 都用 GroundedSAM / OwlViT 做视觉定位, 因为它们对语言表述的变化更鲁棒。这是当前的标准实践。

以及关键的一步(正是我们缺的那一环):

用边界框提示 SAM 得到物体实例掩码,作用在 RGB-D 上可以得到更精细的物体点云, 供下游的抓取位姿估计使用。

也就是:**RGB 负责"哪个像素是杯子"(开放词表,换杯子不用改代码),

深度负责"那些像素有多远",合起来得到杯子的点云 → 再算抓取位姿。**

其它相关工作:HiFi-CS(视觉-语言定位用于抓取)、

ThinkGrasp(杂乱场景中的部件抓取)、

Attribute-based Object Grounding and Robot Grasp Detection(5-DoF 抓取位姿)。

1.4 模块化感知 vs 端到端:模块化赢,但天花板是感知精度

Object Pose and Shape Estimation for Grasping: Does it Work? (2026-05-26,Karke 等)专门做的就是这个对比,限定在平行夹爪、7-DoF 抓取、单视角 RGB(-D):

模块化方法(先估物体位姿和形状,再做对映抓取采样)在实验中优于端到端方法, 而且对端到端方法失败的小物体也能抓到。 但效果取决于位姿估计的精度,在杂乱场景中会退化。

对我们的含义(两面都要看):

所以 §3 阶段 A 的顺序是对的——感知不做对,模块化路线的优势就不存在。

1.5 第三条路:不算 3D 坐标,把物体候选框当先验喂给策略(VIOLA)

VIOLA: Imitation Learning for Vision-Based Manipulation with Object Proposal Priors (CoRL 2022,UT Austin,Zhu / Joshi / Stone / Zhu;代码 UT-Austin-RPL/VIOLA)

它怎么做论文实测
用预训练 RPN 拿一组通用(不分类别)物体候选框不用自己训检测器
transformer 策略在这些候选框上做注意力,自己挑任务相关的成功率比当时 SOTA 模仿学习高 45.8%
物体级结构先验对物体变化和环境扰动更鲁棒
真机长时程任务(摆餐具、冲咖啡)在实体机器人上部署过

为什么它值得单列:它既不是「手写规则算 3D 坐标喂进去」,也不是「端到端硬 train」, 而是中间路线——感知不进控制回路当规则用,只作为结构先验交给策略自己取舍。 而它宣称解决的正是我们最痛的那一点:换个杯子、挪个位置就失效。

和 §1.3 的关系是互补,不是替代:VIOLA 的 RPN 是类别无关的("这里有个东西"), Grounding DINO 是文本指定的("a cup")。后者更精准,前者更省事。

证据等级 —— 必须说清楚:上表全部是论文实测,不是我们实测。 三点未验证,别当成结论:
① VIOLA 用的是它自己的 transformer 策略,不是 VLA。往 SmolVLA(SigLIP + LM + action expert) 上接候选框 token 需要改架构,改动量没人量过——不要假设它比 B2 小。
② 那个预训练 RPN 在 Jetson 上的推理耗时没测(见 §5 边界条件 4)。
③ VIOLA 不用深度,它是纯 RGB 的物体先验。它进这份 GOAL 是因为它跟 B1「先算 3D 坐标」 是同一个问题的两种答案,不是因为它属于深度整合。

1.6 ★ 比 VIOLA 更贴的一篇:Oat-VLA(做在真正的 VLA 上)★

Focusing on What Matters: Object-Agent-centric Tokenization for Vision Language Action models (Bendikas / Dijkman / Peschl / Haresh / Mazzaglia)

§1.5 的 VIOLA 用的是它自己的 transformer 策略,不是 VLA。这篇是同一个思路做在 VLA 上的:

论文原文
基座OpenVLA(Llama-2 7B + DINOv2 ViT-L/14 + SigLIP ViT-So400M/14,224×224)
物体 token 从哪来FT-Dinosaur,无监督物体中心模型(现成的,不用标注)
token 数256 → 16:7 个物体 token + 9 个 agent(夹爪)token,少 93.75%
收敛LIBERO 上「至少快一倍」
真机 pick-and-placeOat-VLA 29/49,OpenVLA 20/49
★ 2026-09-04 实测推翻了这一段 ★
原文写的是「token 少 93.75%,而 SmolVLA 在 Jetson 上 146 ms/帧、视觉 token 是大头, 所以这条路有可能顺带把推理变快」。两句都不成立:
· 146 ms 是 ACT 的数,不是 SmolVLA 的(同机重测:ACT 129.5 ms/100 步, SmolVLA 1329.2 ms/50 步);
· 视觉 token 根本不是大头 —— 实测 1 路 1210.7 ms、2 路 1278.4 ms、3 路 1329.2 ms, 每多一路 +59.2 ms,三路合计 177.7 ms,只占总耗时 13%。 token 全砍光的上限就是这 13%,而分割模型自身是 ViT,省不回来。

结论:B0 的速度理由当场毙掉。结构先验那条理由还在,但只剩一个不显著的数字撑着 (见下面的证据等级框)。建议降级为「暂不做」但不删 —— 它是唯一不依赖相机标定的路线,万一深度那条卡在标定上,它会重新有用。
证据等级(我们自己算的,不是论文说的):论文报的是 59% vs 41%,看着差 18 个点。 但它给了原始计数,用 §2.3 同一套 Clopper-Pearson 算下来:
· Oat-VLA 29/49(59.2%,95%CI 44.2–73.0%)
· OpenVLA 20/49(40.8%,95%CI 27.0–55.8%)
· 两个区间重叠(44.2% vs 55.8%),Fisher 精确检验 p = 0.106

也就是真机那 18 个点在 49 次的样本量下不显著。站得住的是 LIBERO 上 「收敛快一倍」和「token 少 93.75%」这两条 —— 引用它的时候要引这两条,别引真机成功率。 这正是 GOAL-TRIAL-DATA-MANAGEMENT.md §2.1 那条规矩,对别人的论文也一样适用。

另外几点未验证:
① 没人在 SmolVLA 上做过。 论文只对比 OpenVLA / Octo / Diffusion Policy。 SmolVLA 视觉侧是 SmolVLM2-500M,token 布局和 OpenVLA 不同,prepare_images / embed_prefix 那条路要改成什么样没人量过。
② 主干冻不冻结,论文没明说。 它只说从预训练视觉编码器的 token 里聚合, 没有一句写 "frozen"。别把 §1.2「Depth Helps」那条的冻结主干套过来当成这篇也这样。
③ FT-Dinosaur 在 Jetson 上的耗时没测。省下的 token 时间可能被分割模型吃回去, 净收益是正是负,没算过。
④ 论文自己写 "We leave training Oat-VLA from a stock VLM checkpoint … for future work", 也就是他们也是在已训好的 VLA 上改的 —— 这点和我们处境一样,算利好, 但改法能不能迁到 SmolVLA 仍然未知。

2. 我们试过什么、结果如何(实测,不是推断)

做法证据等级结果
locate_nearest(最近的一团)实测检出 79%,但锁的是机械臂;估计宽度 273–344 mm(手臂尺寸,不是杯子)
locate_on_table(拟合桌面找凸起)实测检出 97.5%、跳动 0.9 mm,看起来很好,但看图发现锁的还是机械臂。"稳定"是因为锁住了不动的手臂
+ 剔除接触画面边界的连通域(去掉颜色假设)实测检出 97.6%、跳动 6.4 mm、宽 86–129 mm,数字都合理,但看图仍无法确认锁的是杯子(Z 在 216–792 mm 之间飘,而杯子基本不动)
基于颜色(米色)的规则放弃,未实测操作者指出:目标物包含磨砂杯、彩色高脚杯,颜色规则不泛化。这个方向本身就是错的

教训:三次都是"数字好看",两次靠看图推翻。尺寸/稳定性指标通过 ≠ 锁对了目标。


3. 计划

阶段 A:先把"锁定杯子"做对(不碰策略)

不再手写几何规则。 按业界标准做法走开放词表检测。

步骤内容谁
A1选模型:优先 Grounding DINO + SAM(业界标准);Jetson 上跑不动就退到 OWL-ViT 或轻量 YOLO-World。先量 Jetson 上的推理耗时再定远程
A2在已录的 30 集 RGB 上离线跑,文本 prompt 用 "a cup"。评:检出率、框的稳定性、换不同杯子是否仍然work(这是颜色规则做不到的)远程
A3★ 人工核对 ★ 抽 30–50 帧,逐帧看图确认框住的是杯子。前三次失败都栽在跳过这一步远程(看图)
A4框 → SAM 掩码 → 取掩码内的深度 → 杯子点云 + 质心 3D 坐标远程

验收(事先写死):在 ≥30 帧人工核对上,框住杯子 ≥90%,且至少换一种杯子仍成立。

达不到就不进入阶段 B。

阶段 B:接进策略

只有 A 通过了才做。 按代价排:

B0 · VIOLA 式物体先验(候选框当结构先验,不自己算 3D 坐标) —— 用现成预训练检测器给出物体候选框,交给策略自己注意,而不是我们算好一个 3D 坐标塞进观测。

吸引力:有开源实现、有 45.8% 的论文实测收益、直指"换杯子就失效"这个痛点, 而且不依赖相机内参和手眼标定(§4 那四项硬前置它一项都不需要)—— 这是它相对 B1 唯一确定的优势。

证据在 2026-09-03 晚变强了一档:原来只有 VIOLA(非 VLA 架构)撑着, 现在有了 Oat-VLA —— 同一个思路做在真正的 VLA (OpenVLA)上,而且 token 从 256 降到 16,有可能顺带把 Jetson 上的推理变快。 所以 B0 从「值得摸底的候选」升到「有 VLA 上的直接先例」。

但仍然不是已定方案,见 §1.5 和 §1.6 的证据等级说明。

摸底要做的三件事(都纯远程,不碰硬件):
① 量 FT-Dinosaur(或更轻的替代)在 Jetson 上的单帧耗时 —— 注意要用 train310 环境,lerobot 那个 torch 是 CPU-only (实测 torch.cuda.is_available() 为 False),用错环境会量出一个假的"跑不动";
② 读 Oat-VLA 代码 + SmolVLA 的 prepare_images / embed_prefix, 写清楚「7 个物体 token + 9 个夹爪 token」怎么接进 SmolVLM2 的 token 序列;
③ 算净收益:token 减少带来的加速 减去 分割模型的开销,是正是负。
这三件做完才谈得上和 B1/B2 比先后。

B1 · 深度在策略外(不重训) —— 杯子 3D 坐标用于:

① 开跑前的门(杯子不在工作区就不让手臂动)

② 每次试验记录杯位(这正是 GOAL-TRIAL-DATA-MANAGEMENT.md 里最缺的字段)

③ 失败诊断:把"模型往哪抓"和"杯子实际在哪"对齐,才能回答"是没看见还是抓歪了"

代价最低、和试验数据管理那份 GOAL 直接咬合,建议先做这个。

前置:相机内参标定 + 手眼外参(都还没做,见 §4)。

B2 · 按「Depth Helps」的方式注入策略 —— 冻结 SigLIP 主干,加 DCM + codebook,

用我们的 30 集 RGB-D 训那两个小模块。

为什么这条现在可行了:以前我说「加深度要重训、SigLIP 是 RGB 预训练所以是分布外输入」——

那是没查文献的推断。这篇论文给的正是"主干冻结 + 小模块 + 20 条轨迹"的做法,

和我们的处境高度吻合。

前置:深度必须以原生特征录进数据集(orbbec_depth_camera.py 已打通,

但 9-02/9-03 录的 30 集还是旧的旁路格式,要重录)。

B3 · 点云策略(DP3/iDP3) —— 学界实测效果最好,但换策略家族、整条链路重来。

先不做,等 B1/B2 有结论再评估。


4. 硬前置(不做完 B1 无从谈起)

事项状态谁
头部预置位 trial❌ 没存现场,1 分钟
相机内参标定❌ 没做(现在 FX=FY=320 是猜的,Z 准 X/Y 近似)现场摆姿势 + 远程解算
手眼外参❌ 没量同上
深度↔RGB 时间对齐验证❌ 从没验过现场挥手 + 远程比对
用原生格式重录一批带深度的数据❌ 待 8781 重启后现场

trial 预置位是地基:相机装在会动的头上,外参是"头在某个姿态时"的值,头一动全废。

而 run_policy_trials.py 的 head_lock 是启动时读当前位置就锁在哪,不是固定值。

标定前、每次试跑前都必须先移到这个预置位。


5. 边界条件

见记忆 claims-must-state-evidence-level。

彩色高脚杯,规则必须对外观不敏感。

数字好看但锁错目标,已经发生三次。

检测模型的耗时必须实测,不能假设跑得动。


6. 一句话总结

**锁定杯子不要自己写规则,用 Grounding DINO + SAM(业界标准);

深度不要当第四路相机,要么在策略外面用(B1,最省),

要么按「Depth Helps」冻结主干注入(B2,有论文背书、20 条轨迹就够)。

但在此之前,先把"能不能可靠地框住杯子"用人工看图验掉——前三次都栽在这一步。**

补充(2026-09-03 晚):还有一条 B0——把物体 token 当结构先验直接喂给策略, 不自己算 3D 坐标。证据有两层:VIOLA(+45.8%,但非 VLA 架构)、 Oat-VLA(做在 OpenVLA 上,token 256→16,LIBERO 收敛快一倍)。 后者更贴,而且 token 大幅减少对 Jetson 算力是加分。 我们侧仍然一个数都没有:SmolVLA 接口改动量、FT-Dinosaur 在 Jetson 的耗时,都没量。 另外它真机那 18 个点我们自己算下来不显著(p=0.106,见 §1.6)。 定位是"有先例、值得摸底的候选",不是已定的方案。
2026-09-03 · 仓库内同一份:GOAL-DEPTH-INTEGRATION.md · 配套:试验数据管理 GOAL · 深度 + SmolVLA 运行架构 · 深度相机调用链