#3 <- facebook style "like" --- On Fri, 4/20/12, Kenneth Lerman <kenneth.ler...@se-ltd.com> wrote:
> From: Kenneth Lerman <kenneth.ler...@se-ltd.com> > Subject: Re: [Emc-users] Trajectory planning and other topics from a > EMC(LinuxCNC) newbie (TheNewbie) > To: emc-users@lists.sourceforge.net > Date: Friday, April 20, 2012, 6:06 AM > On 4/20/2012 4:52 AM, Erik > Christiansen wrote: > > 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.) > The job of the system is to follow a path *exactly* or > within specified > limits. In the usual case, the limits are zero. That means > if there are > two non-colinear line segments, a machine with finite > acceleration > machine *must* stop at the end of the first. This causes two > types of > problems: > 1 -- The system is slower than it could be > 2 -- Uneven speed causes undesirable artifacts > > Let's consider the alternatives: > 1 -- Change the CAM system so that it generates better code. > Since there > are multiple CAM systems over which we have little control, > this us not > feasible. > 2 -- Modify LinuxCNC so that it can follow a gcode path > within a > specified tolerance at a higher, more consistent rate. > 3 -- Provide a filter (whether integrated with LinuxCNC or > completely > separate) that convert bad paths to good paths using a > specified tolerance. > > Given a standalone LinuxCNC compatible parser, I suggest > that #3, would > provide a basis for experimentation and development that > could later be > more closely integrated into Linux CNC. > > Regards, > > Ken > > > > 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. > > > > ------------------------------------------------------------------------------ > 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 > ------------------------------------------------------------------------------ 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