Position control is good for many tasks but sometimes we need to be able to control the force that the tool tip applies to the environment. A classical example is one where we want a tool to adjust to the shape of a unknown surface so that it makes full contact with it. This can be done by applying a constant downwards force and letting the manipulator adjust to the shape of the surface.

Lets begin by considering energy, in cartesian coordinates energy is the product of force and distance, like wise in joint space coordinates energy is the product of torque and joint displacement. Now lets equate these two energies:

$F^T \Delta x =W=\tau^T \Delta \theta$

Since the Jacobian definition is $\dot x = J \dot \theta$ then for very small values of $\Delta$ (in the limit in fact), it will hold true that $\Delta x = J \Delta \theta$

So by substituting the above equation into the one where the Cartesian and joint energies are equated, we have:

$F^T J \Delta \theta =\tau^T \Delta \theta$

So this can be rewritten without $\Delta \theta$

$F^T J =\tau^T$

$J^T F =\tau$

The above Jacobian transpose method is often used in force control as it gives a relation between the static joint torques and the static manipulator forces. Be aware though that this only applies to static(i.e no motion) situations and that it does not include the effects of friction. A simple method of fixing these problems is to just consider them as a sort of disturbance force which can then be removed by a disturbance observer as follows.

I adapted this system from [1] and changed the model based resultant force estimation to a sensor based one because I think its simpler and better. If you dont have a force sensor but you know the mass of your manipulator then you can just estimate $F^{sens}$ as $m\ddot x$

Next: Biped Basics

Previous: Position Control

Reference

[1] Naoki Oda, Toshiyuki Murakami, and Kouhei Ohnishi. A robust control stratergy
of redundant manipulator by workspace observer. IEEJ D, 115(8):991–998, 1995.

### 2 Responses to “Force Control”

1. thanks, but last line is transpose(J)*F=tau.
–>(AB)^T=B^T*A^T

• Indeed, thank you, I made the correction.