I have v2.12.1 seems from march 2025, I have email from Robert Ellenberg - Software Team Lead at Tormach from 2 weeks ago, we should have a meeting on the 28th.
Quote:
Hi All,
Sorry for the wait this week! I'd love to do a zoom call and dig into the trajectory planner differences. The S-curve planner PR is an exciting change, and it would be awesome to learn more about it. There are a few times during the week that are good for me to do a long meeting:
Fridays between 10AM-4PM EST (Jan 16, 23, and 30)
Wednesday Jan 28th between 11AM-4PM EST
Thursdays in Jan, 9PM-11PM EST
Given the volume of things to discuss, a recurring meeting might be a good idea to spread things out. If we can get a weekly, biweekly, or monthly time on the calendar, it will be easier to get through all of the material, and also deal with new issues as they come up.
In the meantime, here are some quick answers for Greg C's questions:
Does Tormach have any 9 axis .ngc files they use for testing they could share? We have some test cases, but most of them are not real part programs, rather they just exercise the trajectory planner. Some of them may be in the Tormach linuxcnc fork, I'll look through my archives for the rest.
Does Tormach have any build tests set up that they are willing to share? The tormach linuxcnc fork has extended tests that would be great to include upstream, most of which are subdirectories in the "tests/motion". There are test cases for probing, cutter compensation, spindle synchronization, and a few others.
What changed from trivkins to square3kins, and is any of that worth considering for inclusion in our project? square3kins is an extension of "millkins" i.e.
forum.linuxcnc.org/49-basic-configuratio...kins-or-millkins-xyz
. I can discuss in more detail, but main additions are rigid rotation of the coordinate system (correct for table surface not parallel to the motion axes) and atomic update of parameters
Are there any parts of the implementation that were accepted as “good enough,” deferred for later cleanup, or known compromises that we should be aware of? Yes, depending on how stringent your definition is. Most of these are documented in code with TODO / FIXME tags. This is a detailed subject, but one example is how we handle blend tolerances in 9-axis blending. In lieu of solving the kinematics, we basically assume that "deg = inch" when sizing the blend arc. This is suboptimal but generally safe (1 deg is 1 inch displacement on a ~57" diameter part).
If you were implementing this today in a joint-based architecture, is there anything you would change about the overall approach or design? This is another long subject, but the biggest change would be to make the have the trajectory planner work in joint space, and use the realtime kinematics layer only for minor adjustments like squareness comp. To actually do that is a big effort (biggest change is incorporating kinematics earlier motion planning).
Also, to answer an earlier question, the limited jerk method we're using in the Tormach fork is an extension of the current planner. A quick summary of what we did (happy to discuss in more detail in the call):
Filter each axis independently with a moving average filter, and set the length of that filter via the new M59 command (M59 D# in ms)
Reduce the feed rate of high-curvature moves such that the axis filtering does not "round the corners" more than the specified tolerance (M59 H# in length units)
Apply custom settings in certain conditions to avoid lag (tapping, threading, probing)
Change the notion of "done" in the TP to wait for the nominal path to be done + average filters fully drained
The main benefit is the user has control over smoothness, path accuracy, and achievable feed rate. For example, you can do high-load roughing with more smoothing and looser path tolerances. For finish passes, you apply tighter path tolerances. This limits the achievable feed rates, which is generally tolerable on fine finish passes.
Best,
Rob