12 · 机器人感知与传感器¶
English contract: Foundations overview · Primary references: Perception and sensors
目标:把“图像输入”扩展为真实机器人观测系统,理解相机、深度、状态、力觉和触觉数据如何标定、同步、验证并送入策略。
1. 观测不是一张图片¶
机器人策略的观测通常是:
$$ o_t={I_t^{front},I_t^{wrist},d_t,q_t,\dot q_t,g_t,f_t,\tau_t} $$
其中包括多视角 RGB、深度、关节位置/速度、夹爪状态、力和触觉。项目统一接口见 observation_schema.py。
2. 主要传感器¶
| 模态 | 提供的信息 | 关键风险 |
|---|---|---|
| RGB 相机 | 纹理、颜色、目标类别 | 光照、遮挡、曝光 |
| RGB-D/深度 | 几何距离、点云 | 空洞、反光、外参漂移 |
| 关节编码器 | 关节位置和速度 | 零点偏移、延迟 |
| 力矩/六维力传感器 | 接触力与力矩 | 偏置、温漂、过载 |
| 触觉阵列 | 局部接触分布、滑移 | 采样频率和标定差异 |
| IMU | 姿态和加速度 | 积分漂移、振动 |
3. 相机几何¶
针孔模型:
$$ s\begin{bmatrix}u\v\1\end{bmatrix} =K[R\mid t]\begin{bmatrix}X\Y\Z\1\end{bmatrix} $$
K:相机内参,描述焦距和主点。[R|t]:外参,把世界或机器人坐标变换到相机坐标。- 手眼标定回答“相机与机器人基座/末端之间如何变换”。
若外参误差为 1 cm,视觉目标即使检测正确,末端也可能稳定地到达错误位置。
4. 感知 pipeline¶
传感器采集
→ 时间戳与同步
→ 内参/外参标定
→ 去畸变与深度对齐
→ 检测/分割/关键点/点云
→ 坐标变换与状态融合
→ 质量标记和缺失值处理
→ RobotObservation
原则:保留原始数据;派生特征带版本号;每一帧都能追溯到时间戳和标定文件。
5. 时间同步与延迟¶
不同模态不能按数组下标直接拼接。应以时间戳对齐,并记录最大允许时间差:
def nearest_sample(samples, target_t, max_dt=0.02):
best = min(samples, key=lambda item: abs(item[0] - target_t))
if abs(best[0] - target_t) > max_dt:
raise ValueError("sensor sample is stale")
return best[1]
20 Hz 策略的一个周期只有 50 ms;30 ms 感知延迟加 30 ms 推理延迟已经超过周期预算。
6. 数据质量门禁¶
送入训练前至少检查:
- 图像尺寸、颜色空间、深度单位固定。
- 关节维度、顺序和单位与机器人描述一致。
- 时间戳单调,模态间时间差有统计。
- NaN、丢帧、过曝、深度空洞有明确标记。
- 相机内外参和机器人零点有版本与日期。
- 训练集和测试集不共享同一连续轨迹片段。
7. 选择表示¶
- 端到端 VLA:尽量保留 RGB 和本体状态,让模型学习表征。
- 小数据任务:检测/分割/关键点可降低样本复杂度。
- 跨机器人:优先使用任务空间、归一化状态和明确的 embodiment metadata。
- 接触任务:仅靠 RGB 往往不够,应考虑力/触觉或接触状态。
8. 检查理解¶
- 概念题:解释内参、外参和手眼标定分别解决什么问题,并写出坐标变换的方向。
- 预算题:为 20 Hz 控制回路分配采集、同步、预处理、推理、通信和执行延迟预算。
- 设计题:定义 RGB、关节状态和力传感器的时间同步规则,包括最大允许时间差和过期处理。
- 排错题:列出训练前至少五项数据质量检查,并说明其中一项失败会怎样污染策略。