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.02` for rising "snake charmer" effect | |
| - **Start offset**: `z_start_offset=-0.02` + `z_drift=0.02` for crouch→rise | |
| - **Antenna control**: `left_antenna_amplitude`, `right_antenna_amplitude` for individual control | |
| - **Body swivel**: `body_yaw_amplitude` for 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 | |
| 1. **Collision avoidance**: If pitch < -20° (looking down hard), keep antennas < 20° | |
| 2. **Speed limits**: Required speed ≈ Δangle / duration. If exceeding limits, increase duration | |
| 3. **Coupling**: If `body_yaw_amplitude > 20°`, halve head yaw amplitude | |
| 4. **Clamp to hard caps**: System will scale amplitudes proportionally if needed | |