Skip to content

stefanbesler/struckig

Repository files navigation

Struckig logo

Instantaneous Motion Generation for Robots and Machines.
Port of ruckig to Structured Text, TwinCAT 3.

Build/Test Documentation Issues Releases GPLv3

Read the Documentation:
https://stefanbesler.github.io/struckig/

Struckig ports pantor/ruckig to Structured Text and brings open-source online trajectory generation to TwinCAT 3. It targets deterministic PLC task loops and multi-axis synchronization in machine control scenarios.

Only the Community Version of Ruckig is ported and pro features are not available. Struckig is dual licensed:

  • GPLv3 for open-source usage
  • commercial custom license for closed-source usage (contact stefan@besler.me)

Documentation

Installation

  1. Download the latest release from Releases.
  2. Add the library to your TwinCAT project.
  3. Instantiate Struckig.Otg and call otg() once per PLC cycle.

For screenshots and TwinCAT step-by-step instructions, use the installation docs.

Quick example (single axis)

PROGRAM Example
VAR
  otg : Struckig.Otg(cycletime:=0.001, dofs:=1) := (
    EnableAutoPropagate := TRUE,
    Synchronization := SynchronizationType.TimeSync,
    MinDuration := 10.0,
    MaxVelocity := [2000.0],
    MaxAcceleration := [20000.0],
    MaxJerk := [800000.0],
    CurrentPosition := [0.0],
    CurrentVelocity := [0.0],
    CurrentAcceleration := [0.0],
    TargetPosition := [100.0],
    TargetVelocity := [0.0],
    TargetAcceleration := [0.0]
  );
END_VAR

otg();

Map otg.NewPosition, otg.NewVelocity, and optionally otg.NewAcceleration to your axis interface each cycle.

Extra features

  • While the port stays close to upstream, additional behavior can be enabled via feature flags on Otg or globally in library parameters.
Flag Description
SmoothBrake In ruckig, reducing MaxVelocity below the current velocity triggers a brake ramp to velocity = 0 before transitioning to the new limit. Enable this flag to bypass that behavior and switch to the new MaxVelocity immediately.

Development

  • CI uses zkbuild
  • Docs generation uses zkdoc
  • Unit tests can be run with TcUnit via test\Struckig\Struckig_unittest.sln

About

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

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors