Back to Journal
Tuesday, December 16, 2025win4 min read

First Successful Coordinated Movement

After 3 hours of coordinate system confusion, Reachy finally moved the way I intended. The breakthrough moment.

Three hours. That's how long it took to understand why my head movements were going the wrong direction.

The Problem

I kept sending commands like goto_target(head=create_head_pose(z=20)) expecting the head to tilt forward. Instead, it was tilting... somewhere else. The documentation mentioned "Z is forward/backward" but forward relative to what?

The Debugging Session

Claude Code was actually helpful here. I described the behavior I was seeing:

"When I set z=20, the head tilts to the right instead of forward. When I set roll=20, it tilts forward."

Claude's response pointed me to the coordinate frame origin. The SDK uses a body-centric coordinate system where: - Z is actually the vertical axis (up/down from the robot's perspective) - Roll controls the forward/backward tilt - Yaw controls left/right rotation

The Fix

python# What I was doing (wrong mental model)

# What I needed (correct mental model) head = create_head_pose(roll=10, mm=True, degrees=True) # Forward tilt ```

The Moment

When it finally worked — when Reachy turned its head to look at me and wiggled its antennas — I literally laughed out loud. There's something about a robot responding to your commands correctly for the first time that never gets old.

Lesson Learned

Always verify coordinate systems empirically. Documentation can be ambiguous. Send small test commands and observe before building complex sequences.