# Jacobian transpose vs pseudoinverse

29 Jul 2016Let’s derive both celebrated algorithms from the first principles to see how they differ from each other.

**Jacobian transpose.** Let $x_d$ be the desired state of the end-effector,
$x(q)$ its current state corresponding to the joint configuration $q$, and let
$J$ denote the Jacobian $\partial x / \partial q$. Naive minimization of the
error in the Cartesian space

leads to the gradient descent algorithm

where $\alpha$ is the step size.

**Jacobian pseudoinverse.** Consider a small change in the joint configuration
$\Delta q$. It will lead to a small change in the state of the end-effector
$\Delta x = J \Delta q$. Since we want the end-effector to move in the
direction of $x_d$, let’s assume that $\Delta x = \alpha (x_d - x)$ with
some positive $\alpha$. Question: “What is the smallest $\Delta q$ that
accomplishes that?” It is well-known that the minimum norm solution to an
underdetermined system of linear equations is given by the pseudoinverse. Thus,
we arrive at the following gradient descent algorithm:

where $J^{+} = J^T (JJ^T)^{-1}$ if $J$ has full row rank (which is ususally the case).

**Comparison.** Note that both algorithms have
the form $\Delta q = J^T \Delta x$.
The difference between them is in the choice of $\Delta x$.
Jacobian transpose algorithm sets the step in the Cartesian space
proportional to the distance to the goal $\Delta x = \alpha (x_d - x(q))$,
whereas Jacobian pseudoinverse accounts for the curvature of space in addition
$\Delta x = (JJ^T)^{-1} \alpha (x_d - x(q))$.