# Jacobian transpose vs pseudoinverse

Let’s derive both celebrated algorithms from first order 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

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 the space in addition, $\Delta x = (JJ^T)^{-1} \alpha (x_d - x(q))$.