> > > To me, this is bad because the blend tolerance (P0.5) is effectively > > applied twice. In the example above, line N2 is eliminated entirely, > which > > means the path is already up to 0.5mm from ideal when it is passed to the > > trajectory planner. Now, TP applies a blend with tolerance, leading to > > another 0.5mm deviation, for a total of 1mm possible deviation. > > I don't think this is correct. The endpoints of the NCD path are > exactly the same as some of the original endpoints, and blending > happens at endpoints. So you will tend to have NCD path diversion > (along the path where points have been removed) or blend diversion > (at endpoints), but not both. It seems like you might get SOME > effect from both at the same time (but I'm not coming up with a > picture of a good corner case in my head). > In your image, > > https://www.dropbox.com/s/bpg2xvxa30yrpzl/following%20error.png > > I don't know what the actual diversion tolerance is, but it appears > the NCD diversion (from horizontal, due to the path aiming at the > second corner) and the blend diversion (inside the newly-formed > corner) don't add at all. The diversion throughout the blend > appears to be less than the diversion we had earlier due to only the > NCD. >
Since I wrote the original question, I've been able to understand NCD much better, so some of what I said originally no longer applies. The example I showed wasn't terribly good, but since then I've been able to find a better one here: https://www.dropbox.com/s/ixt2yuv6lvw0blp/naive_cam_quirk.png Here's a snippet of G code that produces that path (uncomment the appropriate G64 line). G90 G20 G64 P0.1 Q0.0 (G64 P0.1 Q0.1) G0 X0 Y0 Z0 G1 X2 G1 Y.1 G1 Y.2 G1 Y.3 G1 Y1 G0 X0 Y0 M2 Qualitatively, it seems like most of the time, your assertion is correct, and the difference is slight. This particular case shows the effect more dramatically. Incidentally, this also shows another liability with large NCD tolerances. The move from X0.0 to X2.0 becomes a move from X0.0 to (X2.0,Y0.1), which means that entire motion is shifted, and the toolpath is no longer parallel to the X axis. Setting G64 P0.1 means the user would expect larger blends, but they may not be expect this big deviation along the whole line. It's possible that they fully understand the implications of NCD, but if they don't, then this behavior will be a real head-scratcher. > (This is hard to talk about, without pointing at the picture - I > hope my writing is clear enough) > > This may be moot; I am hoping you can just remove the NCD with your > new planner. > Unfortunately, the new TP still has the restriction that you have to touch each segment at least once. A small NCD tolerance is still useful to combine stupidly short segments, in particular ones that would be skipped over in a single cycle of the trajectory planner. A quick theoretical example: If we want to follow a path at 60 IPM (1 IPS), with a servo rate of 1kHz, then a segment that is shorter than 0.001" could be skipped entirely during a single cycle update. Therefore, an NCD tolerance of roughly 0.001" would eliminate these very short segments, letting the TP maintain the desired speed. Given this benefit, I don't think we can totally eliminate it. However, since the tolerance can be much smaller than the blend tolerance and still work well, it seems to me like another argument to decouple them. -Rob ------------------------------------------------------------------------------ Subversion Kills Productivity. Get off Subversion & Make the Move to Perforce. With Perforce, you get hassle-free workflows. Merge that actually works. Faster operations. Version large binaries. Built-in WAN optimization and the freedom to use Git, Perforce or both. Make the move to Perforce. http://pubads.g.doubleclick.net/gampad/clk?id=122218951&iu=/4140/ostg.clktrk _______________________________________________ Emc-developers mailing list Emc-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-developers