How should I set the Base and Tool in my robot

Started by yck011522, November 23, 2013, 08:50:03 AM

Previous topic - Next topic


Hi Johannes,

I'm using a Agilus sixx and just recently started using prc.
I have to set the base offset and the tool offset in prc. I wonder what the setting affects. I wonder if my following assumption is correct?:

For Base Offset
Since the effect of adjusting the base offset actually moves the robot base around in the simulation. I believe prc has assumed the world coordinate system of Rhino be the coordinate of the base.
Which means that the modeling and toolpath definitions in the 3D space should be all relative to the base.
Since I tested that, changing the base offset will not change the code output at all. I believe my assumption is correct, and that the base offset is only for simulation.

For Tool Offset
I also find that the settings does not affect code output.
Which means that the settings only affects simulation.

This should also mean that I need to define my tool and base on my robot in the traditional manner of 4 point calibration by jogging or value input.
This also means that for the simulation to be correct (Reachability and Collision), my base offset and the tool offset in prc have to reflect reality.

My final question is: If I'm feeding a series of Planes to Lin movements, which axis should I assume to be the tool and which one is the flange.
My speculation is +ve Z is tool axis facing away from workpiece (milling); -ve X is facing towards the flange.

Please correct me if I'm wrong. Thank you.

Johannes @ Robots in Architecture


You are correct about the base and tool - you first have to calibrate the tool and base on the robot and then use the same number that was set at the robot inside KUKA|prc. The XYZABC values in KUKA|prc are only used for the simulation.
There is a particular reason for that - let's assume that a milling tool breaks and you have to put in a new one. If the values were hard-coded, you would have to go back into KUKA|prc and change them there again. As only the ID is referenced, you just have to save the new tool with the same tool-number.

By default we're using X as the tool axis in the tool definition - as in the KUKA manuals. If you go into the settings of the Custom Tool component, there is an illustration. However, you can use the Z-axis as well, there is an option in the KUKA|prc settings for it (though I'm not 100% sure if it's already available in the trial version).
If you're using planes as the input for movements, the planes' positive Z-axis will be the tool axis. to sum things up: You assumed correctly!



I am trying to output my own .src and .dat files. I have a Kuka KR60 HA and I built for it a custom hotwire. The wire is at 102mm away from the face of the flange and oriented horizontally. It is centred with the flange vertically. How can I specify that offset in the .src file? When I specify the path to hotwire cut, I assume the Z orientation to be towards the flange with the wire perpendicular to the orientation as seen in this early test video:

Johannes @ Robots in Architecture

Hello Wassim,

First of all, you need to create a custom tool geometry as single mesh - i.e. you can model it in Rhino, mesh it, and then join the meshes.
At the robot, every tool is defined by XYZABC values defining the offset from the flange. In your case, with the tool 102mm away from the robot's flange it would be XYZ would be 0/0/102. If you set ABC to 0/-90/0 and define the robot's position via a plane, the plane's Y-axis will be the wire and its Z-axis will face towards the robot's flange.
Of course you also have to set the same tool values at the robot itself (Start-Up/Calibrate Tool/Numeric Input, see p.109 of the KUKA KSS 8.2 manual)
The tricky thing with hotwirecutting is defining the best direction from where the robot holds the hot wire to optimize reachability.
I've attached an example-file to this post.

One more thing: 102mm seems like a very small wirecutter for a KR60HA - are you sure about that? If it's 102cm then you have to use 0/0/1020 for XYZ instead. In the example I used an Agilus with a tiny wirecutter :)


P.S.: I'm on the train at the moment and couldn't watch the video - will do so ASAP.