Your virtual Reachy
SIMULATION · NO HARDWARE CONNECTIONLoading the local manufacturer geometry…
Drag to orbit · scroll or pinch to zoom · camera buttons work with a keyboard. No automatic spinning.
Simulated pose: home
Manufacturer mechanical geometry + simplified teaching electronics. Green boards and servo cutaways are schematic. Exploded view is not a repair sequence. Keep the real robot assembled.
Explore or program the robot
A robot is a team of parts. Let’s meet them.
Find the six head linkages: each servo turns an arm; a rod connects that arm to the shared head platform.
Nine servos, one robot
Six head servos cooperate. One body servo rotates the mechanism above the foot, and two antenna servos add expression. Choose a name above or select a marker in the drawing.
Find it: which parts transmit force, and which connections carry messages?
Real Python. A pretend robot. No installation, API key, camera, or microphone needed.
Indent with four spaces. Tab moves to the next control. Never paste secrets or API keys. Downloads are for this simulator, not the real robot.
Waiting for the 3D model…
Python creates a plan; the virtual robot plays it after a successful run.
Pretend senses: change the experiment
No real camera or microphone. These are test inputs for your Python decisions.
What Python and robot commands work?
Real Python via local Pyodide: variables, strings, lists, loops, functions, conditions, and standard-library modules such as math. No package installs or network access.
reachy_sim is this lab’s teaching adapter, not the full Reachy SDK. Use ReachyMini(), create_head_pose(), goto_target(), get_pose(), say(), wait(), look(), and listen(). get_pose() reports the planned target, not measured feedback. Each Run starts at home.
create_head_pose() defaults to degrees and metres, like SDK 1.10.0. Use degrees=False for radians or mm=True for millimetres. It returns a teaching dictionary, not the SDK’s 4×4 matrix. Body and antenna targets always use radians; antennas=[right, left] from Reachy’s viewpoint.
The lab keeps an omitted body target unchanged. The real SDK instead defaults body_yaw to 0.0; hardware lessons pass body_yaw=None explicitly. The lab limits head roll/pitch to ±20°, head yaw to ±30°, body to ±45°, antennas to ±60°, x/y to ±10 mm, and z to ±15 mm. Each action lasts 0.1–5 seconds. Combined poses can still be unreachable.
At most 60 actions / 60 seconds of playback and 3 seconds of Python computation. Stop ends the worker and playback. Reduced-motion settings show pose steps without tweening. Speech uses a text bubble only; thinking in these examples uses Python rules, not cloud AI.
The linkage solver is geometric: no torque, collisions, real motor readings, or calibration. Passing here is not proof a program is safe on hardware. Use the course’s checked examples for the real robot.
Where energy starts
Battery and power board in the Wireless base. The body servo rotates the mechanism above the foot.
Six servos, one head
Each geared motor turns an arm. Six rods connect to one platform: a parallel mechanism.
The head’s busy workshop
Camera, antennas, head board, compute module and cooling. Green teaching parts fill gaps in the CAD model.
One servo, three ways to name it
“Motor 1” in the head assembly means stewart_1 in software and electronic ID 11 in the default configuration. It does not mean bus ID 1. CAD instance suffixes are a fourth, unrelated numbering system; they are not servo IDs.
| Assembly / function | Software name | Bus ID |
|---|---|---|
| Body / foot motor | body_rotation | 10 |
| Head motor 1 | stewart_1 | 11 |
| Head motor 2 | stewart_2 | 12 |
| Head motor 3 | stewart_3 | 13 |
| Head motor 4 | stewart_4 | 14 |
| Head motor 5 | stewart_5 | 15 |
| Head motor 6 | stewart_6 | 16 |
| Right antenna | right_antenna | 17 |
| Left antenna | left_antenna | 18 |
For a repaired, reconfigured, or different-revision robot, compare its installed configuration and adult-observed scan. This explorer cannot certify your unit’s labels or diagnose a loose wire.
A message is not a movement
- Python asks for a pose
“Tilt the head a little over two seconds.” This describes the whole head, not one motor.
- The SDK coordinates the team
It calculates joint targets. Messages use electronic addresses to reach the intended servos.
- Each servo checks its shaft
Motor + gears + position sensor + controller: measure, compare with the target, and correct.
- Linkages move the platform
Arms and rods transmit force. Watch the result; a sent command is not proof of successful movement.
The wiring fact that matters
The Wireless assembly guide joins 1–2, 2–3, 4–5, 5–6, then 3–4. Those head-motor neighbor links are shown in cable mode. Controller, body, and antenna entry paths are not reconstructed here. The all-nine view instead shows logical communication; its hub and lines do not represent a physical star harness.
The three line colors distinguish power, return, and data only; they are not a plug-color or pin-order guide. A cable’s connectors can pass the shared bus along without each motor forwarding packets like a relay. A missing motor may have a cable, power, configuration, or motor fault. Its ID alone cannot prove which.
Try a two-minute scavenger hunt
- Make the shell transparent. Find the head servo team.
- Select head servo 1. Say its software name and electronic ID.
- Show head cable neighbors. Find the often-missed 3–4 link.
- Explode the drawing. Name one force-carrying part and one data-carrying connection.
- Return to Mission 2. Explain why head roll is not an individual servo angle.
Sources, accuracy, and offline use
Geometry and joint locations: Pollen Robotics, SDK v1.10.0. Motor IDs: pinned hardware configuration. Neighbor links and electronics references: official Wireless assembly guide, steps 5–8, 13–17, 21, and 27–30, checked 9 September 2026. The model preserves the source mechanical meshes and adds simplified electronics. It is not a complete manufacturing assembly; board shapes, components, gear layouts, and wiring routes are illustrative.
The explorer bundles Three.js, STL files, and Pyodide browser Python locally, with no runtime CDN, telemetry, robot API, or cloud AI. Use npm run serve from the course project for the worker’s network restrictions. Opening this page directly as a file is not supported. If WebGL fails, the motor list remains available but robot playback is disabled. Geometry license · Three.js license · Pyodide license.