参考 · 来自 motion_representation.md

418 维动作表示,逐项拆解

MotionBricks 把每一帧动作表示为一个归一化特征向量。下面的分解逐字摘自官方 motion_representation.md——每个维度数字都是原样。

总体结构

该表示把根运动(机器人骨盆的全局位置与航向)与身体运动(关节旋转、位置、速度与脚部接触)分开。这让 root 模型与 pose/分词器模块可以操作同一表示的不同子集。

两个子集共享相同的 409 维身体特征,只差根参数化(5 维全局 vs 4 维局部)。它们通过 dual_rep.global_to_local / dual_rep.local_to_global 无损互转。训练时,批次从加载器以全局表示出来,在进入 pose/分词器模块前被即时转成局部;每个批次字典里的 "motion" 张量始终是全局的。

当前配置在 G1Skeleton34 骨架(34 关节的 Unitree G1)上使用 DualRootGlobalJoints 表示。完整特征向量每帧 418 维,由共享 409 维身体特征的 414 维全局子集与 413 维局部子集组成。

身体特征(409 维)

全局与局部根表示共用,定义在全局(世界)系。 local_vel 上的 local_ 前缀是命名遗留——在 DualRootGlobalJointsremoving_heading=False)里,速度并不做航向旋转。

特征维度描述
ric_data99全局关节位置,逐帧减去投影后的(XZ)根位置,作用于 33 个非根关节。未做航向归一化。
global_rot_data204全部 34 个关节的全局(世界系)6D 连续旋转。
local_vel102全局系下的逐关节速度,由世界位置做有限差分计算。
foot_contacts4左脚踝、左脚趾、右脚踝、右脚趾的二进制接触状态。

全局根特征(5 维)

供全局表示子集使用(root 模型消费)。

特征维度描述
global_root_pos3世界系下的 XYZ 位置(训练与推理时,第一帧的根 XZ 放在原点)。
global_root_heading2航向表示(全局系)。

局部根特征(4 维)

供局部表示子集使用(pose/分词器模块消费)。

特征维度描述
local_root_pos2航向旋转局部系下的 XZ 位置。
local_root_heading2相对根当前航向的航向偏移。

核算一下:409 身体 + 5 全局根 = 414(GlobalRootGlobalJoints);409 + 4 局部根 = 413(LocalRootGlobalJoints);两者合起来定义 418 维的 DualRootGlobalJoints 向量。

来源

完整推导与细节:motion_representation.md 与 MotionBricks 论文(arXiv 2604.24833)。