LESSON

# The Analytic Jacobian

#### Transcript

In a much earlier lecture, we introduced the notion of roll, pitch, yaw angles. It’s an intuitive way to think about the orientation of a body in space and we can think about it as the product of a number of elementary rotations. It’s a rotation around the x-axis by the roll angle, a rotation around the y-axis by the pitch angle, and a rotation around the z-axis by the yaw angle.

Now, we could take the derivative of this expression and we obtain a relationship for the rate of change of the rotation matrix in terms of some elementary rotation matrices. The derivatives of some elementary rotation matrices, and the derivative of the roll angle, pitch angle and yaw angle which are here denoted by r dot, p dot and y dot, respectively.

We also know that the time derivative of a rotation matrix can be expressed in terms of a skew-symmetric matrix which is a function of angular velocity and the rotation matrix itself. I can rearrange this rather complex expression and so for the skew-symmetric matrix, s. And then, I can equate the finite elements of s between the left and right hand side of my equation.

The result is a relationship between angular velocity, omega, and the rates of change of my roll, pitch and yaw angles. And, this relationship is in terms of yet another Jacobian matrix. It’s a 3 x 3 Jacobian matrix and is denoted by the symbol capital B. B is a function of the roll, pitch, yaw angles. And, more precisely, it’s a function of the roll angle and the pitch angle. The yaw angle does not appear in the expression for this Jacobian matrix. This is a nice relationship because it links a very obscure and abstract quantity like angular velocity and expresses it in terms of roll, pitch and yaw rates which are much more intuitive for engineers.

Here is the expression that we introduced earlier which maps the rate of change of robot joint angles to the robot end effector spatial velocity. The spatial velocity, as we know, comprises two components: the translational component and a rotational component expressed here as an angular velocity vector.

What we'd like to do is to redefine this spatial velocity vector so that the rotational part now contains the roll, pitch and yaw rates of change. If we are going to do that, then we need to change our definition of the Jacobian matrix itself. So, we introduced a variant of the Jacobian matrix called the JA and that is the analytic Jacobian matrix and it relates the change in robot joint angles to spatial velocity defined now with roll, pitch and yaw angle rates.

To obtain these analytic Jacobian, we start with the standard robot manipulated Jacobian matrix and we pre-multiply it by this matrix, contains a lot of 1s and 0s and it also contains the inverse of the 3 x 3 Jacobian matrix B. B is a function of the roll, pitch, yaw angles which I denote by the symbol capital Gamma.

#### Code

There is no code in this lesson.

Now we introduce a variant of the Jacobian matrix that can relate our angular velocity vector back to our rates of change of the roll, pitch and yaw angles.

### 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.

Average

## Discussion

1. Josh_Allison says:

Hi,

Is this methodology also applicable to Euler Angle sequence form – say, for human movement of the upper limb?
Is there any additional material that steps through the computations of the rotation matrix derivative?
Many thanks!
J

1. Peter Corke says:

The method jacob0() supports this already

% ‘eul’ Compute analytical Jacobian with rotation rates in terms of
% Euler angles

In the symbolic folder there is a LiveScript called rpy2jac that takes you through the process. Just change this for your favourite 3-angle sequence.