# Tool calibration- orientation

I'm currently working calibrating a robot's tool. I have found some simple methods to get the tool centre point. But I'm unsure about how to get the tool's orientation relative to the robot's tip (the point where the tool is attached to the robot). The assumption here is that the tool-free robot is calibrated.

I'm looking for a solution which doesn't use camera or expensive sensors.

EDIT: The robot is 6dof. The accuracy I'm looking at is approximately 0.1mm. The programming will be C language (How is this info related to the calibration method?).

Could someone guide in this aspect?

• Need waaaaay more info. What is the tool attached to? How.many degrees of motion? How accurate does it need to be? What are you programming it with? There are way too many unknowns to help here Commented Jul 21, 2017 at 20:53
• Hi @user241585, I've updated the information in my question. Could you also tell me how the programming language affects the calibration method? Commented Jul 22, 2017 at 3:55
• The language doesnt but, it will help to possibly look for a library you can use to help you Commented Jul 22, 2017 at 3:56

You can also use a touch sensor, that can be as simple as a conductive pad that completes a circuit when a tool touches it to determine initial position with the distance of the tool length accounted for. It won't work unless you want the tool to return home for recalibration periodically though.

Also look into teach position method

• Thanks for the answer. I had read abt the teach position method. Looks very promising to me. But could you explain a bit abt this sentence Commented Jul 24, 2017 at 13:26
• "It won't work unless you want the tool to return home for recalibration periodically though." Sorry posted the previous message before completing it. Commented Jul 24, 2017 at 13:26

One method that doesn't require any sensors or cameras, is to use a pointer 'tool', mark some known points and use geometry.

Attach a simple pointer tool (something with a nice point on one end, but that is aligned with the mounting plate but just offset by a known length).

Then, move the robot so that the pointer is touching 3 or 4 points on the workspace surface (for example) and record their Cartesian X,Y,Z position as reported by the robot controller and mark them on the surface (probably best if the pointer tool is sharp enough to make a small point indentation).

Then, mount your tool and jog the robot so that the end-effector reference point is positioned on each of the previously marked points and record the Cartesian X,Y,Z from the controller again.

Now, from the initial pointer, you can subtract the offset to know where the tool mounting plate is in 3D. Then, using some simple geometry (e.g. on paper), you can use angles of triangles and trigonometry to calculate the angles between the tool end and the tool plate to obtain a rotation angles about X & Y.

• Robot positions are actually vectors having a distance and a direction. You need to do vector subtraction to find the difference between your taught locations and the robot's mounting flange when the unknown tool is at the same known position. Doing simple algebraic subtraction can result in errors in the orientation. Many robot programming languages do support vector inversion and vector addition. The combination lets you do vector subtraction.
– Jim
Commented Jun 1, 2022 at 12:57