CoolFace
Datasetpublic

BastienATOS/mini-reachy-animation

Reachy Mini Animation Dataset Multi-view renders of 85 emotional animations performed by the Reachy Mini robot, paired with the full robot joint state for every single frame. Source of the animations. The emotional animations rendered here come from the official pollen-robotics/reachy-mini-emotions-library dataset by Pollen Robotics. This dataset re-renders those emotions from 12 camera angles (with 3 background variants) and pairs every frame with the robot's joint state.… See the full description on the dataset page: https://huggingface.co/datasets/BastienATOS/mini-reachy-animation.

sourceHugging Facemitupdated 2mo agoView on Hugging Face
1likes922downloads
Dataset Card

Reachy Mini Animation Dataset

Multi-view renders of 85 emotional animations performed by the Reachy Mini robot, paired with the full robot joint state for every single frame.

Source of the animations. The emotional animations rendered here come from the official **pollen-robotics/reachy-mini-emotions-library** dataset by Pollen Robotics. This dataset re-renders those emotions from 12 camera angles (with 3 background variants) and pairs every frame with the robot's joint state.

Each animation (e.g. amazed1, curious1, sad2) is rendered from 12 camera angles, and every frame comes in 3 background variants (normal, black, white) together with the exact articular state of the robot at that instant. This makes the dataset suitable for imitation / behavior learning, emotion or pose recognition, multi-view perception, novel-view synthesis, and robot-animation generation.

  • Rows: 309,888 (one row = one frame × camera angle)
  • Emotions / animations: 85
  • Camera angles: 12
  • Image variants per frame: 3 (normal / black bg / white bg)
  • Image resolution: 1280 × 720, RGBA (PNG)
  • Video renders: 6,120 clips (mp4 + gif), in videos/

Dataset structure (viewer)

The Dataset Viewer is powered by the Parquet files under data/. Each row has the following columns:

ColumnTypeDescription
emotionstringAnimation name (e.g. amazed1, dance2, sleep1)
anglestringCamera viewpoint (see list below)
frameint32Frame index within the animation
timestampfloat32Time (seconds) of the frame within the animation
head_jointslist<float> (7)Head actuator joint angles (rad)
passive_jointslist<float> (21)Passive / linkage joint angles (rad)
antennaslist<float> (2)Antenna positions (left, right)
head_poselist<float> (16)Head pose as a flattened 4×4 transform matrix
imageImageRender on the normal background
image_blackImageSame frame rendered on a black background
image_whiteImageSame frame rendered on a white background

The frame count varies per animation (from ~170 to ~3000 frames), so the number of rows per emotion varies accordingly.

Camera angles (12)

45_back_left   45_back_right   45_front_left   45_front_right
back           bottom          close_up        front
left           right           spherical_45_30 top

Emotions / animations (85)

amazed1        anxiety1       attentive1     attentive2     boredom1
boredom2       calming1       cheerful1      come1          confused1
contempt1      curious1       dance1         dance2         dance3
disgusted1     displeased1    displeased2    downcast1      dying1
electric1      enthusiastic1  enthusiastic2  exhausted1     fear1
frustrated1    furious1       go_away1       grateful1      helpful1
helpful2       impatient1     impatient2     incomprehensible2  indifferent1
inquiring1     inquiring2     inquiring3     irritated1     irritated2
laughing1      laughing2      lonely1        lost1          loving1
mini-deep-sleep  no1          no_excited1    no_sad1        oops1
oops2          proud1         proud2         proud3         rage1
relief1        relief2        reprimand1     reprimand2     reprimand3
resigned1      sad1           sad2           scared1        serenity1
shy1           sleep1         success1       success2       surprised1
surprised2     thoughtful1    thoughtful2    tired1         toc-toc-toc
uncertain1     uncomfortable1 understanding1 understanding2 waiting
wake-mini-up   welcoming1     welcoming2     yes1           yes_sad1

Repository layout

mini-reachy-animation/
├── README.md
├── data/                              # Parquet shards -> power the Dataset Viewer
│   ├── train-00000-of-00085.parquet   # one shard per animation
│   ├── train-00001-of-00085.parquet
│   └── ...                            # 85 shards, images + joint states embedded
└── videos/                            # Rendered clips (not in the table view)
    └── <emotion>/
        └── <angle>/
            ├── <emotion>_<angle>_24fps.mp4
            ├── <emotion>_<angle>_30fps.mp4
            ├── <emotion>_<angle>_60fps.mp4
            ├── <emotion>_<angle>_144fps.mp4
            ├── <emotion>_<angle>_24fps.gif
            └── <emotion>_<angle>_50fps.gif
The data/ Parquet files contain everything needed for training (frames + joint states) and are what the Dataset Viewer renders. The videos/ folder holds the same animations as ready-to-play clips at several frame rates, browsable from the Files tab and downloadable on demand — they are intentionally kept out of the tabular view.

Usage

Load the tabular dataset

python
from datasets import load_dataset

ds = load_dataset("BastienATOS/mini-reachy-animation", split="train")
print(ds)
row = ds[0]
print(row["emotion"], row["angle"], row["frame"], row["timestamp"])
row["image"].show()          # PIL.Image (normal background)
row["image_black"]           # same frame, black background
print(len(row["head_joints"]), "head joints")

Stream without downloading everything

python
ds = load_dataset("BastienATOS/mini-reachy-animation", split="train", streaming=True)
for row in ds:
    print(row["emotion"], row["angle"], row["frame"])
    break

Filter one animation / one viewpoint

python
front = ds.filter(lambda r: r["emotion"] == "curious1" and r["angle"] == "front")

Download a rendered video clip

python
from huggingface_hub import hf_hub_download

path = hf_hub_download(
    repo_id="BastienATOS/mini-reachy-animation",
    repo_type="dataset",
    filename="videos/amazed1/front/amazed1_front_60fps.mp4",
)
print(path)

Data description

Every animation is a scripted emotional behavior for the Reachy Mini head. For each frame the robot's articular state is recorded:

  • `head_joints` — the 7 actuated head joints (rad).
  • `passive_joints` — 21 passive / linkage joint angles resulting from the mechanism.
  • `antennas` — left/right antenna positions, a key expressive channel of Reachy Mini.
  • `head_pose` — the head's 6-DoF pose as a flattened 4×4 homogeneous matrix.
  • `timestamp` — the time of the frame within the animation.

The same frame (identified by emotion + frame) is available from all 12 camera angles and in the 3 background variants, enabling multi-view and background-robust training.

Source & acknowledgements

The emotional animations are sourced from the **pollen-robotics/reachy-mini-emotions-library** dataset by Pollen Robotics. This dataset contributes the multi-view rendering (12 camera angles × 3 background variants) and the per-frame robot joint states. All credit for the original emotion library goes to Pollen Robotics; please also cite their dataset if you use this one.

License

Released under the MIT license.

BastienATOS/mini-reachy-animation · CoolFace