Test data · conditions · sources
The numbers behind PLEM.
Each figure on this page carries how it was measured and where it is published.
The controller does its work in 23 µs of a 1,000 µs cycle.
Most of that is EtherCAT send and receive. Our control math takes under 2 µs. The rest of the millisecond is headroom for inference, logging and more axes.
| Item | Result | Criterion |
|---|---|---|
| Processing per cycle | 0.0232 ms | ≤ 0.2 ms · Pass |
| Command period | 1 ms | 1 kHz |
| Period std. dev. | 0.0042 ms | ≤ 0.1 ms · Pass |
| Max period error | 0.0420 ms | reported |
| Wake-up p99 | 6.41–6.82 µs | 3 runs |
| Wake-up worst | 41.9 µs | worst of 3 runs |
| 12 axes at 1 kHz, cycle jitter | ±4.1 µs | LTA LR500172603E |
We always show the worst case next to p99.
A real-time kernel alone is not enough.
Under GPU, network and storage load, the worst-case wake-up on a stock real-time kernel still reaches 100–160 µs. Isolating CPUs for the control thread brings it into single digits.

Why EtherCAT sync collapsed every 110 seconds on Jetson, and the one-line fix.
A time-sync service was slewing the host clock by up to ±140 ppm about every 110 s. The drives followed the drifting clock. Locking it with one device-tree property removed the drift.

Better timing shows up as a straighter line.
Our 1 kHz torque controller against the arm's built-in PID and against ADRC, drawing the same 30 cm lines with a 4.5 kg swinging payload and a laser on the flange.
| Error metric | vs built-in PID | vs ADRC |
|---|---|---|
| Perpendicular to path | −32% | −10% |
| Along the path | −48% | −23% |
| Peak at reversals | — | −49% |
Source: video "PLEM torque controller, straight-line test", 2026-10-21. 30 cm lines at 5 cm/s, three passes.


Inference and 1 kHz motion on the same computer.
Policies run on the Jetson next to the control loop, measured on our own fine-tuned models.


Where the camera thinks the robot is, corrected.
"Adaptive Pair Weighting for Robust Hand-Eye Calibration": a 17,729-parameter network that trains in about 107 s on one CPU core and down-weights bad calibration pairs.
| Setting | Rotation error | Change |
|---|---|---|
| Simulation, 20 sets | 2.627° → 0.385° | −85.4% |
| Real arm, ~1.3 m, 20 sets | 8.687° → 3.522° | −59.5% |
| Real arm, translation | 24.14 → 16.81 mm | 18 / 20 sets better |
DOI 10.1016/j.robot.2026.105763 · 6-axis cobot with wrist stereo camera.


Our own controller and boards.
W-RC is a Jetson running PLEM: AI inference and 1 kHz real-time motion on one board. We design the controller and the boards ourselves in Daegu.



| W-RC controller | Spec |
|---|---|
| Compute | NVIDIA Jetson AGX Orin 64 GB, 275 TOPS INT8 |
| Control loop | 1 kHz |
| Fieldbus | EtherCAT, Modbus TCP |
| Network | 5 × GbE |
| I/O | DI 8 / DO 8 |
| Power | 90–264 VAC |
| Size · weight | 238 × 352 × 207 mm · < 11 kg |
| Tests | LTA LR500172603E · KOTCA KST-25-236 · FCC Part 15B · ICES-003 |
| WIM-CB100 board | Spec |
|---|---|
| MCU | STM32F103 |
| Ports | Dual 100BASE-TX EtherCAT, RS-485 Modbus RTU |
| I/O | DI/DO, relays, 16-bit PWM |
| Test | EtherCAT, ADC and PWM checked live on every board |
Below the application, above the chip.
We own the layers from the real-time OS down to the drives, and we build the controller and boards they run on. The drive layer of PLEM is open source: PLEM on GitHub →
10–30 Hz
→ 1 kHz
1 kHz
µs sync
| Interface | How we connect |
|---|---|
| EtherCAT drives | CiA 402 (CSP / CST), distributed clocks |
| Yaskawa | MotoROS2, proxy streaming past the 200-point limit |
| Collaborative arms | Vendor streaming APIs, real-time host in front |
| KUKA | Ethernet KRL interface bridge |
| Actuators | CAN-FD, RS-485 Modbus RTU as ros2_control plugins |
| Software | ROS 2, ros2_control, Isaac Sim, TensorRT |