Multi-camera capture

Multiview video data collection for robotics.

Head-mounted stereo and wrist cameras, hardware-triggered onto one clock and calibrated against each other, so every episode carries the scene context and the grasp-level detail a manipulation policy needs from the same moment.
Views
Head stereo + wrist L/R
Sync
Single hardware clock
Calibration
Head↔wrist↔depth, shared target
Formats
RLDS · LeRobot · HDF5 · zarr
A person wearing a head-mounted stereo camera and wrist cameras works at a bench, with multiple synchronized camera views shown side by side.
Head and wrist views trigger on one clock, so every frame pair is aligned in time as well as in geometry.

How it works

What makes multiview capture trainable.

01

One hardware clock, every view

Head, wrist, depth, and IMU trigger from the same PTP grandmaster rather than being aligned after the fact, so there is no drift between views to correct downstream.

02

Calibrated, not just time-aligned

Head↔wrist↔depth extrinsics are solved against a shared checkerboard target and expressed in the head-camera frame at the start and end of each session, so the views are geometrically related.

03

Context plus contact detail, together

The head view carries the wide scene and the approach; the wrist views stay on the grasp point even when the head camera’s line of sight to it is blocked by the hand or arm.

04

Delivered in your loader format

Multiview episodes ship as RLDS, LeRobot, WebDataset, HDF5, or zarr, with per-stream nanosecond timestamps in the PTP domain so sync can be verified independently.

Definition

What is multiview video data collection?

Multiview video data collection is recording the same task through more than one camera at once, rather than relying on a single viewpoint. For robot learning, the most common pairing is a head-mounted view that shows the environment and the approach to an object, plus one or more wrist-mounted views that stay close to the hand through the grasp.

The views only become useful together if they are tied to the same clock and the same coordinate frame. A multiview capture is not simply several cameras recording near each other — it is several cameras hardware-triggered on one clock, with the geometric relationship between them solved and shipped with the data.

Why multiple views

Why do robot learning teams need multiple synchronized camera views?

A single camera forces a trade-off. A head-mounted camera sees the whole task and the environment the actor is moving through, but as a hand approaches and grasps an object, the hand and arm frequently block the head camera’s view of the exact contact point. A wrist-mounted camera moves with the hand, so it keeps the contact point in frame through the approach and grasp — but it has no view of the wider scene outside its narrow field of view.

Manipulation policies, VLAs, and world models generally need both kinds of information in the same episode: enough scene context to know what task is being attempted, and enough contact-level detail to learn the fine motor skill of the grasp itself. Capturing both views from the start, on one clock, avoids trying to reconcile two separately recorded videos after the fact.

Camera set

Which camera views does Firsthand capture?

A multiview collection combines the head-mounted global-shutter camera with two wrist cameras, one on each hand. The head camera delivers the actor’s wide egocentric view: the environment, the target object, and the approach. Each wrist camera delivers a close, occlusion-resistant view of that hand’s grasp point.

Depth and IMU are captured alongside the camera streams in the same episode, hardware-triggered onto the same clock as the video. Depth is derived from the calibrated rig rather than an independent, unsynchronized sensor, so it stays aligned with every camera view rather than needing to be registered separately.

Synchronization

How are the camera views synchronized and calibrated?

Every sensor in a multiview rig — head camera, both wrist cameras, depth, and IMU — is hardware-triggered from a single PTP grandmaster clock. That is a stronger guarantee than software timestamping or post-hoc alignment: the cameras are physically told to expose at the same instant, so there is no clock drift to estimate or correct downstream.

Calibration is the other half of the problem. Head↔wrist↔depth extrinsics are solved against a shared checkerboard target and expressed in the head-camera frame, with intrinsics, extrinsics, and reprojection error shipped alongside the episode. That calibration is run at the start of a session and solved again at the end, so a change mid-session shows up as a number you can filter on rather than an assumption you have to trust.

Delivery

What does a multiview episode contain when it’s delivered?

A delivered multiview episode carries the head RGB stream, both wrist RGB streams, depth, and IMU, each with its own per-stream nanosecond timestamp in the PTP domain. In the HDF5 and zarr export, these appear as separate streams under one group per episode — for example head_rgb, wrist_l, wrist_r, depth_mm, imu_head, and imu_wrist_l/r — with a calibration group holding intrinsics, extrinsics, and reprojection error for that session.

In LeRobot format, the same views map to observation.images.head and observation.images.wrist_l/r alongside observation.state and action. In WebDataset shards, each sample key covers head.jpg, wrist_l.jpg, wrist_r.jpg, and depth.png with its annotation JSON. Whichever format you choose, the same calibrated, hardware-synced streams are underneath it.

Head vs wrist

Head view vs wrist view: what does each add?

The head view and the wrist views are not redundant copies of each other — they cover different failure modes. The head camera’s strength is scene context: it localizes the object, shows the path the actor takes to reach it, and keeps working across sub-tasks that involve moving between locations. Its weak point is exactly where manipulation gets hard: once the hand and object are close together, the head camera’s view of the contact point is often occluded by the hand and arm itself.

A wrist camera’s strength is the opposite. Because it is mounted at the wrist, it stays close to the object and the grasp point through the approach and the grasp, resistant to the occlusion that defeats the head view at the critical moment. Its weak point is scope — a wrist camera alone loses the surrounding scene outside its narrow field of view, so it cannot tell a policy what task is being attempted or where the object sits in the room. Captured together on one clock, each view covers the other’s blind spot.

Scoping

How do you scope a custom multiview data collection?

A multiview collection is scoped the same way any custom collection at Firsthand is scoped: a written spec defines the tasks, environments, and camera set the project needs, along with the annotation layers (hand pose, actions, contacts, object masks) and the delivery format the data should ship in. Because the camera rig, calibration, and clock are already built, a multiview spec mainly needs to specify which tasks and environments to collect, rather than the sensor configuration itself.

Diversity and reach are handled the same way as other custom collections — activities, environments, and regions are balanced across the project’s target distribution, and thin cells get an honest staffing timeline rather than a quiet substitution.

Timeline

How fast can a multiview collection start?

Where coverage is already deep for the task and environment mix requested, a median of 48 hours separates a signed spec from the first validated batch. Where coverage is thin — a less common task, environment, or region — the honest timeline is three to four weeks to recruit and onboard the right contributors rather than ship rushed footage against the clock.

At a glance

What you get.

Streams
Head stereo RGB · wrist L/R RGB · depth · IMU
Calibration
Intrinsics, extrinsics (SE3), rms_reproj_px per session
Clock domain
PTP, hardware-triggered
Spec to first batch
a median of 48 hours (deep coverage)
Formats
RLDS · LeRobot · WebDataset · HDF5 · zarr
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.

Camera views

Camera view, mount, and what it captures.

Each view in a multiview episode, where it is mounted, and what it is best used for.
ViewMountWhat it capturesTypical use
Head viewHead-mounted, global-shutter 4KWide egocentric view of the environment, target object, and approachScene context, navigation between sub-tasks, object localization
Wrist view (L/R)Mounted at each wristClose, occlusion-resistant view of that hand’s grasp pointContact detail, grasp precision, in-hand manipulation
DepthDerived from the calibrated rigPer-pixel depth aligned to the camera views and clock3D hand and object pose, contact geometry
IMUHead and wrist-mountedMotion data synchronized to the same clock as the camera viewsMotion and contact event detection

Delivery

Deliverable stream, format field, and notes.

Where each multiview stream appears across the delivery formats Firsthand supports.
StreamFormat fieldNotes
Head RGBobservation.head_rgb (RLDS) · observation.images.head (LeRobot) · head.jpg (WebDataset) · head_rgb (HDF5/zarr)Full 4K; decode lazily or downscale in the input pipeline
Wrist RGB (L/R)observation.images.wrist_l/r (LeRobot) · wrist_l.jpg / wrist_r.jpg (WebDataset) · wrist_l / wrist_r (HDF5/zarr)One stream per wrist camera
Depthobservation.depth_mm (RLDS) · depth.png (WebDataset, 16-bit) · depth_mm (HDF5/zarr)Metric millimetres; decode as uint16, not 8-bit
Calibrationcalibration/ group: intrinsics, extrinsics (SE3), rms_reproj_pxPer session; head-camera frame is the identity for all extrinsics
Timestamps*_timestamp_ns, per streamint64, PTP domain, shipped with every stream for sync verification

FAQ

Multiview video data collection, answered.

What is multiview video data collection?
Multiview video data collection is recording a task through more than one camera at once — typically a head-mounted view for scene context plus wrist-mounted views for grasp-level detail — hardware-triggered onto one clock and calibrated against each other, rather than several unsynchronized recordings aligned afterward.
Do I need both a head camera and wrist cameras?
For most manipulation policies, yes. The head camera provides scene context and object localization; the wrist cameras provide the close, occlusion-resistant view needed for grasp precision. Using only one leaves a gap the other is built to cover.
How many wrist cameras are captured?
Two — one on each wrist — alongside the head-mounted camera, all hardware-triggered onto the same clock as depth and IMU.
How are the multiple camera views kept in sync?
Every view is hardware-triggered from a single PTP grandmaster clock, rather than timestamped in software or aligned after recording. Per-stream nanosecond timestamps in the PTP domain ship with the episode so you can verify sync yourself.
How is calibration between the head and wrist cameras solved?
Head↔wrist↔depth extrinsics are solved against a shared checkerboard target and expressed in the head-camera frame. Calibration runs at the start and end of each session, and intrinsics, extrinsics, and reprojection error ship with the episode.
Can multiview capture be combined with annotation?
Yes. Hand pose, action segments, grasp and contact events, and object masks can be annotated against the calibrated multiview geometry rather than guessed from a single view.
Which delivery formats support multiview episodes?
RLDS, LeRobot, WebDataset, HDF5, and zarr all carry the head and wrist streams as separate fields or keys, with calibration and per-stream timestamps included.
Can a multiview collection be scoped to specific tasks and environments?
Yes. The camera set, clock, and calibration are already built; a multiview spec mainly needs to define the tasks, environments, and annotation layers the project needs.

Sources

Where are the delivery formats documented?

Need a custom multiview collection?

Scope the tasks, environments, and annotation layers, and we’ll hardware-sync head and wrist cameras onto one clock for you.