With the work of Robert Ellenberg look-ahead has been greatly improved. Originally the TP could only look 1 segment ahead. This worked well for most machining operations - but large gcode programs made up of short line/arc segments ran poorly at higher speeds. This page is comparing Linuxcnc's current TP (on segment look ahead) with the new TP (Robs work) and also some other machine controls.
The new TP allows you to set the number of segments it looks ahead. Most of the testing here had the TP set to 50 segment look ahead. Here is a great ongoing thread that shows how to test the new TP.
Couple notes. There are some design changes at this time with the new TP.
exact stops between G0 and Feed moves (and vice versa..) In G64 - P and Q needs to be explicitly entered. (in the current TP if you don't have a Q then Q=P.)
Most testing on this page have done have been with a config setup with 500ipm and 30in/s^2.
Lets start with a simple program here.
% (1" square with 1/4"r corners) G90 G54 G20 G64 G0 X0 Y.25 Z.25 z0 G1 Y.75 F999 G2 X.25 Y1 I.25 G1 X.75 G2 X1 Y.75 J-.25 G1 Y.25 G2 X.75 Y0 I-.25 G1 X.25 G2 X0 Y.25 J.25 G0z.25 M30
This is what it looks like.
Here is the Current TP velocity plot.
Here is the New TP velocity plot. (notice the exact stops at the GO transitions)
Here is an actual logging of the step/dir signals though a mesa 7i80 board. (linuxcnc)
Here is a actual logging of Mach's step/dir signals. I have noticed mach seems to violate the set acceleration.. 40+in/s^2 (mach seems to exact stop at the begining - not the end of G0 transitions.)
This is an other profile. Here is the program upload:kafa5.ngc
This is the current TP straight G64. Notice the horizontal divisions. It had to be set to 1sec/div to fit the whole program
This is the New TP straight G64. Now set to 500msec/div (that is twice as fast...)
This is the current TP with G64P.1Q.1 (metric)
This is the new TP with G64P.1Q.1 (metric)
This is the above profile logged through the step/dir
Now trying not to be too confusing - but the next screenshot is the above path - just scoped at 200ms/div... This follows the path pretty closely.
Now this is mach running the path with straight G64. It seems to run it quite a bit faster. (about 400ms faster) but you can also see that it violates the acceleration constraints >40in/s^2 and approaching 50in/sec^2
Mach actual path for straight G64 (actually - all Mach has is G64 as far as I can tell - if you want to adjust path following - it is done in the machine config. (not adjustable by gcode)) The squares are .5mm
Now - I modified the config setting in Mach 'CV Dist Tolerance_____Units' to get it to follow the path as close as linuxcnc does with P.1Q.1.. A setting of .5 (whatever that means) seems to be closer deviation wise. (this is comparing apples to oranges, I know)
The path time is then similar to linuxcnc (again - just a bit faster) but still violating constraints by quite a bit.
This is Mach's following of path with the above 'CV Dist Tolerance_____Units' set to .5
Here is Linuxcnc's path following with P.1Q.1
Here is another screenshot of Mach running a profile flat out with G64. (again the graph in the background is .5mm squares)