#### NOTE
This is a **Hugging Face dataset**. For large datasets, ensure `huggingface_hub>=1.1.3` to avoid rate limits. Learn more in the <a href="https://docs.voxel51.com/integrations/huggingface.html#loading-datasets-from-the-hub" target="_blank">Hugging Face integration docs</a>.

<a href="https://huggingface.co/datasets/Voxel51/2026-Humanoid-IKEA-Assembly-Challenge" target="_blank">![Hugging Face](https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Dataset-yellow)</a>

# 2026 Humanoid IKEA Assembly Challenge → FiftyOne (Native Multimodal MCAP)

![preview](https://huggingface.co/datasets/Voxel51/2026-Humanoid-IKEA-Assembly-Challenge/resolve/main/preview.gif)

A six-episode subset of
[BitRobot/2026-humanoid-ikea-assembly-challenge](https://huggingface.co/datasets/BitRobot/2026-humanoid-ikea-assembly-challenge),
the shortest episode from each of six recording days spanning the collection
window, converted to native multimodal MCAP episodes. Each episode carries the
stereo head camera, both wrist cameras with their infrared pairs, whole-body
and gripper telemetry with timeline plot channels, base odometry, and the
annotated subtask sequence.

## Installation

```bash
pip install fiftyone
```

## Usage

```python
import fiftyone as fo
import fiftyone.utils.huggingface as fouh

dataset = fouh.load_from_hub(
    "Voxel51/2026-Humanoid-IKEA-Assembly-Challenge",
    name="2026-Humanoid-IKEA-Assembly-Challenge",
    persistent=True,
)
fo.launch_app(dataset)
```

## What you get

- 6 `.mcap` episodes of 7,368 to 11,099 frames, 30.7 minutes total
- Seven camera streams per episode: `/head-camera` (1280x480 side-by-side
  stereo), `/left-wrist-camera` and `/right-wrist-camera` in RGB, and
  `/left-wrist-ir1`, `/left-wrist-ir2`, `/right-wrist-ir1`,
  `/right-wrist-ir2` from the wrist depth cameras
- `/body-joint-state` and `/body-joint-command` carrying all 35 motors with
  position, velocity, acceleration and torque, each with a timeline plot
- `/left-gripper-state`, `/right-gripper-state` and their command
  counterparts for the Dex1-1 hands
- `/end-effector-state` and `/end-effector-action`, plus `/pivot.plot` and
  `/gripper-controls.plot`
- `/ego-pose` as `foxglove.PoseInFrame`, with `/odometry.plot` carrying body
  height, velocity and yaw rate
- `/body-imu.plot` and `/secondary-imu.plot`
- `/instruction` carrying the human-annotated subtask sequence: move to
  table, move table base, pick table leg, insert table leg to table base,
  rotate leg to tighten, rotate table base, flip table
- Per-episode fields: `episode_name`, `task`, `recording_day`, `subtasks`,
  `num_subtasks`, `num_frames`, `duration`

## License & attribution

The source dataset is released under
[CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/); this subset is
distributed under the same license. Changes from the source: episode
subsetting and conversion from ROS 2 CDR to the FiftyOne MCAP flavor. Camera
payloads are the source JPEGs passed through unchanged. The source recordings
declare a `SportModeState` schema that omits its trailing `path_point` array;
the field is restored at decode so the odometry stream reads.
