finds.dev← search

// the find

stefanbesler/struckig

★ 104 · Python · GPL-3.0 · updated Sep 2026

Full port of pantor ruckig library (Community version) to IEC 61131-3 Structured Text. Online Trajectory Generation. Real-time. Time-optimal. Jerk-constrained.

Struckig is a Structured Text port of the Community edition of ruckig, the online trajectory generator, for TwinCAT 3 PLCs. It is aimed at machine builders who need jerk-limited, time-optimal single-axis and synchronized multi-axis motion inside a fixed PLC task cycle, without writing their own profile math. The ruckig Pro features are not included.

The interface matches the PLC loop: you instantiate Otg with a cycle time and DOF count, call it once per cycle, and map NewPosition, NewVelocity and NewAcceleration to the axis. Synchronization is covered beyond a single-axis demo, with time sync and phase sync and worked examples for synchronized waypoints. The tests are real TcUnit suites covering known examples, generated cases and random cases, and the repo ships a benchmark harness with a plotting script.

Everything is tied to TwinCAT 3 and the Beckhoff toolchain, so the examples and unit tests cannot run from a plain host, and CI depends on zkbuild. The GPLv3 license means closed-source machine code needs the commercial license, which is a real decision for OEM builders and the README does not settle it. The port tracks a pinned ruckig submodule, so upstream fixes arrive only when someone ports them by hand, and the SmoothBrake flag deliberately departs from upstream behavior, so check it before comparing outputs against reference ruckig results. At 104 stars, the maintenance burden rests on a small project, which matters for anything you would depend on in production.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →