跳到主要内容

34 传感器·感知与本体感知(Proprioception)栈洞察

  • 章节编号:34
  • 所属层:A/H 交界(感知数据路径;驱动 06/09/21/25)
  • 关联 ADR:ADR-134(感知栈分层)、ADR-135(零拷贝传感路径)、ADR-136(多模态融合优先级)、ADR-137(触觉/力控优先级拆分)

学习目标

  • 前置知识:读过 06 章(外设 IO / MIPI / EtherCAT)、21 章(具身模型支持,尤其 VLA 的 state/action 向量)、13 章(实时与分域调度)。知道相机出图、机器人有关节编码器、VLA 吃「图像 + 语言 + 状态」三路输入即可。无需写过 ISP 驱动或传感器融合代码。
  • 学完产出:① 能画出一条完整的具身感知数据路径——相机/LiDAR/六维力/IMU/关节编码器/触觉 → 时间同步 → 感知前端 → VLA 输入,并说清每一跳的频率、带宽压力与延迟预算;② 能解释「多传感器时间同步为什么必须把时钟偏差(skew)压到 ≤1ms」,会用「机器人速度 × 时间偏差 = 空间不一致量」这个算式估算不同步带来的几何误差;③ 能区分外部感知(exteroception:相机/LiDAR/深度)本体感知(proprioception:关节编码器/IMU/力矩),说清两者如何拼进 VLA 的 state 向量;④ 能讲清六维力/触觉在精细操作里的作用与采样频率要求,并解释本章统一后的优先级——力控进岛 = P1、触觉入 VLA = P2;⑤ 能对标 NVIDIA NITROS 的零拷贝路径,说清「MIPI → dmabuf → HAL」为什么是量产红线。
  • 阅读姿势:盯住一条主线——「感知栈的一切工程,都是为了让 VLA 在同一个时刻,看到关于世界与自身的一致快照」。相机看到的世界、编码器读到的关节角、力传感器测到的接触力,若不在同一时间基准上对齐,VLA 收到的就是一张「拼贴错位的世界照片」,再强的模型也救不回来。时间同步与零拷贝不是锦上添花,而是感知栈能不能用的地基。

1. 范围与目标

定义 传感器 → 时间同步 → ISP/感知前端 → VLA 输入 的端到端数据路径,补齐原 06 章「外设 IO」与 21 章「模型输入」之间的空白。感知栈横跨两类信息:外部感知(exteroception) 回答「世界长什么样」(相机 / LiDAR / 深度),本体感知(proprioception) 回答「我自己处于什么状态」(关节编码器 / IMU / 力矩)。二者必须在同一时间基准上对齐,才能拼成 VLA 可用的一致输入。

核心问题

  1. 具身量产需要哪些 传感 modality?优先级如何拆分?
  2. 多传感器 时间同步 为什么是感知栈的生死线?skew 到底要压到多小?
  3. 零拷贝路径(MIPI → dmabuf → ViT)如何对标 NITROS?
  4. 深度 / IMU / 力矩 / 触觉如何 tensor 化 进 VLA 的 state 向量?
  5. 六维力 / 触觉在精细操作中扮演什么角色?为何「力控」与「触觉入模型」要分成两个优先级?

2. 需求洞察(按形态,见 33 章)

2.1 传感 modality 全景

Modality类别频率带宽压力VLA 用法章节
RGB 多相机外部感知30–60Hz高(6×1080p)ViT patch → 视觉 token06 MIPI
深度 / RGB-D外部感知30Hz3D grasp;未来世界模型P1
LiDAR(AMR)外部感知10–20Hz导航;非 VLA 主路径Lite SKU
IMU / 里程计本体感知200Hz–1kHz状态 token;姿态估计35
关节力矩 / 位置(编码器)本体感知1kHzproprioception → state 向量35
六维力(F/T sensor)本体感知100–1kHz力控闭环(进岛 P1);入 VLA(P2)06/35
触觉(tactile array)外部+本体100–500Hz低–中精细操作接触反馈(入 VLA P2)P2

优先级拆分要点(本章统一,消除 §5/ADR 旧版矛盾):六维力这一类 modality 有两条完全不同的用途,不能用一个优先级概括——

  • 力控进岛 = P1:六维力 / 关节力矩进入实时控制岛(EtherCAT / Analog 采样,1kHz 力控闭环),这是 M4 就要跑通的力位混合控制底座,优先级 P1
  • 触觉入 VLA = P2:把触觉阵列 / 六维力作为额外 modality 编码进 VLA 的输入向量(让模型「感觉到」接触),依赖多模态融合成熟,优先级 P2,排在 M5+。

换句话说:同一个六维力传感器,它的信号「进控制环」是 P1,「进大模型」是 P2。原文 §2 标「精细操作 P1」与 §5 标「P2」的矛盾,根因就是没把这两条路径拆开。

2.2 真实业务症状:不同步的代价

场景化症状——若时间同步没做好,量产线上会出现这样一组看似「玄学」的故障:

  • 抓取偏移:机器人以 0.5m/s 移动抓取,相机帧与关节状态存在 10ms skew,VLA 以为夹爪在 A 点、实际已到 A + 5mm,抓空或撞到物体边缘——复现概率随运动速度线性上升,静止标定时永远复现不出来。
  • 力控震荡:六维力信号与关节位置不同步,力位混合控制器用「上一拍的力」配「这一拍的位置」,在接触瞬间产生自激震荡,表现为插拔任务里夹爪「哆嗦」。
  • VLA 决策漂移:多相机之间软同步(靠 ROS2 时间戳到达顺序),某一路偶发延迟 30ms,VLA 收到「左眼是现在、右眼是刚才」的画面,深度估计错乱,在动态场景下成功率断崖

这些症状的共同根因只有一个:多个传感器没有站在同一个时间基准上。这正是 §3b 时间同步一节要解决的问题。


3. 业界方案对比(2025–2026)

感知管道零拷贝多传感器同步代表硬件
NVIDIA NITROS 4.4GXF + type adaptGPU/NPU dmabufPTP(IEEE 1588)Isaac ROS / Thor
ROS2 image_pipelineCPU 拷贝多软同步(message_filters)社区默认
Intel RealSenseUSB3 / GMSL2部分硬件 sync(D4xx 帧同步引脚)科研 / D435i / D457 GMSL
Livox LiDAR以太网 / PPS无(点云)PPS + GPS/PTP 授时AMR 导航
ATI 六维力 / F/TEtherCAT / AnalogEtherCAT DC 分布式时钟精密力控
LeRobotOpenCV / PIL软(采集脚本时间戳)开发态
我们(候选)ISP → dmabuf → IREE HALP0PTP + 硬件 TS + EtherCAT DC(06)dsa_ros

判断:量产须 NITROS 级零拷贝 + PTP 硬件时间同步;LeRobot 路径仅开发态(26 章双入口)。真实传感器选型上,RGB-D 以 RealSense D4xx(USB)/ D457(GMSL2 车规级链路) 为主力,LiDAR 用 Livox(PPS 授时),力控用 ATI 六维力(EtherCAT)——这些型号截至 2026-07 均为量产可采购件;车规 GMSL 相机 roadmap 以官方为准


3b. 感知 → 同步 → 前处理 → VLA state 的数据流

3b.1 端到端数据流图

逐跳读这张图:七路传感器(三路外部 + 四路本体)先汇入时间同步层打上统一时间基准,再分流——图像走 ISP → ViT 的零拷贝路径,本体状态走重采样/插值降到策略频率,最后在 VLA 输入处拼成 [视觉 token | language token | state 向量]。这条链路里,时间同步层是唯一一个「所有 modality 都必须经过」的收窄点,它决定了整张世界快照的一致性。

3b.2 感知 → VLA 张量路径(文字版)

Camera MIPI/GMSL → ISP (demosaic/NR) → dmabuf fd
→ IREE HAL import → ViT prefill (FP8/INT8) → 视觉 token
→ 与 language/state token concat → VLM → 动作专家
Joint state (1kHz) + IMU + 六维力 → 时间同步对齐 → 降采样/插值 → state 向量 @ 策略频率
Depth (optional) → 独立 encoder stub → fusion (P1)
Tactile/六维力入模型 → 额外 modality 编码 → fusion (P2)

延迟预算:传感 + ISP 5–15ms(01 章);时间同步对齐额外 <1ms;须纳入 27 章 E2E bench。关键:state 向量的重采样必须以同步后的时间戳为准做插值,而非「拿到就用」,否则本体感知与视觉之间会引入一个与运动速度成正比的隐藏偏差。


4. 候选方案

候选小结
A. MIPI+dmabuf+单路 RGB P0;深度 + 力控进岛 P1;触觉入 VLA P2建议方案
B. USB 相机快速 demo(RealSense D435 即插即用)M1 only
C. 全模态一次性覆盖范围爆炸

建议方向:A——P0 先把「多路 RGB + proprioception(编码器 state)+ PTP 同步」跑通(M3);P1 加深度(RealSense D457 GMSL)与六维力/力矩进控制岛(EtherCAT,M4);P2 再把触觉/六维力作为 modality 编码进 VLA(M5+)。这个分期严格对应 §5 与 §2.1 的优先级拆分。


5. 多模态融合与优先级(ADR-136 / ADR-137)

5.1 融合优先级矩阵

优先级能力用途归类Round
P0多路 RGB + proprioception(关节编码器 state)外部 + 本体基线M3
P0PTP + 硬件时间戳,skew ≤ 1ms时间同步地基M3
P1深度 / RGB-D + 时间同步外部感知增强M4
P1六维力 / 力矩进控制岛(EtherCAT/Analog,力控闭环)本体 → 实时控制M4
P2触觉 / 六维力作为 modality 编码进 VLA本体 → 大模型输入M5+
P2世界模型输入(3D/video)前瞻M5+

优先级拆分说明(消除旧版矛盾):原文在 §2 把「六维力/触觉」整体标 P1、在 §5 又标 P2,是因为把两个不同用途混为一谈。本版本明确拆分——

  • 力控进岛 = P1:六维力/关节力矩信号进入实时控制岛做力位混合控制,是精细操作的执行底座,M4 交付。
  • 触觉入 VLA = P2:把接触反馈编码成 VLA 的额外输入 modality,让策略「感知到」触觉,依赖多模态融合成熟,M5+ 交付。

一句话:信号「进控制环」P1,信号「进模型」P2。同一传感器,两条路径,两个优先级,不再矛盾。


6. 结论与 ADR 候选

  • ADR-134 感知栈分层:ISP / 驱动(09)/ 中间件(25)/ 模型(21)接口统一为 PerceptionTensorSet schema;所有 modality 携带同步后时间戳字段。
  • ADR-135 零拷贝路径:MIPI/GMSL → dmabuf → HAL mandatory 量产;禁止 CPU bounce(09 反模式);对标 NITROS 4.4。
  • ADR-136 多模态优先级:P0 = 多路 RGB + proprioception(state) + PTP 同步;P1 = depth + 力控进岛;P2 = 触觉入 VLA + 世界模型 —— 与 21 §3.7 对齐。
  • ADR-137 触觉/力控优先级拆分:力控进岛 = P1(六维力/力矩经 EtherCAT/Analog 进实时控制岛,力位混合控制,M4);触觉入 VLA = P2(触觉/六维力作为 modality 编码进 VLA 输入,M5+)。精细操作场景(33)驱动;明确取代旧版「六维力/触觉整体 P1 或 P2」的模糊表述。

深入思考

下面三题每题先给题干,再用 <details> 折叠一份图文并茂的参考答案。建议先合上答案自己想 3 分钟,再展开对照。

思考题 1:多传感器时间同步为何要把 skew 压到 ≤ 1ms

你的机器人有 6 路相机 + IMU + 关节编码器 + 六维力,它们各自有独立时钟。结合 §2.2 的三个真实症状与 §3b 的数据流,论证「为什么必须用 PTP(IEEE 1588)/ chrony 把各传感器时钟偏差压到 ≤ 1ms」。用「机器人自身速度 × 时间偏差 = 空间不一致量」算一遍,给出量化结论。

展开参考答案(含图)

结论:传感器不同步的本质,是让 VLA 收到一张「不同时刻拼贴」的世界快照,而这张快照的几何错位量正比于机器人运动速度乘以时钟偏差;运动越快、偏差越大,错位越离谱,所以必须用 PTP/chrony 把 skew 压到毫秒级以内,让所有 modality 站在同一时间基准上。

算一遍(空间不一致量 = 机器人自身速度 × 时间偏差):

场景末端/本体速度时钟偏差 skew空间不一致量 = 速度 × 偏差后果
精细插拔(慢)0.05 m/s10 ms(软同步)0.05 × 0.010 = 0.5mm已超插拔间隙,力控震荡
桌面抓取(中)0.5 m/s10 ms0.5 × 0.010 = 5mm抓空/撞边,成功率断崖
移动抓取(快)1.0 m/s30 ms(负载抖动)1.0 × 0.030 = 30mm完全错位,不可用
同上 + PTP 同步1.0 m/s1 ms(PTP)1.0 × 0.001 = 1mm落入夹爪容差,可控

读这张表:同样 1.0 m/s 的运动,软同步 30ms 偏差带来 30mm 空间错位——远超任何抓取容差;换 PTP 把 skew 压到 1ms,错位降到 1mm,落进夹爪的机械容差内。这就是为什么 §3 表里量产栈(NITROS)一律走 PTP(IEEE 1588)、力控走 EtherCAT 分布式时钟(DC)、LiDAR 走 PPS 授时——目标都是把「不同传感器的时间基准」钉死在同一根时间轴上。软同步(靠消息到达顺序)之所以只配开发态,是因为它的 skew 会随系统负载与网络抖动漂移,静止标定时看不出问题,一旦机器人动起来就暴露。回到本篇 §2.2 的三个症状——抓取偏移、力控震荡、VLA 决策漂移——全都是这张表在真实产线上的具体表现。

思考题 2:六维力/触觉在精细操作中的作用与采样频率

一个只靠视觉的 VLA 在「插网线、拧螺丝、点火」这类精细操作上表现很差,加入六维力/触觉后成功率显著提升。结合 §2.1 的频率要求与 §5 的优先级拆分,说清六维力/触觉分别解决什么问题、为什么采样频率要到 100Hz–1kHz,以及「力控进岛 P1」与「触觉入 VLA P2」为何是两件事。

展开参考答案(含图)

结论:视觉在接触发生的那一刻几乎失效——遮挡、微小形变、亚毫米对齐都看不清;六维力测的是「我推了多大力、被顶了多少」,触觉测的是「哪里接触、滑没滑」,它们提供视觉给不了的接触态反馈;而这类反馈要在接触动力学的时间尺度上有效,采样必须到百 Hz 至千 Hz;其中「力信号进实时控制环做力位混合控制」是执行底座(P1),「力/触觉信号编码进 VLA 让模型学会用触觉决策」是模型增强(P2),二者时间尺度、消费者、成熟度都不同,所以拆成两个优先级。

算一遍(为什么频率要到百 Hz 至千 Hz):

反馈类型现象时间尺度需要的采样频率若只有 30Hz 视觉
接触碰撞冲击1–10ms≥ 1kHz 力控33ms 才采一帧,冲击早已发生,来不及卸力
力位混合稳态调节10–50ms100–1kHz控制环带宽不够,插拔震荡
触觉滑移检测20–100ms100–500Hz视觉看不见亚毫米滑移,物体已掉
精细对齐(视觉可辅助)100ms+30–60Hz 视觉可补勉强够,但接触后仍需力/触觉

读这张表:接触冲击发生在 1–10ms 尺度,30Hz 相机(33ms/帧)在物理上就不可能捕捉——等你「看到」撞上了,力早已超限。所以力控闭环必须 1kHz 采样并进实时控制岛(P1,§5),这是「稳住接触」的执行底座,和 VLA 无关、也不能等 VLA。而把六维力/触觉编码进 VLA 的 state 向量、让策略学会「感觉到滑移就加紧」,是另一件事:它依赖多模态融合成熟、依赖训练数据里有触觉标注,所以排 P2(§5,M5+)。这正是本篇 ADR-137 把「力控进岛 P1」与「触觉入 VLA P2」拆开的根本原因——同一个六维力传感器,信号进控制环是 P1,进模型是 P2,时间尺度(1kHz 硬实时 vs 策略频率)、消费者(控制器 vs 大模型)、成熟度(现成 vs 待建)三个维度全都不同。

思考题 3:本体感知与外部感知如何融合进 VLA 的 state 向量

VLA 的输入不只是图像和文字,还有一个 state 向量。结合 §3b 的数据流与 §2.1 的频率差异,说清关节编码器(本体感知)与相机(外部感知)频率差 30 倍(1kHz vs 30Hz),如何对齐并拼进同一个 VLA 输入;为什么不能「关节 1kHz 就喂 1kHz、相机 30Hz 就喂 30Hz」。

展开参考答案(含图)

结论:VLA 一次前向只吃一组同时刻的输入,所以必须选定一个策略频率作为公共节拍,把 1kHz 的本体感知按同步后的时间戳插值/降采样到该节拍、把 30Hz 的视觉对齐到最近帧,再拼成一个 [视觉 token | language token | state 向量];绝不能让不同 modality 各按自己的原生频率喂,否则模型收到的就是错位拼贴、且根本对不齐成一次前向。

算一遍(频率对齐的账):

假设策略频率 50Hz(π0 类流匹配的典型控制语义,见 21 章),各 modality 在一个 20ms 的策略周期里产生的样本数——

Modality原生频率20ms 周期内样本数对齐策略
相机 RGB30Hz0.6 帧(≈ 每 33ms 一帧)取周期内最近的同步帧;不足 1 帧则复用上一帧
关节编码器1kHz20 个按同步时间戳插值到周期时刻;或取窗口统计(均值/末值)
IMU500Hz10 个积分/滤波成姿态,插值到周期时刻
六维力(入 VLA)1kHz20 个降采样/窗口聚合到 1 个 state 分量(P2)

读这张账:一个 50Hz 策略周期里,相机给 0.6 帧、编码器给 20 个样本——频率差 30 倍以上。若「各喂各的」,模型第一无法对齐成一次前向(它一次只吃一组输入),第二会把「20 个关节样本」和「0.6 帧图像」硬凑,时间上根本不是同一刻。正确做法(见 §3b 数据流):先由时间同步层给所有样本打统一时间戳(skew ≤ 1ms,回到思考题 1),再以策略节拍为公共时钟——视觉取最近同步帧、本体感知按时间戳插值/聚合降到策略频率,最后拼成一个 state 向量与视觉 token concat。这里外部感知(相机)与本体感知(编码器/IMU/力矩)在语义上互补:前者告诉 VLA「世界在哪」,后者告诉 VLA「我的关节此刻在哪、受了多大力」,二者对齐到同一时刻,才构成 π0.7 / GR00T N1.7 这类模型能消费的一致输入。这也是本篇 §2.1 把 modality 分成外部/本体两类、§3b 把 state 重采样单独画成一跳的原因。


7. 端 → 边 → 中心演进影响

维度端侧边缘中心
传感全模态本地采集 + PTP 同步多机器人共享标定数据回流训练
同步PTP + EtherCAT DC(硬实时)网关级时间服务离线时间戳对齐
融合P0 RGB+state;P1 depth+力控;P2 触觉入 VLA跨机融合(SLAM)世界模型预训练

不可逆点:感知栈的 时间同步基准 若在端侧基线阶段没有做成 first-class 能力(每个 modality 强制携带同步后时间戳),后续所有融合优化都建立在错位数据上,补救成本极高。规避:即使第一版只跑单路 RGB + 编码器,PerceptionTensorSet schema 也必须预留 sync_timestamp 字段并由同步层填充(ADR-134/135)。


附:信息来源

区分公开/估计;参考时间 2026-07。

  • NVIDIA NITROS 4.4 / Isaac ROS(GXF type adapt;GPU/NPU dmabuf 零拷贝;PTP 同步):NVIDIA Isaac ROS docs 2025–2026。[公开]
  • Intel RealSense(D4xx USB;D457 GMSL2 车规链路;硬件帧同步引脚):Intel RealSense 产品文档。[公开]
  • Livox LiDAR(以太网 / PPS + GPS 授时):Livox 官方文档。[公开]
  • ATI 六维力 / F-T sensor(EtherCAT / Analog;分布式时钟 DC):ATI Industrial Automation datasheet。[公开]
  • PTP / IEEE 1588 + chrony 时间同步:linuxptp / chrony 文档;EtherCAT DC 机制。[公开]
  • π0.7 / GR00T N1.7 输入形态(视觉 token + language + state 向量):见 21 章来源;pi.website;NVIDIA Isaac。[公开]
  • 06 / 09 / 21 / 25 / 33 / 35 章;OpenVLA / π0 传感配置。[公开+内部]
  • 延迟 / 空间不一致量算例:基于运动学与传感频率的工程估算。[估计]