Skip to main content
Real-Time Motion Control

Productive Robotics

Real-Time Motion Control

1 kHzreal-time control loophybrid EtherCAT/CAN, zero drift
−60%memory footprintcascading leak eliminated
12+ hrautonomous operationhardened across 3 platforms
7-axiscoordinated motionOB7 collaborative arm

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.

C++EtherCATReal-TimeMotion ControlRobotics