# Inverse kinematics after calibration

I am working on a 6DOF robot arm project and I have one big question. When I first derived the inverse kinematics (IK) algorithm after decoupling (spherical wrist), I could easily get the equations based on nominal DH values, where alpha are either 0 or 90 degrees and there are many zeros in $a_i$ and $d_i$. However, after kinematics calibration, the identified DH parameters are no longer ideal ones with a certain small, but non-zero, bias added to the nominal values.

So my question is, can the IK algorithm still be used with the actual DH parameters? If yes, definitely there will be end-effector errors in actual operation. If not, how should I change the IK algorithm?

P.S. I am working on a modular robot arm which means the DH bias could be bigger than those of traditional robot arms.

• @Greenonline and ben, thank you for making my post better by correcting the errors. I am not a native English speaker, but I will try to make my next post less errors. Feb 12 '16 at 0:36

The analytic inverse kinematics solutions you found do depend on those $0$ terms in your transformation matrices. Those values are, as you've implied, based on the $0$ and $90$ degree values for the axes relationships. The kinematic mapping process works for other $a_i$ and $d_i$ values, too, but it becomes difficult to find closed-form inverse solutions when those nice zeroes become other values.

The solution most often implemented is to use numerical solutions for the inverse kinematics after calibration. The closed-form, analytic, inverse kinematics are a good starting estimate for the numerical solver, but you must then account for the as-built errors with some (often iterative) approach to find the actual joint angles given the EE pose. There are many published approaches to the numerical solution methods.

EDIT (Industrial robots): For general-purpose industrial robots the above is rarely done. Instead of calibrating to eliminate as-built errors in the kinematics, the robots are usually calibrated to align the task space coordinate system with the robot's base coordinate system (resulting in a single additional transformation matrix of constant values). The end effector destination locations are then taught (in either task, end-effector, or joint coordinates). Because they use a "teach and repeat" method of programming, the small errors in the calibration are absorbed by the teaching process.

Additional calibrations of the robot may be accomplished by the robot manufacturer. In my experience those calibrations generally set precise values for the link lengths and encoder home, or zero, values - but not joint axis offset angles. It's possible that some robot manufacturers calibrate more precisely, then use numerical methods to find inverse solutions, but I have not seen this absolute precision needed in an industrial setting.

• SteveO, thank you very much for the answer. To use numerical method, even with good starting estimates, could cause some delay, although at this moment I am not sure how much the delay would be. Is it the common practice to do so for industrial robots? Feb 11 '16 at 4:21
• Edited to include industrial robot overview. Feb 11 '16 at 7:09
• SteveO, I really appreciate your detailed explanations. Thanks a lot! Feb 11 '16 at 7:34

You might want to try IKFast in OpenRave. It can supposedly handle "robots with arbitrary joint complexity like non-intersecting axes".

However, I had the same problem as you. After kinematic calibration, my joint axes were no longer at right angles. But when I tried my new robot kinematics in IKFast, it would crash and I was never able to get valid IK. I had a 7 DOF arm on a 1 DOF torso though. You might have better luck with a 6 DOF robot.

• Hi, ben, thanks for the advice. We will give it a try soon. Feb 15 '16 at 1:52