Multimodal capture

Egocentric Video With Depth and IMU Data

RGB alone leaves a policy guessing at distance and motion. Custom egocentric collection adds a synchronized depth stream recovered from the calibrated stereo rig and 200 Hz IMU data from three hardware-triggered sensors, all hardware-triggered onto the same clock as the video and hand pose — so a training pipeline gets the full multimodal bundle rather than RGB plus a hope that other sensors line up well enough.
Depth source
Calibrated stereo rig, not a standalone sensor
IMU
3× 6-DoF BMI088 at 200 Hz
Sync
Hardware-triggered, one PTP clock
Formats
RLDS • LeRobot • HDF5 • zarr • WebDataset
A head-mounted egocentric rig capturing synchronized RGB, depth, and IMU streams during a manipulation task
Depth and IMU ride on the same hardware clock as the video, not bolted on after capture.

How it works

What a synced multimodal bundle adds over RGB alone.

01

Depth from the rig, not a bolted-on sensor

Depth is recovered from the calibrated stereo pair already on the rig rather than a separate active depth sensor, so it stays accurate outdoors and indoors alike and ships as a synchronized depth_mm stream aligned to RGB and hand pose on the same hardware clock.

02

IMU faster than the camera, on the same clock

Three 6-DoF BMI088 sensors — head-mounted and one on each wrist — sample at 200 Hz, faster than the camera frame rate, and hardware-trigger onto the same PTP clock domain as the cameras and depth, so an inertial sample and a video frame captured at the same instant carry matching timestamps.

03

One clock domain, not several approximate ones

Every active stream — RGB, depth, IMU, hand pose — is hardware-triggered onto a shared clock with per-stream timestamps, so a training pipeline does not have to resample or re-align streams that were only loosely co-recorded.

04

Specified per order, not bundled by default

Depth and IMU are added to a collection where the written spec calls for them — a buyer who only needs RGB and action labels can order just that, and a buyer training a richer perception or manipulation policy can add depth, IMU, and hand pose on top.

Definition

What is egocentric video with depth and IMU data?

A standard egocentric collection captures first-person RGB video from head- and wrist-mounted cameras. Adding depth and IMU extends that bundle with a metric depth stream and inertial motion data, both hardware-triggered onto the same clock as the video, so a training pipeline receives distance and motion signals genuinely aligned to the frame rather than a separate recording that merely happened at roughly the same time.

This is distinct from a standalone depth sensor or a loosely time-stamped IMU log: every stream in the bundle shares one PTP clock domain with per-stream timestamps, which is what makes the depth, IMU, RGB, and hand pose usable together rather than individually.

Why multimodal

Why add depth and IMU to egocentric video?

RGB alone tells a policy what a scene looks like but not how far away anything is or how the camera and hands are actually moving through space. Depth gives the metric distance to every pixel, which matters for grasp planning, obstacle avoidance, and any task where a policy has to judge reach or clearance. IMU gives the fine-grained motion trajectory of the head and wrists between video frames, which is a denser signal than frame-to-frame visual motion alone can provide.

Which streams a given order needs depends on the policy being trained: a perception model may need depth more than IMU, while a manipulation policy learning from wrist motion may lean on IMU alongside hand pose. Both are specified per order rather than bundled as an all-or-nothing default.

Depth

How is depth produced from a calibrated stereo rig?

Depth is recovered from the calibrated stereo pair already on the rig rather than a separate active depth sensor, which is why it stays accurate outdoors and indoors alike — active depth sensors commonly struggle in bright outdoor light. It is delivered as a depth_mm stream in metric millimetres alongside a depth_conf per-pixel confidence channel, registered to the head-camera frame using the solved calibration extrinsics.

The rig’s calibration — intrinsics and extrinsics, solved as SE3 — is shipped with the episode rather than assumed, so depth can be re-derived independently if a buyer’s pipeline needs to. The site describes the stereo baseline only qualitatively, not as a fixed numeric spec.

IMU

What does the IMU stream capture?

Three 6-DoF (accelerometer plus gyroscope) BMI088 sensors — one head-mounted and one on each wrist — sample at 200 Hz, faster than the camera frame rate, and hardware-trigger onto the same PTP clock domain as the cameras and depth. Because the IMU samples more often than the cameras capture frames, an episode carries more IMU samples than video frames for the same span of time; consuming the two streams together means resampling or windowing the IMU data to the frame needed, rather than assuming a 1:1 sample-to-frame mapping.

Each IMU stream is delivered as its own array — streams/imu_head, streams/imu_wrist_l, streams/imu_wrist_r — so the head and each wrist can be analyzed independently or together.

Synchronization

How are video, depth, IMU and hand pose kept in sync?

Every active stream is hardware-triggered onto a shared clock with per-stream timestamps, rather than merely co-recorded and aligned afterward in software. Calibration for the sensor pair that benefits most from a tight time alignment — the stereo rig producing depth — is validated during the calibration pass; the IMUs are aligned during calibration via a static hold plus a figure-eight excitation.

The result is that an observation at a given step — RGB frame, depth frame, hand pose, and the IMU samples closest to that instant — is actually aligned, which matters most for any downstream task that fuses more than one stream rather than consuming them independently.

Format fields

Which format fields carry each stream?

Depth is carried as streams/depth_mm (uint16 [T, 480, 848] at 30 Hz, metric millimetres) and streams/depth_conf in HDF5 and zarr delivery, as observation.depth_mm in RLDS, and as depth.png (16-bit, decode as uint16 millimetres, not 8-bit) in WebDataset. LeRobot’s mp4-based layout does not embed depth in the video file itself, so a policy consuming depth pulls it from the accompanying HDF5 export.

IMU is carried as streams/imu_head, streams/imu_wrist_l, and streams/imu_wrist_r — float32 [N, 6] at 200 Hz — in HDF5 and zarr, with RLDS and WebDataset carrying the same per-sample timestamped structure adapted to each format’s own convention. Which fields a delivery actually contains depends on which streams the written spec ordered.

Quality

How is multimodal egocentric data QA’d before delivery?

Every episode passes through calibration and synchronization checks on every active stream, not just RGB — depth and IMU are checked for alignment to the shared clock alongside hand pose, and a pass/reject decision is made per episode. Episodes that fail are rejected and, where it matters to the buyer’s coverage, recaptured rather than delivered with a quality caveat, and a reject log accompanies delivery.

For an order that includes depth and IMU specifically, QA also confirms those streams are correctly aligned to the video and to each other, since a depth frame or IMU sample that merely sits in the same episode without verified timestamp alignment does not pass the same bar as streams confirmed to line up.

Ordering

How do you order a custom multimodal egocentric collection?

A collection starts with a written spec covering the tasks, scenes, and viewpoint, plus which streams the policy needs — RGB alone, or RGB with depth, IMU, and hand pose added. The spec also sets delivery format: RLDS, LeRobot, WebDataset, HDF5, zarr, or raw streams with metadata.

A Spec Pilot validates the plan on a small batch before the full order runs, so stream coverage, sync quality, and label fidelity can be checked before they are repeated at volume. Delivery ships under a perpetual, buyer-owned commercial license.

At a glance

What you get.

Starting point
Written spec → Spec Pilot
Streams
RGB (head/wrist) • depth • IMU • hand pose
IMU
3× 6-DoF BMI088 at 200 Hz, PTP-synchronized
Depth
depth_mm (metric mm) + depth_conf, 30 Hz
Formats
RLDS • LeRobot • HDF5 • zarr • WebDataset
License
Perpetual, buyer-owned

Every collection runs through the same seven-stage end-to-end custom collection pipeline. End-to-end custom data collection is a managed service that takes an AI data need from problem to owned dataset in a single accountable pipeline.

Stream map

Stream, source, and sync as stated on this site

Each stream, where it comes from, its rate and sync, and the fields that carry it
StreamSourceRate / syncFormat fields
RGBHead-mounted global-shutter camera, dual wrist camerasPTP-synchronizedstreams/head_rgb, streams/wrist_l/r
DepthRecovered from the calibrated stereo rig, not a standalone sensor30 Hz, hardware-triggered on the shared clockstreams/depth_mm, streams/depth_conf; observation.depth_mm (RLDS); depth.png (WebDataset)
IMU3× 6-DoF BMI088 — head-mounted and dual wrist-mounted200 Hz, hardware-triggered on the shared clockstreams/imu_head, streams/imu_wrist_l, streams/imu_wrist_r; observation.imu_* (RLDS); imu.parquet (WebDataset)
Hand poseTracked against the captured depth stream, per hand21 joints per hand, metric 3D, per-joint visibility flagannotations/hand_joints; observation.hand_joints (RLDS)

Use case fit

Which streams matter for which use case

Use case, which streams matter most, and why
Use caseStreams that matter mostWhy
Grasp planning / manipulationRGB + depth + hand poseA policy judging reach and contact needs metric distance, not just color
Imitation learning / behavioral cloningRGB + hand pose, with depth/IMU added as the spec calls for itAction-segment and hand-pose labels are the core training signal; depth and IMU add richer observation detail
Motion and trajectory modelingIMU + hand poseIMU captures fine-grained head and wrist motion between video frames, denser than visual motion alone
3D perception / scene understandingRGB + depthMetric depth per pixel is the signal a depth-estimation or 3D-aware perception model trains on directly

FAQ

Egocentric video with depth and IMU data, answered.

What is egocentric video with depth and IMU data?
First-person RGB video paired with a metric depth stream recovered from a calibrated stereo rig and 6-DoF inertial motion data from head- and wrist-mounted IMUs, all hardware-triggered onto one PTP clock domain so the streams are genuinely aligned.
Is the depth from a standalone depth sensor?
No. Depth is recovered from the calibrated stereo pair already on the rig rather than a separate active sensor, which is part of why it stays accurate outdoors and indoors alike.
How many IMUs are used, and at what rate?
Three 6-DoF (accelerometer plus gyroscope) BMI088 sensors — one head-mounted and one on each wrist — sampled at 200 Hz, faster than the camera frame rate.
How are RGB, depth, IMU and hand pose kept in sync?
Every active stream hardware-triggers onto a shared PTP clock domain with per-stream timestamps, rather than being co-recorded and aligned afterward in software.
Does every order include depth and IMU by default?
No. Streams are specified per order in the written spec — a buyer who only needs RGB and action labels can order just that, and a buyer training a richer policy can add depth, IMU, and hand pose.
Which delivery formats carry depth and IMU?
HDF5 and zarr carry both natively as their own arrays. RLDS carries depth as observation.depth_mm and IMU in the same per-sample timestamped structure adapted to its convention. WebDataset carries depth as depth.png and IMU as imu.parquet. LeRobot’s mp4-based layout does not embed depth, so it is pulled from the accompanying HDF5 export.
Has Firsthand supplied this data to a specific lab or model?
This page describes the data collection service — specification, capture, labeling, QA, consent, and delivery — and does not claim to have trained or supplied data to any named model or lab.
How is this different from a stereoscopic video order?
A stereoscopic order is specifically about the calibrated left/right stereo pair itself. This page is about the full synced bundle a buyer gets once depth and IMU are added on top of egocentric video — see stereoscopic video data collection for the stereo-rig-specific page.

Sources

Where are the delivery formats documented?

Need egocentric video with synced depth and IMU?

Tell us which streams your training pipeline needs — RGB, depth, IMU, hand pose — and the delivery format you load from. We will validate the spec with a Spec Pilot before the full collection runs.