EGO 数据 301 维语义破译(映射层第一步 · 完成)
2026-09-05 · 结论改变映射层设计前提:301 维不是"神秘混合向量", 而是头部 + 双手共 43 个刚体的完整六维位姿,语义干净且有几何结构。 证据:本仓转换器源码 + 转换产物数值验证。
一、破译结论
来源链:scripts/mcap2lerobot_convert.py:15(head(7)+lhand(147)+rhand(147))
→ scripts/mcap2lerobot.py:34 _flatten([pos(xyz), quat(wxyz)] × N → 7N)
→ mcap 原始 schema pose.HeadFrame / pose.LeftHandFrame / pose.RightHandFrame。
| 段 | 维度 | 语义 |
|---|---|---|
head = [0:7] |
7 | 头部 1 组位姿:pos(x,y,z) + quat(w,x,y,z) |
lhand = [7:154] |
147 | 左手 21 组刚体位姿(关节/骨架点),各组 [pos+quat]×7 维 |
rhand = [154:301] |
147 | 右手同上 21 组 |
21 组/手与业界手部模型(如 MediaPipe/MANO 21 关节)数量一致; 组间骨架点序对应关系未逐一考证(哪组是腕、哪组是指尖)。
二、数值验证(shard2/0953ab4d,4979 帧)
- 四元数段模长:head/lhand/rhand 三段全部 mean=min=max=1.0000—— 单位四元数硬验证通过(若为关节角/IMU 原始值不可能整段模长恒 1);
- pos 量纲:三段范围均落在 [-1.1, 2.2],单位推断=米(人工作空间尺度);
- 几何连贯性:左手第 1 帧 21 点两两距离为厘米级、呈链状分布——手部骨架点云成立。
三、坐标系定轴(2026-09-5 晚补充:已完成)
结论:world 系为 z-up——z 竖直、y 水平主移动轴、x 水平次轴;z=0 过初始头部高度。
证据链(样本 shard2/0953ab4d,4980 帧;另一条 000623c1 佐证):
- 位置统计:头部 pos 三轴 span = x 1.12 / y 2.39 / z 0.89 米。y 波动 2.4m 排除 y 竖直(头不可能升降 2.4m);z 波动 0.89m 与采集员弯腰/蹲起幅度吻合;
- 姿态统计(判据最硬):全帧计算头局部 up 向量在 world 三轴分量,
up·z中位 +0.755(≈低头 41°,采集员看手/桌面的常态俯角), 显著高于 up·x(0.46)/up·y(-0.47)——头 up 常驻对齐 world z,z 竖直成立; - 原点佐证:两条轨迹头首帧 z 均 ≈0(-0.001 / +0.01)——z=0 平面过 初始头部高度,为场景标定锚点;
- 附带验证:states.npy 第 0 帧 head 段与 raw 首帧 HeadFrame 逐位一致 (1.007, 2.027, 0.01)——转换无损再证。
三b、诚实边界(更新后余项)
- ~~坐标系轴向未定~~ → 已定(z-up,见上);原点在场景中的物理锚定 方式(初始头位?标定板?)未考证——映射层只需轴向,不需原点语义;
- ~~21 组点序 ↔ 解剖学关节名映射未考证~~ → 已考证(见三c);
- 验证样本 n=1 条定轴 + n=1 条佐证;200 条批次完成后应跨线抽验 (body/head/EgoPro 三线 schema 与轴向一致性)。
三c、21 点序考证(2026-09-05 深夜:完成)
结论:每手 21 组 = 拇指链 {0,1,2,3} + 四指平行链 + 腕 pt20, 与 MediaPipe 惯例(pt0=腕+每指[根→尖]连续 4 点)完全不同—— 幸未套用,用数据定案。
点序映射表(考证结果)
| 手指 | 关节索引(每组内顺序 = [TIP, DIP, PIP, MCP],尖→根) |
|---|---|
| 拇指 | 0, 1, 2, 3 |
| 食指 | 4, 8, 12, 16 |
| 中指 | 5, 9, 13, 17 |
| 无名指 | 6, 10, 14, 18 |
| 小指 | 7, 11, 15, 19 |
| 腕/掌根 | 20 |
(即四指按"层 × 4 + 指序"跨步排列,拇指独占连续 4 点,腕在最末。)
证据链(shard2/0953ab4d,4979 帧;左右手同构互证)
- 原始消息无名字:
pose.LeftHandFrame的 transforms 每条仅 pos+quat, 无 child_frame_id 字段(探针runtime/probe_hand_seq.py实测)——名字 路径不通,转纯数据考证; - 中位距离矩阵(运动不变量,核心证据):逐帧成对距离取中位, 右手矩阵呈现四条平行链(食 {4,8,12,16}=1.5/1.8/1.5cm、中 {5,9,13,17}、 无名 {6,10,14,18}、小 {7,11,15,19})+拇指链 {0,1,2,3}=3.4/2.8/2.5cm; 链内间距均匀(视觉估计平滑特征),跨指同层间距 1.6-3.1cm=横弓;
- 链端方向判定:pt16/17/18/19(四指链的"16"端)与 pt3 离 pt20 仅 1.9-5.4cm、而 pt0/4/5/6/7 离 pt20 达 5.0-9.5cm——离腕近端=MCP, 即每组内顺序为尖→根 [TIP,DIP,PIP,MCP];pt0(拇指尖)离 pt4(食指尖) 11.5cm=全矩阵最大值(两指尖最远对),互证;
- 指长排序:中指 6.7cm > 无名指 5.9 > 小指 5.3 > 食指 4.8—— 中>无>小 符合解剖;拇指链总长 8.7cm(含掌骨段)合理;
- MST 分支结构(
runtime/probe_hand_geom.py):右手三主链全部 解剖学自洽(腕→MCP 弓→DIP 弓、握持态 TIP 弓、拇指链挂食指 MCP), 且左右手公共子序列一致。
诚实边界(点序部分)
- 近节(PIP-MCP)读数 15-20mm,短于解剖典型值(32-45mm)——视觉估计器 将"MCP 点"定在掌指皮褶处或输出平滑所致,不影响分组/层序判定, 但做掌心几何时 MCP 坐标应按"掌指横纹"语义使用;
- 单样本(n=1 轨迹)考证;200 条批次完成后跨线抽验(含 EgoPro/head 线);
- 与公开 21 点标准(MediaPipe/MANO skeleton)均不重合,属数据方 (sender=lwego)自定义序——对外引用时以本文映射表为准,勿套标准名。
对映射层 v0 的直接落点 → ego2libero.py v0 已实现并跑通
scripts/ego2libero.py(映射层④,独立成段不动转换器)在 shard2/0953ab4d
(4979 帧)实测通过:state=[掌心pos3, 掌系轴角3, 开度1],action=[dpos3,
相对旋转3, d开度]。实测:位移 p50=3.8mm/帧(无超限)、rot delta p50=0.083rad
(主体健康,>0.5rad 尾部 4.9% 集中在坏帧邻域)、坏帧 106 帧插值修复。
实现中发现的两条数据级发现(比脚本本身更有价值):
- 拇指自由度冻结(估计器病):拇指尖与食指尖全轨迹最近 8.4cm / 最远 11.9cm(带宽 ±15%),TIP-MCP 恒定 7.5-8.7cm——拇指关节在估计 输出中近乎刚性。拇-食尖距作夹爪开度无信号,v0 改用四指 TIP-MCP 平均距离(手张开度代理,span 1.2cm 有信号)。任何下游应用设计拇指 精细动作相关特征前必须先验此限制。
- 掌形系统性压扁:腕→MCP 质心 2.2cm(真实掌长 ~9cm)、横弓 3.5cm (真实 ~8cm)、两者夹角中位 26°(真实近 90°)——估计器把手"压扁"了。 后果:掌系法向(绕掌轴旋转分量)噪声大,action 角增量维可信度受限。 QC 新维度候选:掌形保真度(z/横弓/夹角 sin 三元组)可作 C 层 判据候选,下次 QC 修订时吸收进判据库口径。
诚实标注(映射层全局):LIBERO 夹爪极性/量纲最终对齐需 GPU 窗口实测; 语义损失大(五指→1 维),首测 Δpp 可能不显著——不显著也是读数。
四、对映射层设计的三点影响
- 路径从"学降维"变"算几何":原假设"301 维→7 维需学习式降维"作废。 实际取单手关键点组(掌心或食指根)的 pos+quat → 末端位姿 pos(3)+rot(3), 指尖组与掌心组距离 → 夹爪开合(1),纯几何运算即可构造 LIBERO 7 维。
- 动作空间天然可得:转换产物 action(t)=state(t+1),相邻帧掌心位姿差分 即 7 维末端增量动作——无需额外标注。
- 保留升级空间:43 组完整位姿可支持双臂环境映射与头部视线推理 (头 quat→相机朝向),Isaac Lab 候选路线(ADR-0008)启用时语义零损失。
五、下一步(映射层 v0,无 GPU 顺序)
- ~~读 mcap TF 树定坐标系轴向~~ ✅(z-up,第三节);
- ~~考证 21 组点序 ↔ 关节名~~ ✅(映射表见三c);
- ~~写
ego2libero.py跑通~~ ✅(v0 实测通过,见三c 落点段); - 跨线 schema 抽验 + 全批次批量映射(200 条批次完成后);
- GPU 窗口:映射产物喂 π0.5 LIBERO 首测 Δpp(协议 v1 T 口径)。