Spaces:
Running
Running
Reachy Mini Choreography Guide
This guide provides physics rules and artistic principles for creating custom movements. Referenced by get_choreography_guide tool and used when creating sequences via execute_sequence.
1. Physical Constraints
Head Movement
| Axis | Range | Sign Convention |
|---|---|---|
| Roll (Tilt L/R) | ±45° | Positive = Tilt Right |
| Pitch (Up/Down) | ±45° | Negative = Look UP, Positive = Look DOWN |
| Yaw (Turn L/R) | ±65° | Positive = Robot's Left |
Body Rotation
| Axis | Range | Notes |
|---|---|---|
| body_yaw | ±160° | Full rotation works! 170° = facing away |
Antennas
| Parameter | Range | Notes |
|---|---|---|
| Both | ±90° | 0° = vertical/neutral |
| Individual | ±90° | Use left_antenna_amplitude / right_antenna_amplitude in generate_motion |
Expressiveness:
- Forward (+): Alert, interested, angry (if rigid)
- Backward (-): Sad, scared, aerodynamic
- Asymmetric: Confused, playful (one up, one down)
2. Timing & Smoothness
| Speed | Duration | Use Case |
|---|---|---|
| Fast | 0.2-0.3s | Small twitches, excitement |
| Normal | 0.5-1.0s | Looking around |
| Slow | 1.5s+ | Breathing, sad movements |
Rules:
- Use minimum-jerk / S-curve easing for smooth motion
- Head motions ≤ 4 Hz overall
- Antenna flicks ≤ 0.12s each
- Design for 80% of limits unless user asks for "big/extreme"
Velocity Limits (Soft)
| Component | Max Speed |
|---|---|
| Head yaw | 120°/s |
| Head pitch | 90°/s |
| Head roll | 90°/s |
| Body yaw | 90°/s |
3. Using generate_motion
For continuous procedural animations, use generate_motion with these motion types:
| Type | Best For | Key Parameters |
|---|---|---|
nod |
Yes/agreement | pitch_amplitude=12-20°, tempo=1.5-3.0 Hz |
shake |
No/disagreement | yaw_amplitude=14-22°, tempo=1.5-2.5 Hz |
sway / groove |
Dancing | yaw_amplitude=10-16°, roll_amplitude=6-12°, tempo=0.8-1.6 Hz |
spiral / figure8 |
Playful loops | yaw=16-24°, pitch=8-14°, tempo=0.6-1.2 Hz |
bounce |
Energetic | z_offset=6-12mm, tempo=1.3-2.2 Hz |
peek |
Peek-a-boo style | Duck + peek side to side |
dizzy |
Wobbly circles | Small yaw=18°, pitch=8°, roll=6-10° |
Advanced Parameters
- Drift:
z_drift=0.02for rising "snake charmer" effect - Start offset:
z_start_offset=-0.02+z_drift=0.02for crouch→rise - Antenna control:
left_antenna_amplitude,right_antenna_amplitudefor individual control - Body swivel:
body_yaw_amplitudefor dancing turns
4. Choreography Patterns
"The Breath" (Idle/Calm)
Gentle, slow pitch movement with slight antenna swaying.
goto_pose(pitch=5, duration=2.0) # Inhale/Up
goto_pose(pitch=0, duration=2.0) # Exhale
"The Scan" (Searching)
Head stays level (pitch 0), yaw sweeps, antennas alert.
goto_pose(yaw=-30, duration=1.0) # Look left
goto_pose(yaw=30, duration=1.0) # Look right
"The Jiggle" (Excitement)
Use generate_motion for rapid oscillation:
generate_motion(motion_type="groove", roll_amplitude=8, tempo=2.0, duration=1.0)
5. Safety Rules
- Collision avoidance: If pitch < -20° (looking down hard), keep antennas < 20°
- Speed limits: Required speed ≈ Δangle / duration. If exceeding limits, increase duration
- Coupling: If
body_yaw_amplitude > 20°, halve head yaw amplitude - Clamp to hard caps: System will scale amplitudes proportionally if needed