灵巧手 DexHand 的 Sensing System 设计(面向部署 × 采数 × 自恢复)
这是一份“可落地的系统设计文档”:从 任务 → 力学因果 → 可观测信号 → 多频闭环 → 数据闭环(RM-in-loop) 一次讲清楚, 并给出从 MVS 到“超越人类能力”的迭代路线。
读者导览(面试/快速理解):先看 2.1(多频闭环与必需信号)→ 2.2(可观测性与 Teacher/Student 分工)→ 3.0(决策逻辑与工程取舍)→ 7.2(Teacher→Student 落地)→ 6)(RM-in-loop)。
目录(简版,减少分级)
读法建议:先把“为什么做(买家需求/目标)”讲清楚,再用 2.1 把“信号与闭环底座”锁死,最后讲 Teacher→Student + RM/critic 如何形成数据飞轮。
- 为什么做:需求与目标
- 底座:信号 × 多频闭环(最难被替代)
- 传感栈:MVS → Pro(工程取舍与推荐布置)
- 数据闭环:Teacher→Student + RM/critic(把失败变资产)
- 工程化:可训练 / 可复现 / 可追责
- 面试收束:落地顺序与结论
核心三问(直击要害)
在复杂环境和大量变量中,最容易跑偏的是“堆传感器/堆模型”。从第一性原理出发,DexHand 作为“物理因果接口”,系统必须随时回答三件事:
- 接触发生了吗,接触在哪里?(contact geometry:接触点/接触面/面积/法向)
- 接触状态是否稳定,下一段时间会不会失败?(contact_mode、slip_risk、jam_risk)
- 如果要恢复,应切换到哪个物理原语?(primitive / recoverability:backoff、regrasp、wedge、twist…)
本文的 A(Teacher→Student)+ C(RM/QC flywheel)就是围绕这三问:Research Mode 用视触觉提供高信息真值,Deploy Mode 用可部署信号近似这些真值并形成闭环。
买家视角:为什么 VLA 公司会"需要"RM/critic
DexHand 的核心客户是 VLA 公司/科研团队:他们买的不是"多几个传感器",而是可持续迭代的能力——能把真实世界交互变成可训练、可复现、可评估的 dataset,并能进入 post-training/self-improvement 的飞轮。 因此你必须把 RM/critic 做成"系统默认能力"(哪怕最初是规则版),否则手很容易被当成一次性采数工具,需求与复购都会弱。
✅ 前沿验证:本方案与最新VLA研究的概念对齐(2025-12-30)
重要:本设计方案的核心理念——"高层信息模态 → 可部署低层控制"的转换架构—— 在最新发表的前沿论文中得到独立验证。这证明了方案的前瞻性与技术正确性。
最新论文:GenieReasoner (arXiv 2512.24125, 2025-12-30)
论文标题:Unified Embodied VLM Reasoning with Robotic Action via Autoregressive Discretized Pre-training
发布日期:2025年12月30日
机构:Yi Liu等13位作者
arXiv链接:https://arxiv.org/abs/2512.24125
核心概念对齐分析
| 维度 | 本方案(DexHand Sensing System) | GenieReasoner论文 | 对齐度 |
|---|---|---|---|
| 核心挑战 | 高信息传感(视触觉)vs 可靠部署 | 强推理能力(VLM语义)vs 精确控制 | ⭐⭐⭐⭐⭐ |
| 解决思路 | Teacher→Student蒸馏:视触 → 可靠传感 | FACT动作离散化:连续控制 → token空间 | ⭐⭐⭐⭐⭐ |
| 统一表示 | 统一在"因果状态空间"(slip_risk/contact_mode) | 统一在"离散token空间"(reasoning + action) | ⭐⭐⭐⭐ |
| 分层控制 | Level-A/B/C多频闭环(500Hz→60Hz→5Hz) | 端到端统一模型 | ⭐⭐⭐(互补) |
| 传感焦点 | 触觉/力感知(contact/slip/force) | 视觉+语言(语义理解) | ⭐⭐⭐(互补) |
前沿对照:GR-Dexter(ByteDance Seed, arXiv 2512.24210)
GR-Dexter 把 VLA 扩展到双手灵巧手的路径很工程化:高 DoF 硬件 + 触觉阵列 + 遥操作数据采集 + 跨形态对齐。 这些与本文的“分层闭环 + Teacher→Student + 数据飞轮”天然互补。
- 触觉阵列的定位:GR-Dexter 在指尖/指腹/侧面布触觉阵列,用于补足遮挡下的接触状态;对应本文的 多点视触 teacher(pad+side) 与低维触觉状态蒸馏。
- 遥操作与 retargeting:用约束优化保证示教质量;对应本文 数据采集实施流程 中“遥操作→可回放→可对齐”的工程约束。
- 数据配方(data pyramid):混合 Web-scale + cross-embodiment + human trajectories;对应本文 Research/Deploy 分层采集 + RM-in-loop 的数据分层与 hard-case 机制。
- 对齐的关键是接触语义:GR-Dexter 强调指尖语义与接触几何对齐;对应本文 因果状态空间(contact_mode/slip_risk/recoverability) 的定义。
关键洞察:相同的哲学,不同的角度
本方案:传感模态转换
问题:如何把"高信息但不稳定"的
传感(视触觉)变成
"可部署"的控制?
答案:Teacher(视触)
→ Student(可靠传感)
→ Policy
关键:蒸馏到因果状态空间
(contact_mode, slip_risk,
failure_mode, recoverability)
GenieReasoner:控制模态转换
问题:如何把"强推理但难控制"的
VLM变成"精确"的
机器人动作?
答案:Reasoning(VLM)
→ FACT离散化
→ 统一token空间
关键:统一到离散序列空间
(语义token + 动作token)
本质相同:都在解决"高层理解-低层执行"的gap,通过模态转换/蒸馏来实现部署可靠性。
本方案的独特优势(论文未涉及)
-
多频闭环分层(Level-A/B/C):
论文是端到端单一模型,本方案有:
├─ Level-A:500-1000Hz安全反射(GenieReasoner做不到)
├─ Level-B:60-200Hz触觉协调+精细力控(论文未考虑)
└─ Level-C:5-15Hz语义策略(论文focus这里) -
触觉/力感知(contact/slip/force):
论文主要是视觉+语言语义,本方案专注接触物理,这是精细操作(twist/insertion/pry)的必需能力。 -
Teacher训练数据来源明确:
用机器人自己的wrist_FT作为ground truth,不需要额外标注,可自动生成训练数据。 -
工程化成熟度:
从MVS冷启动到完整Teacher→Student,有清晰的迭代路线图(阶段1-4),可立即落地。
前沿补充:视触预训练 + 在线多任务学习(Science Robotics, 2026-01-28)
另一条独立的前沿路线验证了相同的核心哲学:先解决遮挡/接触相位的“表征问题”(Observation),再学统一多任务策略(Practice)。 它的特点是把触觉降到单目RGB + 二值触觉,依然能提升遮挡鲁棒性与 Sim2Real 稳定性(摘要级结论)。
- 概念对齐:Observation ≈ 本文的 Research/Teacher “资产化”(高信息模态先把接触讲清楚);Practice ≈ Deploy 侧的大规模策略学习(但部署侧必须可降级、可追责)。
- 与本文的互补点:论文偏“学习范式 + 指标证明”;本文偏“系统交付”——多频闭环(A/B/C)、统一数据骨架、Replay/QC、RM-in-loop,把训练与部署的因果链条写死。
-
你下一步最值钱的可交付方向:把“二值触觉也能用”的关键风险——阈值口径与漂移——做成系统标准件,而不是留给论文级假设:
- 版本化:记录
tactile_binary_threshold_version/tactile_binary_config(阈值、窗口、滤波)并随 episode 写入 metadata。 - 快速校准脚本:开机/换指套/温漂后跑 30–60s 的 pre-conditioning + auto-calib,产出
tactile_calib_ok与校准残差。 - 漂移监测与触发:用
replay_ok、失败分布漂移、以及slip_risk/contact_mode的统计突变做报警,触发重校准或降级策略。 - 对齐到因果状态:二值触觉不追“力”,而是服务于
contact_mode/progress/recoverability的触发点学习(与你的 state taxonomy 一致)。
- 版本化:记录
手册速记(摘要可验证 + 可复用抽象): theory/frontier/visual_tactile_pretraining_online_multitask_learning_2026.md
对VLA公司的价值
为什么这个验证重要?
- 前沿对齐:本方案的核心架构(模态转换+统一表示)与最新顶会论文理念一致, 证明技术方向正确且前瞻。
- 互补优势:GenieReasoner解决语义理解→动作,本方案解决传感感知→控制, 两者可融合形成完整解决方案。
- 差异化竞争力:本方案的触觉/力感知(Level-B精细力控)是GenieReasoner缺失的, 这是灵巧手精细操作(twist/insertion/pry)的核心能力。
- 工程可行性:论文是前沿研究,本方案有完整的落地路线(Day 0→阶段1-4), VLA公司可立即采购部署。
可能的融合方向(未来扩展)
【融合架构】
Level-C(语义层):借鉴GenieReasoner
├─ 语言指令 → token
├─ RGB视觉 → token
├─ Student状态(slip_risk/contact_mode)→ token
└─ 动作原语 → token(FACT离散化)
→ 统一transformer
Level-B(触觉层):保持本方案设计
├─ wrist_FT闭环(精确力控)
├─ Student估计(slip_risk/contact_mode)
└─ 60-200Hz快速响应
Level-A(安全层):保持本方案设计
└─ 500-1000Hz止损
- VLA 训练真痛点不是缺模型,而是缺“可用数据”:多模态对齐、可回放、失败可解释;RM/critic 用于 QC、切段、hard-case 挖掘与数据加权。
- 前沿公开路线也在用“复盘/critic”:例如 π*0.6 的 Recap(post-training / Offline RL 复盘)、以及用 critic 提升长时程精细操作数据质量的路线(见 handbook 对照链接)。
- 对 DexHand 的商业意义:你交付的是“能进入客户训练闭环的数据底座”——可追责(replay)、可量化(SR/IR/ER + failure distribution)、可规模化(自动 triage),这比单点性能更难替代。
1) 系统目标与 KPI(把方向锁死)
DexHand 的 sensing system 不应追求“传感器越多越好”,而应追求 长时稳定 + 可自救 + 数据可复现(把交付与迭代能力做出来)。
- 稳定 KPI:连续运行 \(T\) 分钟内,
recover_event次数、human_intervention次数、drop次数。 - 质量 KPI:同一命令流重放(Replay)可复现率(同样的 command stream → 同样的 outcome)。
- 效率 KPI:单位时间可采集的“有效 episode”数量(排除不可复现/不可对齐的废数据)。
- 安全 KPI:过流/过温/软硬限位触发次数、近碰撞次数。
- VLA 对齐 KPI(建议加上):
intervention_rate(单位时间/步的人工接管频率)、executable_rate(动作可执行率:IK/限位/自碰撞不过关的比例)。
Level-B-Force 稳定性约束(必须)
- 外环频率:100–200Hz(force-profile);内环伺服:≥1kHz(位置/力矩/限流)。
- 外环允许更新项:
admittance/impedance参数、Δx_ee/ΔR_ee或目标wrench,并必须带 阻尼注入/能量约束(passivity guard)。 - 安全触发:任意时刻若
F > F_max或|τ| > τ_max→ 立即backoff/stop并记录recover_event。
精细力控 KPI(与 Replay/QC 并列)
- force_tracking_error / torque_tracking_error:均值 + P95(按原语分桶:twist / insertion / pry)。
- peak_lateral_force(插入类)或 peak_torque(扭动类):峰值 + 超限次数(per 100 episodes)。
- 回归要求:相同 challenge set 在模型/控制更新后,上述 KPI 不退化(退化需解释并回滚)。
直觉:工程胜负手不是单次成功率,而是“长时稳定 + 快速自救 + 可复现数据飞轮”。
2) 总体架构(传感栈 × 多频闭环 × 数据闭环)
三件事必须同时成立:
- 传感栈分层:高频低带宽信号兜底;少量高信息传感器负责“把接触讲清楚”。
- 多频闭环分工:kHz 止损、100–200Hz 防滑、5–15Hz 原语切换。
- 数据闭环:部署数据自动切段、打标签、挑 hard cases,再反哺训练(RM-in-loop)。
2.0.1 多频闭环架构图
┌─────────────────────────────────────────────────────────────────────────────────┐
│ 多频分层闭环架构 │
└─────────────────────────────────────────────────────────────────────────────────┘
╔═══════════════════════════════════════════════════════════════════════════╗
║ Level-C: 语义策略层 (5–15Hz) ║
║ ┌─────────────────────────────────────────────────────────────────────┐ ║
║ │ 输入: RGB (static+wrist) + 任务状态 + wrist_FT 统计特征 │ ║
║ │ 处理: VLA Policy / 原语切换 (push/pull/twist/regrasp...) │ ║
║ │ 输出: 子目标 + 原语参数 + Level-A/B 约束 (力限/速度限) │ ║
║ └─────────────────────────────────────────────────────────────────────┘ ║
╚═══════════════════════════════════════════════════════════════════════════╝
│
下发:primitive + params + constraints
↓
╔═══════════════════════════════════════════════════════════════════════════╗
║ Level-B: 触觉协调层 (60–200Hz) ║
║ ┌─────────────────────────────────────────────────────────────────────┐ ║
║ │ B1: 防滑/夹持 B2: 精细力控 (Level-B-Force) │ ║
║ │ • 输入: current/effort + q/qdot • 输入: wrist_FT (6D) + q/qdot │ ║
║ │ • 控制: 夹持力调度、防滑响应 • 控制: 阻抗/导纳 (twist/insert) │ ║
║ │ • 输出: 关节闭合量微调 • 输出: 末端 compliance 调整 │ ║
║ └─────────────────────────────────────────────────────────────────────┘ ║
╚═══════════════════════════════════════════════════════════════════════════╝
│
微调:夹持力/姿态/接触几何
↓
╔═══════════════════════════════════════════════════════════════════════════╗
║ Level-A: 安全反射层 (500–1000Hz) ║
║ ┌─────────────────────────────────────────────────────────────────────┐ ║
║ │ 输入: q/qdot + current/effort + 温度/限位/故障事件 │ ║
║ │ 检测: stall (qdot≈0 且 current↑) / jam / 过流 / 越界 │ ║
║ │ 响应: 限流、力矩限幅、backoff (卸载/退避) │ ║
║ │ 输出: 关节力矩指令 (带安全限幅) → 执行器 │ ║
║ └─────────────────────────────────────────────────────────────────────┘ ║
╚═══════════════════════════════════════════════════════════════════════════╝
│
执行层 ↓
┌────────────────────────────┐
│ 执行器 (电机/驱动器) │
│ → 物理世界 (接触/力/约束) │
└────────────────────────────┘
╔═══════════════════════════════════════════════════════════════════════════╗
║ 旁路:数据闭环 (RM-in-loop) ║
║ ┌─────────────────────────────────────────────────────────────────────┐ ║
║ │ 所有层数据 → timestamp 对齐 → episode 切段 → RM 打分/QC │ ║
║ │ ↓ │ ║
║ │ hard cases 挖掘 → Teacher labels → Student 训练 → 反哺 Policy │ ║
║ └─────────────────────────────────────────────────────────────────────┘ ║
╚═══════════════════════════════════════════════════════════════════════════╝
关键设计原则:
• 频率分层:高频兜底安全 (A),中频稳定接触 (B),低频策略决策 (C)
• 信号分工:q/qdot + current/effort (必选底座) → wrist_FT (精细力控) → 视触觉 (teacher)
• 延迟容忍:Level-A <10ms,Level-B 10–30ms,Level-C >50ms
• 可降级:B2 失效 → 回退 B1;B 失效 → 只走简单任务 (MVS baseline)
2.1 多频闭环 × 传感信号:速查表
关键约束:视觉/视触觉的 30–120Hz 与编解码/处理延迟,无法直接承担 kHz 级闭环;因此必须分层(handbook 有详细同步与集成讨论)。
符号速释(这一节里常用的信号是什么意思):
q = 关节位置(角度/位移),qdot = 关节速度(\(\dot q\));
effort = 关节力矩/驱动器输出的“用力”(有些系统直接给力矩,有些是估算值);
current = 电机电流(常作为力矩/负载的 proxy);
rgb_static/rgb_wrist = 外部相机/腕部相机画面;
wrist_FT = 手腕六维力/力矩(F/T);
“限位/故障事件” = 软硬限位触发、过流/过温保护、驱动器 fault、急停等离散事件(必须可回放)。
| 层级 | 频率 | 核心职责 | 必需信号(建议) | 可选增强 | 延迟容忍 |
|---|---|---|---|---|---|
| Level-A | 500–1000Hz | 安全反射/止损(限流、卡死检测、退避) | q/qdot, current/effort, 温度/限位/故障事件 |
硬件触发/更高频总线(EtherCAT 等) | 极低(<10ms) |
| Level-B | 60–200Hz | 接触协调/防滑(夹持力调度、微调几何) 精细力控(twist/insertion/pry) |
current/effort(触觉代理), q/qdot对精细力控: wrist_FT(6D,必选) |
指尖剪切/压力阵列;耐久触觉(ITPU/霍尔/类 uSkin) | 中等(10–30ms) |
| Level-C | 5–15Hz | 语义策略/原语切换(push/pull/wedge/twist…) | rgb_static, rgb_wrist, 任务状态 |
视触觉特征(几何/接触模式)作为 teacher 信号 | 高(>50ms) |
2.1.1 “必需信号(建议)”逐项解释(为什么缺了就会翻车)
这里的“必需”指的是:它们构成每一层闭环的最小可观测因果集合——能止损、能自恢复、能回放追责。 不是说没有其它传感就做不了研究,而是说没有这些信号,你就很难把系统做成“可交付”的长期稳定系统。
-
Level-A(500–1000Hz):
-
q/qdot:用于检测 stall/jam(qdot≈0)、越界趋势(逼近软硬限位)、以及“退避是否真的在动”。 缺它会导致:你只能看到电流大,但无法区分“正常高负载”与“卡死/顶住”,恢复动作也无法验证是否生效。 -
术语澄清:stall vs jam(都是什么、差在哪):
-
stall(停转/堵转):从电机/驱动视角看“命令在推,但轴/关节几乎不动”。典型特征是
|qdot|很小,同时current/effort持续偏高(或快速上升)。 它可能是“暂时的”(例如短暂碰到障碍/静摩擦峰值)。 -
jam(卡死/卡滞):从机构/接触视角看“被几何约束锁住/楔住/顶死”,导致运动无法继续或极难继续。
jam 往往伴随:
stall+ 事件持续时间更长 + 反复发生/需要退避才解除,且经常与misalignment或外部约束有关。 - 为什么要分清:Level‑A 要做的是“止损与保护”,所以更关心 stall 是否进入危险窗口(过流/过热/结构受力); Level‑C/恢复逻辑更关心 jam 的物理原因与解锁路径(backoff、reopen、re-approach、换原语)。
-
可执行的最小判定(示例):在窗口 \(\Delta t\) 内若
|qdot| < v_{min}且current/effort > \tau_{min}→ 标记stall; 若stall_time_ms超过阈值或退避后重复出现 → 升级为jam_state并触发更强的恢复原语/人工介入。
-
stall(停转/堵转):从电机/驱动视角看“命令在推,但轴/关节几乎不动”。典型特征是
-
current/effort:止损的第一响应(限流/扭矩限幅)、摩擦/碰撞/过载的最直接 proxy。 缺它会导致:止损只能靠低频视觉或高层判断,等你“看到”时往往已经损坏。 -
温度/限位/故障事件:长期交付必须把“保护触发”事件化(
safety_trip)并写入回放,否则你无法追责“是策略错还是驱动保护触发”。
-
-
Level-B(60–200Hz):
-
current/effort(触觉代理):在没有高频触觉阵列的情况下,它是"接触状态变化"的最低配观测(夹持变强/变弱、阻力突变、微滑动引发的扰动)。 缺它会导致:你只能靠视觉判断接触稳定,而视觉对 slip/misalignment 往往滞后且不可用(遮挡/光照)。 -
q/qdot:把 effort/current 的变化解释成"接触导致"还是"主动运动导致"(同样的电流变化,在不同qdot下物理意义不同)。 缺它会导致:防滑与夹持调度会变成误触发(把主动加速当滑移,把静止摩擦当卡死)。 -
wrist_FT(6D F/T)对精细力控的必要性:对 twist/insertion/pry 等精细力控任务,current/effort只是力矩的弱 proxy(受齿隙、摩擦、传动比影响),无法提供扭矩闭环(τz)或侧向力/力矩的精确反馈。 缺它会导致:擰瓶盖时无法区分"扭矩达标"与"手指打滑";peg-in-hole 无法区分"顶住"与"对歪";脆弱物抓取时电机摩擦吃掉精度。
结论:对精细力控任务,wrist_FT 是必选而非可选。
-
-
Level-C(5–15Hz):
-
rgb_static:提供全局上下文(目标/障碍/可行 approach),决定“进入接触前”的策略。 缺它会导致:策略只能局部贪心,容易在复杂场景里反复试错、效率差。 -
rgb_wrist:提供近场视角(遮挡更少、接触瞬间可见),对“对齐/重新接近(re-approach)”非常关键。 缺它会导致:对齐主要靠猜,misalignment 变多,恢复路径成本上升。 -
任务状态:至少要有子任务/原语阶段(例如
primitive、subtask、target_state),否则你无法把同一段数据切成可训练的 episode,也无法评估 progress。 -
视触觉在哪里?:视触觉通常 不作为 Level-C 的“必需输入”,而是作为 Research Mode 的 teacher/诊断信号——在接触发生后提供
contact_patch/contact_mode/slip_risk等高信息真值, 再通过 Teacher→Student 蒸馏为部署可用的低维状态供 policy 使用。
换句话说:Level‑C 必需的是“看得见场景并知道自己在做什么”(RGB + task state);视触觉负责“把接触讲清楚”(teacher labels + 复盘),不和 5–15Hz 的策略层抢主入口。
-
2.1.2 设计原则(压缩成 5 条)
- P1 Timestamp-at-source:各模态在产生瞬间打统一时钟戳(PTP 优先)。
- P2 多频闭环:不要用 30Hz 视觉硬扛 kHz 接触稳定;必须分层。
- P3 接触可观测:仅 RGB 很难判断“滑 / 夹歪”;至少要有
current/effort作为触觉代理。 - P4 可维护优先:触觉(尤其视触觉)是易损件;维护成本会直接反噬 uptime。
- P5 先跑 MVS:先做到“可复现采数 + 自恢复”,再升级传感器,而不是一开始堆满硬件。
2.2 深度梳理:接触系统的状态空间 × 可观测性(为什么必须 Teacher/Student 分工)
灵巧操作的难点不在“动作学得不够像”,而在于接触是一类强非线性、强历史依赖、部分不可观测的系统:
同样的 current/effort 扰动可能来自不同的接触几何;同样的视触形变也可能因为材料状态变化而不同。
因此一个可交付的系统必须把“要学什么”定义成可对齐、可回放、可验收的因果状态,而不是把传感器当作目标。
-
因果状态(policy 真正需要的最小集合):
- 几何类:是否接触、接触 patch(面积/位置/主方向)、相对偏置(misalignment)。
- 力学类:法向预算与切向负载(等价于摩擦边界 \(\|f_t\|\le \mu f_n\) 的余量)、外部约束反力(push/pull/twist/pry)。
- 摩擦/失效类:
contact_mode(stick/slip/roll)、slip_risk、jam_state、recoverability。
-
为什么 Deploy 侧不追“几何真值”:在复杂接触下,几何往往不可由低维本体信号唯一反演(ill-posed);
但 slip/jam/过载这类失效事件与风险在
q/qdot与current/effort上具有更稳定的一致签名,适合做闭环止损与恢复。 - 为什么视触适合当 teacher:视触能提供高信息的几何/接触模式真值,但它的观测会被材料与环境扰动: \[ y_{vt} = f(x_{contact},\, m_{gel},\, T,\, age,\, contam) \] 其中 \(m_{gel}\)(批次/模量)、\(T\)(温度)、age(老化)、contam(污染/润滑)都会改变“同一个接触”的表观形变。 所以视触应承担“真值通路”(Research/Teacher),并用版本化 + 置信度把不确定性显式化(见 7.2.2 与 8))。
-
补充:有遮光层/保护层/AR 仍会被“环境”扰动:遮光与 AR 主要解决“外部环境光入射/反射”这一类光学干扰,但环境扰动并不只等于外界光。
视触的观测链路包含「接触 → 胶体形变(材料力学)→ 内部成像(照明/镜头/传感器)」,因此温度会改变胶体模量与粘性(形变幅度/滞回/恢复时间), 污染/润滑会改变摩擦边界条件(接触物理状态本身就变了)与表面散射特性(对比度/高光),老化/批次差异会改变材料与贴合状态。
结论:遮光能显著提升稳定性,但仍需要gel_id/temp_gel/teacher_version/teacher_uncertainty来把这些扰动显式化与可追责。 - Teacher→Student 的真实含义:蒸馏的不是“视触图像”,而是把 teacher 的高信息真值压缩成部署可用状态; 让 student 在 Deploy 信号里学到与这些状态对应的动力学签名与风险边界,从而把研究上限转化为交付稳定性。
落地检查:如果你能用 Deploy 信号稳定输出
slip_risk/jam_state/recoverability,并驱动 recover primitives 提升 KPI,那么这套分工就是“能跑”的;几何真值则留给 teacher 去提供与校准。
2.3 面向前沿 VLA:动作表示 × 推理延迟 × 分层接口(让模型“聪明且不手笨”)
VLA 前沿(RT/Octo/OpenVLA/π0/π* 等)在“动作生成”上分成三类:离散 Token、Diffusion、Flow Matching。 它们共同的现实约束是:即便模型再强,直接以 VLA 在 kHz 级输出电机命令仍然不经济也不可靠(推理延迟、噪声、动作抖动、误差累积都会被物理世界放大)。 因此本方案把 VLA 放在 Level‑C(5–15Hz) 的“原语/子任务接口”上,把高频稳定性交给 Level‑A/B 的闭环去兜底。
- 为什么要分层:Tokenization 可能引入量化误差与高频 bin 抖动;Diffusion 迭代步多、推理慢;Flow 更快但仍更适合 5–50Hz 的连续动作生成而非 kHz 伺服。
- 推荐的 VLA Action Space(更契合灵巧手):让 VLA 输出 primitive + 参数(例如
press/pull/twist/regrasp+ 目标方向/上限/速度/容忍度),再由 Level‑A/B 把它落到电机级闭环。 - 触觉在 VLA 里的角色(前沿共识):视觉负责全局几何与语义,触觉负责“接触相位的真反馈”。因此 Deploy 侧必须能输出
contact_mode/slip_risk/recoverability这类低维触觉状态;Research/Teacher 侧用多点视触(pad+side)把接触真值讲清楚,再蒸馏给 student。
一句话:VLA 负责“做什么/怎么做”(原语与策略),A/B 负责“做得稳不稳”(接触闭环与止损)。这也是为什么本方案对 Token/Diffusion/Flow 都兼容——你只要把它们接到同一个原语接口上。
3) 传感栈分层(MVS → Pro)与推荐布置
这一节要解决的不是“买什么传感器”,而是:在复杂环境里,用最少的、不容易坏的信号去回答前文的核心三问。 记住一个思维框架:先保证可观测因果(observability),再追求更高分辨率。
3.0 决策逻辑(为什么这样分层)
- 你永远需要的底座:
q/qdot+current/effort(高频、便宜、稳定、可回放) - 你最容易失明的因果:滑移(slip)、卡死(jam)、几何偏置(misalignment)
- 因此要把“信息”分两类:
- 闭环信息(要快):Level-A/Level-B 需要 60–1000Hz、低延迟、可长期运行 → 优先用 proprio + effort/current +(可选)wrist F/T 或耐久触觉阵列
- 老师信息(要准):Research Mode 用视触觉给几何/接触模式真值 → 通过 A(Teacher→Student)蒸馏到部署可用的状态
可行性论证(为什么这套分层“真的能跑”)
这套分层成立的第一性原因是:闭环控制需要的是“可长期、低延迟、可回放的因果信号”,而不是“看见一切几何细节”。 在长时部署里,视触觉(凝胶/表皮/光学)很难满足 uptime 与维护成本约束,因此它更适合承担“老师信息”(生成近真值标签),而不是承担“闭环主力”。
你最容易失明的三类因果(slip / jam / misalignment)本质更接近事件检测 + 模式切换 + 风险评估问题:
q/qdot 与 current/effort 能提供强一致的“动力学扰动证据”(可回放、可追责),再叠加(可选)wrist_FT 或耐久触觉阵列,就能把“止损与恢复”做得足够可靠。
研究模式下再用视触觉给出接触几何/接触模式真值,通过 Teacher→Student 蒸馏为部署可用的状态(如 slip_risk、jam_state、misalign_class、contact_mode),从而实现研究上限与部署稳定的同时满足。
RM-in-loop 的关键作用不是“给一个总分”,而是把连续流变成可用数据: 自动切段、挑 hard cases、触发复核/重采样,保证 teacher 标签与部署失败代价函数对齐,避免数据飞轮被噪声带偏。
成立条件清单(不满足就会翻车)
- 时间与回放:所有关键通道必须 timestamp-at-source,并且可对齐回放;否则 slip/jam 的因果会被“不同步”学错。
- 闭环职责边界:Level-A/B 只负责“止损与恢复”(安全/防滑/解卡/退避),不承担高分辨几何重建;高分辨几何只用于 teacher。
- 可部署状态定义:Teacher 输出必须被压缩成部署可用、可验收的低维状态(事件/模式/风险/余量),而不是把毫米级几何硬塞进部署回路。
- 恢复动作空间:必须有明确的 recover primitives(如
backoff/regrasp/re-approach等),并把触发条件写成规则或可学习门控;只检测不恢复等于不可用。 - 域移管理:Research 视触装配不能显著改变控制与摩擦边界;或训练时显式做分布对齐/随机化,否则 Teacher→Student 会学到“研究特有”的伪特征。
- 传感健康是一等公民:
sensor_health/calib_version/recalib_required必须进数据与策略输入;长期部署里“传感器退化”是常态,不建模就会默默劣化。 - 验收指标绑定失败代价:以误报/漏报、恢复成功率、平均止损时间、任务成功率等硬指标为准;RM 只做 triage(排序/筛选),不能替代验收。
失败模式与对策(工程上最常见的坑)
| 失败模式 | 典型现象 | 根因 | 怎么发现(可观测信号) | 对策(可落地) |
|---|---|---|---|---|
| Teacher/Student 标签不一致 | 学生模型学不稳、上线后误报/漏报高 | 标签定义不工程化(人/场景之间不一致) | 同一片段不同版本 teacher 输出差异大;RM 复核分歧段 | 把标签写成“阈值 + 时间窗 + 版本号”;RM 专门挖“分歧段”做复标 |
| Research→Deploy 域移 | 研究效果好、部署崩盘 | 视触装配改变动力学/摩擦;或训练分布偏置 | 部署数据上的状态分布漂移(统计特征/失败类型变了) | 老师只做标注不改控制边界;训练做随机化/对齐;部署端以 proprio/effort 为主 |
| 多模态不同步导致“学错因果” | slip/jam 预测提前/滞后,触发恢复无效 | 相机/触觉/本体时间戳不一致,alignment 漂 | 回放对齐后事件峰值错位;同一事件跨源延迟不稳定 | timestamp-at-source + 对齐校准;事件标签用窗口而不是单帧点 |
| 闭环过度依赖“老师传感” | 视触坏了/脏了就失明 | 把高信息但不耐久的信号当主闭环输入 | 一旦遮挡/污染,性能断崖式下降 | 老师信号只用于训练/标注;部署闭环只依赖可长期信号,并有健康降级路径 |
| RM 指标带偏数据飞轮 | 数据越采越“好看但没用” | RM 学到了表象特征,未对齐失败代价函数 | RM 高分片段并不提升部署 KPI;hard cases 被遗漏 | RM 只做 triage;用部署 KPI 做闭环;定期插入挑战集做校准 |
| 传感器漂移/退化未建模 | 慢性劣化、很久才被发现 | 触觉耗材化、标定变化、线缆接触不良 | sensor_health 统计漂移;失败率随时间上升 |
把健康/标定版本写进数据;策略对健康做门控与降级;定期自动自检 |
3.0.1 传感配置 vs 可解锁的任务能力(速查表)
不同的传感配置决定了系统能够完成的任务谱系。下表明确展示:每增加一个传感器,能解锁什么新能力。
| 配置等级 | 传感器组合 | 可做的任务 | 不能做的任务(缺什么) |
|---|---|---|---|
| MVS (阶段 1–2) |
RGB (static+wrist) + proprio (q/qdot) + current/effort |
|
|
| +wrist_FT (阶段 2.5) |
上述 + 6D F/T(≥200Hz) |
|
|
| +指尖力 (阶段 3) |
上述 + 指尖 3 轴力传感器 ×2 |
|
|
| +视触觉 (阶段 4) |
上述 + 多点视触(pad+side) + 可选:温度传感器 ×1–2 |
|
—(核心能力完整;场景特定可继续扩展) |
关键洞察:wrist_FT 是解锁精细力控的"最小投入"(单传感器),但它不替代指尖触觉的防滑与精细夹持能力; 视触觉是 teacher 信息的"金标准",但它更适合用于 Research Mode 而非闭环主力。
3.1 Level-0(MVS:最小可行传感)
目标:低成本获得“接触判别能力 + 可复现数据”。
- 视觉:
rgb_static+rgb_wrist(强烈建议腕相机)。 - 本体:
q、qdot。 - 触觉代理(必选其一):
motor_current/joint_effort。 - 事件信号(软件生成):
contact_flag、safety_trip。
这套配置已经能支撑:卡死/顶住检测、粗粒度夹持强弱闭环、Replay Validation(决定数据能不能用于训练)。
这背后的要害:即便你“看不见接触几何”,你也要能用 current/effort 判断“有没有接触/有没有卡死/夹持是否在变强”。
否则部署数据会变成不可回放、不可追责的噪声。
3.2 Level-1(触觉层:让“滑移 / 接触几何”可观测)
这一层的目标是把两类关键信息补齐:
(1) 滑移/摩擦状态(用于 Level-B 的防滑闭环);
(2) 接触几何真值(用于 Research Mode 的 teacher labels)。
为了兼顾 uptime 与信息量,部署侧推荐空间布置:“2 + 1 + 1”;Research(teacher)侧则建议在关键受力面追加“多点视触”(尤其侧边),以覆盖手套材料在外力变化下的侧向形变。
- 2 个指尖高频剪切/压力阵列(100–200Hz):拇指 + 食指(防滑闭环主力)。
- 1 个指尖高信息几何(视触觉 30–60Hz):拇指或食指(指腹接触点/面积/边缘/微滑动)。Research 可追加:同指的侧边/侧壁视触(捕捉侧向形变与剪切/扭转模式)。
- 1 个手腕 6D F/T(≥200Hz):推/拉/扭/撬的因果判定(外部力矩 / 约束反力)。
为什么不是“全指视触觉”:全铺会把带宽、布线、耐久、标定维护成本拉爆; “少量高信息老师 + 少量高频工兵 + 本体信号兜底”更接近工程最优解。
视触的材料物理学(提前说明:为什么它更适合当 teacher)
视触(gel-based)把“接触边界条件”映射为可观测的形变/光学纹理,这正是它能给出高信息几何/接触模式真值的原因。 但这条映射强依赖材料状态:粘弹性/滞回、蠕变、温度、老化、污染会让同一个接触在不同时间/不同胶体批次下呈现不同“表观形变”。 因此工程上最稳的用法是:把视触当 Research Mode 的 teacher(提供近真值与诊断),而不是把它当 Deploy Mode 的闭环主力。
- 粘弹性/滞回:同样压入深度,上升段/下降段响应不同 → teacher label 更应基于时间窗特征与变化率,而非单帧阈值。
- 蠕变/应力松弛:持续接触时形变会随时间漂移 →
contact_confidence/slip_risk需要显式窗口 \(\Delta t\)。 - 温度/老化/污染:模量与光学特征漂移 → 必须把 gel 视为耗材,并把“材料状态”写进 metadata(见 8))。
温度梯度是常态(一个直观类比):人体也不是“全身同温”——核心温度通常稳定在 36.5–37.5℃,而室温 20–25℃ 下皮肤表面温度常见在 32–35℃,
两者温差常在 1–5℃(环境极端时可更大)。同样地,机器人手的“内部/驱动温度”与“指尖胶体表面温度”通常也会有差异。
因此工程上不能用“机体温度”替代 temp_gel:要把胶体温度当作 teacher 侧的关键解释变量与校准条件。
一句话:视触提供高信息“真值”,但真值受材料影响;所以 teacher 必须版本化 + 输出置信度,student 必须学“物理因果”而不是“胶的纹理”。
Teacher:为什么需要“更多位置的视触”(指腹 + 侧边)来仿手套
你提到的关键点很重要:当外力方向变化(推/拉/扭/侧向摩擦)时,手套/电皮肤这种“包覆材料”会在侧边产生明显形变(鼓起、折皱、接触面积迁移), 而这些形变对电传感(电容/电阻阵列)的读数影响很大。若 teacher 只看指腹一个视触面,student 很容易学到“指腹局部视角下的伪规律”,在侧向受力/边缘接触时失效。
- 建议的 teacher 视触布置(Research Mode):至少覆盖拇指/食指的 指腹(pad) + 侧边(sidewall/侧面受力面);对经常做扭转/撬动的任务,再加一个“指尖边缘/角点”视触面。
- teacher 要产出的额外信息:除
contact_patch外,再加contact_patch_stats(面积/质心/主方向)与“侧边形变特征”(可先用规则:侧边 patch 面积/位移能量),用于监督 student 学到更稳的接触模式与风险。 - 落地注意:多点视触会引入更多材料/温度/老化变量,因此更需要
gel_id/temp_gel/teacher_version/teacher_uncertainty做版本化与降权训练。
布置启发式(在复杂环境里如何选“装哪里”)
- 先给拇指/食指:它们承担最多的主动接触与相对运动(也是 slip/jam 最频发的位置)
- 视触觉只当老师,不当闭环主力:它输出几何/接触模式真值,用于 teacher labels;闭环仍依赖高频信号
- 手腕 F/T 的价值:当任务是 push/pull/twist/pry 这类“力学原语”,F/T 让因果可观测(否则只剩 current/effort 的弱 proxy)
补充:法向力 proxy 与“压力传感”不要想当然
这里容易踩一个物理直觉坑:多数视触结构是 实体软胶 + 刚性背板(例如亚克力),它测的是形变/光学纹理,并不存在“腔体气压随按压变化”这一默认信号。
只有当你专门设计了密封腔体/气囊/微流体通道时,“压力传感”才成立,并且它更接近低维法向力 proxy + 健康/漏气监测,依旧不能替代视触的几何真值。
因此在本方案里:法向/接触的最低配仍以 current/effort、(可选)wrist_FT、以及耐久触觉阵列为主;视触负责 teacher labels(几何/接触模式),而不是依赖"气压"做闭环。
3.2.1 温度感知:材质识别 × 安全检测(可选增强)
温度感知通过热导率差异可以区分材质(金属 vs 塑料 vs 织物),并提供安全检测(过热预警)。 但它的时间常数慢(0.5–5秒 vs 力学的 1–10毫秒),无法参与 Level-A/B 的高频闭环,只能作为 Level-C 的语义输入。
温度感知的价值与局限
| 维度 | 价值 | 局限 |
|---|---|---|
| 材质识别 |
通过接触瞬间的温度变化率 (dT/dt) 估计热导率: • 金属 (50–200 W/m·K) → 快速热交换 • 塑料/橡胶 (0.1–0.5) → 慢速热交换 • 织物 (0.03–0.1) → 极慢热交换 |
需要 0.5–2秒 的接触时间窗口,无法做毫秒级反应 |
| 安全检测 | 避免抓烫的物体 (>60°C),检测电机/驱动器过热 | 手套/包覆材料会延长热传导路径,需要差分测量 |
| 任务适应 | 根据材质调整抓取策略(金属→大预紧力,织物→小预紧力) | 与视触胶体有矛盾:胶体温度变化会同时影响视触测量和温度测量 |
推荐决策树:你的应用需要温度感知吗?
你的应用场景是?
│
├─ 工业装配 / 实验室操作
│ └─ ❌ 不需要温度(材质已知,环境可控)
│ 理由:任务中的物体材质是预先确定的
│
├─ 家庭服务 / 通用操作
│ └─ ⚠️ 可选(Phase 4+)
│ 优先级: wrist_FT > 指尖力 > 温度
│ 理由:力学闭环是基础能力,温度是锦上添花
│ 配置:1–2 个 NTC 热敏电阻(指尖侧面 / 手腕)
│ 用途:材质识别 → 调整抓取参数
│
└─ 厨房 / 医疗 / 安全关键应用
└─ ✅ 需要温度(Phase 3–4)
理由:必须避免烫伤/冻伤,或测量体温
配置:方案 A(1–2 个热敏电阻)或方案 B(多点温度阵列)
用途:安全检测(过热预警)+ 材质识别
最小配置方案(如果要纳入)
传感器:
- 1–2 个小型热电偶或 NTC 热敏电阻(成本 $1–5/个)
- 位置:指尖侧面(避开视触胶体)或手腕
- 采样率:1–10Hz(够用,不需要高频)
集成到架构:
- Level-C 输入:RGB + task state + wrist_FT 统计特征 + 温度梯度 (T_fingertip - T_ambient)
- 输出:
material_class(metal/plastic/wood/fabric/ceramic) → 调整抓取参数 - RM 增加:
thermal_safety判据(过热 → 触发 release)
时间常数对比(为什么温度无法参与高频闭环)
| 模态 | 时间常数 | 适用闭环频率 | 用途 |
|---|---|---|---|
| 力/力矩 | 1–10ms | 500–1000Hz (Level-A) | 安全反射、止损 |
| 触觉(压力/剪切) | 5–20ms | 60–200Hz (Level-B) | 防滑、夹持力调度 |
| 温度 | 0.5–5s | 0.2–2Hz | 材质识别、安全检测(语义特征) |
| 视觉 | 30–100ms | 5–30Hz (Level-C) | 全局几何、策略决策 |
关键洞察:温度的时间常数比力学慢 100–1000 倍,因此它只能作为语义输入(Level-C), 用于材质分类、任务初始化参数选择、或安全检测,不参与毫秒级的接触稳定闭环。
3.2.2 超声感知:非接触探测 × 内部结构(场景特定可选)
超声传感器通过声波反射可以实现非接触距离测量、材料内部结构探测、以及声学特性识别(空心 vs 实心、液体检测)。 相比温度,超声的响应速度更快(毫秒级),但需要声学耦合且方向性强,更适合特定任务场景。
超声感知的价值与局限
| 应用场景 | 价值 | 局限 |
|---|---|---|
| 非接触距离测量 |
• 手指接近物体前的障碍检测(5–30cm) • 抓取前的距离估计 → 优化 approach 路径 • 避免碰撞(尤其在视觉遮挡时) |
• 空气中衰减大(需要 <30cm) • 方向性强(±15–30°锥角) • 不适合复杂几何(多次反射) |
| 材质/内部结构 |
• 空心 vs 实心(声阻抗差异) • 液体检测(瓶子里有没有水) • 厚度测量(墙壁/容器壁厚) • 多层结构识别 |
• 需要接触或极近距离(<1cm) • 需要耦合介质(凝胶/水)或密贴接触 • 高频超声(>1MHz)穿透性差 |
| 声学特性识别 |
• 区分金属/塑料/木材(声速不同) • 识别液体/气体/固体 • 结合温度 → 更准确的材质分类 |
• 需要已知参考声速数据库 • 表面粗糙度影响反射 • 软质材料(织物/海绵)吸声严重 |
推荐决策:超声 vs 温度(如何选择)
你的任务需要什么?
│
├─ 接触前的距离/障碍感知
│ └─ ✅ 超声更合适(非接触,ms 级响应)
│ 配置:指尖前端 1–2 个超声测距模块(40kHz,5–30cm 量程)
│ 用途:approach 优化、避碰、抓取前距离估计
│
├─ 接触后的材质识别
│ └─ ⚖️ 温度 + 视觉更简单(超声需要耦合)
│ • 温度:热导率 → metal/plastic/fabric
│ • 超声:需要密贴接触 → 空心/实心/液体
│ 建议:优先温度 + RGB;特殊需求(液体检测)才加超声
│
├─ 内部结构/液体检测(瓶子里有没有水、空心 vs 实心)
│ └─ ✅ 超声必需(唯一可行方案)
│ 配置:高频超声探头(1–5MHz)+ 接触式布置
│ 注意:需要声学耦合(凝胶或水膜)
│
└─ 热安全检测(避免烫伤)
└─ ✅ 温度必需(超声无法测温)
最小配置方案(如果要纳入超声)
方案 A:非接触测距(推荐用于 approach 优化)
- 传感器:1–2 个超声测距模块(HC-SR04 类,40kHz,成本 $2–5/个)
- 位置:手腕或指尖前端(朝向接近方向)
- 量程:5–30cm(最佳工作距离)
- 采样率:10–50Hz(够用)
- 用途:Level-C 输入 → approach 路径优化、避碰
方案 B:接触式材质/液体检测(特殊应用)
- 传感器:高频超声探头(1–5MHz,成本 $10–50/个)
- 位置:指尖表面(需要与物体密贴)
- 耦合:需要凝胶或水膜(维护成本高)
- 用途:空心/实心判别、液体检测、厚度测量
- 工程挑战:耦合介质维护、清洁、耐用性
超声 vs 温度 vs 力学:时间常数对比
| 模态 | 响应时间 | 测量距离 | 主要用途 |
|---|---|---|---|
| 力/力矩 | 1–10ms | 接触(0mm) | 闭环控制、止损 |
| 超声(测距) | ~10ms | 5–300mm | 非接触距离、避碰 |
| 超声(材质) | ~10–50ms | 接触(0–1mm) | 内部结构、液体检测 |
| 温度 | 0.5–5s | 接触(0mm) | 材质识别(热导率)、安全 |
工程建议:
- 优先级:力学 > wrist_FT > 指尖力 > 温度 > 超声
- 超声更适合特定场景(复杂环境避碰、液体检测、内部结构探测)
- 通用家庭服务:温度 + RGB 已够用于材质识别;超声是锦上添花
- 厨房/医疗:温度(热安全)优先级高于超声
- 工业/仓储(复杂环境):超声测距对 approach 优化有明确价值
超声的特定场景深入分析:什么任务真正需要它?
下面用具体任务案例说明超声的独特价值——即其他传感器做不到或做不好的事。
场景 1:液体容器操作(厨房/服务机器人)
| 任务 | 挑战 | 超声的作用 | 替代方案的局限 |
|---|---|---|---|
| 倒水/倒饮料 |
• 需要实时监测液位(避免溢出) • 视觉看不到瓶/杯内部 • 重量变化滞后且不精确 |
超声探头朝向容器内部,实时测量液面距离: • 距离减小 → 液位上升 • 距离稳定 → 液位到达目标 • 响应时间:~10ms(足够快) |
• 视觉:遮挡、反光、透明液体难识别 • 重量:需要力传感器 + 容器标定,滞后 • 倾斜角估计:误差大,不可靠 |
| 检测容器是否空 | 抓取前不知道瓶子/盒子里是否有东西 |
轻拍容器 + 超声: • 空容器:声波穿透,回波单一 • 有液体:声阻抗变化,回波特征不同 • 无需打开/倾斜 |
• 重量:需要已知容器自重 • 视觉:不透明容器看不到 • 晃动:需要复杂动作,可能洒出 |
场景 2:视觉盲区的几何探测(复杂抓取)
| 任务 | 挑战 | 超声的作用 | 为什么视觉/触觉不够 |
|---|---|---|---|
| 抓取遮挡物体 (柜子深处、抽屉里) |
• 相机视角被遮挡 • 物体背面几何不可见 • 需要"盲抓" |
手指上的超声探头: • 在 approach 过程中扫描周围 5–15cm • 检测障碍物(墙壁、其他物体) • 估计目标物体的大致位置和尺寸 |
• 视觉:被遮挡,看不到 • 触觉:需要先接触,来不及调整 • wrist_FT:只有接触后才有信号 |
| 手掌内侧/手指间探测 | 抓取过程中,手掌内侧是相机盲区 |
手掌内侧安装超声: • 检测物体与手掌的距离 • 判断是否完全进入抓取区域 • 避免夹空 |
• 腕部相机:角度有限,手掌内侧仍是盲区 • 触觉:接触后才知道,已经晚了 |
场景 3:软硬度/成熟度估计(非破坏性检测)
| 任务 | 挑战 | 超声的作用 | 触觉方案的问题 |
|---|---|---|---|
| 水果成熟度检测 |
• 需要判断软硬度(成熟/过熟/生) • 不能捏坏(触觉需要施加力) |
超声测量声速/衰减: • 硬(生):声速快,反射强 • 软(熟):声速慢,衰减大 • 无需施加压力 |
• 触觉:需要捏压 → 可能损坏 • 视觉:只能看外观,内部软硬度看不出 • 温度:与成熟度无直接关系 |
| 面包新鲜度 | 新鲜面包柔软,陈旧面包变硬 |
超声探测内部密度/气孔结构: • 新鲜:多气孔,声波散射 • 陈旧:密实,声波穿透性强 |
• 触觉:表皮摸起来都差不多 • 视觉:外观无明显差异 |
| 包裹/盒子内容物检测 |
• 不能打开看 • 需要判断是实心还是空心 • 判断是硬物还是软物 |
超声穿透检测: • 空:回波单一且清晰 • 硬物:强反射 • 软物:吸声,回波弱 |
• 重量:需要拿起来,且不知道内容物类型 • 晃动:并非所有物体都会响 • 视觉:不透明包装看不到 |
场景 4:复杂环境的 approach 优化(工业/仓储)
| 场景 | 挑战 | 超声的作用 | 为什么必须是超声 |
|---|---|---|---|
| 货架深处抓取 |
• 狭窄空间 • 多次碰撞风险 • 相机视角受限 |
多方向超声测距: • 前方:目标物体距离 • 侧方:与货架壁的距离 • 实时调整 approach 轨迹 |
• 视觉:深度估计误差大(单目);遮挡严重 • 触觉/FT:碰到才知道,已经晚了 • 激光雷达:成本高、体积大、不适合手指 |
| 插拔操作 (插头、USB、钥匙) |
• 孔深度不可见 • 需要精确对齐 • 插入深度反馈 |
插入物前端装超声: • 测量到孔底的距离 • 监测插入深度 • 检测是否到位 |
• 视觉:孔内部看不到 • wrist_FT:只能感知阻力,不知道深度 • proprio (q):只知道关节位置,不知道实际插入深度(可能卡住) |
| 夹持力预判 | 在接触前估计需要多大夹持力 |
超声估计物体尺寸/形状: • 大物体 → 需要大开合度 • 估计接触面积 → 预设夹持力 |
• 视觉:尺寸估计有误差;遮挡时更不准 • 触觉:接触后才知道,可能已经夹坏了 |
场景 5:滑移早期预警(补充触觉盲区)
任务:在物体开始滑移之前检测风险
- 触觉的局限:触觉传感器检测的是已经发生的滑移(切向力变化、接触 patch 移动); 当触觉检测到滑移时,物体可能已经开始掉落。
-
超声的补充:
- 手指侧面装超声,持续测量手指与物体表面的微小距离变化
- 当距离开始缓慢增大(亚毫米级)→ 物体正在"松动",但还没完全滑移
- 提前 50–200ms 触发预紧力增大 → 避免掉落
- 为什么触觉做不到:触觉需要接触,但"即将脱离接触"这个状态是触觉的盲区; 超声可以测量 0–5mm 的微小间隙,填补这个盲区。
工程实现建议(如果要做超声)
| 场景类别 | 推荐配置 | 成本 | 集成难度 |
|---|---|---|---|
| 液体容器操作 | 1–2 个超声测距模块(40kHz) 安装位置:指尖前端,朝向容器内部 |
$2–5/个 | 低(简单测距) |
| 视觉盲区探测 | 2–4 个超声测距模块 安装位置:手指侧面、手掌内侧 |
$10–20 总计 | 中(需要多传感器融合) |
| 软硬度/内部结构 | 高频超声探头(1–5MHz) 安装位置:指尖表面 |
$10–50/个 | 高(需要耦合凝胶、信号处理复杂) |
| 复杂环境 approach | 2–3 个多方向超声测距 安装位置:手腕、指尖前端/侧面 |
$5–15 总计 | 中(需要轨迹规划集成) |
| 滑移早期预警 | 高精度超声测距(0.1mm 分辨率) 安装位置:指尖侧面 |
$10–20/个 | 高(需要高采样率 + 信号滤波) |
总结:超声的核心价值在于非接触感知和内部结构探测——这是视觉、触觉、温度都做不到的。 但它不是通用传感器,只在上述特定任务中才体现明确的投资回报率(ROI)。
推荐策略:
- MVS–Phase 3:专注力学闭环(这是基础)
- Phase 4:如果有明确的液体操作/复杂环境需求,加入超声测距(低成本、低风险)
- Phase 5+:如果有特殊需求(软硬度检测、内部结构),考虑高频超声(高成本、高维护)
3.3 Level-2(工程化 Pro:长时部署与健康管理)
- 热与健康监测:
temp_motor_i、over_current_count、stall_time_ms。 - 冗余观测:关键关节
effort/current的统计漂移,形成sensor_health。
落地要点:把“耗材化/会坏”写进系统。
视触觉(凝胶/表皮)与线缆在长期部署中就是耗材;因此需要把 sensor_health、recalib_required、以及更换后的 calib_version 当作数据的一等公民写进 episode metadata。
视触相关(建议新增到 episode metadata):gel_id / gel_batch / temp_gel / precondition_ok(开机预调理脚本是否通过);
同时 teacher 侧建议记录 teacher_version 与 teacher_uncertainty(或置信度),避免“材料状态漂了但标签看起来还很自信”。
4) 三层闭环(Level-A/B/C)与职责边界
4.1 Level-A:安全反射层(500–1000Hz)
目标:防损坏、防卡死、防过热,毫秒级止损。
- 输入:
motor_current/joint_effort、qdot、温度、软硬限位。 - 输出:限流、急停、退避(backoff)。
4.2 Level-B:触觉协调层(60–200Hz)
目标:防滑(slip control)、夹持力调度、微调接触几何。
- 输入:剪切/压力阵列(主力) +
effort/current(冗余) +(可选)视触觉特征。 - 输出:夹持力(或关节闭合量)微调、接触姿态微调。
4.2.1 精细力控子模式(Level-B-Force)
对 twist/insertion/pry 等精细力控任务,Level-B 需要切换到力控子模式,要求更精确的力/力矩闭环。
此时 current/effort 的弱 proxy 不足,必须引入 wrist_FT(6D F/T)。
多指力分配(Force Distribution / Internal Force)
- 外环职责:Level-B-Force 负责 “外环 wrench/compliance 目标”,但多指执行需要力分配器把目标转换为各指夹持/接触动作。
- 最小可落地(Rule-based):拇指+食指作为主控对承担法向/切向调节,其余手指低增益跟随支撑;通过
stability_margin/slip_risk调整 internal force,并对脆弱物体设F_normal_max。 - 进阶可选(QP/约束优化):输入目标 wrench、接触指集合、法向方向估计、摩擦先验/在线估计、各指力/速上限;输出每指目标法向/切向(或夹持增益),最小化内力并满足摩擦锥与安全约束。
- 责任边界:若无指尖力/触觉,仅启用 Rule-based 的“主控对 + 安全上限”,避免不可靠的 per‑finger 闭环。
精细力控闭环结构图
┌─────────────────────────────────────────────────────────────────────────────┐
│ 精细力控闭环 (Level-B-Force) │
│ 适用任务: twist / insertion / pry / fine press / pull │
└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────┐
│ 传感输入层 │
└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────┐ ┌───────────────────┐ ┌──────────────────┐
│ wrist_FT (6D) │ │ 指尖力 (可选) │ │ q / qdot │
│ [Fx,Fy,Fz, │ │ 法向 + 切向 ×2 │ │ 关节位置/速度 │
│ τx,τy,τz] │ │ │ │ │
└────────┬────────┘ └─────────┬─────────┘ └────────┬─────────┘
│ │ │
└──────────────────────┴───────────────────────┘
│
实时测量 (60–200Hz)
↓
┌─────────────────────────────────────────────────────────────────────────────┐
│ 状态估计 & 误差计算 │
└─────────────────────────────────────────────────────────────────────────────┘
┌────────────────────────────────────────────────────────────────┐
│ • 接触力/力矩估计: F_contact, τ_contact │
│ • 误差计算: │
│ - twist: e_τz = τz_cmd - τz_measured │
│ - press: e_Fz = Fz_cmd - Fz_measured │
│ - insertion: e_F = [Fx,Fy,Fz] - [Fx_cmd, Fy_cmd, Fz_cmd] │
│ • 风险评估: slip_risk, jam_risk (从 Student 或规则) │
└────────────────────────────────────────────────────────────────┘
│
误差信号 ↓
┌─────────────────────────────────────────────────────────────────────────────┐
│ 控制律选择 & 参数调整 │
└─────────────────────────────────────────────────────────────────────────────┘
┌────────────────────────────────────────────────────────────────┐
│ 控制律类型: │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 阻抗控制 (Impedance): τ = K(x_d - x) + B(ẋ_d - ẋ) + F_ext │
│ │ 导纳控制 (Admittance): ẍ = M⁻¹(F_ext - Kx - Bẋ) │
│ │ 混合控制 (Hybrid): 位置主方向 + 力从方向 │
│ └──────────────────────────────────────────────────────────┘ │
│ │
│ 任务特定映射: │
│ • twist → τz 闭环 + slip_risk 补偿 (增大 Fz 预紧) │
│ • insertion → Fz 限幅 + Fx/Fy 对中 (阻抗控制) │
│ • press → Fz 闭环 (PID 或力限幅) │
│ • pry → τ 限幅 + 姿态微调 │
└────────────────────────────────────────────────────────────────┘
│
控制指令 ↓
┌─────────────────────────────────────────────────────────────────────────────┐
│ 输出 & 执行 │
└─────────────────────────────────────────────────────────────────────────────┘
┌────────────────────────────────────────────────────────────────┐
│ 输出形式: │
│ • 末端 compliance 调整 (Δx_ee, Δorientation) │
│ • 或关节力矩指令 (τ_joint) → Level-A 安全限幅 │
│ │
│ 安全约束 (Level-C 下发): │
│ • F_max, τ_max (力/力矩上限) │
│ • slip_risk_threshold (触发增大 Fz) │
│ • jam 检测 → 立即触发 backoff │
└────────────────────────────────────────────────────────────────┘
│
执行层 ↓
┌────────────────────────────┐
│ Level-A (安全反射) │
│ → 执行器 → 物理世界 │
└────────────────────────────┘
关键要点:
• wrist_FT 必选:twist/insertion/pry 无法用 current/effort 替代(精度差 10–100×)
• 阻抗 vs 导纳:阻抗控制适合刚性环境(insertion),导纳适合柔性/未知刚度
• slip_risk 补偿:当 slip_risk > 阈值时,自动增大法向预紧 Fz
• 可降级:wrist_FT 失效 → 回退简单任务(不做精细力控)
典型控制律示例
| 任务原语 | 控制目标 | 控制律类型 | 关键闭环信号 | 成功/失败判据 |
|---|---|---|---|---|
twist(擰瓶盖) |
维持 τz 在目标范围,同时监控 slip_risk | 扭矩闭环:τz_cmd → τz_measured | wrist_FT.τz |
角度达标 且 slip_risk < 0.3 |
press(精密夹持) |
限制 Fz,维持预紧力 | 力闭环:F_cmd → F_measured | 指尖法向力 或 wrist_FT.Fz |
contact_confidence > 0.8 且 |F_error| < ε |
insertion(精密插入) |
限制 Fz,同时用 Fx/Fy/τx/τy 做对中 | 阻抗控制:位置主/力从 | wrist_FT (6D) |
深度达标 且 无 jam 事件 |
pry(撬开) |
控制力矩,限制峰值力 | 力矩限幅 + 姿态微调 | wrist_FT (6D) + 安全限位 |
约束解除 且 无 safety_trip |
职责边界明确化
Level-B 的"微调接触几何"具体指:
- 夹持力调度:指尖法向力 → 关节闭合量(或力矩指令)
- 接触姿态微调:
wrist_FT的侧向分量(Fx/Fy/τx/τy)→ 手腕姿态微调(对中/消除 misalignment) - 防滑响应:
slip_risk高 → 增大法向预紧或降低切向速度
关键区别:简单抓取/防滑可用
current/effort;精细力控(twist/insertion/pry)必须用wrist_FT才能做到毫牛级闭环与多轴解耦。
4.3 Level-C:语义策略层(5–15Hz)
目标:任务理解、子任务切换、与 VLA/LLM 高层决策对接。
- 输入:视觉 +(可选)语言指令/任务状态 +(可选)手腕 F/T 统计特征。
- 输出:子目标(grasp pose / schedule / retreat policy)以及对 A/B 的参数下发(上限、恢复路径)。
关键点:Level-C 不直接管“接触瞬间怎么稳住”,它管的是“何时进入接触、失败后走哪条恢复路径”。
5) 人形视角:手是“物理因果接口”
对人形机器人来说,手的职责是把意图转成物理世界会响应的原因(力、力矩、接触约束)。 最小语义接口可以写成 6D wrench:
\[ w = [F_x, F_y, F_z, \tau_x, \tau_y, \tau_z]^T \]
push/pull/press/twist/pry 本质是在控制 \(w\) 的不同分量。滑移的物理边界(简化):
\[
\|f_t\| \le \mu f_n
\]
因而 slip detection 也是在估计:是否进入 sliding,以及离边界有多近(slip_risk)。
5.1 物理原语(Physical Primitives)词汇表
下面把文中出现的“物理原语”统一成可落地定义:每个词对应你想改变的物理量(wrench/约束/接触模式)以及它依赖的关键可观测信号。 原语可以作为早期 rule-based policy,也可以作为 VLA policy 的高层动作空间(primitive switching)。
| 原语 | 直白定义你在物理上做什么 | 目标改变什么 | 闭环控制律怎么闭环 | 关键闭环信号最低配 | 成功/失败判据触发恢复 |
|---|---|---|---|---|---|
press |
沿接触法向"压下去",建立/维持法向力 | 提高 \(f_n\),增加摩擦预算(降低 slip_risk) | 力闭环:F_cmd → F_measured(或 current 限幅) | current/effort(法向 proxy)、q/qdot;高精度:指尖法向力或 wrist_FT.Fz |
成功:contact_confidence > 0.8 且 F_error < ε失败:过力/jam → backoff;slip 仍高→ wedge/regrasp |
pull |
沿某方向"拉",尝试解除约束或拉出物体 | 控制切向力 \(f_t\),改变约束反力 | 力闭环(切向):f_t_cmd → f_t_measured;或阻抗控制 | wrist_FT(强烈推荐)、current/effort |
成功:目标位移达标 且 slip_risk < 0.3失败:滑移/脱手→增大 press 或 regrasp |
push |
沿某方向"推",让物体/机构进入更可控的约束状态 | 改变接触约束与几何关系(让任务更可解) | 位置控制 + 力限幅(hybrid control) | rgb_wrist + current/effort(接触/阻力 proxy);高精度:wrist_FT |
成功:目标约束状态达成 且 无 jam 失败:顶死/卡住→ backoff;偏斜→ re-approach |
wedge |
"楔入/撬开"式接触:用边缘/角点制造几何杠杆 | 把不可见/难抓的几何变成可抓(解锁/起缝) | 力/力矩限幅 + 姿态微调(限制峰值力) | wrist_FT(强烈推荐)、current/effort |
成功:缝隙打开 或 接触状态改变 失败:过力/损伤风险→限力 backoff;slip→ press/regrasp |
twist |
绕轴旋转(例如拧盖/旋钮) | 控制 \(\tau_z\)(扭矩)并维持接触模式为 stick | 扭矩闭环:τz_cmd → τz_measured(wrist_FT 必选) |
wrist_FT.τz(必选);次选:current/effort(扭矩弱 proxy) |
成功:角度达标 且 slip_risk < 0.3失败:slip→先 press 提升摩擦;jam→ backoff + 重新对齐 |
pry |
"撬":绕支点施加力矩,解除卡扣/粘连 | 改变约束反力与接触点(高风险原语) | 力矩闭环 + 峰值限幅(阻抗控制) | wrist_FT(必选)、安全限位/温度 |
成功:约束解除 且 无 safety_trip失败:过力/过矩→立刻 backoff;损伤风险→终止并报警 |
drag |
贴着表面"拖拽/扫过"以定位或产生摩擦信息 | 用可控滑移获取信息/对齐(信息驱动原语) | 位置控制 + 法向力限幅(保持接触但允许滑移) | rgb_wrist + current/effort;高精度:指尖触觉或 wrist_FT |
成功:完成扫描区域 或 找到目标特征 失败:摩擦过大→减速/减力;抓取不稳→先 press |
regrasp |
重新抓(松开→调整接触点→再抓) | 把接触几何重置到更稳定区域 | 序列控制:reopen → 视觉定位 → press |
rgb_wrist + q/qdot + current/effort |
成功:contact_confidence 提升 且 slip_risk 降低失败:重复失败→切换 wedge 或改变 approach 方向 |
backoff |
后退/卸载力(退避) | 快速止损,解除 jam/过力风险(Level-A 常用) | 位置撤退 + 力卸载监控(验证力是否下降) | current/effort + qdot + 安全事件;高精度:wrist_FT |
成功:current/effort 降至安全范围 且 qdot 响应正常失败:退避后仍异常→标记 sensor_health 或请求人工介入 |
reopen |
张开手指/减小夹持(释放接触) | 解除卡住/重置接触 | 位置控制(张开)+ 力卸载验证 | q + current/effort |
成功:current/effort 降至基线 且 q 达到开启位置失败:释放无效(仍有阻力)→可能几何卡死,转 backoff + 改路径 |
re-approach |
重新接近(换角度/路径再次进入接触) | 降低 misalignment/occlusion,获得更好接触几何 | 视觉伺服 + 路径规划(重新定位 grasp pose) | rgb_static/rgb_wrist + q |
成功:接触建立 且 misalignment 指标改善失败:重复 misalignment→调整目标姿态或先 drag 探索 |
6) RM-in-loop:自动切段、挑 hard cases、触发自恢复
把 RM 当成“质量裁判”:部署时不仅做任务,还能自动生成高价值训练数据,并减少人工介入。
- 自动切段(streaming → episode/subtask)
- 自动挑 hard cases(对训练最值钱)
- 自动触发恢复策略(减少 human intervention)
建议 RM 多头输出,而不是只输出一个标量:
progress、quality、recoverability、failure_mode- (强烈建议)
primitive/contact_mode/slip_risk:把物理因果写进标签体系
面向 VLA 的对齐说明:RM 在前沿里通常以“critic/复盘”形态出现。
在具身/机器人学习前沿,很多团队并不把 RM 当作“在线 RL 的奖励函数”直接驱动真机探索(风险与不稳定性太大),而是把它用在三件更稳、更可交付的事上:
- 数据筛选与加权(quality filtering / critic scoring):给轨迹打分、剔除低质量/不可复现数据、挑 hard cases(对应本文的
quality/progress/failure_mode)。 - 复盘式自我改进(post-training / Offline RL / Recap):从成功与失败轨迹中学习“哪一步错了”,把失败当一等数据(对应本文的
recoverability与 failure segmentation)。 - 安全与可追责优先:RM 先做 triage(排序/筛选/触发复核与恢复),最终验收仍绑定部署 KPI(SR/IR/ER + 失败分布 + 置信区间)。
公开对照(handbook): π*0.6 的 Recap 属于典型的 post-training / Offline RL 复盘范式;GR‑RL 体现了用 critic 筛选/提升长时程精细操作数据质量的思路;Reward Discovery 则对应“自动发现/进化奖励函数”的研究路线。
7) 时间同步与数据管线(可训练 / 可复现 / 可追责)
- 统一时钟:优先 PTP(IEEE 1588),并 timestamp-at-source。
- 对齐策略:以视觉帧为 anchor,Ring Buffer 对齐
q/qdot/effort/current/tactile。 - 记录两条动作流(非常重要):命令流
cmd_joint_target+ 执行流measured_q/measured_effort。
否则你无法判断失败到底是“策略错”,还是“执行延迟/饱和/保护触发”导致的。
同步实现要点(对应 handbook)
- Timestamp-at-source + 统一时钟(PTP/NTP): multimodal_data_synchronization.md
- 触觉集成的延迟/布线/标定成本(视触觉尤其关键): tactile_sensor_integration_challenges.md
7.1 Deploy vs Research:同一套数据骨架(Deploy = 子集,Research = 超集)
你选择的路线是 A + C:用 Research Mode 的视触觉提供“高信息 teacher 信号”,但部署(Deploy Mode)不依赖视触觉的 uptime。 因此数据要做到:同一套 schema,Research 只是多字段,Deploy 允许缺字段。
- Deploy Mode(长时稳定、量大):
rgb_static/rgb_wrist/q/qdot/current/effort(+ 可选wrist_FT) - Research Mode(高分辨、高信息、量小):在 Deploy schema 上加视触 teacher 模态。建议采用多点视触(指腹 + 侧边/侧壁为主),对应字段可按通道组织:
visuotactile_img*/tactile_depth*/contact_patch*(例如按vt_pad/vt_side命名)。
共通字段(推荐)
- 动作两条流:命令流
cmd_joint_target+ 执行流measured_q/measured_effort - episode metadata:
task、calib_version、sync_status、replay_ok、sensor_health - 时间:timestamp-at-source + 统一时钟 + Ring buffer 对齐(以相机为 anchor)
7.2 A:Teacher → Student(蒸馏到可部署信号)
目标:让部署侧只依赖可靠模态(RGB + proprio + current/effort + F/T),但仍能获得“类视触觉”的状态(接触模式、滑移风险、失败模式)。 做法是:用 Research Mode 的视触 teacher 生成 teacher labels(建议多点视触:指腹 + 侧边/侧壁覆盖侧向受力与形变),再训练一个只吃 Deploy 模态的 Student estimator。
Teacher labels(最小集合)
- 接触与摩擦:
contact_mode(stick/slip/roll)、slip_risk(0–1)、contact_confidence - 失败语义:
failure_mode(jam/slip/occlusion/misalignment/overforce…) - RM-in-loop:
progress、quality、recoverability
补充(与电手套/电皮肤的 teacher 更对齐):若你的 student 目标是拟合“包覆材料在外力变化下的侧向形变”, teacher 侧就不能只看单一指腹视角——建议把 teacher 的几何/接触模式标签基于 pad + side 两个(或以上)视触通道联合生成,并对侧向形变/脱离边缘等情况显式给出更高权重或单独事件标签。
部署侧推理(Student 输出给 policy)
- 输入:Deploy 模态(RGB + q/qdot + current/effort + 可选 wrist_FT)
- 输出:teacher labels 的估计值(作为 VLA policy 的“可观测因果状态”)
7.2.1 因果状态空间(state taxonomy):VLA 真正在学什么
从第一性原理出发,DexHand 不是“更复杂的夹爪”,而是机器人把语义意图转成可控的物理因果的接口。 因此 policy 需要的不是“更多传感器”,而是一个可部署、可对齐、可回放的因果状态:
- 接触几何(contact geometry):是否接触、接触点/接触面、接触面积、接触法向方向(或等价特征)
- 力学因果(wrench / constraints):对物体施加的 \(w\)(或其可观测 proxy)、外部约束反力(推/拉/扭/撬)
- 摩擦状态(friction state):
contact_mode(stick/slip/roll)、slip_risk - 失败语义(failure semantics):
failure_mode(jam/slip/occlusion/misalignment/overforce…) - 可恢复性(recoverability):是否处于“可自救窗口”,以及推荐的恢复原语
primitive
这解释了 A(Teacher→Student)的必要性:Research Mode 的视触觉提供高信息的“因果真值”,而 Deploy Mode 则要把这些真值蒸馏成可部署信号。
7.2.2 Teacher labels 的产生机制(视触 → 标注 → 版本化)
这一步的目标是让 label 可计算、可复现、可版本化,否则 teacher label 会变成不可追责的“拍脑袋标签”。
推荐把每次生成 teacher label 的实现写成一个可追踪版本:teacher_version(commit hash / semantic version)+ teacher_config(阈值/窗口大小等)。
| label | 定义(第一性) | 视触可计算 proxy(示例) | 输出形式 |
|---|---|---|---|
contact_confidence |
“是否接触”的置信度 | 接触 patch 面积是否显著:area(contact_patch) > A_min |
0–1 |
contact_patch |
接触区域(几何真值) | 由视触深度/形变图阈值得到二值 mask;可进一步取 centroid/主方向 | mask + stats |
contact_mode |
接触处于 stick/slip/roll(摩擦边界) |
|
枚举/one-hot |
slip_risk |
\(P(\\text{slip within }\\Delta t)\) | 用短窗口特征回归:v_t、接触面积变化、法向压入变化、effort/current 残差(如果同步) |
0–1 |
failure_mode |
失败的物理原因分类 |
|
多类分类 |
progress |
子任务进度(用于切段/训练) | 用规则或小模型:达到关键状态(接触建立、稳定抓取、旋转完成…) | 0–1 |
recoverability |
是否处于可自救窗口 | failure_mode + 接触置信度 + 安全事件组合判定 | 0–1 或 bool |
| 力学真值(精细力控必需) | |||
contact_wrench |
接触点的 6D 力/力矩估计 | 视触形变 + wrist_FT 的联合估计(或基于形变的力学建模) |
[Fx, Fy, Fz, τx, τy, τz] |
grasp_stability_margin |
离摩擦锥边界的余量(安全距离) | \(\mu f_n - |f_t|\) 的归一化(或基于 slip_risk 的逆推) |
0–1(1 = 非常稳定,0 = 即将滑移) |
insertion_phase |
插入任务的阶段状态 | 基于 wrist_FT 特征 + 深度/接触面积变化:approach / contact / slide / jam / success |
枚举(5 类) |
twist_phase |
扭转任务的阶段状态 | 基于 wrist_FT.τz + 角度变化:engage / turn / slip / complete |
枚举(4 类) |
normal_force |
接触法向力估计(单通道) | 视触压入深度 → 力(需标定)或 wrist_FT.Fz 投影 |
标量(N) |
tangential_force |
接触切向力估计(单通道或 2D) | 视触剪切形变 → 力(需标定)或 wrist_FT 的 Fx/Fy 分量 |
标量或 [fx, fy](N) |
| 场景特定增强(可选) | |||
material_class |
物体材质分类(基于热导率 + 视觉纹理) |
• 温度:接触后 dT/dt (0.5–2s 窗口) → 热导率估计 • 视觉:RGB 纹理特征(颜色/光泽/纹理) • 联合:融合两者 → 分类 logits |
枚举:metal / plastic / wood / fabric / ceramic |
contact_wrench 的定义与可辨识范围(责任边界)
-
层级清晰化:
wrist_wrench:手腕 6D F/T 量测到的总合力/力矩(wrist/tool frame)。contact_wrench(近似):在“单主接触 / 单指主导”的任务窗口内,将wrist_wrench通过tool_tf+gravity_comp变换/补偿后,近似为主要接触点的等效 wrench。
- 多接触不可唯一分解:multi-contact 时只输出总 wrench + 可辨识方向特征(如
misalign_direction、jam_risk、torque_sign);per‑finger wrench 交给指尖传感或 teacher 估计模块。 - 门控条件:仅在
contact_confidence ≥ τ且处于可辨识接触模式时,contact_wrench才用于闭环参数更新。
注意:视触不必承担高频闭环(handbook 强调其延迟/线缆/耗材/标定成本),但它非常适合在 Research Mode 里提供“几何真值”和“摩擦状态真值”。
对 Deploy Mode,teacher labels 只作为监督信号,不作为实时传感依赖。
7.2.2.1 材料/接触物理学:为什么“视触 teacher”必须做版本化与去材料化
视触(gel-based)之所以“信息量大”,是因为它把接触边界条件(法向压力、剪切、曲率、边缘)映射成可观测的形变/光学纹理; 但这条映射不是常数,而是强烈依赖材料与环境:粘弹性、蠕变、滞回、温度、老化、污染都会改变同一个接触在传感器里的“表观形变”。 因此在 Teacher→Student 里,视触更适合承担 teacher(近真值) 而不是 线上依赖,并且 teacher 必须显式建模“不确定度”和“版本”。
-
关键材料效应(会让 teacher label 漂):
- 粘弹性/滞回:同样的压入深度,上升段与下降段形变不同;短窗口特征比单帧更可靠(否则会把“材料滞回”误判成接触模式变化)。
- 蠕变/应力松弛:保持接触时形变会随时间漂移;因此
contact_confidence/slip_risk更应基于 \(\Delta t\) 窗口内的变化率与稳态残差。 - 温度与老化:模量变化会导致
A_min、v_{slip}等阈值随批次/寿命变化;必须把gel_id/gel_batch/temp_gel、以及calib_version记录为 metadata。 - 表面污染/润滑:会改变摩擦与光学特征(例如高光/雾化),需要输出
contact_confidence与teacher_uncertainty,并在 RM/QC 中触发复核。
-
Teacher→Student 映射的工程原则(让 student 学到“物理因果”而不是“胶的纹理”):
- 输出低维因果状态 + 不确定度:teacher 输出
contact_mode/slip_risk/contact_patch_stats同时输出teacher_uncertainty(或置信度),student 训练时对低置信样本降权。 - 做“去材料化”的特征:尽量用归一化/比值/变化率(例如 patch 面积的相对变化、切向位移能量的归一化)而不是绝对像素强度;减少对 gel 批次/光照的敏感性。
- 预处理/预调理(pre-conditioning):每次开机或更换 gel,先跑固定的压入/滑动脚本做“材料状态初始化”,并写入
precondition_ok。 - 把材料当作 nuisance 变量:在 teacher config 里显式记录(gel/温度/光照/镜头),必要时按 batch 分组校准阈值,避免跨批次直接共享阈值。
- 输出低维因果状态 + 不确定度:teacher 输出
7.2.3 Student → Policy 的接口规格(让部署可控、可验证)
为了让 A 真正可落地,必须把 student 的输出形式“写死”,并规定 policy 如何消费这些输出(否则会出现训练/部署语义不一致)。
- Student 输入:对齐后的 Deploy 模态(RGB + q/qdot + current/effort + 可选 wrist_FT)
- Student 输出(推荐最小集合):
contact_mode_logits(3 类:stick/slip/roll)slip_risk(0–1)failure_mode_logits(多类)progress(0–1)recoverability(0–1)failure_mode_confidence/slip_risk_calib(置信/校准项,必选)
验收门槛(必须写死):Student 必须输出置信/校准(例如 failure_mode_confidence 或 slip_risk_calib),
否则 policy 会把噪声当信号,恢复触发会比“没触发”更致命。
训练目标别贪(只蒸馏低维因果):Student 优先学 phase/mode/risk/recoverability 的“触发点”,
不强制追求连续高精度 contact_wrench;精细闭环仍由 wrist_FT 直接完成(与你的系统分工一致)。
电传感的盲区:为什么“拉力(tension)”难直接感到?如何补齐?
多数电触觉/电手套对“压入/接触面积变化”(法向)很敏感,但对拉离/张力本身没有对称的直接通道(没有“负压力”这一物理量),
往往只能通过“接触逐渐消失/边缘先脱离”的事件间接体现。这会导致仅靠电触觉很难稳定估计 pull load。
工程解法(推荐优先级): (1) 加 wrist_FT 或关节力矩/腱张力传感,提供外力/拉力的可观测 proxy;(2) 用 q/qdot + current/effort 做模型外力估计(把摩擦/内阻作为不确定度处理);(3) 把“脱离/将脱离”事件化为 detach_risk/recoverability,让 policy 在拉力任务中优先走“先建立足够法向,再拉”的原语序列。
Policy 使用约束(示例):
- 若
slip_risk高:优先触发“增大法向/调整接触几何/降速”类原语 - 若
failure_mode=jam且recoverability高:触发 backoff + reopen + re-approach - 若
progress长时间停滞:切换原语(push→wedge→twist…)或触发重新定位
这些规则也可以作为早期的 rule-based policy(阶段 1),随后逐步被 VLA policy 学到(阶段 2+)。
7.3 C:RM/QC flywheel(把部署数据变成“可用且可追责”的数据)
视触觉不必进 kHz 闭环,但可以显著提高数据质量与训练效率:QC、更准切段、更准 hard case 挖掘、更可控的恢复触发。
- QC:Replay Validation(同一命令流重放能否重现成功)
- 切段:用
progress/failure_mode进行 episode/subtask segmentation - hard case:用
slip_risk、接触模式变化、恢复触发点做 hard case mining - 恢复触发:
recoverability+failure_mode→ 选择 recovery primitive(不要求视触觉进入 kHz)
7.3.1 Replay Validation(最关键 QC)—可执行 checklist
目标:把“能不能训练”从主观判断变成硬指标。
- 必须记录:
cmd_joint_target(命令流)与measured_q/measured_effort(执行流),并带sync_status - 重放方式:同一初始条件下重放命令流(或重放关键子段)
- 判定指标:
- 末端/关节轨迹误差(例如 \(\|q_{replay}-q_{ref}\|\) 的阈值)
- 成败一致性(success label 一致)
- 关键事件一致性(safety_trip/jam 事件是否一致)
- 产出:写入
replay_ok(bool)与replay_score(0–1,可选)
A+C 数据流(示意图)
flowchart TD
DeployMode[DeployMode_Data] --> Align[TimeSync_Align]
ResearchMode[ResearchMode_Data_WithVisuoTactile] --> Align
ResearchMode --> Teacher[TeacherLabeler_VisuoTactile]
Teacher --> Labels[TeacherLabels]
DeployMode --> Student[StudentEstimator_DeployOnly]
Labels --> Student
Student --> PolicyInputs[VLA_Policy_Inputs]
DeployMode --> PolicyInputs
PolicyInputs --> Policy[VLA_Policy]
DeployMode --> RM[RM_QC_Flywheel]
ResearchMode --> RM
RM --> HardCases[HardCaseMining]
HardCases --> Train[Retrain]
Train --> Student
Train --> Policy
7.4 数据采集实施流程(VLA公司落地操作指南)
本节面向"买完系统回去要做什么"的实际工程问题:谁来采、怎么采、采什么、如何质控、如何从 Research 过渡到 Deploy。 流程按照 9.2 迭代路线图 的阶段划分,每个阶段给出可执行的操作清单。
验收门槛(数据覆盖):采集策略必须按“失败分布”来设计,而不是只追成功率。
最少要刻意覆盖:材料状态(gel_batch/temp_gel/pollution)、接触边界(stick↔slip 临界)、早期征兆(misalignment/jam 的前兆)。
这决定了 Student 能不能学到“触发点”,而不是只学到“平均态”。
核心概念澄清:Teacher训练 vs 遥操作手套
关键误解澄清:"戴手套"有两个完全不同的含义,不要混淆!
两种"戴手套"的根本区别
| 概念 | 手套类型 | 数据类型 | 作用 | 是否需要 |
|---|---|---|---|---|
| 遥操作手套 | Meta Manus / Cyberglove / 数据手套 | 人手关节角度 [θ1, θ2, ..., θ20] | 控制机器人手的运动轨迹 | ✅ 可以用(或用主从手/VR手柄代替) |
| 假想的"训练Teacher手套" | 假想的人手触觉传感器 | 人手的接触感受/力感知 | (误以为)提供Teacher训练ground truth | ❌ 不需要!不存在! |
❌ 常见误解(错误流程)
【错误理解】
人戴触觉手套 → 人手接触感受数据 → 训练Teacher → Teacher处理机器人视触图像
↑ ↑
(人手数据) (机器人数据)
└──────────── 数据来源不匹配! ────────────┘
✅ 实际架构(正确流程)
┌─────────────────────────────────────────────────────────────────────────────┐
│ 完整数据采集流程(Teacher→Student架构下) │
└─────────────────────────────────────────────────────────────────────────────┘
【步骤 1】人类遥操作(控制机器人执行任务)
┌────────────────────────────────────────────────────────────────┐
│ 操作员 │
│ ├─ 用主从灵巧手 / VR手柄 / 数据手套(任选一种) │
│ └─ 控制机器人手执行任务(抓取/插入/拧瓶盖...) │
└──────────────────────────┬─────────────────────────────────────┘
│ 遥操作指令
↓
┌─────────────────────────────────────────────────────────────────┐
│ 机器人手(被控制,执行任务) │
│ ├─ 装有传感器:RGB相机、关节编码器、wrist_FT、指尖力... │
│ └─ Research Mode额外装:视触觉传感器(GelSight/DIGIT/uSkin) │
└──────────────────────────┬──────────────────────────────────────┘
│ 采集传感器数据
↓
【步骤 2】机器人传感器采集数据
┌─────────────────────────────────────────────────────────────────┐
│ Deploy Mode 数据(可长期稳定运行) │
│ ├─ RGB图像(static + wrist) │
│ ├─ 关节位置/速度(q / qdot) │
│ ├─ 电流/力矩(current / effort) │
│ └─ 手腕6D力/力矩(wrist_FT,阶段2.5+) │
└──────────────────────────┬──────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────────────┐
│ Research Mode 数据(额外采集,用于生成Teacher labels) │
│ ├─ 上述Deploy模态 │
│ └─ + 视触觉图像(指腹 + 侧边,多点覆盖) │
└──────────────────────────┬──────────────────────────────────────┘
│
↓
【步骤 3】Teacher算法处理视触觉数据(机器人数据,不是人手!)
┌─────────────────────────────────────────────────────────────────┐
│ Teacher Labeler(算法,运行在服务器上) │
│ 输入:视触觉图像(从机器人手指传感器采集) │
│ 处理: │
│ ├─ 分析接触形变 → contact_mode(stick/slip) │
│ ├─ 估计滑移风险 → slip_risk(0-1) │
│ ├─ 检测失败模式 → failure_mode(jam/slip/...) │
│ ├─ 计算接触几何 → contact_patch / contact_wrench │
│ └─ 输出不确定度 → teacher_uncertainty │
│ 输出:Teacher labels(监督信号) │
└──────────────────────────┬──────────────────────────────────────┘
│
↓
【关键问题】Teacher如何训练?Ground Truth从哪来?
┌─────────────────────────────────────────────────────────────────┐
│ Teacher训练方法(4种方案,不需要人手数据!) │
└─────────────────────────────────────────────────────────────────┘
方案1:规则为主(70%的labels)
简单labels用规则,不需要训练:
├─ contact_confidence = (接触patch面积 > 阈值) ? 1 : 0
├─ contact_mode = (光流能量 > v_slip) ? "slip" : "stick"
└─ 纯计算机视觉算法,可计算、可复现
方案2:传感器融合自动标注(20%的labels,推荐!)
用机器人自己的可靠传感器作为ground truth:
┌────────────────────────────────────────────────────┐
│ 机器人执行任务时同时记录: │
│ ├─ 视触图像(需要labels) │
│ └─ wrist_FT(6D力/力矩,可靠传感器,作为GT) │
│ │
│ 自动生成训练数据: │
│ ├─ wrist_FT检测Fz突降 → slip事件 → 标注视触图像 │
│ ├─ wrist_FT.τz卡住+current↑ → jam → 标注为"jam" │
│ └─ contact_wrench: 视触形变+wrist_FT联合估计 │
│ │
│ 训练Teacher模型: │
│ X_train = 视触图像 │
│ Y_train = wrist_FT推算的力/接触状态(GT) │
└────────────────────────────────────────────────────┘
关键:wrist_FT是机器人自己的传感器,不是人手套!
方案3:标定实验(力学模型标定)
用标准力传感器建立形变→力的映射:
├─ 施加已知力(1N, 2N, 5N...) → 记录视触形变
├─ 建立初始模型:形变特征 → 力(线性/NN)
└─ 用任务数据fine-tune
方案4:少量人工标注(10%,辅助)
专家标注机器人的视触视频(不是人手!):
├─ 观看机器人视触视频 → 标注slip发生时刻
├─ 100-500 episodes足够冷启动
└─ 用于训练轻量Teacher模型
【步骤 4】Student学习(Deploy模态 → Teacher labels)
┌─────────────────────────────────────────────────────────────────┐
│ Student Estimator(神经网络,训练后部署) │
│ 输入:只用Deploy模态(RGB + q/qdot + current/effort + wrist_FT)│
│ 监督信号:Teacher labels │
│ 目标:学习从可靠传感器推理出Teacher的输出 │
│ 输出:部署时可用的状态估计(contact_mode / slip_risk / ...) │
└──────────────────────────┬──────────────────────────────────────┘
│
↓
【步骤 5】Policy训练(Deploy模态 + Student输出)
┌─────────────────────────────────────────────────────────────────┐
│ VLA Policy(最终部署的策略) │
│ 输入:Deploy模态 + Student输出的状态估计 │
│ 训练数据:Deploy Mode episodes(5000+,大量) │
│ 输出:机器人动作(关节目标位置/速度) │
└─────────────────────────────────────────────────────────────────┘
关键区分:遥操作方式 vs Teacher→Student架构
| 概念 | 作用 | 谁/什么 | 常见误解 |
|---|---|---|---|
| 遥操作方式 | 人类控制机器人执行任务 | 主从手 / VR手柄 / 数据手套(任选一种) | ❌ 误以为"数据手套=Teacher" |
| Teacher | 从视触觉数据生成高质量labels | 视触觉传感器(装在机器人手指上)+ 算法 | ❌ 误以为"人戴手套=Teacher" |
| Student | 从可靠传感器推理Teacher输出 | 神经网络(训练后部署) | ✅ 正确理解 |
| Policy | 根据传感器输入决策机器人动作 | VLA模型(最终部署) | ✅ 正确理解 |
三种数据采集模式对比
| 阶段 | 遥操作方式 | 机器人传感器配置 | Teacher来源 | 数据用途 |
|---|---|---|---|---|
| 阶段 1 (MVS冷启动) |
VR手柄 + 规则手势 | RGB + q/qdot + current/effort | 规则伪标签 (基于current阈值) |
训练初始Policy 建立数据管线 |
| 阶段 2-2.5 (加wrist_FT) |
主从灵巧手 | 上述 + wrist_FT(6D) | 规则伪标签 (升级为轻量RM) |
训练精细力控Policy (twist/insertion/pry) |
| 阶段 4 (Research Mode) |
主从灵巧手 | 上述 + 视触觉(pad+side) | 视触觉Teacher算法 (真Teacher) |
训练Student estimator 生成高质量labels |
| 阶段 4 (Deploy Mode) |
主从手 + 自主探索混合 | RGB + q/qdot + current/effort + wrist_FT (无视触觉) |
Student输出 (蒸馏自Teacher) |
训练最终Policy (大量数据) |
FAQ:常见困惑澄清
Q1: 遥操作要戴Meta Manus手套吗?
A: 可以,但这是遥操作工具,不是Teacher训练数据!
| 阶段 | Meta Manus的作用 | 数据流向 |
|---|---|---|
| 遥操作阶段 | 捕捉人手关节角度 → 控制机器人运动 | Meta Manus → 机器人关节目标位置 |
| Teacher训练阶段 | ❌ 不使用Meta Manus数据 | 机器人视触 + 机器人wrist_FT → Teacher模型 |
关键:Meta Manus提供的是运动指令(关节角度),不是力感知。
Teacher需要学习的是"机器人视触图像 → 力/接触状态",ground truth必须来自机器人自己的传感器(wrist_FT)。
Q2: 为什么不能用人手套的触觉数据训练Teacher?
A: 三个根本原因:
-
输入不匹配:
Teacher输入 = 机器人手指gel的形变图像
人手套数据 = 人手皮肤的接触感受
→ 两者物理特性完全不同(gel vs 人皮肤) -
任务不匹配:
Teacher要学:机器人gel形变 → 接触力
人手套提供:人皮肤感受 → 人的力感知
→ 映射关系完全不同 -
已有更好的ground truth:
机器人wrist_FT直接测量力/力矩(精度±0.1N)
→ 不需要绕到人手上去
Q3: 那Meta Manus在整个流程中到底有什么用?
A: 只用于遥操作,让机器人执行多样化的任务
完整流程(用Meta Manus遥操作的情况):
1. 【遥操作阶段】
人戴Meta Manus → 人手动作 → Meta Manus捕捉关节角度
→ retargeting(人手20 DOF → 机器人16 DOF)
→ 机器人手执行动作(抓取/拧瓶盖/插入...)
2. 【数据采集阶段】
机器人执行任务时,机器人传感器记录:
├─ RGB图像
├─ 关节角度/速度(q/qdot)
├─ wrist_FT(6D力/力矩)← Ground Truth!
├─ current/effort
└─ 视触图像(Research Mode)
⚠️ 注意:Meta Manus的数据不记录,只是控制机器人运动
3. 【Teacher训练阶段】
训练数据:
X = 机器人视触图像
Y = 机器人wrist_FT(ground truth)
⚠️ 注意:完全不使用Meta Manus数据!
4. 【Student训练阶段】
X = Deploy模态(RGB + q/qdot + current/effort + wrist_FT)
Y = Teacher labels
5. 【Policy训练阶段】
X = Deploy模态 + Student输出
Y = 任务成功/失败
Q4: 简单总结:两种"戴手套"的区别
| 对比维度 | 遥操作手套(Meta Manus) | 假想的"训练Teacher手套" |
|---|---|---|
| 是否真实存在 | ✅ 存在,可以买 | ❌ 不存在,不需要 |
| 数据类型 | 人手关节角度 | (假想的)人手触觉/力 |
| 作用 | 控制机器人运动轨迹 | (误以为)提供Teacher训练GT |
| 数据流向 | 人手套 → 机器人关节 | (不存在) |
| Teacher训练是否使用 | ❌ 不使用 | ❌ 不使在/不需要 |
| 实际GT来源 | 机器人wrist_FT + 规则 + 标定实验 | |
实际采集流程示例(阶段4 Research Mode)
- 操作员用主从灵巧手控制机器人手去拧瓶盖
- 机器人手指上的视触觉传感器采集接触形变图像(30Hz)
- 同时记录:RGB、q/qdot、current/effort、wrist_FT(Deploy模态)
- Teacher算法分析视触觉图像 → 生成
contact_mode=slip、slip_risk=0.8 - 事后训练Student:输入Deploy模态(RGB+proprio+FT)→ 预测
slip_risk=0.8 - 部署时:机器人手上不装视触觉,只用Student从Deploy模态推理slip_risk
Day 0:系统初始设置(开箱到第一条数据)
目标:验证硬件、建立数据管线、完成首次标定,产出第一条可回放的 episode。
硬件检查清单(MVS最小配置)
| 检查项 | 验证方法 | 产出/记录 |
|---|---|---|
| 2 路 RGB 相机 | 采集 10 帧,检查分辨率、帧率、曝光一致性 | camera_calib_v1.yaml(内参/外参/畸变) |
| 关节位置/速度 | 运动全行程,检查 q/qdot 连续性、无跳变 |
joint_limits.yaml(软硬限位) |
| 电流/力矩 proxy | 空载/负载对比,建立 current_baseline |
current_calib_v1.json(零点/增益) |
| 时间同步 | 检查 PTP/NTP 状态,timestamp 对齐误差 < 5ms | sync_status: ok 写入 metadata |
| Level-A 安全反射 | 触发过流/过热/碰撞,验证 backoff 响应 |
safety_config_v1.yaml |
Day 0 产出(必须完成才能进入阶段 1)
calib_version: v1.0.0(标定文件版本化,写入 git/hash)- 第一条可回放 episode(
replay_ok: true) - 数据 schema 定义(
episode_schema_v1.json) - Replay Validation 脚本(自动化验证
replay_ok)
阶段 1(2–4 周):MVS 基础数据采集
硬件配置:2 路 RGB + q/qdot + current/effort
能力范围:简单抓取、pick-and-place、粗防滑
数据目标:1000–3000 episodes(成功率 60–80%),建立数据质量基线
采集流程(谁来采)
| 采集方式 | 适用场景 | 数据量占比 | 质量特点 |
|---|---|---|---|
| 遥操作(teleoperation) | 冷启动、复杂任务、hard cases | 30–50% | 高质量,但慢(5–10 episodes/小时) |
| 规则策略(scripted policy) | 简单抓取、标准场景 | 30–40% | 一致性高,但泛化弱 |
| 自主探索(w/ RM 筛选) | 阶段 2+ 解锁,用于数据飞轮 | 20–30%(阶段 1 占比低) | 量大,需 RM QC |
遥操作硬件接口方案(真人示范如何实现?)
核心问题:是否需要真人戴数据手套?答案:不是必须,取决于任务复杂度与预算。
⚠️ 重要澄清:遥操作手套 ≠ Teacher训练数据
本节讨论的数据手套(Meta Manus/Cyberglove等)只用于遥操作(控制机器人运动),
不用于训练Teacher(Teacher的ground truth来自机器人自己的wrist_FT传感器)。
详见 7.4 核心概念澄清。
| 方案 | 实现方式 | 成本 | 采集效率 | 数据质量 | 推荐场景 |
|---|---|---|---|---|---|
| 1. 主从灵巧手 (leader-follower) |
操作员戴上一只与机器人手相同的"主手" 主手动作实时映射到机器人手(follower) 不需要数据手套,直接用主手的关节编码器 |
中高 (需要第二只手) |
⭐⭐⭐⭐⭐ 直观、快速 |
⭐⭐⭐⭐⭐ 最接近目标动作 |
灵巧操作、精细力控 阶段 2+ 推荐 |
| 2. VR 手柄 + IK |
操作员用 VR 手柄控制手腕位姿 手指通过按键/扳机触发预定义手势 逆运动学(IK)解算关节角度 不需要手套 |
低 (VR 手柄几千元) |
⭐⭐⭐ 需要训练 |
⭐⭐⭐ 手指动作受限 |
简单抓取、pick-and-place 阶段 1 推荐(冷启动) |
| 3. 数据手套 (data glove) |
操作员戴上带传感器的手套 捕捉手指关节角度 映射(retargeting)到机器人手 需要解决:手指数量/长度/自由度差异 |
中高 (专业手套 5–30 万) |
⭐⭐⭐⭐ 自然,但需 retargeting |
⭐⭐⭐⭐ 取决于 retargeting 质量 |
灵巧操作、需要采集大量数据 阶段 2–3(若预算允许) |
| 4. 视觉捕捉 + 重定向 |
用相机捕捉人手动作(MediaPipe/OptiTrack) 重定向(retargeting)到机器人手 不需要手套,非接触式 难点:遮挡、精度、延迟 |
低–中 (相机/动捕系统) |
⭐⭐ retargeting 复杂 |
⭐⭐⭐ 遮挡时失效 |
离线示范采集 用于预训练,不适合实时闭环 |
| 5. 键盘/3D鼠标 + 手势库 |
操作员用键盘/3D鼠标控制手腕 手指通过快捷键触发预定义手势 (open/close/pinch/...) 不需要手套 |
极低 (几百元) |
⭐ 慢且不直观 |
⭐⭐ 只能做简单动作 |
预算极低时的备选 仅适合阶段 1 简单抓取 |
| 6. 不需要人类示范 (自主探索) |
用规则策略/RL 让机器人自主探索 RM 筛选高质量数据 前提:已有初始 policy 或规则库 |
低 (无额外硬件) |
⭐⭐⭐⭐⭐ 可 7×24 采集 |
⭐⭐⭐ 需要 RM QC |
数据飞轮阶段 阶段 2+ 与人类示范混合使用 |
推荐决策树:我该用哪种遥操作方式?
你的预算与任务复杂度?
│
├─ 预算紧张(<10万) + 任务简单(pick-and-place)
│ └─ ✅ VR 手柄 + IK(阶段 1 首选)
│ ├─ 优点:成本低、上手快、足够冷启动
│ └─ 缺点:手指动作受限(只能做简单手势)
│
├─ 预算中等(10–50万) + 任务复杂(灵巧操作)
│ └─ ✅ 主从灵巧手(阶段 2+ 首选)
│ ├─ 优点:最直观、数据质量最高、无 retargeting 问题
│ └─ 缺点:需要购买/制造第二只手
│
├─ 预算充足(>50万) + 需要大量采集
│ └─ ✅ 数据手套 或 主从手(二选一)
│ ├─ 数据手套:适合人手→机器人手 retargeting 研究
│ └─ 主从手:更直接,数据质量更稳定
│
└─ 已有初始 policy(阶段 2+)
└─ ✅ 自主探索 + RM 筛选(数据飞轮)
├─ 20–30% 用人类示范补充 hard cases
└─ 70–80% 用自主探索扩充数据量
主从灵巧手方案详解(阶段 1–2 推荐)
为什么推荐主从手?
对于灵巧手采集,主从手(leader-follower)是工业界最成熟的方案(Tesla Optimus、Figure、1X 等都在用):
- 无需 retargeting:主手与从手是同一型号,关节角度直接复制,无映射误差
- 力反馈可选:可以把从手的
current/effort反馈到主手,操作员能"感受"接触力 - 延迟低:局域网内可做到 <10ms,适合实时闭环操作
- 数据质量稳定:避免了数据手套的"人手→机器人手"映射不确定性
实现要点:
- 主手可以是"透明模式"(zero-torque,操作员轻松移动)或"阻抗模式"(模拟从手接触阻力)
- 主手不需要装传感器(只需关节编码器),从手才装全套传感器(RGB/F/T/触觉)
- 采集时记录:主手
q_leader、从手q_follower+ 从手传感器数据 - 回放验证:重放
q_leader到从手,检查replay_ok
数据手套方案的陷阱(慎用)
为什么不首选数据手套作为遥操作工具?
-
Retargeting 问题:人手(5 指 × 4 DOF = 20 DOF)→ 机器人手(例如 Allegro:16 DOF)
映射不唯一,需要优化求解,引入延迟与不确定性 - 手指长度/比例差异:人手抓杯子 OK,映射到短指机器人手可能碰撞/够不到
- 手套标定漂移:弯曲传感器(flex sensor)或 IMU 会漂移,需要频繁重新标定
- 无力反馈:操作员感受不到接触力,容易过力或脱手
- ⚠️ 澄清:这些问题只针对遥操作:数据手套不用于训练Teacher(Teacher用机器人wrist_FT训练)
适用场景:若你的研究重点是"人类示范 → 机器人策略迁移",或需要采集大量不同操作员的数据(数据多样性), 则数据手套有价值。但若只是为了"快速采集高质量数据训练 policy",主从手更直接。
阶段 1 最小成本方案(VR 手柄 + 规则手势)
预算 <1 万时的冷启动方案:
- 用 Meta Quest / HTC Vive 手柄(~3000–5000 元)控制手腕 6D 位姿
- 手指用 5–10 个预定义手势:
open(张开)close(合拢)pinch(捏取,拇指+食指)power_grasp(包络抓取)precision_grasp(精密抓取,三指)
- 操作员用扳机/按键切换手势,IK 解算关节角度
- 局限:只能做简单抓取,无法做精细操作(twist/insertion/pry)
- 足够阶段 1 冷启动:采集 1000+ episodes 简单抓取,训练初始 policy,再过渡到主从手或自主探索
实际采集团队配置建议
| 阶段 | 遥操作方式 | 人员配置 | 每日产出 |
|---|---|---|---|
| 阶段 1 (2–4 周) |
VR 手柄 + 规则手势 | 1–2 名操作员 + 1 名工程师(监控数据质量) | 40–80 episodes/天 (每人 5–10 episodes/小时 × 4–8 小时) |
| 阶段 2 (4–6 周) |
主从灵巧手 | 2–3 名操作员(轮班)+ 1 名工程师 | 80–150 episodes/天 (主从手效率更高) |
| 阶段 3+ (数据飞轮) |
70% 自主探索 + 30% 人类示范 | 1 名操作员(补充 hard cases)+ 1 名工程师(RM 监控) | 200–500 episodes/天 (自主探索 7×24 运行) |
每条 episode 必须记录的字段(episode metadata)
{
"episode_id": "ep_20260115_001234",
"task": "pick_cup",
"collection_method": "teleoperation", # teleoperation / scripted / autonomous
"calib_version": "v1.0.0",
"sync_status": "ok", # ok / degraded / failed
"replay_ok": true, # Replay Validation 结果
"success": true, # 任务是否成功
"failure_mode": null, # jam / slip / occlusion / timeout / ...
"duration_sec": 12.5,
"sensor_health": {"rgb_static": "ok", "rgb_wrist": "ok", "current": "ok"},
"timestamp_start": 1736899234.567,
"git_commit": "a1b2c3d" # 代码版本
}
阶段 1 数据质量控制(每天/每周执行)
- Replay Validation:抽查 10% episodes,
replay_ok通过率 > 90% - 失败分布统计:
failure_mode统计(哪类失败最多?是否需要调整采集策略?) - 成功率监控:按任务类型分组,SR(Success Rate)> 60%;若 SR 持续下降→检查标定漂移
- 传感器健康:每天开机前检查
sensor_health,异常立即重新标定
阶段 1 产出(进入阶段 2 的前置条件)
- 1000+ 可复现 episodes(
replay_ok: true) - 规则 RM v1.0(基于 current/effort 阈值的
contact_mode/slip_risk伪标签) - 失败分布 baseline(后续用于 A/B 对比)
阶段 2–2.5(6–10 周):加入 wrist_FT,解锁精细力控
硬件新增:1 个手腕 6D F/T 传感器(≥200Hz)
新增能力:twist(拧瓶盖)、insertion(精密插入)、pry(撬开)、pull(拉力闭环)
数据目标:每类新任务 200–500 episodes
wrist_FT 标定流程(Day 1)
- 零点标定:手空载静止,采集 1000 帧 → 计算
wrist_FT_zero_offset - 重力补偿标定:手臂多姿态(6–10 个姿态),建立重力模型 →
gravity_comp_model_v1.json - 已知负载验证:抓取已知质量物体(100g, 500g, 1kg),验证 Fz 读数误差 < 5%
- 扭矩标定(可选):用标准力矩扳手施加已知扭矩,验证 τz 读数
精细力控任务的采集要点
| 任务原语 | 关键采集信号 | 成功判据(自动标注) | 推荐采集方式 |
|---|---|---|---|
twist |
wrist_FT.τz + 角度变化 |
旋转达标 且 slip_risk < 0.3 |
遥操作(初期),脚本(标准瓶盖) |
insertion |
wrist_FT (6D) + 深度 |
插入深度达标 且 无 jam |
遥操作 + RM 辅助对中 |
pry |
wrist_FT (6D) + 安全限位 |
约束解除 且 无 safety_trip |
遥操作(高风险,慢速采集) |
pull |
wrist_FT.Fz + 位移 |
拉力达标 且 无脱手 | 脚本(简单)+ 遥操作(复杂) |
阶段 2.5 数据质量升级
- 新增 teacher label:
contact_wrench(6D 力/力矩)、twist_phase、insertion_phase - RM 升级:从规则阈值 → 轻量学习模型(基于阶段 1 数据训练,替换硬编码阈值)
- 自动切段:用
progress/primitive做 subtask segmentation(一条 episode 切成多个 subtask)
阶段 2.5 产出
- 精细力控任务库:每类任务 200+ episodes
wrist_FT_calib_v2.json(含重力补偿)- RM v2.0(轻量模型,替换规则阈值)
阶段 3–4(2–6 月):指尖力 + 视触觉 Teacher
阶段 3 硬件新增:2 个指尖 3 轴力传感器
阶段 4 硬件新增:多点视触觉(指腹 + 侧边,Research Mode only)
目标:形成完整 Teacher→Student 数据飞轮
Research Mode vs Deploy Mode 数据采集策略
| 模式 | 传感器配置 | 采集目的 | 数据量 | 质量要求 |
|---|---|---|---|---|
| Deploy Mode | RGB + q/qdot + current/effort + wrist_FT(+ 指尖力) | 量产数据,训练 Policy + Student | 大(5000+) | replay_ok + SR 基线 |
| Research Mode | Deploy 配置 + 多点视触(pad+side) | 生成高质量 teacher labels | 中(1000–2000) | Teacher label 置信度 + 覆盖 hard cases |
视触觉 Teacher 标定与数据采集(阶段 4)
-
Teacher 标定(每次更换 gel 必做):
- 记录
gel_id/gel_batch/gel_install_date - 预调理(pre-conditioning):运行标准压入/滑动脚本,验证
precondition_ok - 标定接触阈值:
A_min(最小接触面积)、v_slip(滑移速度阈值) - 版本化:
teacher_version: v2.1.0+teacher_config(阈值参数)
- 记录
-
采集策略(Research Mode):
- 优先采集 Deploy Mode 中失败率高的任务(hard cases)
- 每条 episode 同时记录 Deploy 模态 + 视触觉图像
- Teacher labeler 实时生成
contact_mode/slip_risk/contact_patch/teacher_uncertainty - 低置信样本(
teacher_uncertainty > 0.3)标记为待复核
-
Teacher→Student 训练:
- 输入:Deploy 模态(RGB + q/qdot + current/effort + wrist_FT)
- 监督信号:Teacher labels(带不确定度加权)
- 验证:在 Deploy Mode 数据上测试 Student 输出与 RM 规则的一致性
- 闭环验收:把 Student 输出接到 recovery primitives,测量 SR/IR 提升
阶段 4 产出(完整数据飞轮)
- Teacher labeler v1.0(可版本化、可复现)
- Student estimator v1.0(Deploy Mode 可用)
- Research Mode 数据集(1000–2000 episodes,带高质量 teacher labels)
- Deploy Mode 数据集(5000+ episodes,用于训练 Policy)
- RM v3.0(学习型 critic,用于 QC 与 hard case mining)
跨阶段数据质量保障协议
每日检查(自动化脚本):
replay_ok通过率(目标 > 90%)sync_status异常率(目标 < 5%)sensor_health异常计数(任何异常立即触发重新标定)
每周复盘(人工 + RM 辅助):
- 失败分布变化(是否出现新 failure_mode?)
- SR/IR/ER 趋势(是否下降?→ 检查标定漂移或环境变化)
- Hard cases 挖掘(RM 排序后人工复核 top-20)
阶段切换验收(A/B 对比):
- 新硬件加入后,先在交错模式下采集 100 episodes(50 用新配置,50 用旧配置)
- 对比 SR/IR/ER + 失败分布,验证新硬件带来的能力提升
- 若新配置 SR 显著下降→检查标定或动力学变化(例如加 wrist_FT 后质量/惯量改变)
数据管理与版本控制
数据存储结构(推荐)
data/
├── raw/ # 原始采集数据(不可修改)
│ ├── stage1_mvs/
│ │ ├── ep_20260115_001234/ # 每个 episode 一个文件夹
│ │ │ ├── metadata.json # episode metadata
│ │ │ ├── rgb_static.mp4 # 视频或图像序列
│ │ │ ├── rgb_wrist.mp4
│ │ │ ├── proprio.h5 # q/qdot/current/effort 时间序列
│ │ │ └── commands.h5 # cmd_joint_target(命令流)
│ │ └── ...
│ ├── stage2_wrist_ft/
│ └── stage4_research_mode/
├── processed/ # 处理后数据(对齐、标注)
│ ├── aligned/ # 时间对齐后
│ ├── labeled/ # Teacher labels
│ └── filtered/ # QC 筛选后(replay_ok=true)
├── calibration/ # 标定文件(版本化)
│ ├── v1.0.0/
│ │ ├── camera_calib_v1.yaml
│ │ ├── current_calib_v1.json
│ │ └── calib_hash.txt # git commit hash
│ └── v2.0.0/
└── models/ # RM / Student / Policy checkpoints
├── rm_v1.0.ckpt
├── student_v1.0.ckpt
└── policy_v1.0.ckpt
版本控制实践
- 标定文件:每次重新标定 → 新版本号 + git commit
- Episode metadata:必须记录
calib_version/teacher_version/git_commit - Teacher labeler:代码版本化(git tag),配置文件版本化(semantic version)
- 数据集发布:每个阶段结束后发布"冻结版本"(例如
dataset_stage1_v1.0),用于后续 A/B 对比
常见采集陷阱与对策
| 陷阱 | 表现 | 根因 | 对策 |
|---|---|---|---|
| 标定漂移 | SR 逐渐下降,slip_risk 误报增加 |
温度变化、gel 老化、零点漂移 | 每天开机预调理;每周重新标定零点;记录 gel_batch 与使用时长 |
| Teacher 过拟合 gel | Student 在新批次 gel 上性能下降 | Teacher labels 对材料特性敏感 | 输出 teacher_uncertainty;低置信样本降权;做"去材料化"特征(归一化/比值) |
| 时间对齐失败 | replay_ok: false 比例高 |
传感器时钟不同步、Ring Buffer 溢出 | 验证 PTP 状态;减小 Ring Buffer 窗口;timestamp-at-source |
| RM 指标带偏 | RM 分数高但 SR 不提升 | RM 学到了"看起来好"而不是"真的好" | 验收绑定部署 KPI(SR/IR/ER);RM 只做排序/筛选,不做唯一判据 |
| Hard cases 采集不足 | Policy 在边缘情况失败 | 遥操作偏好简单任务,复杂情况数据少 | RM hard case mining → 优先采集失败场景;专门安排"刁钻场景"采集日 |
8) 标定、健康监测与可维护性
- 版本化标定资产:
calib_version/calib_hash写进每条 episode metadata。 - 触觉标定:零点漂移、材料老化是常态;把
recalib_required当作系统状态而不是人工备忘录。 - 健康状态事件化:用
sensor_health(drift/aging/dropout)驱动降额逻辑与维护节奏。
9) 最小落地版与迭代路线图(走向超越人类)
9.1 最小落地版本(你今天就能做出来)
- 硬件:2 路 RGB(static + wrist)+
effort/current+q/qdot。 - 软件:统一时钟、对齐、Level-A 安全反射、Replay Validation。
- 数据:命令流 + 执行流 + episode metadata(sync/replay/calib)。
9.2 迭代路线图
关键调整:将 wrist_FT 提前到阶段 2.5,使精细力控任务(twist/insertion/pry)能够尽早解锁。
- 阶段 1(2–4 周):MVS + Replay Validation + 规则 RM。
能力范围:简单抓取、pick-and-place、基于 current/effort 的粗防滑。 - 阶段 2(2–4 周):规则伪标签训练成轻量 RM(替换阈值)。
能力范围:同阶段 1,但数据质量与自动切段能力提升。 - 阶段 2.5(4–6 周):加 1 个手腕 F/T(6D,≥200Hz),解锁精细力控原语。
新增能力:twist(擰瓶盖)、insertion(精密插入)、pry(撬开)、pull(拉力闭环)。
理由:这些任务需要扭矩/侧向力的精确闭环,current/effort的弱 proxy 无法满足毫牛级精度要求。 - 阶段 3(1–2 月):加 2 个指尖 3 轴力传感器(法向 + 切向),强化精细夹持。
新增能力:脆弱物抓取(毫牛级法向控制)、精细防滑(直接测量指尖摩擦状态)。 - 阶段 4(长期):加多点视触觉(至少指腹 + 侧边/侧壁,用于 teacher),形成完整数据飞轮。
可选增强:加 1–2 个温度传感器(指尖侧面/手腕),用于材质识别与安全检测。
新增能力:- 高品质 teacher labels(接触几何/接触模式/力学真值)
- 显著提升 RM/QC 质量
- (温度)材质分类 (metal/plastic/wood/fabric) → 调整抓取策略
- (温度)热安全检测(过热预警,避免烫伤/损坏)
为什么这样排序:阶段 1–2 建立数据底座(可复现、可追责);阶段 2.5 解锁精细力控(扩展任务谱系); 阶段 3 强化精细夹持(降低损坏风险);阶段 4 提升数据质量(teacher 真值)。这样既保证了快速交付 MVS,又不让精细力控能力等到"长期"才上线。
10) 可行性与未来性(面向 VLA 的评估结论)
本节给出一个“面试可复述”的结论:这套 DexHand Sensing System 方案的底座(多频闭环 + MVS)成熟且可快速交付; 完整版(Teacher→Student + RM-in-loop)具有很强的“前沿 VLA 对齐度”,但通常需要以标签质量与 domain gap 为中心做数月级工程迭代(具体取决于既有控制栈、采数基础与人力投入)。
10.1 核心架构的可行性(为什么能跑)
- 多频闭环分层(Level‑A/B/C):把 kHz 止损与 100Hz 接触稳定留给控制闭环,把 VLA 放在 5–15Hz 的原语接口上,符合前沿 VLA 的推理延迟与动作生成范式约束(Token/Diffusion/Flow)。
- Teacher→Student(A):Research 用多点视触(pad+side)提供接触几何/接触模式真值,Student 仅吃 Deploy 模态推理出低维因果状态,避免部署依赖脆弱 teacher 硬件。
- RM-in-loop(C):把 RM 定位为 data QC 与 hard-case triage(而非在线 RL reward),与前沿的 critic/Recap(post-training)路线对齐,并与 VLA 的“高质量数据 + 可靠评估”痛点对齐。
10.2 关键模块成熟度(TRL/风险速览)
| 模块 | 成熟度(直观) | 主要风险 |
|---|---|---|
| 多频闭环 + proprio(q/qdot) | 高 | 低(工程成熟) |
current/effort 触觉代理 |
中高 | 中(需针对具体手/任务标定,避免误触发) |
| 多点视触 teacher(pad+side) | 中 | 高(材料/温度/污染/老化导致标签漂移,需要版本化 + 不确定度) |
| Teacher→Student 蒸馏 | 中 | 高(domain gap:Research→Deploy 分布偏移) |
| RM-in-loop 自动 QC | 中低 | 高(指标带偏风险;建议 RM 只做 triage,验收用部署 KPI) |
10.3 MVS(最小可行版本)为什么很值钱
MVS(2 路 RGB + q/qdot + current/effort + 同步对齐 + Replay Validation)能快速把系统从“demo”推进到“可回放、可追责、可迭代”。 对 VLA 来说,这一步解决的是数据质量与评估协议的地基问题:没有 replay_ok 与失败分布,你无法严谨筛选 checkpoint,也无法做可靠 A/B。
10.4 最大风险与对应对策(抓住真正会翻车的点)
- Teacher 标签一致性:把标签定义写成可执行代码(阈值 + 时间窗 + 版本号),并做跨环境/跨批次一致性检查;低置信样本降权。
- Domain gap(Research→Deploy):Research 装 teacher 后改变动力学边界的风险要显式评估(A/B 交错测试);训练侧做 domain randomization / 自监督对齐;部署侧坚持只吃可长期信号。
- RM 指标带偏:RM 先用规则起步,只做排序/筛选;最终验收绑定 SR/IR/ER + 失败类型分布 + 置信区间,并采用交错 A/B 与 reset-free 协议。
10.5 建议的落地顺序(不绑时间)
注:这里给的是“先后顺序”,不写周级承诺(不同公司/团队的控制栈、硬件改动窗口与人力差异很大)。 若地基缺失,先补齐 A/B 的基本保护与 recover primitives、以及可写入的日志/时间同步,再往后推进。
- 阶段 A(地基):MVS + 时间同步 + Replay Validation(先证明数据管线能跑、数据可追责)。
- 阶段 B(伪 teacher):规则/阈值 teacher(先生成
contact_mode/slip_risk的伪标签,定义版本化与不确定度接口)。 - 阶段 C(student 上线):训练 Student,量化 teacher→student 信息损失;把输出接到 recover primitives 做闭环验收(SR/IR/ER + 失败分布)。
- 阶段 D(真 teacher):接入多点视触 teacher(pad+side)做真 teacher;交错 A/B 验证数据质量与 KPI 提升,再逐步替换伪 teacher。
- 阶段 E(RM/QC 升级):RM 从规则 triage 升级为学习型 critic/quality model,但验收仍绑定部署 KPI(避免指标带偏)。
参考链接
- 多模态同步(handbook): multimodal_data_synchronization.md
- 触觉集成挑战(handbook): tactile_sensor_integration_challenges.md
- 灵巧手采数(handbook): dexterous_hand_data_collection.md
- 触觉传感器路线与工程取舍(handbook): product/sensors.md
- 触觉与 VLA(handbook): theory/tactile_vla.md
- 前沿:π*0.6 Recap(post-training / Offline RL 复盘): theory/pi0_6_dissection.md
- 前沿:RL/critic/Recap 综述(handbook): theory/reinforcement_learning.md
- 前沿:数据飞轮与跨模态迁移(含 Reward Discovery / Recap 线索): theory/frontier/data_flywheel_and_cross_modal.md
- 前沿:Reward Discovery(奖励函数自主发现): theory/frontier/reward_discovery_rl.md
- 前沿:GR-Dexter(handbook 速记): theory/frontier/gr_dexter_bimanual_dexterous_vla.md
- 前沿:GR-Dexter 技术报告(arXiv 2512.24210): https://arxiv.org/abs/2512.24210
- 前沿:GR-Dexter 项目页: https://byte-dexter.github.io/gr-dexter/