Note
This is a Hugging Face dataset. For large datasets, ensure huggingface_hub>=1.1.3 to avoid rate limits. Learn more in the Hugging Face integration docs.
Dataset Card for Hoi! Dataset (in FiftyOne format)#

This dataset card covers the FiftyOne packaging of the Hoi! dataset (Engelbracht et al., CVPR 2026). The FiftyOne version contains 88 episodes from the full 3048-sequence release, selected to cover the available embodiment types and scene variety in the local extract.
Installation#
pip install -U fiftyone
Usage#
import fiftyone as fo
import fiftyone.utils.huggingface as fouh
dataset = fouh.load_from_hub(
"Voxel51/hoi-dataset-fiftyone",
name="hoi-dataset-fiftyone",
persistent=True,
)
session = fo.launch_app(dataset)
Dataset Details#
Dataset Description#
Hoi! captures humans interacting with everyday articulated objects — drawers, cabinet doors, fridge doors, dishwashers — in real furnished rooms. Each interaction is recorded simultaneously under multiple embodiments and from multiple viewpoints, with all streams time-aligned and spatially registered to a shared Leica world frame.
The Hoi! Gripper is the instrumented embodiment: a handheld 2-finger parallel gripper carrying a Bota SensONE 6-DoF force-torque sensor, two GelSight Digit tactile sensors, a Dynamixel XM430-W350-T motor, a ZED Mini stereo camera, and Project Aria glasses. The full dataset (not this FiftyOne extract) contains 3048 sequences across 381 articulated objects in 38 environments.
Curated by: Tim Engelbracht, René Zurbrügg, Matteo Wohlrapp, Martin Büchner, Abhinav Valada, Marc Pollefeys, Hermann Blum, Zuria Bauer
Funded by: ETH AI Center, ETH Foundation Project 2025-FS-352, SNSF Advanced Grant 216260, Lamarr Institute for Machine Learning and Artificial Intelligence, Robotics Institute Germany, Google, Meta
Shared by: ETH Zurich, Technical University of Munich, University of Freiburg, Microsoft, University of Bonn
Language(s): N/A (no language annotations)
License: CC BY 4.0
Dataset Sources#
Repository: github.com/timengelbracht/hoi-dataset-tools
Paper: Engelbracht et al., Hoi! — A Multimodal Dataset for Force-Grounded, Cross-View Articulated Manipulation, CVPR 2026. arXiv:2512.04884
Uses#
Direct Use#
Force estimation from vision: Each gripper episode provides per-frame force-torque readings (6-axis, 100 Hz) paired with RGB and depth observations, supporting training and evaluation of models that predict interaction forces from visual input.
Tactile force estimation: GelSight Digit images (20 Hz) are paired with FT sensor ground truth, supporting tactile representation learning and contact-force estimation.
Articulated object estimation: Posed egocentric and exocentric RGB, 3D Leica point clouds, and manual articulation annotations (prismatic/revolute type, axis) support in-the-wild articulation estimation research.
Cross-embodiment transfer: The same objects are operated under three embodiments (gripper, hand, UMI) with spatial registration, enabling study of how manipulation skills transfer across morphologies.
Multimodal policy learning: Paired visual and force data, with ground-truth trajectories in a common world frame, support learning force-aware manipulation policies.
Out-of-Scope Use#
The dataset was recorded in a furniture store exhibition area, a university lab, and private apartments. It does not cover outdoor environments, non-articulated objects, or fine-grained dexterous manipulation. The FiftyOne extract (88 episodes) covers 7 scenes; models trained on it will not generalize to the full 38-environment release.
Dataset Structure#
Topology#
Flat multimodal dataset. Each of the 88 samples is one .mcap file
representing one interaction episode (a single open or close of an articulated
object). media_type = "multimodal". No groups, no splits.
Episode inventory#
Scene |
gripper |
hand |
umi |
|---|---|---|---|
bathroom_1 |
8 |
— |
— |
bedroom_1 |
16 |
— |
— |
fridge_1 |
8 |
— |
— |
kitchen_7 |
10 |
— |
— |
office_1 |
14 |
— |
— |
oven_2 |
10 |
— |
— |
wardrobe_2 |
8 |
6 |
8 |
Total |
74 |
6 |
8 |
Sample fields#
Field |
FiftyOne type |
Description |
|---|---|---|
|
|
Absolute path to the |
|
|
Recording location (e.g. |
|
|
Manipulation embodiment: |
|
|
0-based window index within the scene/effector combination |
|
|
Interaction state: |
|
|
Episode duration in seconds (4.7–18.0 s) |
|
|
Total MCAP messages across all channels |
|
|
Number of live channels (channels with at least one message) |
|
|
Sorted list of topic strings present in the file |
|
|
Sorted list of schema names present in the file |
|
|
True if any |
|
|
True if any |
|
|
True if |
|
|
True if |
|
|
True if |
|
|
True if |
|
|
True if |
Capability flags are derived from schema names, not topic names.
MCAP channels per embodiment#
All embodiments share:
Topic |
Schema |
FiftyOne viewer tile |
|---|---|---|
|
|
Image — Aria glasses worn by the human operator, JPEG ~30 fps |
|
|
3D — dynamic |
|
|
3D — human body path as a polyline in world frame |
|
|
3D — 21-sphere hand skeleton in world frame (absent in some episodes) |
|
|
Message + Plot — JSON: 2D landmarks, wrist world coords, palm normals |
|
|
Message + Plot — JSON: |
|
|
3D — RGBA colored Leica room scan in world frame (1 message, static) |
Gripper-only additions (74 episodes):
Topic |
Schema |
Notes |
|---|---|---|
|
|
Gripper-mounted Aria RGB, JPEG ~30 fps |
|
|
|
|
|
Gripper path polyline in world frame |
|
|
Same schema as human |
|
|
Same schema as human |
wardrobe_2 gripper only (8 episodes, richest):
Topic |
Schema |
Notes |
|---|---|---|
|
|
DIGIT tactile sensor left finger, ~20 fps |
|
|
DIGIT tactile sensor right finger, ~20 fps |
|
|
JSON: |
|
|
iPhone 1 RGB, JPEG ~30 fps |
|
|
iPhone depth-to-point-cloud in world frame, ~30 fps |
|
|
Leica room scan (same data as |
UMI-only addition (8 episodes):
Topic |
Schema |
Notes |
|---|---|---|
|
|
UMI gripper path polyline in world frame |
Custom JSON schemas#
hoi.ForceWrench, hoi.HandTracking, and hoi.EyeGaze are JSON schemas
with no built-in decoder in FiftyOne 1.21.0. They appear in the Message tile
as raw JSON. Their numeric fields (fx, fy, fz, left_yaw_rads,
depth_m, etc.) are chartable in the Plot tile.
Saved views#
The dataset ships with 8 saved views:
View |
Count |
Description |
|---|---|---|
All Modalities |
8 |
wardrobe_2 gripper — every channel including force and tactile |
Gripper |
74 |
All gripper episodes across 7 scenes |
Hand |
6 |
Human hand only, wardrobe_2 |
UMI |
8 |
UMI gripper + trajectory, wardrobe_2 |
Open interactions |
43 |
Episodes where the object is opened |
Close interactions |
45 |
Episodes where the object is closed |
Has 3D point cloud |
88 |
All episodes (all have a Leica room scan) |
Has eye gaze + hand tracking |
80 |
Episodes where Plot tile fields are available |
3D viewer setup#
Set the 3D tile reference frame to world. All geometry — point clouds,
trajectory polylines, hand skeleton spheres, and FrameTransform edges — uses
frame_id = "world". FrameTransform messages are dynamic (high-rate pose
updates tracking the human and gripper), not static rig extrinsics. No
CameraCalibration messages exist, so there are no frustum overlays.
Timestamps in the MCAP files are nanoseconds elapsed from a session-relative origin, not Unix epoch. The timeline shows elapsed seconds; duration values are correct.
Parsing decisions#
One sample per episode. The interaction splitting JSON (
interaction_splitting_info_{id}_confirmed.json) defines window boundaries per scene. Each MCAP file corresponds to one confirmed window.Capability flags from schema names. Topic-name matching produces false positives (e.g.
/os_node/imu_packetswould match an IMU substring). Flags are set from the schema registry instead.wardrobe_2 has no confirmed JSON. Windows for wardrobe_2 were not recoverable from the confirmed annotation file, so no
window_start_nsorwindow_end_nsfields are attached for those 22 episodes.
Viewer limitations of this extract#
No image projection of 3D geometry. The FiftyOne MCAP viewer can overlay 3D landmarks onto a 2D camera image when (1) a
CameraCalibrationmessage exists, (2) the image channel declares its calibration topic via channel metadata, and (3) the image topic’s last path segment containsimage_raw,image_rect, orimage_rectified. None of these conditions are met: noCameraCalibrationmessages exist in any of the 88 files, the calibration linkage metadata was never written, and the image topics use/imagewithout a suffix. As a result, the 3D hand skeleton renders in the 3D tile only — it is not projected onto the Aria or iPhone camera images. The calibration files exist in the raw Bonndata release but were not packaged into the MCAP files.iPhone depth absent outside wardrobe_2 gripper. The iPhone 13 Pro has a LiDAR scanner, so every session with an iPhone captured depth. However, the depth-to-point-cloud channel (
/iphone_1/pointcloud) was only written into the wardrobe_2 gripper MCAP files. The 52 other episodes that include iPhone RGB images have no corresponding depth channel. The raw depth data is available in Bonndata archives (camera_depth.zipper iPhone module) but was not packaged for those locations.Force-torque and DIGIT tactile absent from 66 of 74 gripper episodes. All gripper recording sessions used the Hoi! Gripper, which always carries the force-torque sensor and DIGIT tactile sensors. The
/ft_sensor/wrench,/digit/left/image, and/digit/right/imagechannels were only written into the wardrobe_2 gripper MCAP files. The other six locations (bathroom_1, bedroom_1, fridge_1, kitchen_7, office_1, oven_2) have gripper RGB and Leica point cloud but no force or tactile channels. The raw force and tactile data is available in Bonndata archives for those locations.
Dataset Creation#
Curation Rationale#
Existing articulation and manipulation datasets either provide scale without force sensing, or provide force sensing without multi-view or multi-embodiment coverage. The dataset was designed to pair “what is seen” with “what is done and what is felt” across human and robotic embodiments operating the same objects, to support research that links visual perception to physical interaction forces.
Source Data#
Data Collection and Processing#
Seven human demonstrators operated articulated household objects under four conditions: human hand only, human hand with wrist camera, UMI gripper, and Hoi! Gripper. Recording sessions covered 3–11 articulated parts per session. A dynamic QR code encoding the current Unix timestamp was displayed to all cameras to enable temporal alignment. Each scene was scanned with a Leica RTC360 before and after interaction, yielding 2–5 point clouds per location that served as ground truth geometry and the shared spatial reference frame.
Time alignment was performed in post-processing using the QR-code timestamps, achieving ~10–25 ms accuracy per stream. Spatial alignment used hloc visual localization against the Leica scan database, estimating a single rigid transformation per device trajectory into the common world frame. Trajectory accuracy against Qualisys motion-capture ground truth: RMSE position ≤ 6 mm, RMSE rotation ≤ 16 mrad.
The Hoi! Gripper’s 6-DoF force-torque sensor (Bota SensONE) operates at 100 Hz with accuracy < 2% across all axes and a noise-free resolution of 70–100 mN / 0.6–2.1 mNm at 100 Hz. Gravity compensation was applied by estimating sensor biases during no-contact windows and subtracting the gravitational component using the known end-effector mass and center of mass. A Butterworth filter of order 4 was applied to the compensated signals.
The dataset was recorded primarily in the exhibition area of a furniture store, with additional sequences in a university lab and private apartments.
Who are the source data producers?#
Seven human demonstrators collected all interaction data. No details about their demographics are provided in the paper.
Annotations#
Annotation process#
Interaction boundaries were identified automatically using the QR-code timing signal and verified manually with a lightweight annotation tool. Articulation type (prismatic or revolute) and axis were annotated using the ArtiPoint annotation tool. 3D object masks were generated by prompting SAM v2 on panoramic images and lifting the predicted mask to 3D using the point cloud.
Who are the annotators?#
[More Information Needed]
Personal and Sensitive Information#
The dataset was collected in public and semi-public spaces. Face anonymization was applied to the released RGB streams using EgoBlur. The MCAP files in this FiftyOne extract contain the anonymized images.
Citation#
BibTeX:
@InProceedings{Engelbracht_2026_CVPR,
author = {Engelbracht, Tim and Zurbrügg, René and Wohlrapp, Matteo and
Büchner, Martin and Valada, Abhinav and Pollefeys, Marc and
Blum, Hermann and Bauer, Zuria},
title = {Hoi! - A Multimodal Dataset for Force-Grounded, Cross-View
Articulated Manipulation},
booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and
Pattern Recognition (CVPR)},
month = {June},
year = {2026},
pages = {8880--8890}
}
APA:
Engelbracht, T., Zurbrügg, R., Wohlrapp, M., Büchner, M., Valada, A., Pollefeys, M., Blum, H., & Bauer, Z. (2026). Hoi! — A Multimodal Dataset for Force-Grounded, Cross-View Articulated Manipulation. CVPR 2026, 8880–8890.
More Information#
The full Hoi! dataset (3048 sequences, 38 scenes, 381 articulated objects) is available at bonndata.uni-bonn.de. Raw streams per scene — including ZED Mini stereo video, Aria depth, iPhone RGB-D, and full calibration files — are available as zip archives from Bonndata; they are not included in this FiftyOne extract.
The dev kit and data processing pipeline are at github.com/timengelbracht/hoi-dataset-tools.