2-vector representation of rotation in 3D


When we're discussing industrial type robots, it's important to describe the orientation of the end effector, the gripper - the piece of the robot that does the work by picking objects up and putting them down. The common convention in this type of robotics is what's called the 2-axis representation. We start off by defining a vector which is called the approach vector and that's the vector that's parallel to the fingers of the robot. We define another vector which we call the orientation vector and that's the vector that joins the tips of two fingers. So that says something about the twist of the robot fingers around the approach vector. And for a lot of robotic manipulation tasks, just knowing the approach vector and the orientation vector is sufficient to be able to describe the orientation of the gripper.

In order to create a right-handed coordinate frame we introduce a third vector just called the normal vector. Now we can express the orientation of the gripper as am orthonormal rotation matrix. We do that by stacking up as columns the N vector, the O vector and the A vector. We're can expand this out as a 3 x 3 matrix and each column are the elements of the N, O and A vectors. All of these columns must be orthogonal. So if we know the A and the O vector, we can compute the N vector as the cross product of the O and the A vector.

Here's a quick recap on the rules that relate the columns of an orthogonal matrix. A little trick that I use to aid my memory is to consider that N, O and A are written on a circular strip of paper. We start with the symbol that we want to know, and is equal to the cross product of the next two around the circle.

Here I have a very simple robot and we have our world coordinate frame here, which is our reference for both position and for orientation. And this robot is going to pick up this battery. In order to do that, we need to describe both the position and the orientation of the gripper. It might be that we want to pick up the battery with a gripper orientation like this or we might want to pick up the battery with a gripper orientation like this. Either way we need to be able to describe the orientation of the gripper. So we do what we've done before, with other objects. We attach a coordinate frame to the gripper of the robot. We orient it so that the z-axis is pointing outwards. We refer to this as the approach vector. It's generally the direction in which the gripper approaches the object. We have another vector which we call the orientation vector and is parallel to the y-axis of the gripper's coordinate frame and that is the orientation of the gripper. Do we want the gripper's fingers like this or like this. And the third vector, the x-axis we refer to as the normal vector.


There is no code in this lesson.

The orientation of a body in 3D can also be described by two vectors, often called the approach and orientation vectors.

Professor Peter Corke

Professor of Robotic Vision at QUT and Director of the Australian Centre for Robotic Vision (ACRV). Peter is also a Fellow of the IEEE, a senior Fellow of the Higher Education Academy, and on the editorial board of several robotics research journals.

Skill level

This content assumes high school level mathematics and requires an understanding of undergraduate-level mathematics; for example, linear algebra - matrices, vectors, complex numbers, vector calculus and MATLAB programming.

More information...

Rate this lesson


Check your understanding


  1. ItachiVN says:

    Could anyone help me to find the correct answer in Question 1 please! Thanks for your further help!
    Best regards.

  2. Nsikak says:

    I can’t figure out how to solve this question, please can anyone help?

  3. Nsikak says:

    I just discovered the toolbox function ‘oa2r()’ in the next lecture that converts orientation and approach vectors to rotation matrices, hence the solution can be found by trying all the different options with this function…

    1. Peter Corke says:

      Here’s a hint. The vectors to choose from are clearly not unit vectors, they are somehow scaled versions of columns 2 and 3 of the matrix. Look at the first possible solution: O has elements that are positive, negative, positive, whereas column 2 has elements that are negative, positive, positive. There is no scale factor you can choose that would be consistent with these signs. The first possible solution for O has the magnitude of the first element greater than the the second element, whereas for column 2 this is not the case. I think the first solution might be a poor choice 🙂

  4. Mariam Garba says:

    I do not understand the solution to this quiz.

    1. Peter Corke says:

      Mariam thanks for the feedback on the questions. The complete comment thread should help you, if not, can you come back to me with a more specific question.

  5. Anshay says:

    Previous videos used x-axis in forward direction of the objects when we attached a coordinate frame to an object, but here when we talked about approach (which is like the forward direction for motion of the object), we attached z-axis to the approach vector. Why do we use 2 different norms here. Shouldn’t we keep following one standard?

    1. Peter Corke says:

      If only it were that simple! You will find across textbooks two conventions, x-axis forward or z-axis forward. The first for vehicles (cars, planes, rockets), the second for grippers on robot manipulator arms.

  6. Amer says:

    I don’t understand how Question 1 was solved.

    1. Peter Corke says:

      n, o and a are the 3 column vectors of the matrix, respectively from left to right. Those columns are all unit vectors. The vectors I provide in the question are not column vectors but are parallel to o and a.

  7. qut.sounds.like.kut.in.punjabi says:

    why are the three vectors that are supposed to represent a coordinate system form the rotation matrix? is the rotation matrix obtained from these vectors supposed to represent the rotation about the universal xyz axis?

Leave a comment