Today i wrote a little program which calculates the absolute z distance between a distorted plane (stl file) at a given xy location and zero. I used simple triangles and no higher order interpolation. The result was calculated very fast because of the simple maths used (only + - * /) and always correct compared to a cad program.
So i think the problems lay beyond the z-depth calculation from the stl file. I wonder how you process a simple move over a distance which may span over 3 triangles. Do you separate this move into three single moves with different start and end z-depths? Or do you check before each step the z-depth of the stl file and correct the commanded z-depth (would be very cpu intensive if done for each single step)? Ciao, Rainer Am 20.03.2012 00:00, schrieb Michael Haberler: > I ran into a problem with following errors if a move is exactly along a > triangle edge > > I havent investigated it further but I guess it could be a > discontinuity/numerical accuracy/stability problem along the edges > > If that is the case, the approach using discrete-triangle based correction > could be fundamentally flawed > > one way I guess would work is to create a continuous surface correction > function, like a cubic spline > > > - Michael > > > Am 19.03.2012 um 21:03 schrieb Fox Mulder: > >> Since the last mail from december it has gotten really quite about this >> very handy feature. But i can see in the git logs that it was further >> developed. >> >> So what is the state of it right now and how could it be used? >> >> Sadly i can't find any info at all on the linuxcnc website. >> I want to do some pcb etching tests in the next few weeks and i think >> this feature would be a great benefit for this purpose. :) >> >> Ciao, >> Rainer >> >> Am 21.12.2011 08:31, schrieb Michael Haberler: >>> I found the idea quite intriguing, and thought about integrating the >>> surface correction idea better. After bouncing a few ideas with Andy, this >>> is what I have so far: >>> >>> probekins: a kinematics module which be default behaves like trivkins >>> it accepts a mesh of triangles which define Z correction values (actually >>> an approximation of the workpiece surface, or machine surface for that >>> matter) >>> >>> this mesh might eventually generated by probing, but also used as a general >>> machine Z correction >>> >>> >>> this isnt finished or polished, but I'm posting it anyway to see what folks >>> think about it. >>> >>> see http://git.mah.priv.at/gitweb/emc2-dev.git/shortlog/refs/heads/probekins >>> >>> - Michael >>> >>> -------- >>> >>> >>> >>> v0.1 README: >>> >>> Z correction by triangular mesh >>> ------------------------------- >>> >>> The probekins kins module is a trivial kinematics module unless loaded with >>> a Z correction mesh. >>> >>> It helps dealing with warped workpiece surfaces (or machines), and was >>> inspired by a recent thread on emc-users about PCB milling. >>> >>> the correction mesh is a set of triangles specified by an STL file. This >>> file might eventually be generated by probing a few points, >>> and creating a triangular mesh from it, for instance by a Delauney >>> triangulation, >>> >>> If a point (x,y) lies within the one of the triangles, it's z value is >>> adjusted by the interpolated value on the enclosing triangle. >>> Points outside any triangle are not corrected for. This means the >>> correction value currently 'falls off the cliff' at the convex hull of the >>> triangles (the enclosing polygon if you will). >>> >>> The triangles are applied in the order specified in the file, so there >>> could be a 'later' larger triangle enclosing or overlapping >>> an earlier one. >>> >>> The algorithm currently is based on a brute-force test of all triangles >>> until first match. >>> The ray/triangle intersection test is very fast, nevertheless this is an >>> O(number of triangles) implementation. >>> There are numerous ways to optimize this which are left as an exercise for >>> the reader;). >>> >>> To load an STL Z correction file: >>> --------------------------------- >>> python stlcorr.py <file,stl> >>> >>> To inspect the current correction: >>> ---------------------------------- >>> python stlcorr.py >>> >>> To clear the correction: >>> ------------------------ >>> python stlcorr.py -c >>> >>> >>> >>> >>> Example STL file containing two triangles: >>> -------------------- >>> solid >>> facet normal 0 1 1 >>> outer loop >>> vertex 0 0 0 >>> vertex 0 5 0 >>> vertex 5 0 2 >>> endloop >>> endfacet >>> facet normal 2 3 4 >>> outer loop >>> vertex 1 1 1 >>> vertex -1 -1 1 >>> vertex 1 -1 2 >>> endloop >>> endfacet >>> endsolid >>> ----------------- >>> The normal vectors are ignored and can be left out for the purpose of >>> describing a correction mesh. >> ------------------------------------------------------------------------------ This SF email is sponsosred by: Try Windows Azure free for 90 days Click Here http://p.sf.net/sfu/sfd2d-msazure _______________________________________________ Emc-users mailing list Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users