An industrial arm's controller streams joint-angle setpoints θcmd(t) over a fieldbus (EtherCAT/PROFINET-style) to its servo drives. This defense does not trust the bus — it re-derives what the drives should be doing from the arm's own kinematic model, and compares:
r_i(t) = | θ_actual,i(t) − θ_expected,i(t) | for each joint i
alarm = ( count[ r(t) > threshold ] over last N samples ) ≥ 0.6·N (and ≥ 2 flagged, N ≥ min(4, window))
θexpected comes from the arm's own trusted trajectory generator (a smooth, physically-continuous motion profile it was programmed with). A genuine command stream tracks this closely — only sensor noise and normal servo lag separate them. An attacker who injects forged setpoints onto the bus (replay, MITM, or a compromised HMI) produces a large, sudden residual because the injected values don't respect the arm's own motion model.
- Inject Spoofed Commands — starts a bus attack: forged joint offsets are added to the true command stream, visible as red packets flowing along the bus toward the base.
- Injection magnitude — how far (in degrees) the forged command deviates from the legitimate trajectory.
- Detection threshold — the per-sample residual (°) above which a packet is flagged suspicious (white tick on the residual chart).
- Detector window — how many recent samples the windowed vote is taken over (a CUSUM-style majority rule) before an alarm fires — larger windows resist noise but react slower.
This 2D view renders the same three revolute joints as a planar kinematic chain (each joint's rotation composes on top of its parent's, exactly as in the original spatial rig — the base joint's yaw and the shoulder/elbow pitches become three cumulative planar angles), so the residual math, the detector logic and every control behave identically to the full 3D cell. Drag the arm view to pan, scroll to zoom, and watch the bottom strip chart scroll the live residual against the threshold line.
This is the same principle behind physical-layer / model-based intrusion detection used to harden industrial robot cells and SCADA-connected actuators: it catches command injection even when the attacker holds valid network credentials, because the check is physics-based, not just cryptographic.