People worry that offline programming is inaccurate. But, is it true? Here’s the secret to accurate robot programs.
A common concern about offline programming is accuracy. People may have heard that simulation can be inaccurate. They worry that they’ll have to do extra debugging work when they send their program to the real robot hardware.
The basic answer is: “yes, offline programming is accurate, but…”
But, you have to set it up properly. When it’s set up properly, your program will run accurately on the physical robot. This will save you extra programming time and help to reduce downtime.
Thankfully, some offline programming software is very easy to configure for high accuracy applications.
Let’s have a look at what contributes to programming accuracy and how you can ensure that your robot program is accurate.
10 Causes of Inaccurate Robot Programming
There are various factors which can cause a robot program to be inaccurate.
Here are 10 of the most common causes.
Some of these also apply to robots which have been programmed using online programming methods.
- Lack of calibration — The most important factor has got to be calibration, or lack of it. If your cell is not calibrated, you are setting yourself up to fail. I’ll cover calibration in more detail in the rest of this article.
- Inaccurate robot model — Your offline program is only as good as your robot model. Over the years I have spent hours and hours building various robot models for simulators. In the process, I have learned this: if you can find an existing, accurate robot model (like the ones in RoboDK’s Robot Library) you’ll save yourself a lot of time and energy. The accuracy of the robot model can be improved using robot calibration.
- Inaccurate cell layout design — Equally important is having an accurate model of the robot’s work cell. This you will almost certainly have to build yourself, so check and double check that it is an accurate representation of the real workstation.
- Bad post-processor — The post-processor turns the program you have created in offline programming into code which the robot can use. If you are using a good post-processor (such as those included in RoboDK) this is very simple. However, if you have to write your own post-processor for any reason, it could introduce inaccuracies if it is not programmed correctly.
- Distortions in the real world — The real world is never as clean as a simulated environment. The robot links will be slightly different sizes, its joint angles will be slightly different from the readings, etc. This is why calibration is so important.
- Sensor inaccuracy — Sensors are used to detect the difference between the theoretical values and real robot values. The simplest example is a potentiometer to detect the real position of a robot joint. A more complex example is a 3D vision setup. However, sensors are also physical devices sensors so can also introduce errors.
- Unhelpful product design — Some objects are harder to manipulate with a robot than others. Even if your robot program is entirely accurate, you may see inaccuracies in the robot’s actions if the objects it manipulates are not designed with robots in mind.
- Different coordinate systems — Robot manufacturers sometimes use different coordinate systems. This can cause inaccuracies if the wrong system is used or if errors are introduced when converting between different systems.
- Wrong reference frame — All positions in a robot program are given relative to a reference frame. Sometimes this is a fixed frame, e.g. the robot’s base, but you can also make it relative to another frame, like the manipulated object. Poorly calibrating this frame can cause inaccuracies.
- Lack of testing — Test your program. Even when your cell is properly calibrated, you should always test the program thoroughly in software and then double check it on the real robot before you go into production.
You can solve most of these problems by using good offline programming software (like RoboDK) and calibrating your robot.
How to Calibrate Your Offline Program
As Automation manager Jens Fetzer says “Offline programming for robots will never work … unless you calibrate your workcell.”
Calibration is the key to an accurate robot program. This is true for any robot program, but it is especially important for offline programming.
If you’re comparing offline programming packages, make sure that it is easy and accurate to calibrate the robot, tools and reference frames before you begin to create programs. There’s nothing worse than spending hours on a program, only to find that the calibration procedure in the software you are using is non-existent or cumbersome.
Here are the four steps to calculating your robot with RoboDK.
1. Calibrate Your Tool (TCP/Tool Center Point)
The Tool Center Point (TCP) is the point that you will most often use to direct the movements of your robot. For example, it might correspond to the center of a gripper, the tip of a welder, or the tip of a spindle cutter for robot machining.
Calibration involves moving the physical robot to points within its workspace then recording the real position of its joints. The software then uses this information to adjust its model to more accurately correspond to the real robot.
There are two ways to calibrate TCP in RoboDK:
- By Point — The traditional way to calibrate the TCP is to touch the same point using various orientations. You can do this by using the “Calib XYZ by point” function.
- By Plane — Another option is to touch various points (at various orientations) on one plane with the tool tip. This is particularly useful if the TCP is a sphere, rather than a single point. You can do this by using the “Calib XYZ by plane” function.
You must capture at least 3 points to calibrate the tool, but we suggest that you use more than 8 points to improve accuracy.
You can find more detailed instructions on this page of the documentation.
After you have collected all your calibration points (more is better!), check for any outliers in the data by bringing up the “Show Errors” graph in the calibration window in RoboDK. The outliers will show up as errors which are very different from all the rest. You don’t want your calibration to be influenced by outliers as it will cause inaccuracy. Delete the offending points and the new TCP error will be calculated.
2. Probe Your Reference
If you are using an external reference frame instead of the default robot base frame, you can also calibrate this point in RoboDK. This involves either entering the frame’s location manually or moving the robot’s TCP to the physical location of the frame in the workspace. Make sure that you calibrate the TCP first, otherwise the frame will be recorded inaccurately.
3. Calibrate Your Robot
Robot calibration allows you to improve the real geometrical parameters in the kinematic structure of an industrial robot, such as the relative position of joint links in the robot. Once a robot is calibrated robot programs can be generated using a filter algorithm that compensates kinematic robot errors.
Robot calibration requires metrology equipment which can be costly compared to the price of a robot.
Following steps 1 and 2 properly are critical to decide if robot calibration is required. Without robot calibration, errors can vary a lot from one robot to another one. Errors can range from 1 mm to over 10 mm. Having a smaller robot does not always mean you’ll get better accuracies either!
Once a robot is calibrated, accuracies usually range between 0.050 mm and 1 mm at most. This highly depends on the robot used.
In RoboDK, we’ve made robot calibration as easy as possible. You can calibrate your robot in less than 20 minutes!
4. Test Robot Performance
If it’s the first time you are using offline programming with your robot, it’s a good idea to test the accuracy on the real robot. If you haven’t got any testing equipment, I’d suggest at least running a simple program to test that the robot moves where you expect it to. However, it is even better if you can validate the accuracy of the calibration using verification tests.
Two great ways to verify the calibration of your robot is to use the “ballbar test” or a Robot Performance Analysis. You can see some videos of these processes on our robot ballbar testing page.