Overview
We cover forward kinematics and the Jacobian, relating joint velocities to end-effector velocities with the Jacobian, and forces to torques via the Jacobian transpose.
In this post:
- All vectors are assumed to be column vectors.
- Transposes are written explicitly .
- denote key equations.
- “task space” and “Cartesian space” are used interchangeably.
Useful References
- Studywolf’s blog on “ROBOT CONTROL PART 2: JACOBIANS, VELOCITY, AND FORCE”
- Interactive Python Notebook on Differentiable Kinematics
Forward Kinematics
We model the joint configuration of the robot at time as
where is the number of independent joints, each contributing one degree of freedom (DoF). We denote the task space of the robot (for example, the end-effector position and orientation) at time as
where is the task-space / Cartesian space dimensionality.
The kinematic structure of the robot determines a forward kinematics function
which maps joint configurations to the task space:
Differentiable Kinematics and the Jacobian
If the forward kinematics function is differentiable with respect to , we can differentiate both sides of the equation with respect to time. Applying the chain rule yields a relationship between joint velocities and Cartesian velocities:
If we define the Cartesian and joint velocities as:
and the Jacobian matrix as
We can substitute these to rewrite the above differentiable kinematics equations as
The Jacobian maps joint velocities to Cartesian velocities and depends explicitly on the current joint configuration.
Jacobian Transpose relates forces and torques
Torques and forces are also related via the transpose of the Jacobian. To derive this, remember that power (measured in joules per second) is the rate of energy transfer. Power can be expressed in Cartesian space:
where is a constant force vector applied to the end effector, and is the Cartesian velocity as defined above. Notice that and are both (column) vectors, and since we are taking their dot product, we transpose the force vector .
Power can also be expressed in the configuration space, where we replace force and Cartesian velocity , with their joint analogues torque and joint velocity respectively (the latter defined above).
Since and are both (column) vectors and we are taking their dot product, we also transpose the torque as above for force.
Since total power is conserved between Cartesian and joint spaces, we can equate these, and then rearrange the equation to relate torque to forces via the transpose of the Jacobian .
If we transpose both sides, we get
Notice how our final relationship has the force and torque vectors both as column vectors, as expected.
2 DoF Revolute Arm Example
In practice, is often nonlinear and can be quite complex, depending on the robot’s geometry. For example, consider a serial robot arm composed of two links, with lengths and . The first link is connected to the world via a revolute joint, and the second link is connected to the end of the first link via a revolute joint.
The end-effector’s 2D position in the plane is given by:
The Jacobian is obtained by differentiating the forward kinematics with respect to the joint angles:
As a result, we know that the Jacobian for this robot arm is: