Today's industrial robots are almost always programmed using a position control scheme. Typically, the robot tool follows a prescribed trajectory in space which has been pre-programmed or "teached" before run-time. Sometimes, the robot gets its reference position from a vision system, which enables it to adapt its motion to its changing environment. However, for some applications, it is more important to precisely control the force applied by the end-effector rather than controling the robots positioning. One example of this is the finishing of a machined part, as seen in the video below:
Video from the Youtube user Abrasit
In an application for which the applied force is important, the robot needs to be controlled differently. Instead of servoing each joint to its targeted position, the output torque is controlled to match the desired force applied by the end-effector on an external object. To do this, a way of measuring the external force is required.
Typically, the external force is measured using a six-axis force/torque sensor which measures any force applied to the end-effector. Most of the commercially available force/torque sensors are built from strain gages. Some robot manufacturers offer force-control packages containing the sensor, plus a special software, which allows you to program the robot using force control.
One question begs to be asked at this point: is it possible to control the applied force using a normal, position-controlled robot? Well, the answer is yes, but not directly. One way to do this is by having a compliant end-effector for which the relation between displacement and force is well-known. Instead of controlling the force, the position trajectory is programmed to control the deformation of the tool in order to match the desired applied force. This approach is more simple but has some disadvantages: the position of the object has to be known precisely, the contact surface has to be stiff and the end-effector has to be compliant in only one direction. If one of these assumptions is not met, the results are often compromised. Therefore, a force/torque sensor is the best option to obtain precision in force control.
At first glance, the basic idea behind force control is simple: the output of the sensor is used to close the loop in the controller, adjusting each of the joint torque to match the desired output. In a certain way, this is similar to position control. You simply replace the reference position (from the motor encoders) by a reference force (from the force/torque sensor).
Unfortunately, it is not always as easy as that. The problems come from the fact that the robot needs to perform a trajectory in certain directions while a precise control of the force is required in other directions. For example, when a robot is grinding a surface, a precise force is needed in the direction perpendicular to the grinded surface. In all other directions (and orientations), the robot needs to perform a standard, programmed position trajectory. Therefore, in real applications, force control is in fact an hybrid force/position control for which the joint torques are computed using two references. On top of that, the control scheme needs to be dynamically changed between two operations, for example when the robot completes grinding the surface of the object.
Needless to say, force control is a world in itself and can be quite complex to master (whole textbooks are written on the subject). Fortunately, force-control packages are offered by some robot manufacturers to ease the integration of these sensors with their robots. It's a good thing since one day, force control programming might just be as easy to integrate as the good old-fashioned position control scheme.