RobotStudio event

Tool TCP Offset

I am looking for a way to offset the TCP according to the tool coordinates, similar to changing the object frame for a work object.

I have found a way to offset it according to the J6 coordinates, but since the tool is rotated, this will not work.

Anyone have an idea if this is possible?

Comments

  • Hi mecman,
     

    Have you tried the RelTool command?

     

    Functions

    RelTool - Make a displacement relative to the tool <- ->
    -
    Usage

    RelTool (Relative Tool) is used to add a displacement and/or a rotation, expressed in the active tool coordinate system, to a robot position.

    Basic examples

    Basic examples of the function RelTool are illustrated below.


    Example 1

    MoveL RelTool (p1, 0, 0, 100), v100, fine, tool1;

    The robot is moved to a position that is 100 mm from p1 in the z direction of the tool.



    Example 2

    MoveL RelTool (p1, 0, 0, 0 Rz:= 25), v100, fine, tool1;

    The tool is rotated 25A? around its z-axis.

    Henrik Berlin
    ABB

  • I have, but I don't think it's what I am looking for.  I would like to offset the TCP for a couple of moves where soft float is used.  It would be cleaner to offset it once, go through the moves and clear the offset.mechman2012-01-25 16:01:29

  • I would have done like this.
     
    1. Define a new tool and let it have values of the original tool
     
    tool_offset:=tool1;
     

    2. Offset the desired value

    tool_offset.tframe.trans.x:= tool1.tframe.trans.x+100;


    3. Use it in your instruction
    Henrik Berlin
    ABB
  • I may be incorrect, but it looks like that is transforming the TCP along the J6 coordinates.  I want to move it along the tool's coordinates which are not the same as J6.
  • How did you create your TCP? Did you add the rotation of the tool into the TCP tooldata? If you created the tooldata with the correct orientation then you can use the RelTool function to offset from a point relative to the tool coordinate system.




  • I have the same problem. I need an instruction to offset the tool coordinates in the toolframe direction and not the tool0 directions. Does anyone know how to do that??
    mechman is right, the following instruction offsets the tool in the tool0 direction:
    tool_offset.tframe.trans.x:= tool1.tframe.trans.x+100;
     
    My tool has a 45degree angle from the flange. I guess I could do some math to calculate it myself but there has to be an easier way.??? Smile 
  • Hi
     

    I think it's quite easy to calculate with multiplying the pose datas. You can use your old TCP and some offset pose and multiply them and the result will be the new TCP. For example like this:

     

    CONST pose peOffset:=[[0,0,200],[1,0,0,0]];

     

    tool_offset.tframe:=PoseMult(tool1.tframe, peOffset);

     

    This way tool_offset will be a copy from the tool1, but there will be offset of 200mm in z-direction.

     

    -Osku
  • Hey,
     

    I made this function to account for our tools having a variety of standoffs. I know it is the same as your response Osku, but could be handy. Its a shame it doesnt work in a MoveL

    e.g.
        MoveL p10, v100, z5, myToolOffs(myTool1,0,0,reg1);

     

      FUNC tooldata myToolOffs(
        tooldata RefTool,
        num xOffs,
        num yOffs,
        num zOffs)
        VAR pose tStandoff:=[[0,0,0],[1,0,0,0]];
        !To call use
        !tNewTool:=myToolOffs(tOldTool,0,0,10);
        !
        !creates a new pose with the new standoff
        tStandoff.trans.x:=xOffs;
        tStandoff.trans.y:=yOffs;
        tStandoff.trans.z:=zOffs;
        !Adds the new standoff to the tool
        RefTool.tframe:=PoseMult(RefTool.tframe,tStandoff);
        RETURN RefTool;
      ENDFUNC