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