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 可用的一致输入。
核心问题
- 具身量产需要哪些 传感 modality?优先级如何拆分?
- 多传感器 时间同步 为什么是感知栈的生死线?skew 到底要压到多小?
- 零拷贝路径(MIPI → dmabuf → ViT)如何对标 NITROS?
- 深度 / IMU / 力矩 / 触觉如何 tensor 化 进 VLA 的 state 向量?
- 六维力 / 触觉在精细操作中扮演什么角色?为何「力控」与「触觉入模型」要分成两个优先级?
2. 需求洞察(按形态,见 33 章)
2.1 传感 modality 全景
| Modality | 类别 | 频率 | 带宽压力 | VLA 用法 | 章节 |
|---|---|---|---|---|---|
| RGB 多相机 | 外部感知 | 30–60Hz | 高(6×1080p) | ViT patch → 视觉 token | 06 MIPI |
| 深度 / RGB-D | 外部感知 | 30Hz | 中 | 3D grasp;未来世界模型 | P1 |
| LiDAR(AMR) | 外部感知 | 10–20Hz | 中 | 导航;非 VLA 主路径 | Lite SKU |
| IMU / 里程计 | 本体感知 | 200Hz–1kHz | 低 | 状态 token;姿态估计 | 35 |
| 关节力矩 / 位置(编码器) | 本体感知 | 1kHz | 低 | proprioception → 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.4 | GXF + type adapt | GPU/NPU dmabuf | PTP(IEEE 1588) | Isaac ROS / Thor |
| ROS2 image_pipeline | CPU 拷贝多 | 弱 | 软同步(message_filters) | 社区默认 |
| Intel RealSense | USB3 / GMSL2 | 部分 | 硬件 sync(D4xx 帧同步引脚) | 科研 / D435i / D457 GMSL |
| Livox LiDAR | 以太网 / PPS | 无(点云) | PPS + GPS/PTP 授时 | AMR 导航 |
| ATI 六维力 / F/T | EtherCAT / Analog | — | EtherCAT DC 分布式时钟 | 精密力控 |
| LeRobot | OpenCV / PIL | 无 | 软(采集脚本时间戳) | 开发态 |
| 我们(候选) | ISP → dmabuf → IREE HAL | P0 | PTP + 硬件 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 的优先级拆分。