坐标系¶
本页定义位姿数据所在的坐标系:世界坐标系在哪、朝哪,以及采集时怎么看位姿是否正确。两种形态的位姿都来自同一套 Pico4 头显与追踪器,坐标系定义相同;查看位姿的界面不同,那一段用「背包版 / PC 版」标签页分开写。
世界坐标系¶
世界坐标系由头显上的 XTac UMI XR 在启动瞬间建立并冻结,是右手系,重力对齐:
| 轴 | 方向 |
|---|---|
| 原点 | 首次启动 XTac UMI XR 那一刻头显所在的位置 |
| X 轴(红) | 设备前向,沿头显前部相机安装面法线指向前方 |
| Y 轴(绿) | 设备左向,与 X 轴正交,按右手坐标系约定确定 |
| Z 轴(蓝) | 设备上向,与 X、Y 均正交,由右手定则唯一确定 |
坐标系只在启动瞬间跟着头显,冻结后固定在空间中,转头、走动都不会带动它;重启 XTac UMI XR 会重新建系,原点和方向都会变。因此启动时要与机器人朝向一致(朝机器人的正前方),使 X 轴与之对齐;同一数据集采集期间不要重启,操作步骤见启动与坐标系对齐。
数据集里所有位姿都以这个世界系为参考:PC 版落盘的是末端 TCP 位姿 tcp.x/y/z 加 6D 旋转 r1..r6(旋转矩阵前两列,约定见每帧记录内容);背包版 MCAP 里记录头显与追踪器的位姿;背包版导出数据的原点另有规定,见下一节。
导出数据的原点(背包版)¶
背包版从 XTac UMI Collector 0.4.6 起,导出的 LeRobot 数据集与训练 MCAP 里,状态与动作的位姿不再直接用上面的世界系,而是每条录制各自以开录时的头显为原点:
| 轴 | 方向 |
|---|---|
| 原点 | 这条录制第 0 帧的头显位置(挂脖时是胸前的头显位置) |
| X 轴 | 第 0 帧头显的水平朝向 |
| Y 轴 | 向左,与 X 正交 |
| Z 轴 | 竖直向上 |
- 为什么这样做:每次开录前设备都会让头显重置世界坐标系,但 Pico 只把朝向和高度归零,水平位置仍可能残留几厘米到几十厘米。以每条开录时的头显为原点后,同一数据集里每条的起点一致,不受这个残留和 XTac UMI XR 重启的影响。
- 怎么变换:先平移到第 0 帧头显位置,再绕竖直轴转到头显当时的水平朝向。只去掉平移和偏航,头显的俯仰、侧倾保留;是刚体变换,双手间距和相对姿态不变。第 0 帧的头显位置为 0、偏航为 0。
- 开录时目视前方:这条录制的 X 轴就是开录那一刻头显的水平朝向,开录时面朝作业区正前方。开录初始位姿检查用的也是这个参考系。
- 作用范围:只作用于导出的状态与动作。背包上的原始录制、回放和实时视图仍用录制时的世界系;
meta/xumi_collection_devices.json记录了每条的锚点(录制系里的位置、偏航与时刻),需要时可换算回录制系。 - 「双爪」模式:不录头显位姿,导出不做这个变换。
- PC 版:不受影响,仍以上面的世界系为参考。
采集时的位姿视图¶
控制台「实时监控」页的位姿视图实时显示左右爪与头显的位姿,下方是左右爪开合角度(rad / deg / 开合百分比)。夹爪闭合时角度约 0.02rad,再施加一定的力可以到零。开录前逐个摇晃夹爪,确认左右位姿各自跟着动;不动或跳变先查追踪器绑定与视野遮挡。
--display_data=true 会在 Rerun 里开出 /world 3D 视图:夹爪以带标签的椭球 + 三轴画在实时 tcp.* 处,拖出一条轨迹面包屑。
- 场景按
FLU声明,初始视角朝 +X,世界轴标+X forward / +Y left / +Z up。 - 面包屑保留最近 90 个采样点(30fps 下约 3 秒),越旧越淡。
- 头显相机开启时,头显以更小的琥珀色
HEAD标记画进同一个/world,不带轨迹。 --show_trajectory默认开启,false关闭;--robot.enable_tracker=false时自动跳过。- 夹爪平放时 EE 标记应在两指中点、三轴呈 X 前 / Y 左 / Z 上,否则追踪器装错了。
- 标量面板里的
tracker pose是追踪器原始位姿,仅供查看;落盘的是tcp.*。
局部坐标系¶
头显本体坐标系的三轴与世界系同一约定:X 前(前部相机安装面法线方向)、Y 左、Z 上,右手系。
夹爪的局部坐标系、末端(EEF)定义、追踪器安装位置与从夹爪法兰接口,以 XTac-UMI-Description 为准(URDF / MJCF / USD 与坐标系说明)。PC 版落盘的 tcp.* 即该定义下的夹爪末端;需要自定义时见 RobotConfig 配置项。
