Right hand rule for positive angle rotation KUKA vs UR in RoboDK

  • Hello,

    experimenting with trial version of RoboDK software, I found out that KUKA robots in this simulation software don't follow right hand rule for determining positive angle rotation.

    I have checked this with UR and ABB robots and for these robots angle rotations follow right hand rule.

    I have attached picture for clearer view of this. Is this true in reality that for example rotation about z axis of joint A1 for 30° follow left had rule with KUKA robots?

    Thank you.

  • .. I found out that KUKA robots in this simulation software don't follow right hand rule for determining positive angle rotation...

    Not only in the simulation, it's the same in real life. :winking_face:

    But right hand rule only makes sense for Cartesian coordinates. For axis movements you can't define a good right hand rule, makes only sense when robot axis is parallel to a cartesian axis. How do you want to define the rule for the other robot axis, when robot has different position in all axis?

  • Okay, thank you. I noticed this by playing with different joint frames, that this "right hand rule" for joint angles is not consistent. By right hand rule I meant right hand screw rule.

    What I mean by this is to define right hand oriented coordinate frame for each joint, and then apply right hand screw rule considering joint angle as an angle around its z axis.

    I used option "show frame" for each joint and then observed how joint rotates changing one joint angle (theta) at a time.

  • Well, I thought that because with revolute joints axis Z are considered as rotation axis.

    For example if I turn on joint frames (like shown in the attachment), each joint rotate around its Z axis, so this axis is rotation axis. I thought (obviously) wrong that there must be a consistent rule, what is considered as positive angle of rotation (just like in mathematics, positive rotation is considered counter clockwise direction).

    Thank you for the clarification.

  • the rotation is around the rotation axis (which is actially the z- coordinate).

    Axis1, axis4 and axis6 turning mathematical negative (e.g. a1 = 20° gives negative Y-value)

    (A reason could simply be mounting gearbox upside down to have motor on top)

    Axis2, axis3 and axis5 turning mathematical positive

    You can find this in $Machine.dat checking for AXIS_DIR (it was also mentioned in one of my posts on the other of your thread)

  • Thank you MOM for the explanation. I'm learning robotics mostly based on textbooks and examples I can find on the Internet.

    I have made my own calculation of forward kinematics and checked the results in RoboDK software. That is where I have discovered this "mismatch".

    I have done calculations on UR5 and on KUKA 360-2. On UR5 everything as aligned to my expectations and I found out that all joints use mathematical positive direction of an angle around axis of rotation (z axis). But the results for the same logic were not OK when I tried on KUKA robot.

    For example, for UR5, my calculation is given in the attachment.

    I'm not sure if there is a way to obtain actual dimensions of the robot that is stored internally in the model in RoboDK software, so I used dimensions I could find on the drawings elsewhere. This caused small differences in the position values, but not significant.

    The .pdf generated script is attached. Since I don't have actual robots and don't have access to it, this is right now the only way to learn to calculate myself, use simulation software and ask for explanations and clarifications here.

  • on your picture from your other thread post #1

    you can see how the different axes rotate in the positive direction.

    A1: Z-Axis poiniting down

    A4: pointing backwards

    A5: pointing backwards

    Direction of rotations are fully documented

  • Yes, you're right. I didn't pay much attention. It is important for me to know that there is no a strict right hand rule when defining joint axes and positive direction of angles.

    I'll try to find one complete real world example of KUKA robot program and to inspect how this really look like in reality.

  • It is important for me to know that there is no a strict right hand rule when defining joint axes and positive direction of angles.

    There is a strict rule:

    Taking picture from post #9 and draw the z-axis accordingly - you defined them wrong - again!

    What do you actually want?

    - assistance - then follow the suggestion

    - follow your idea - this is the wrong place - look for your place

    By the way:

    I have no problems with knewbies as long as they follow my or rules or ask intelligent questions

    Asking you for help or just want to bore everyone?


    I did forward and inverse kinematics of kuka robots

    -no complaims

    - no one got killed

    -everything is still working as requested

  • Hello,

    This time I used UR5 as an example, defined DH parameters and everything work as expected. The results were the same as shown in RoboDK simulation software.

    I have noticed a mismatched between positive direction of A1, A4 and A6 for KUKA robot in the RoboDk software, which triggered the original question in the post #1.

    In the attached picture this is clearly visible. There are directions of z axis for A1 and A2. Changing both joint angles for some positive shows that A2 is moving according to the right hand rule around Z2, while A1 is doing the opposite.

    My question is based only on what I saw in RoboDK, and it is confirmed here in the attached picture.

    MOM, In the post # 9 you placed a picture from the other closed thread. I didn't mention anywhere how I defined z axis here. RoboDK defined axis for the joints.

    P.S. I'm not able to upload picture as attachment, that is why I post a link here

  • MOM

    just to see that you advices were not given in vain, here is the code I used to calculate FW kinematics (KUKA 360-2 from the RoboDK library):

    And the result is:

    T06_dh =
    [-0.287491, 0.0466039,  0.956649, 2311.23]
    [ 0.279567,  0.959402, 0.0372771, 369.424]
    [-0.916074,  0.278164, -0.288849,  1622.2]
    [        0,         0,         0,     1.0]

    This is the same result that can be obtained from RoboDK with the following input angles:

    Ad = [-10, -60, 90, -30, -15, 10];

    The RoboDK output is given in the picture shown here.

    I think I got it now, thanks for the help. I really appreciate it.

Advertising from our partners