What is force control and why is it better for robot machining? Here’s how to improve your machining quality in RoboDK.
Robots are a highly flexible way of achieving quality machining. Despite their relatively low stiffness compared to CNC machines, robots are more than capable of performing a wide range of machining tasks. They also have a bunch of extra benefits, as we explained previously in the article Can a Robot Outperform a CNC Machine for Robot Machining?
However, there is one problem. Hard materials are challenging for a low stiffness robot. When the tool contacts with the surface of a hard material, the robot can deflect and the drilled hole becomes inaccurate. Applying more force to the surface just makes the problem worse — the robot deflects more or, in extreme cases, becomes unstable and vibrates uncontrollably.
Force control is a good way to overcome this issue, once you understand the basics.
What is Force Control?
Robots are basically just an advanced type of control system. Like other control systems, they are governed by feedback loops. The most common setup for a robotic arm is to have an individual PID controller for each joint, which ensures that the joint actually reaches the desired position when it is instructed to move there.
There are two types of control which are commonly used in robotics: motion control and force control.
The basic control method used in robotics is position control. In this case, the robot program instructs each of the robot’s joints to move to a position. The PID controller at each joint then uses the signal from a position sensor as the feedback to detect when it reaches the desired position.
When the robot is given a Joint Move command, each joint will move to the desired position as quickly as possible. When a Linear Move or Circular Move is used, the robot controller will send a series of position commands to achieve a controlled path.
Position control is one of several motion control methods — others being velocity control and acceleration control. These are all inter-related as velocity is the derivative of position, and acceleration is the derivative of velocity.
Force control is more complex to implement than motion control because it is applied at the robot tool, not on a joint-by-joint basis. A force-torque sensor is attached to the robot’s wrist which acts as the feedback to detect the forces applied to the tool.
Instead of trying to reach a particular position, the force controller tries to achieve a particular force at the tool. The robot will apply more and more force to the environment until the desired force is reached.
There are several force control methods but the most common for machining operations is hybrid position/impedance control. When the robot is moving in free space, this works exactly the same as position control. However, when it collides with something, the robot acts like a virtual spring — the further the robot moves from its instructed position, the more force it applies to try and return it to the right position. By setting the stiffness of this virtual spring, you limit the maximum force that the robot can apply.
The Benefit of Force Control for Robot Machining
Force control is often better for machining operations because you can precisely control the force applied to the workpiece material. This improves the quality of the drilling operation, as demonstrated in the following example.
Imagine you are using a hand-held power drill to drill a hole in a sheet of steel. You align the drill to where you want the hole to be.
Which of these two methods would you use to apply a force?
- Begin with a gentle pressure until the hole starts to be formed, then gradually increase the force.
- Immediately push the drill as hard as you can into the metal.
Hopefully, you chose the first option.
Why is the second option not viable? If you have ever done this with a drill, you will know that the drill bit either skids uncontrollably over the material or it breaks immediately. The forces are too high in several directions. Either your compliant arm can’t withstand those forces or the drill bit can’t.
When a robot is instructed to drill into a material using only position control, it is the equivalent of using the second method. The robot can’t detect the forces so it pushes as strongly as its motors can manage.
Force control makes sure that the applied force never reaches such high forces.
How to Use Force Control in RoboDK
There are two ways to add a force controller to your robot in RoboDK. As force control is an advanced control method, they do require you to use programming.
Option 1: Create a Custom Post-Processor
Probably the easiest option is to create a custom post-processor for your robot and include force control commands in it.
The post-processor is what turns your RoboDK simulation into code which the robot can understand. See our previous article for information on how to create custom post-processors.
This option will be much easier if force control is available for your robot from the manufacturer. For example, the KUKA IIWA has an impedance control mode which can be activated in a few lines of code.
If no such option is available, you will either have to write your own force controller in the robot programming language or source another solution from a partner of the robot manufacturer.
Option 2: Use the RoboDK API
The second option is to use your computer to directly control the robot via the RoboDK API. This allows you to implement the force controller on the computer by using RoboDK as a master and the robot controller as a slave.
The advantage of this option is that you can use force control even if it is not provided by the robot manufacturer. Using one of the languages supported by RoboDK (Python, C#, C++, and Matlab) you have the option of many libraries and APIs which can make it easier to implement your chosen controller.
This is certainly not an “off the shelf solution” as you will almost certainly have to do quite a lot of programming to get the controller working reliably. However, it is a flexible option and can be used with most robots.
Thankfully, more and more robot manufacturers are providing force control for their robots, either themselves or through third-party partners. With a little bit of research and not a lot of programming, you can use RoboDK to improve the quality of your robot machining with force control.