On 20.04.12 09:53, Viesturs Lācis wrote:
> I was thinking about Kenneth's idea:
> 
> 2012/4/19 Kenneth Lerman <kenneth.ler...@se-ltd.com>:
> > Is anyone here interested in writing a filter that takes as input a
> > tolerance (error band) and a sequence of motions (arcs and line
> > segments) and generates a new sequence of motions that duplicates the
> > original within the error band? It sounds like that would be one way to
> > address the problem.
> 
> Is there a way to create a filter that would convert those small, tiny
> G1s into a 3D Nurbs lines?
...

> It does not seem to be problem finding formulas on the web to
> calculate a coordinates of a point on a described line. But reversing
> that seems difficult.

Curve fitting to an arbitrary bunch of points is an approximate art,
AIUI, with tolerance calculation at all points probably taking a bit of
time. Admittedly, I don't know whether nurbs make that faster/slower or
easier/harder to achieve algorithmically. But it does look "non-trivial".

But isn't the LinuxCNC dictum "Must be able to come to a dead stop
within the current line segment" unnecessary and unhelpful when
following a piecewise linear approximation of a smooth curve? If a curve
of ten thousand linear segments were instead one continuous nurb (or
whatever), then LinuxCNC would not be expected to stop in a thousandth
of an inch at any irrelevant point along the single-segment curve, IIUC.
(That's in fact where the much-desired speed improvement would come from.)

If it is impossible to increase LinuxCNC's look-ahead, to allow it to
see that it need not radically decelerate, then why not put the
look-ahead in the gcode? Gcode allows Feedrate setting amongst the
"axes" terms in a G1. Would it not be possible to add a Gwhiz gcode to
turn off the stopping-within-a-segment hesitancy, and set a nice fast
initial Feedrate along with the G1. A lower Feedrate setting would then
be inserted prior to any sharp corner or the end of the curve.

Manual insertion of Feedrate tweaks is immediately available¹. Holding
one's breath waiting for this facility in CAM software is probably
inadvisable. But it is not a difficult task for a gcode filter to do
nothing but look for a G1 with a Gwhiz, then calculate the deceleration
needed to negotiate corners or stop at the end, and bang in a Feedrate
adjustment. (For the end, just add up micro-segment lengths until
there's enough decelerating distance, then insert the lower feedrate.
The gcode filter can look ahead to the end of the longest G1 list of
points, if system RAM permits, but a few hundred segments might do.)

This is engineering, and we're here to make swarf, with reasonable
accuracy, and optimal speed. I don't think that there's any extra merit
in a complex mathematical solution. So would something akin to the above
let us scoot faster over irregularly curvaceous workpieces?

Erik

¹ OK, inserting far enough before the corner to allow deceleration
  distance would entail totting up roughly the length of the trailing
  path segments, or allowing plenty. A gcode filter would be a boon.

-- 
In all affairs it's a healthy thing now and then to hang a question
mark on the things you have long taken for granted.
                                                 - Bertrand Russell

------------------------------------------------------------------------------
For Developers, A Lot Can Happen In A Second.
Boundary is the first to Know...and Tell You.
Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
http://p.sf.net/sfu/Boundary-d2dvs2
_______________________________________________
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users

Reply via email to