Closing the loop in the Gcode layer is for me important, Why?,
let me describe you my dream how it should function. ex: 6000 lines ahead.
The software should anaylze the whole 6000 lines and build up mathematically defined spline
segments. For example gathering 16 gcode lines to a bezier curve, for a simpler explanation
just think abaout the vector drawing in corel draw, when you draw a line corel draw connects the points
through a spline curve which has analog continiuty and can be defined with maybe 3 or 4 constants.
a simpler spline p(x)= ax^3+bX^2+cx+d , these coefficients a,b,c,d are calculated in real time in dependance of
the given follow error by the user. EX: in pick and place applications the user can increase the trajectory follow error and
decrease the follow error just at the end of the (last point of the polynomial function).For surface fini sing according to roughing or finising passes,
the user can define lower or by demand higher follow error for roughing and very low follow error for finising.
After you have a,b,c,d you dont deal with the gcode data anymore, your polynom sends the position data to the servo,
But here I also think abaout an important connection, the polynom data is so optimized that the sppeeds and acceleration are regulated in real time,
think abaout a life feedback that servo tells the controller, hey I am %80 loaded you can drive me more severly, or hey my decceleration is %73 in capacity you can do more decceleration.
In this art of regulation you get an error only when there is hardware fault. Why I am telling this. Think abaout a Gcode program that has many small curves.
Everytime I run such a programm I never reach the feedrate that I have given, Maybe %10 of the feedrate is there, because of inefficient acceleration decceleration profiles.
The polynomes can be chosen according to the computing power. maybe p(x)=ax^3+bxsin(wx) or a logaritmic one to smoothen the velocity and accelerations curves and speed up the responsiveness of the whole system.
Naturally an additional computation should be there so that if we have defined 200 polynoms in 6000 lines of gcode , the endpoint of each polynom shuold be the first point of adjecant polynom function.
The computational overhead is with a 8 core i7 not a problem. A 100$ GPU card with from Nvidia (ex:CUDA interface) can also compute simultaneously the polynom coefficients.
A regular GPU we all have has 96 computing cores. and the matrix multiplication is peanuts for the GPU.
What do you think abaout spline interpolation and servo regulation for a higher dynamic.Very important is the inertia feedback from the servo if possible.
The fault signal is not enough between the servo and gcode interpreter, There should be a dynamic regulator for the inertia reserve,power demand reserve, braking reserve, regenerative reserve.
Any ideas?