Roll Pitch Yaw in NACHI robot

  • Hi everyone.

    I'm reading about coordinates in NACHI robot to do some calculation.

    My question is : " NACHI robot uses ZYX fix framed rotation to express orientation of a frame (first rotate about Z of machine coordinate, second rotate about Y of machine coordinate, then rotate about X of machine coordinate), is this right?"

    Please help me figure this out if you know.

    Thank you very much.

  • Place your Ad here!
  • Hi!

    Different robot producers use different Euler conventions (ZYZ, ZYX, XYZ). But this indicates only the sequence of rotations: the orientation components are always applied in a strict order—yaw is applied first, then pitch, and, finally, roll.

  • Hi!

    Different robot producers use different Euler conventions (ZYZ, ZYX, XYZ). But this indicates only the sequence of rotations: the orientation components are always applied in a strict order—yaw is applied first, then pitch, and, finally, roll.

    Thank for your reply .But which Euler convention is used in NACHI robot? ZYX or XYZ,.? rotate about fixed frame or mobile frame?

    For example,I have a pose varible:

    P1=(X,Y,Z,rZ,rY,rX)

    I want to calculate the transformation matrix from this data, so I can have the relation between P1 and machine coordinate frane. Then I need to know the rotation order.

  • I never programmed Naichi and do not know the convention (see documentation), but a lot of Omron Adept and Kawasaki - both has ZYZ. That means Yaw is a rotation about the local reference frame Z axis,

    Pitch is defined as a rotation about the local reference frame Y axis, after yaw has been applied. Roll is defined as a rotation about the Z axis of the local reference frame after yaw and pitch have been applied.

    The rule (rotation order) is the same. You only change ZYZ to ZYX (if it is documented by Naichi). It does not matter wich frame, you calculate difference between frames.

  • I never programmed Naichi and do not know the convention (see documentation), but a lot of Omron Adept and Kawasaki - both has ZYZ. That means Yaw is a rotation about the local reference frame Z axis,

    Pitch is defined as a rotation about the local reference frame Y axis, after yaw has been applied. Roll is defined as a rotation about the Z axis of the local reference frame after yaw and pitch have been applied.

    The rule (rotation order) is the same. You only change ZYZ to ZYX (if it is documented by Naichi). It does not matter wich frame, you calculate difference between frames.

    Thank you.

    Hope someone who has much experienced in NACHI robot help me answer this question.

  • The direction of the tool based on the machine coordinate should be in the order of Roll (Z), Pitch (Y), and Yaw (X)). Roll is the angle of the tool (deg) (Around the Z axis), Pitch -Around the Y axis, and Yaw -Around the X axis

  • Thank you bsrr.

    For example, I have P1=(X,Y,Z,Rz,Ry,Rx)

    With that order I will have 3 matrices Rz Ry Rx, and finally I have the matrix:

    R=Rx * Ry * Rz

    R will give me the orientation relation between tool frame (at P1) and machine coordinate, is that right?.

    Sorry for my question because perhaps it is rather simple for who have robotics background. I don't have robotic background and I am trying to read about it to do some calculation in my NACHI robot program.

    Thank you.

  • and here the sugguestion from RoboDK


    32822-pasted-from-clipboard-png

    Actually, I have never used RoboDK, just use FD on desk and ABB robotstudio. I don't really understand the image :(( . NACHi rotation order is ZYX about fixed frame (machine coordinate), but in your image, I see NACHI use Z Y' X'' and it means rotation about mobile frame?

  • Just a little update about NACHI MOVEX (x,y,z,roll,pitch,yaw) . Rotation is first around yaw( X ), then pitch( Y ) then roll ( Z ). And assuming those are base frame coordinates that are fixed.I checked multiple rotations and I made my own rotational matrix and using DH matrix and came to conclusion that this is the only solution.


    In my teach options, wrist rotation is set to RPY and I do not think that makes any difference.

  • Which rotation matrix do you have compared to the matrices presented in post#12


    I am willing to learn

    I made my own rotation matrix from DH parameters using every axis angle, I suggest you try it yourself here : https://prajankya.me/dh/

    Then, from rotation matrix, I got rpy :


    pitch = Math.Atan2(-rotationMatrix[2, 0], Math.Sqrt(rotationMatrix[0, 0] * rotationMatrix[0, 0] + rotationMatrix[1, 0] * rotationMatrix[1, 0]));

    roll = Math.Atan2(rotationMatrix[1, 0] / Math.Cos(pitch), rotationMatrix[0, 0] / Math.Cos(pitch));

    yaw = Math.Atan2(rotationMatrix[2, 1] / Math.Cos(pitch), rotationMatrix[2, 2] / Math.Cos(pitch));

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account
Sign up for a new account in our community. It's easy!
Register a new account
Sign in
Already have an account? Sign in here.
Sign in Now

Advertising from our partners