[LCTP] New Trajectory-Planner available

Hi all !

We are happy to announce that a new path-planner has been added to OpenCN: LCTP.

LCTP stands for “LinuxCNC Trajectory Planner” and, as the name suggests, it is a port of the trajectory planner from LinuxCNC v2.9.2.

Why having two trajectory planner ?

Well, the original trajectory planner, feedopt, was built primarily for research purposes. It allows members of the OpenCN team to implement and evaluate the performance of various algorithms and approaches. However, it does not support all the features required for our current needs.

The introduction of LCTP now enables direct comparisons between the two path planners. In addition, LCTP supports new features (such as extended G-code support, pause functionality, and more), which opens the door to additional tasks and further research.

What are the features ?
LCTP currently provides a core/basic implementation. At this stage, it supports optimization on three axes only. However, a dedicated branch (214-lctp-5axes) is under development to integrate kinematics and extend LCTP support to nine axes.

LCTP support :

  • Pausing during Gcode
  • Adaptative feedrate speed managed by the user
  • M62-M65 gcode

What are the current limitation ?
The limitation for now are :

  • Support for 3 axis only
  • No tool supports
  • No remapping supported
  • No python module supported
  • No subprogram supported
  • No kinematics supported
  • No single stepping mode
  • Not all canonical function is implemented

I know the list may seem long, but the code is already there — it simply needs to be enabled and tested. With this initial version, the focus was on delivering a working path planner in the shortest possible time.

Does it work ?

Yes, absolutely! We’ve been happily milling on our Micro5 machine for a week now, and we can confidently say that it is stable, faster at calculating G-code, and offers several nice features compared to FeedOpt (at the cost of jerk limitation). On top of that, it’s much easier to use.

Enjoy,

Xavier