
Productive Robotics
Real-Time Motion Control
Built the 1 kHz motion core a production robot runs on.
The Problem
A production welding robot needs motion that is deterministic to the millisecond — a control loop that never misses its deadline, trajectories that stay smooth under load, and encoders that read true from the first power-on. Miss a cycle and the consequence isn't an HTTP 500; it's a physical robot moving wrong in the real world.
The Approach
Built the real-time motion core in C++: a hard 1 kHz EtherCAT control loop with a thread-safe dispatcher and zero heap allocation inside the loop, converting splined joint-space trajectories into per-cycle position and velocity commands. Layered a hybrid EtherCAT/CAN scheme onto one clock so both fieldbuses stay phase-aligned, a quintic→cubic→linear continuity cascade with bounded jerk for smooth motion, and nonius (vernier) absolute-encoder calibration so joints know their true position without a homing move. A real-time motor dashboard exposes live telemetry, PID tuning, and per-joint fault diagnostics, and a hardware-in-the-loop simulator runs the whole stack without physical motors.
The Outcome
The loop holds 1 kHz with zero phase drift across fieldbuses and coordinates a multi-axis gantry in the field. Hardening the stack for continuous duty eliminated a cascading memory leak (−60% footprint) and pushed three robot platforms to 12+ hours of autonomous operation — including one fault traced across four layers, from a browser memory leak down to a physical robot fault during a live run.