Notes on Jacobian matrix in robotics.

Introduction

Jacobian matrix defines the relation between joint velocities and end-effector velocities.

Just like forward kinematics from the previous note, which calculates the end-effector positions from the joint angles, Jacobian matrix provides the end-effector velocities from joint angle velocities.

Here, we define the end-effector position as x and joint angle as q.

Formally, a Jacobian is a set of partial derivatives:

J=xq

Or, if we manipulate a bit so J=xq=xttq , we can get

˙x=J˙q

Then we know that the Jacobian defines the relation between the end-effector velocities and the joint angle velocities.

Linear Velocity Jacobian

The simplest Jacobian matrix provides the relation end-effector linear velocity (we can call it linear velocity Jacobian Jv).

Let us write the equation for an nR planar robot (2D robot in n joints).

The end-effector velocity is defined as

˙x=J˙q
[˙x˙y]2×1=[J11J1nJ21J2n]2×n[˙q1˙qn]n×1

From the equation above, we can see that for any joint i, the Jacobian for its end-effector has a dimension of 2×i (in 2D space).

Full Jacobian Matrix

A full Jacobian matrix consists of linear velocity part and angular velocity part. Simply,

J=[JvJω]

With Jv=xq for the linear velocity part and Jω=ωq for the angular velocity part. ω denotes the angular rotation of the end-effector.

Building the Jacobian Matrix

We have known that a linear velocity Jacobian is

Jv=xq

So, after we know the position of end-effector xi=[xiyi] of a joint i, we can easily create the set of partial derivatives for the linear velocity Jacobian as:

Jv=[xiq1xiqiyiq1yiqi]2×i

The same method applies for the angular velocity Jacobian Jω.

Canonical example: 2R robot

Let’s try with an example of a 2R robot.

From the previous note, using forward kinematics, we can get the position of end-effector of each joint i as

x1=[L1c1L1s11]
x2=[L1c1+L2c12L1s1+L2s121]
With c1=cos(q1), s1=sin(q1), c12=cos(q1+q2), s12=sin(q1+q2), and L0=0.

The linear velocity Jacobian can be calculated as:

J1v=[x1q1y1q1]=[L1s1L1c10]
J2v=[x2q1x2q2y2q1y2q2]=[L1s1L2s12L2s12L1c1+L2c12L2c1200]

(Note that we define the position as a 3×1 matrix here. So, the Jacobian matrix is 3×i matrix)