先记住一句话
动作表示是在可学习性、跨本体共享、精度和控制可行性之间选择接口;不记录 frame、单位和 controller 语义的数据,几乎不可复用。
1. 常见动作空间
| 空间 | 动作示例 | 优点 | 代价 |
|---|---|---|---|
| 关节位置/增量 | $q^*$ 或 $\Delta q$ | 直接、可复现构型 | 机器人相关,跨本体弱 |
| 关节速度/力矩 | $\dot q$、$\tau$ | 高频、动态控制直接 | 更依赖动力学和安全层 |
| EEF pose | $(x,y,z,R,g)$ | 任务语义自然,易跨机械臂 | 需 IK,可能不可达/奇异 |
| latent / skill | 离散 code 或低维向量 | 压缩长动作、跨来源 | 必须学习可靠 decoder |
2. 绝对与相对
绝对目标 $a_t=x^*_{t+1}$ 容易累积稳定目标,但依赖共同原点;相对动作 $a_t=x_{t+1}\ominus x_t$ 更局部、便于跨场景,却会在 rollout 中积分误差。相对还必须说明相对于哪个 frame:
- base/world-relative:平移方向固定在场景中。
- EEF-local:同一个“向前”会随工具朝向旋转。
- camera-relative:对视觉几何自然,但依赖准确外参。
3. SE(3) 中的差不是普通减法
平移可相减,旋转则位于 SO(3)。若当前旋转为 $R_t$、目标为 $R_{t+1}$,local relative rotation 常写作 $R_t^{-1}R_{t+1}$;world relative 可写作 $R_{t+1}R_t^{-1}$。左右顺序对应不同 frame,不能互换。
常用旋转表示包括 quaternion、axis-angle/rotation vector 和 6D representation。Quaternion 有 $q$ 与 $-q$ 表示同一旋转的双覆盖;逐元素相减通常不是合理的旋转差。训练前要做符号连续化或转到局部 rotvec/6D。
4. Gripper 也不是一个无聊的维度
数据可能记录连续宽度、位置目标、速度、力,或 open/close 二值事件。若把连续传感器宽度当动作,模型可能只是复制当前状态;若把 sparse toggle 当连续回归,切换时机容易被平均。要明确 command 与 measured state 的区别,并单独检查 grasp transition。
5. 归一化与 clipping
- 按维度使用数据集统计量,把米、弧度和夹爪尺度拉到相近范围。
- 跨本体时可用每个 embodiment 独立 stats;否则大幅度机器人的维度支配 loss。
- quantile normalization 比 min/max 更不受离群动作影响,但部署时仍必须做物理限幅。
- padding 到统一 action dimension 时,padding mask 必须进入 loss。
6. Action chunk 的语义
policy output: [a_t, a_{t+1}, ... a_{t+H-1}]
execute: 前 h 步(h ≤ H)
observe again: 新 o_{t+h}
replan: 再预测一个 chunkchunk 提供动作间的时间一致性并减少推理频率;但全部 open-loop 执行会降低纠错能力。实际常采用 receding horizon,只执行前几步,或把多个重叠 chunk 做 temporal ensemble。
7. 四个动作换算
例 1:相对平移积分
当前 EEF 在 $[0.40,0.10,0.20]$ m,base-frame delta 为 $[0.02,-0.01,0.03]$ m,目标为 $[0.42,0.09,0.23]$ m。
例 2:local delta 转 world
EEF 绕 z 轴旋转 90°,local “向前” delta $[0.10,0,0]$ m 在 base 中变为 $[0,0.10,0]$ m;直接把 0.10 加到 world x 会走错方向。
例 3:标准化与 clipping
某维训练均值 0.01 m、标准差 0.02 m,网络输出 1.5,反归一化为 $0.01+1.5×0.02=0.04$ m。若安全限幅 ±0.03 m,最终命令 clip 到 0.03 m。
例 4:chunk horizon
15 Hz policy 输出 12 步,horizon=$12/15=0.8$ s;每次执行 3 步再重规划,反馈周期为 0.2 s。
看到动作发散时,先反归一化并逐维画单位、范围、frame、符号和 lag;不要先怀疑 Transformer。
自测
1. 为什么 EEF action 更容易跨机械臂?
它描述任务空间中的末端运动,隐藏了不同关节拓扑;但各机器人仍需自己的 IK/控制器和可达性约束。
2. local 与 world relative rotation 为什么不同?
它们分别在当前工具坐标和固定世界坐标表达增量,矩阵乘法顺序不同。
3. action padding 为什么不能只补零?
真实动作也可能为零;必须用 mask 告诉 loss 哪些维度不存在。
原始资料
OpenVLA-OFT 系统比较连续动作、action chunk 与并行解码;Octo 讨论适配不同 observation/action spaces。