RobotStudio event

Changing a tool TCP position

Options
Hi there

I want to change a tool TCP position for an existing installation without affecting all by working program.

The long winded way I am doing this is;

1. "Synchronize to station" required part of program
2. Create my new tool
3. Select move instruction I want to change in "Paths and Targets"
4. Select "View Robot at Target"
5. Once robot is shown at the correct position deselect "View Robot at Target"
6. Change to my new tool in "Modify Instruction"
7. Select my new tool as current
8. Modify Position
9. Repeat steps 3 to 8 (lots and lots of times....... a bit frustrating)
10. Syncrinise to VC

Is there an easier way?

If I wanted to do a similar change to a workobject I can just drag my required positions from one workobject to the other and Robotstudio will ask me if I want to keep current positions or modify them to the new workobject.

Regards

Brendan

Comments

  • Thomas J
    Options
    Hi Brendan,
     

    You could do this all in RAPID before Syncronizing to the station, by creating the new tool and declaring all your robot targets you want to change to PERS first (you can change them back to CONST after the conversion).

     

    There exists a neat little procedure that recalculates a point (robtarget) according a new tool and/or a new workobject. This is from a collection of RAPID procedures orignally authored by HA?kan Brantmark/ABB - to demonstratte the power of the S4 robot controller when it was released way back when...

     

    To use it, the syntax is as follows:  "rcp pChange,old_tool,new_tool,old_wobj,new_wobj;"

     

    PROC rcp(
      INOUT robtarget point,
      PERS tooldata told,
      PERS tooldata tnew,
      PERS wobjdata wold,
      PERS wobjdata wnew)

      VAR pose ppnt:=[[0,0,0],[1,0,0,0]];
      VAR pose ppntnew:=[[0,0,0],[1,0,0,0]];
      VAR pose pb:=[[0,0,0],[1,0,0,0]];
      VAR pose pa:=[[0,0,0],[1,0,0,0]];

      ppnt.trans:=point.trans;
      ppnt.rot:=point.rot;

      pa:=PoseMult(PoseInv(PoseMult(wnew.uframe,wnew.oframe)),PoseMult  (wold.uframe,wold.oframe));

      pb:=PoseMult(ppnt,PoseMult(PoseInv(told.tframe),tnew.tframe));

      ppntnew:=PoseMult(pa,pb);

      point.trans:=ppntnew.trans;

      point.rot:=ppntnew.rot;

    ERROR
      RAISE;
    ENDPROC

    Create a temporary routine and ONLY RUN IT ONCE!!!! (Maybe a good idea to back-up your work before proceding).

    ex:

    PROC routine1()
     
        rcp pMyPos1,old_tool,MyNewTool,old_wobj,old_wobj;

        rcp pMyPos2,old_tool,MyNewTool,old_wobj,old_wobj;

        rcp pMyPos3,old_tool,MyNewTool,old_wobj,old_wobj;

        rcp pMyPos4,old_tool,MyNewTool,old_wobj,old_wobj;
        .
        .
        .

        rcp pMyPosN,old_tool,MyNewTool,old_wobj,old_wobj;
     


    ENDPROC.
     
    Be sure to delete the routine and re-declare your changed robtargets back to their default decleration CONST.
     
    Hope this Helps...
    Thomas H. Johnston
    PACs Application Engineer