2011/12/28 Rudy du Preez <r...@asmsa.co.za>:
> In a recent posting I did say where photo's of my machine and an impeller
> cut with it can be looked at.
>
> It is in groups.yahoo.com under group SA-CNC-CLUB in "photos". This is the
> discussion group for our local CNC club (South Africa), which I started
> about 2 years ago (SA-CNC-CLUB) and has about 40 members.

Ok, You did mention the Yahoo group. AFAIK only group members can view
posted pictures.
But I was not able to check that for sure, because I did not find the
group, see this link:
http://groups.yahoo.com/search?query=sa-cnc-club&sort=relevance

> I have not been able to find a way to post photos to this forum.

Yes, e-mail attachments are not encouraged, it is better to post
pictures somewhere with a public access, like Google's Picasa. I guess
that pastebin.com also accepts pictures.

> Lets focus a little on the process of going from world coordinates to joint
> coordinates. Starting from a toolpoint position in part or world coordinates
> xyz and unit tool vector ijk, these have to be transformed to joint
> coordinates XYZAC, with C the rotation angle of the top rotary table and A
> the rotation angle of the rotary table on which the top rotary table sits.
> The rotary axis of the A table is along the X-axis of the machine. X sits on
> Y which sits on Z (look at my pictures if necessary).

Ok, I finally understood, how the joints are alligned in Your machine.

> The world coordinates I supply to EMC is the original xyz and the two angles
> A and C which have been computed in the CAM post-processor from ijk by:
>
> A = -arccos(k) and C =  arctan2(i,j)
>
> Some adjustment of C is necessary to go beyond -180 deg and +180 deg.
>
> This is transformed by the inversekins:
>
> J0 = cos(C)*x - sin(C)*y
> j1 = sin(C)*cos(A)*x + cos(C)*cos(A)*y - sin(A)*z
> j2 = sin(C)*sin(A)*x + cos(C)*sin(A)*y + cos(A)*z
> j3 = A
> j4 = b (not used)
> j5 = C
>
> This is a working process for me so far as you can see from the photo of the
> impeller produced.

Ok, I need You to expand on this in more details.
Where are these formulas used?
1) In postprocessor of Your CAM program?
2) In Your custom kinematics module?
3) Somewhere else?



> If I use a G55 transformation of say G55 x10 y10, then EMC seems to add
> these values to x and y before it sends it to inversekins. The world
> coordinate origin is shifted to the new position. That seems fine. G55 is
> set by a G10 L2 P2 command.
>
> If I use a G55 of say G55 c45 nothing happens. It would have worked for me
> if EMC also added 45 to the value of C before it passes it on to
> inversekins. Practically I would only want to shift the C-axis when cutting
> parts like impellers with a number of blades. The GCODE for only one blade
> is the provided.

Does EMC produce correct blade with the g-code for a single blade with
trivkins module?
If yes, can You check, if this approach is working (again - with
trivkins module):

1) Save the blade's g-code in a separate file with the name o100.ngc;
in that file define subroutine, just like the example You already
provided:
> o100 sub
> G0 x25 y0
> G1 x30 f200
> G1 y5
> G1 x25
> G1 y0
> o100 endsub

2) Create another file, which will call subroutines for each blade and
rotate the top rotary table:
a) place the tool in part's coordinate origin either by jogging or by
a move in machine's coordinates, because I suspect that part's origin
will be in the center of C joint and since You should know the
location of C joint in machine coordinates, You can easily get there
with (X,Y, Z numbers are random):
G53 G0 X123 Y 123 Z123 A0 C0

b) zero G54 coordinates and select them:
G10 L2 P1 x0 y0 z0 a0 c0
G54 G0 x0 y0 C0

c) call subroutine, produce the blade and rotate the C for 51.43:
o100 call
G0 X0 Y0 Z0 A0 C51.43

d) zero G54 again and do the next blade:
G10 L2 P1 X0 Y0 Z0 A0 C0
o100 call

e) I apologize beforehand for any mistakes in this code, as I myself
actually have never used subroutines.


> I could also have passed on the ijk values as abc values to the inversekins.
> It would then have to work out the AC values, but there is quite a bit of
> checking and adjustment to C to be done. I am not sure if EMC could then
> pass on transformations.

What is that You want to achieve with this?
I feel pretty confident about my math skill and what I feel about Your
formulas is that You are trying to implement things that I do not see
that You need.
You are adding the compensating moves along X, Y and Z so that tool
stays at the same point of the part, when A or C joints are rotated.
Actually that is very useful thing, because then parts that require
complex 5-axis machining can be programmed a lot more easily,
sometimes even by hand. Anyway, that would almost eliminate need for
CAM postprocessor. That is very nice and extremely useful, but since
You never mentioned that this is Your goal, I do not understand, why
are You spending Your effort on this.

Viesturs

------------------------------------------------------------------------------
Write once. Port to many.
Get the SDK and tools to simplify cross-platform app development. Create 
new or port existing apps to sell to consumers worldwide. Explore the 
Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join
http://p.sf.net/sfu/intel-appdev
_______________________________________________
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users

Reply via email to