kinder-bench/kinder-datasets

Dataset

KinDER Demonstration Datasets

0

5 commits

3 linked in READMEs

updated May 7, 2026

See the code

README

KinDER Demonstration Datasets

Human-collected robot demonstration datasets for the KinDER physical-reasoning benchmark (RSS 2026).

These datasets are used to train the imitation learning baselines (kinder-imitation-learning) and the model-based RL baseline (kinder-mbrl) shipped with KinDER.


Dataset summary

FileKinDER environmentEpisodesTotal stepsMean ep. length
motion2d_p0.hdf5Motion2D-p01114 63441.7
stickbutton2d_b1.hdf5StickButton2D-b11148 14171.4
dynobstruction2d_o1.hdf5DynObstruction2D-o11018 90188.1
dynpushpullhook2d_o5.hdf5DynPushPullHook2D-o510322 435217.8
BaseMotion3D_110.hdf5BaseMotion3D1102 78525.3
shelf3d_106_new.hdf5Shelf3D10646 598439.6
sweep3d_100.hdf5SweepIntoDrawer3D10051 741517.4
transport3D_o2.hdf5Transport3D-o2117126 8601 084.3
Total862272 095

Data collection

2D environments (motion2d, stickbutton2d, dynobstruction2d, dynpushpullhook2d): Demonstrations were collected using a PS5 controller.

3D environments (BaseMotion3D, shelf3d, sweep3d, transport3D): Demonstrations were collected using an iPhone web app (XR Browser) or a VR headset, streaming 6-DoF pose commands to the TidyBot robot in simulation.


File format

Every .hdf5 file follows the same schema:

data/
  demo_0/
    actions       (T, action_dim)   β€” control commands applied at each step
    obs/
      robot_state (T, robot_dim)    β€” proprioceptive robot state
      env_state   (T, env_dim)      β€” environment / object state
      image       (T, 224, 224, 3)  β€” top-down / scene RGB image  [2D envs]
      base_image  (T, 224, 224, 3)  β€” robot base camera           [3D envs]
      wrist_image (T, 224, 224, 3)  β€” robot wrist camera          [3D envs]
      overview_image (T, 224, 224, 3) β€” static overview camera    [3D envs]
  demo_1/
    ...

All images are uint8 RGB arrays of shape (T, 224, 224, 3).
State and action arrays are float32.

Per-dataset dimensions

2D environments

Fileaction_dimrobot_dimenv_dimCameras
motion2d_p0.hdf55910image
stickbutton2d_b1.hdf55919image
dynobstruction2d_o1.hdf552444image
dynpushpullhook2d_o5.hdf5524106image

3D environments (TidyBot)

Fileaction_dimrobot_dimenv_dimCameras
BaseMotion3D_110.hdf511193base, wrist, overview
shelf3d_106_new.hdf5112223base, wrist, overview
sweep3d_100.hdf51122131base, wrist, overview
transport3D_o2.hdf5111948base, wrist, overview

3D action space (11-dim): [base_x, base_y, base_yaw, joint_1, …, joint_7, gripper] β€” delta joint-position commands.

3D robot state (19–22-dim): base pose + joint angles + joint velocities + gripper state.


Loading the data

With h5py (any baseline)

import h5py
import numpy as np

with h5py.File("sweep3d_100.hdf5", "r") as f:
    episodes = list(f["data"].keys())           # ["demo_0", "demo_1", ...]
    ep = f["data"][episodes[0]]
    actions     = ep["actions"][:]              # (T, 11)
    robot_state = ep["obs"]["robot_state"][:]   # (T, 22)
    env_state   = ep["obs"]["env_state"][:]     # (T, 131)
    base_image  = ep["obs"]["base_image"][:]    # (T, 224, 224, 3)

With kinder-mbrl (world model training)

python experiments/train_world_model.py \
    --mode train \
    --hdf5_path sweep3d_100.hdf5 \
    --output_dir output \
    --epochs 1000

The training script reads robot_state and env_state from obs/ and computes per-step (state, action, delta) transitions automatically.

With kinder-imitation-learning (Diffusion Policy)

Convert raw demos to the diffusion policy format:

cd kinder-baselines/kinder-models/scripts
python demos_to_hdf5.py \
    --teleop_data_dir $YOUR_DATA_DIR \
    --output_path $OUTPUT_HDF5_PATH \
    --render_images

Then train:

cd ~/kinder-diffusion-policy
mamba activate robodiff
python train.py --config-name=train_sweep3d_image

Baselines trained on this data

BaselineReference
Diffusion Policy (DP)kinder-imitation-learning
DP + Environment States (DPES)kinder-imitation-learning
Finetuned Ο€0.5 VLAkinder-openpi
MLP World Model + Random-shooting MPCkinder-mbrl

Citation

If you use these datasets, please cite the paper: KinDER: A Physical Reasoning Benchmark for Robot Learning and Planning:

@inproceedings{huang2026kinder,
  title     = {KinDER: A Physical Reasoning Benchmark for Robot Learning and Planning},
  author    = {Huang, Yixuan and Li, Bowen and Saxena, Vaibhav and Liang, Yichao and Mishra, Utkarsh and Ji, Liang and Zha, Lihan and Wu, Jimmy and Kumar, Nishanth and Scherer, Sebastian and Xu, Danfei and Silver, Tom},
  booktitle = {Robotics: Science and Systems (RSS)},
  year      = {2026}
}
demonstrations
hdf5
imitation-learning
kinder
model-based-rl
mujoco
robotics

Contributors

kinder-bench

5 commits

kinder-bench/kinder-datasets

Dataset

KinDER Demonstration Datasets

0

5 commits

3 linked in READMEs

updated May 7, 2026

See the code

README

KinDER Demonstration Datasets

Human-collected robot demonstration datasets for the KinDER physical-reasoning benchmark (RSS 2026).

These datasets are used to train the imitation learning baselines (kinder-imitation-learning) and the model-based RL baseline (kinder-mbrl) shipped with KinDER.


Dataset summary

FileKinDER environmentEpisodesTotal stepsMean ep. length
motion2d_p0.hdf5Motion2D-p01114 63441.7
stickbutton2d_b1.hdf5StickButton2D-b11148 14171.4
dynobstruction2d_o1.hdf5DynObstruction2D-o11018 90188.1
dynpushpullhook2d_o5.hdf5DynPushPullHook2D-o510322 435217.8
BaseMotion3D_110.hdf5BaseMotion3D1102 78525.3
shelf3d_106_new.hdf5Shelf3D10646 598439.6
sweep3d_100.hdf5SweepIntoDrawer3D10051 741517.4
transport3D_o2.hdf5Transport3D-o2117126 8601 084.3
Total862272 095

Data collection

2D environments (motion2d, stickbutton2d, dynobstruction2d, dynpushpullhook2d): Demonstrations were collected using a PS5 controller.

3D environments (BaseMotion3D, shelf3d, sweep3d, transport3D): Demonstrations were collected using an iPhone web app (XR Browser) or a VR headset, streaming 6-DoF pose commands to the TidyBot robot in simulation.


File format

Every .hdf5 file follows the same schema:

data/
  demo_0/
    actions       (T, action_dim)   β€” control commands applied at each step
    obs/
      robot_state (T, robot_dim)    β€” proprioceptive robot state
      env_state   (T, env_dim)      β€” environment / object state
      image       (T, 224, 224, 3)  β€” top-down / scene RGB image  [2D envs]
      base_image  (T, 224, 224, 3)  β€” robot base camera           [3D envs]
      wrist_image (T, 224, 224, 3)  β€” robot wrist camera          [3D envs]
      overview_image (T, 224, 224, 3) β€” static overview camera    [3D envs]
  demo_1/
    ...

All images are uint8 RGB arrays of shape (T, 224, 224, 3).
State and action arrays are float32.

Per-dataset dimensions

2D environments

Fileaction_dimrobot_dimenv_dimCameras
motion2d_p0.hdf55910image
stickbutton2d_b1.hdf55919image
dynobstruction2d_o1.hdf552444image
dynpushpullhook2d_o5.hdf5524106image

3D environments (TidyBot)

Fileaction_dimrobot_dimenv_dimCameras
BaseMotion3D_110.hdf511193base, wrist, overview
shelf3d_106_new.hdf5112223base, wrist, overview
sweep3d_100.hdf51122131base, wrist, overview
transport3D_o2.hdf5111948base, wrist, overview

3D action space (11-dim): [base_x, base_y, base_yaw, joint_1, …, joint_7, gripper] β€” delta joint-position commands.

3D robot state (19–22-dim): base pose + joint angles + joint velocities + gripper state.


Loading the data

With h5py (any baseline)

import h5py
import numpy as np

with h5py.File("sweep3d_100.hdf5", "r") as f:
    episodes = list(f["data"].keys())           # ["demo_0", "demo_1", ...]
    ep = f["data"][episodes[0]]
    actions     = ep["actions"][:]              # (T, 11)
    robot_state = ep["obs"]["robot_state"][:]   # (T, 22)
    env_state   = ep["obs"]["env_state"][:]     # (T, 131)
    base_image  = ep["obs"]["base_image"][:]    # (T, 224, 224, 3)

With kinder-mbrl (world model training)

python experiments/train_world_model.py \
    --mode train \
    --hdf5_path sweep3d_100.hdf5 \
    --output_dir output \
    --epochs 1000

The training script reads robot_state and env_state from obs/ and computes per-step (state, action, delta) transitions automatically.

With kinder-imitation-learning (Diffusion Policy)

Convert raw demos to the diffusion policy format:

cd kinder-baselines/kinder-models/scripts
python demos_to_hdf5.py \
    --teleop_data_dir $YOUR_DATA_DIR \
    --output_path $OUTPUT_HDF5_PATH \
    --render_images

Then train:

cd ~/kinder-diffusion-policy
mamba activate robodiff
python train.py --config-name=train_sweep3d_image

Baselines trained on this data

BaselineReference
Diffusion Policy (DP)kinder-imitation-learning
DP + Environment States (DPES)kinder-imitation-learning
Finetuned Ο€0.5 VLAkinder-openpi
MLP World Model + Random-shooting MPCkinder-mbrl

Citation

If you use these datasets, please cite the paper: KinDER: A Physical Reasoning Benchmark for Robot Learning and Planning:

@inproceedings{huang2026kinder,
  title     = {KinDER: A Physical Reasoning Benchmark for Robot Learning and Planning},
  author    = {Huang, Yixuan and Li, Bowen and Saxena, Vaibhav and Liang, Yichao and Mishra, Utkarsh and Ji, Liang and Zha, Lihan and Wu, Jimmy and Kumar, Nishanth and Scherer, Sebastian and Xu, Danfei and Silver, Tom},
  booktitle = {Robotics: Science and Systems (RSS)},
  year      = {2026}
}
demonstrations
hdf5
imitation-learning
kinder
model-based-rl
mujoco
robotics

Contributors

kinder-bench

5 commits