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

Reply via email to