This implementation was checked against both Synthiam's published EZ-B protocol and a local ARC installation with the factory JD project (bot.EZB):
- Official protocol: https://synthiam.com/Support/EZB-Firmware/communication-protocol
- ARC robot-skill documentation: https://synthiam.com/Support/Skills/Skills-Overview
The original .EZB remains read-only. Export scripts create Commander's versioned assets.
| ARC capability | Commander implementation |
|---|---|
| Auto Position (127 frames, 39 actions) | Safe motion library, risk tiers, recorder, editable frames/timelines, mirroring, trim profiles |
| RGB Animator | Exact official 18-LED I²C encoding, all 13 factory animations, solid/per-LED color control, bounded flow/MCP actions |
| Soundboard v4 | All 10 factory tracks, 63 timestamped action/eye cues, uploads, volume and MP4-independent audio playback |
| Camera Device | One fan-out camera connection, MJPEG, snapshots, neural objects, color/QR/face/ArUco modes |
| Point and Track | Bounded target centering plus a single-arm point gesture; D0 pan is opt-in because this unit's pan servo is faulty |
| Camera movement tracking | Low-cost frame differencing, flow triggers, automatic pre/post-roll MP4 event clips |
| Wii Remote control | Browser Gamepad API and virtual joystick with a required deadman control |
| EZ-Script automation | Bounded visual flows, including eyes/grippers/sounds and a sensor-polling repeat_until primitive |
The command client and simulator now share implementations for:
- CPU temperature;
- ADC A0-A7 and digital D0-D23;
- PWM output;
- configured I²C reads/writes and clock rate;
- UART0/1/2 initialize, write, available and read;
- RGB eye-board writes at the factory address
0xA0.
Commander deliberately does not scan I²C addresses. The eye board stays disabled on physical hardware until a human confirms it is connected. Raw digital/PWM output is human-only, requires an explicit confirmation, and refuses every port assigned to a JD servo.
- Stage: eyes, semantic grippers, soundboard, deterministic vision, Point-and-Track, clips, and named sensor diagnostics.
- Teleop: virtual joystick and any standard browser gamepad. Releasing A/LB or the pointer stops and holds.
- Recorder: live-pose frame capture, mirrored frames, ordered action timelines, risk/abort policy, and calibration profiles.
- Digital Twin: orbitable Three.js model articulated by the same live servo telemetry shown elsewhere.
- Flows/MCP: composition and agent access use the ordinary service endpoints, so battery, tier, rate, travel and connection guardrails remain centralized.
python scripts/export_actions.py
python scripts/export_eyes.py
python scripts/export_soundboard.pyThe eye export contains all 13 factory animations. The sound export is deterministic: rerunning it replaces only ARC-derived tracks, preserves uploads, and produces stable IDs from the source audio.
D0 head pan is recorded as non-working on this robot. Tracking therefore enables tilt only by default and reports that limitation in the API. It can be explicitly re-enabled after the servo is repaired; no software path silently assumes it works.