Guide

Hand Pose and Wrist Action Labels for Robot Pretraining

How wrist motion and articulated hand pose become the action label in human-video pretraining, and which fields Firsthand ships.
By the Firsthand capture teamLast updated September 28, 2026

Short answer

Wrist action labels record 6-DoF wrist motion over time; hand pose labels add per-joint 3D hand keypoints. Together they give a pretraining corpus an action representation without a robot present. EgoScale’s official sources describe exactly this combination for human-video pretraining. Firsthand ships the captured version — hand_joints, action_segments, and synchronized wrist streams — rather than a post-capture estimate.

Last reviewed:

What are action labels in robot pretraining?

An action label is the part of a training example that tells a policy what was done, as distinct from the video and depth that show what was seen. On a real robot, that label is usually a joint angle or gripper command, logged directly from the hardware. Human video has no robot in the loop, so there is no joint-angle log to record — the action has to be represented some other way if the footage is going to teach a policy anything about motion, not just appearance.

For egocentric human video, the two signals that stand in for a robot action log are wrist-level pose — the 6-degree-of-freedom position and orientation of the wrist over time — and hand pose, the per-joint 3D position of the fingers. Wrist pose gives the coarse trajectory: where the hand moved and how it was oriented on approach. Hand pose gives the fine structure: how the fingers were shaped around an object at the moment of contact. A pretraining corpus that has both can support both coarse reaching behavior and finer-grained manipulation behavior; a corpus with only one of the two can only support the behavior its label actually covers.

This page focuses on how action is represented in pretraining-scale human video and which of those fields Firsthand delivers on a custom collection. For the delivered episode layout, see /formats/episode-schema; for the fine-manipulation case for finger-level pose specifically, see /guides/3d-hand-pose-estimation-for-robotics.

How does EgoScale represent human actions (wrist motion + hand keypoints)?

NVIDIA’s EgoScale, documented on arXiv and on NVIDIA’s GEAR lab research page, pretrains on egocentric human video and represents the action in that video as wrist-level 6-DoF motion paired with articulated hand pose — keypoints across the joints of each hand — rather than a robot joint-angle log, since none exists in human footage. That pairing is what lets a corpus with no robot present still carry a usable action signal: wrist motion supplies the trajectory, hand keypoints supply the grasp shape.

As covered in /guides/what-is-nvidia-egoscale, EgoScale’s 20,854-hour corpus produced those labels with off-the-shelf SLAM for camera and wrist trajectory plus hand-pose estimation applied after capture, not measured live on a purpose-built rig. That is a deliberate scale-versus-precision tradeoff, and it is the reason this page draws a line between pseudo-labeled and captured action representations further down — both are wrist-plus-hand-pose in structure, but they differ in how the numbers were produced.

Why wrist-level actions transfer across embodiments

A wrist-level action label is embodiment-agnostic in a way a robot-specific joint-angle log is not. A 6-DoF wrist pose describes where a hand went and how it was oriented, independent of whether the thing doing the reaching is a human arm, a parallel-jaw gripper, or a 22-degree-of-freedom dexterous hand. That is what makes it usable as a pretraining signal at all: the same wrist trajectory that a human performed can be treated as a coarse target for very different downstream end effectors, because it does not encode any one gripper’s joint layout.

Hand pose is more embodiment-specific but still transfers further than a raw robot action would. Per-joint finger keypoints describe how a human hand shaped itself around an object; a downstream dexterous hand with a comparable number of degrees of freedom can be aligned to that shape more directly than a parallel gripper can, which is consistent with EgoScale’s own choice of a 22-DoF dexterous hand as its evaluation embodiment rather than a simpler gripper. This is also why /custom-collection/dexterous-manipulation-data and /custom-collection/dexterous-hand-pretraining-data both specify captured hand pose as a requirement, not an optional extra: the closer the target embodiment is to a human hand in degrees of freedom, the more directly the pretraining label needs to describe finger-level shape rather than just wrist trajectory.

The tradeoff runs the other way for coarse pick-and-place behavior on a simple gripper, where wrist-level pose alone can carry most of the useful signal and finer hand-pose detail contributes comparatively less. Which fields matter most is a function of the target embodiment and task, which is why a pretraining spec should state both the wrist and hand-pose requirement explicitly rather than assuming one implies the other.

Pseudo-labels from SLAM and hand-pose estimation vs captured labels — what's the difference?

Both approaches produce the same kind of label — a wrist pose and a set of hand keypoints per frame — but they differ in how those numbers are produced and in the error they carry as a result. A pseudo-label is computed after the fact from RGB using SLAM (for camera and wrist trajectory) and a hand-pose estimation model (for finger keypoints). A captured label is measured live during collection, from calibrated cameras and depth on a synchronized rig, at the moment the action happens.

Pseudo-labeled vs captured action labels
DimensionPseudo-labels (SLAM + hand-pose estimation)Captured labels (synchronized rig)
When producedAfter capture, from RGB aloneLive, during capture, from calibrated multi-stream data
Failure modesDegrades under occlusion, fast motion, unusual lighting; trajectory can drift over long sequencesOcclusion is flagged per joint rather than silently mis-estimated
Depth sourceMonocular RGB only — no metric depth usedMetric depth measured alongside RGB, used to ground hand joints
Scale of productionCan label a corpus at very large scale, since no live rig time is requiredBounded by rig collection time, but every label comes with a measurement, not an estimate
Best fitBroad-coverage pretraining where volume matters more than per-frame precisionAlignment stages and dexterous manipulation, where per-frame label precision matters most

Pseudo-labeled vs captured action labels

Neither approach is wrong for its purpose. EgoScale’s own evaluation shows the pseudo-labeled pretraining recipe transferring to real task success, so scale-first pseudo-labeling clearly carries useful signal. The distinction matters for planning a mixture: a broad pretraining stage can tolerate pseudo-label noise better than a small, closely matched alignment stage can, which is the same two-stage structure EgoScale itself uses — large-scale pseudo-labeled pretraining, then a much smaller aligned stage. See /compare/egoscale for the full row-by-row comparison and /guides/building-a-robot-pretraining-data-mixture for how to plan the split.

What label fields does a pretraining-ready episode need?

A pretraining-ready episode needs more than a single wrist number or a single hand-pose number — it needs a small set of fields that, together, cover trajectory, grasp shape, contact, and occlusion. Firsthand’s own episode schema, documented in full at /formats/episode-schema, ships the following fields for exactly this purpose.

Action-relevant label fields and how they are produced
FieldWhat it encodesHow it is producedFirsthand delivery field
hand_jointsPer-joint 3D hand pose, metres, head-camera frameTracked live against depth, per handannotations/hand_joints — float32 [T, 2, 21, 3]
hand_visiblePer-joint visibility — flags occlusion instead of guessing through itRecorded alongside hand_joints during trackingannotations/hand_visible
streams/imu_wrist_l/rWrist-mounted 6-DoF linear acceleration and rotation over timeHardware-triggered 6-DoF BMI088 IMUs at 200 Hz, one per wriststreams/imu_wrist_l, streams/imu_wrist_r
action_segmentsDiscrete sub-action boundaries: start, end, verb, nounLogged with nanosecond timestamps on the same PTP clock as video and depthannotations/action_segments — list[{start_ns, end_ns, verb, noun}]
contact_eventsWhen and where a hand made or broke contact with an objectRecorded alongside hand pose and depth during captureannotations/contact_events
calibration/intrinsics, extrinsicsCamera intrinsics and the SE(3) transform between camera framesMeasured per rig session, with reprojection error checked (rms_reproj_px < 0.28)calibration/intrinsics, calibration/extrinsics

Action-relevant label fields and how they are produced

Wrist-mounted RGB cameras (streams/wrist_l, streams/wrist_r) are a separate optional stream from the wrist IMUs above — they add close-range visual detail for fine manipulation, distinct from the 6-DoF motion the IMU records. Both are documented in /formats/episode-schema.

How do calibration and time sync affect label quality?

A hand-pose or wrist label is only as useful as the frame it is attached to. If a hand-joint sample and the video frame it is meant to describe were captured a few milliseconds apart, the label describes a slightly different moment than the image shows — the hand may have already moved past the pose the label records. Firsthand’s rig hardware-triggers every stream, including the wrist IMUs and hand-pose tracking, onto the same PTP clock domain, so a video frame and its corresponding hand-pose or IMU sample carry matching timestamps rather than being aligned after the fact in software.

Calibration affects the same problem from a different angle: hand_joints are recorded in metres in the head-camera frame, which only means what it claims to mean if the camera’s intrinsics and the SE(3) extrinsics between streams are measured accurately. Firsthand checks that per rig session against a reprojection-error threshold (rms_reproj_px < 0.28) rather than assuming a one-time factory calibration holds indefinitely. See /guides/camera-calibration-procedure for the calibration process and /guides/how-we-measure-sync-error for how cross-stream sync error is measured and reported.

How are hand pose and wrist labels delivered (RLDS, LeRobot, HDF5)?

The underlying fields are the same across delivery formats — hand_joints, hand_visible, action_segments, contact_events, and the wrist IMU and camera streams — but each format projects them differently. RLDS (TFDS-compatible tfrecord shards) and LeRobot both fold hand pose and wrist signal into the per-step observation and action structure their respective loaders expect; LeRobot’s feature set explicitly includes observation.images.wrist_l/r alongside observation.state and action. HDF5 and zarr deliver the fields closest to their native form: one group per episode, time-major chunking, and per-stream nanosecond timestamps, which is why Firsthand’s own QA tooling reads that format — it is the most complete for verifying sync directly.

WebDataset is the exception in structure rather than content: it keys samples by frame rather than by episode, with hand-pose and action annotations delivered inline as ann.json alongside the image and depth keys for that sample. Whichever format is chosen, the canonical field layout is /formats/episode-schema — every delivery format is a projection of it, so switching formats later does not change what a hand-pose or wrist label actually contains.

How to request action-labeled egocentric data

A spec for action-labeled egocentric pretraining data should state the wrist and hand-pose fields explicitly rather than leaving them implied: which hand-pose fields are required (hand_joints and hand_visible, at minimum, for any dexterous task), whether wrist IMU, wrist RGB, or both are needed, whether action_segments should carry verb/noun labels for specific skills, and the calibration and sync tolerances the delivery must meet. /custom-collection/action-labeled-egocentric-video and /custom-collection/pretraining-data-collection both start from this same field set and adapt scope, task diversity, and volume to the target embodiment.

To request a custom action-labeled pretraining collection with a specific wrist and hand-pose field spec, start at /custom-collection/pretraining-data-collection or /custom-collection/action-labeled-egocentric-video.

FAQ

Hand Pose and Wrist Action Labels for Robot Pretraining, answered.

01

What is a wrist action label?

A wrist action label records the 6-degree-of-freedom position and orientation of the wrist over time. It gives a coarse trajectory — where the hand moved and how it was oriented — without describing finger-level detail.

02

What is a hand pose label?

A hand pose label is the per-joint 3D position of the fingers and hand across a clip, per hand. Firsthand delivers it as hand_joints — float32 [T, 2, 21, 3] in metres, head-camera frame — with a hand_visible flag per joint for occlusion.

03

Why do human-video pretraining corpora need both wrist and hand-pose labels?

Human footage has no robot joint-angle log to record. Wrist-level pose and hand pose stand in for it: wrist pose supplies the coarse trajectory, hand pose supplies the fine grasp shape. A corpus with only one of the two only supports the behavior that field actually covers.

04

How does EgoScale represent actions in its pretraining corpus?

As described in EgoScale’s paper and on NVIDIA’s GEAR lab page, it represents actions as wrist-level 6-DoF motion paired with articulated hand pose, produced from off-the-shelf SLAM and hand-pose estimation applied after capture rather than measured on a synchronized rig.

05

What is the difference between pseudo-labeled and captured hand-pose data?

A pseudo-label is computed after capture from RGB using SLAM and a hand-pose estimation model, and can degrade under occlusion, fast motion, or drift over long sequences. A captured label is measured live during collection from calibrated, depth-grounded, synchronized streams, with occlusion flagged rather than estimated through.

06

Can action labels be requested for a specific task or skill set?

Yes. action_segments carry a verb and noun per segment, so a custom collection can be scoped to the specific skills a spec calls for, with hand pose, wrist signal, and contact events captured alongside for each.

07

Which delivery formats include wrist and hand-pose labels?

RLDS, LeRobot, WebDataset, HDF5, and zarr all carry the same underlying fields — hand_joints, hand_visible, action_segments, contact_events, and wrist streams — projected into each format’s own structure. The canonical field layout is documented at /formats/episode-schema.

08

Do wrist and hand-pose labels stay synchronized with video and depth?

Yes. Every stream, including wrist IMUs and hand-pose tracking, is hardware-triggered onto the same PTP clock domain, so a hand-pose or wrist sample carries a timestamp that matches the video frame it describes rather than being aligned after the fact in software.

Sources

Where is this documented?

Check it against the sample pack.

40 episodes across 4 environments, delivered in the exact schema these guides describe.