EGO 双目采集数据概览

Orbbec Femto Bolt EGO 双目红外鱼眼相机 + 惯性测量单元

Orbbec EGO
双目鱼眼红外采集设备
分辨率 1600 x 1300
帧率 30 fps
IMU 频率 1000 Hz
基线 121.05 mm
畸变模型 KannalaBrandt (KB)
镜头类型 Fisheye Stereo
Stereo pair
左目 + 右目拼接 1600x1300 px / fisheye

L1 时间同步质量

自研 nearest-neighbor 同步算法 | 双目帧时间戳精确配对

<182
最大同步误差 (us)
全录段最差值
33.33
帧间隔 (ms)
+/- 0.03ms 标准差
1000
IMU 采样率 (Hz)
~33 IMU/帧
双目同步误差分布
3 段录像叠加对比
帧间隔时序
参考线: 33.333ms

L2 6DoF 位姿轨迹

ORB-SLAM3 Stereo-Inertial | KannalaBrandt8 鱼眼畸变模型

鼠标拖拽旋转 | 滚轮缩放 | 右键平移
轨迹统计
2D 投影

L3 手物交互检测

Hands23 Detector (NeurIPS 2023) — 逐帧手-物体交互状态、抓取类型、接触分类

1144
总帧数
38.9s @ 30fps
98.6%
接触帧占比
1128 / 1144 帧
1
动作片段数
总时长 38.13s
模型 Hands23 Detector | NeurIPS 2023 | 去重 + 时序平滑(w=5) + 片段合并(gap<0.5s) + 短片段过滤(<0.5s)
接触状态分布
每只手逐帧检测结果汇总
抓取类型分布
FPHA 抓取分类法 (6类)
触碰类型分布
手与物体/容器的交互细分
动作片段时间轴
1 个动作片段 | 录段总时长 38.9s

L3b 3D 手骨骼重建

WiLoR (CVPR 2025) — MANO 21 关键点 3D 手部重建 + 左右手骨骼叠加可视化

模型 WiLoR | CVPR 2025 | YOLO 手部检测 → ViT Backbone → MANO 参数回归 → 21 关键点投影 | RTX 4090, FP16, ~6 fps
5,686
手部检测总数
2,184 帧 (2 录段)
21
MANO 关键点/手
3D 坐标 + 2D 投影
5.8
推理速度 (fps)
RTX 4090, FP16 精度
录段 145222 — 双手操作食物盒
2,380 hands L 左手 R 右手 1,144 帧 | 38.9s | 5.1 fps
录段 150808 — 双手操作杯子+水瓶
3,306 hands L 左手 R 右手 1,040 帧 | 35.6s | 6.5 fps
骨骼图例 左手 (L) 右手 (R) 腕部关键点 输出: 21 关键点 (x,y,z) + 2D 投影坐标 / 帧

L3c 世界坐标手部轨迹

HaWoR (CVPR 2025) — 从自我中心视频恢复世界坐标系下的手部 6DoF 运动轨迹,融合 DROID-SLAM 相机定位 + Metric3D 尺度恢复

145222 · 食物盒操作 1143 帧 · 38.1s
150808 · 杯子+水瓶 1039 帧 · 34.6s
2,182
处理帧数
6 DoF
手部自由度
778
MANO 网格顶点
米制
世界坐标尺度
图例: 右手轨迹 左手轨迹 相机位置 地面网格 (10cm) 拖拽旋转 · 滚轮缩放 · 右键平移

L4 语义标注

GPT-4o Vision 关键帧语义理解 — 物体识别、动作分类、空间关系、任务阶段

标注帧数
20
每 2s 采样一帧
识别物体类别
14
跨帧去重统计
空间关系三元组
115
subject-predicate-object
任务阶段分布
物体出现频次 (Top 12)
逐帧语义标注详情
20 帧 | GPT-4o Vision

L5 质量验证

跨层一致性校验 + 数据集完整性审计 — 67 项自动化检查全部通过

总检查项
67
3 录段 × 跨层校验
通过率
100%
67 PASS / 0 WARN / 0 FAIL
覆盖层级
7
L1, L2, L3, L4, L1→L2, L1→L3, L3→L4
检查项详情
点击录段卡片切换 | 验证覆盖文件完整性、时间戳单调性、帧索引对齐、统计异常检测

L6 格式封装

LeRobot v3.0 标准格式 — 2 episodes / 2184 frames / 18 features

格式版本
v3.0
LeRobot 0.6.1 (HuggingFace)
总帧数
2,184
2 episodes × 30fps
特征维度
18
观测 + 动作 (含视频)
📋 数据集特征
特征名 类型 维度
observation.images.ego_leftvideo3×1300×1600
observation.images.ego_rightvideo3×1300×1600
observation.state.camera_posefloat327
observation.state.left_wristfloat323
observation.state.right_wristfloat323
observation.state.*_keypoints_3dfloat3263 × 2
observation.state.*_contactint641 × 2
action.*_wrist_deltafloat323 × 2
action.*_graspint641 × 2
📁 目录结构
basematrix-ego-v1/
├── meta/
│   ├── info.json          # 数据集元信息
│   ├── stats.json         # 归一化统计量
│   ├── tasks.parquet      # 任务描述
│   └── episodes/          # Episode 元数据
├── data/
│   └── chunk-000/
│       └── file-000.parquet  # 2184 行观测+动作
└── videos/
    ├── ego_left/chunk-000/   # 2 × MP4 左目
    └── ego_right/chunk-000/  # 2 × MP4 右目
✅ API 验证
# LeRobot 0.6.1 官方 API 加载测试
from lerobot.datasets.lerobot_dataset import LeRobotDataset

ds = LeRobotDataset(repo_id='basematrix/ego-binocular-v1', root='exports/basematrix-ego-v1')
# num_frames: 2184, num_episodes: 2, fps: 30

frame = ds[0]
# observation.images.ego_left:  torch.Size([3, 1300, 1600])
# observation.state.camera_pose: torch.Size([7])
# action.left_wrist_delta:      torch.Size([3])
# ... 18 features total ✓

L1-L6 数据处理管线

从原始双目采集到具身智能训练数据的完整处理链路