2011/5/22 Viesturs Lācis <viesturs.la...@gmail.com>: > > Now I will try to get it little more sophisticated.
I have spent 6 or 7 months trying to get kinematics for a puma-style robot arm that moves on a linear joint. Here is what I tried so far and what are the results: 1) genserkins does not work properly - alligning coordinate frame of the arm with base frame is impossible. Z is correct, but X and Y are turned by 90 degrees - X points , where Y should be. All the coordinate frames of joints seem to be alligned properly - running the sample g-code produced a nice drawing of EMC 2.4/ AXIS I have been drawing sketches on paper over and over again to find out, where do I have a mistake and what values _should_ DH parameters have to describe the arm and all the time get the same existing result. 2) adjusting pumakins also failed - substituting value of "original joint[0]" with 90 degrees in forward kins and expanding and adjusting world->tran = worldPose.tran to be world->tran.x = joint[0]; world->tran.y = worldPose.tran.y; world->tran.z = worldPose.tran.z; and in inverse kins joint[0] = world->tran.x also does not work But I do not see a way to understand those definitions of elements of rotation matrix; 3) writing kinematics from scratch also failed, I tried the "simple" way with use of trigonometric functions, where every promising solution, which shows correct calculations in both directions, somehow ends up with finding a situation, where they fail without me being able to understand why; 4) the "smart" way with Euler's angles seems to be bad concept as a whole: the idea was like this: a) technically those should be Xyx angles, but Zyz should do the same, if there are adjustments after they are converted to rpy: rpy.r = world->c, not world->a, rpy.p = world->b and rpy.y = A, not C rpy.y = world->a, not world->c b) Euler's angles were assigned like this: zyz.z is a slope of lower arm = joint[1] + joint[2] zyz.y is angle of joint[3] zyz.zp is angle of joint[4] c) in inverse kins: joint[3] = zyz.y joint[4] = zyz.zp zyz.z is not used It turned out that it does not work, arm just flips over, when reaching outwards. The tilt angle of tool also seem not to be maintained as the slope of lower arm changes, so something is missing there. I have a feeling that it might be connected with the fact that zyz.z value is not used in inverse kins, but I do not see a way to use it. At least not in this concept, where slope of the lower arm cannot be adjusted. I thought that some kind of "recalculation" might work, where initial Zyz values after conversion are stored and then recalculated for a given zyz.z value (slope of the lower arm) to match the same tool orientation. I have 3 questions: 1) How can I find out, if EMC just hates me? 2) Is there any more options I haven't tried to define kinematics for a puma arm that moves along linear joint? 3) Are there any suggestions, where to look for solution in any of above-mentioned approaches? Viesturs ------------------------------------------------------------------------------ What Every C/C++ and Fortran developer Should Know! Read this article and learn how Intel has extended the reach of its next-generation tools to help Windows* and Linux* C/C++ and Fortran developers boost performance applications - including clusters. http://p.sf.net/sfu/intel-dev2devmay _______________________________________________ Emc-users mailing list Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users