RobotStudio event

Move RelTool for x and y Axis

I am in the process of automating pick and place applications and have unfortunately encountered a problem that I need help with. The command "RelTool" implies that a movement should be made relative to the tool, but this still works for me in the z-direction. I would like to have a relativ movement in x and y direction. 

As I have to rotate some components and want to "push" them sideways, an offset point from the end point where the component should go would be very helpful, as I could save myself a point.

Here is my code:

TASK PERS tooldata toolgrip:=[TRUE,[[0,0,382.640],[1,0,0,0]],[45.5,[162.2,-8.4,164],[1,0,0,0],0,0,0]];

TASK PERS wobjdata wobjformworktable:=[FALSE,TRUE,"",[[-320.949,1590.29,486.978],[1,0.000165245,1.40909E-05,0.000159776]],[[0,0,0],[1,0,0,0]]];

PERS robtarget pNehmenP1:=[[300.01,50.00,42.05],[3.64828E-07,0.707107,-0.707106,3.95569E-06],[1,0,0,0],[1200.01,9E+09,9E+09,9E+09,9E+09,9E+09]];
   
PERS robtarget pNehmenP2:=[[300,300,42.06],[3.64828E-07,0.707107,-0.707106,3.95569E-06],[1,0,0,0],[1200.01,9E+09,9E+09,9E+09,9E+09,9E+09]];

!Turning the Object around Z! - NO Offset in x and y to the TURNED Gripper is possible.
MoveL RelTool(pAblegenAktuell,0,0,-nDistanzVorNehmen \Rz:= nWinkelAblegen),vZufahrt,z1,toGreiferAktuell\WObj:=woSchalugstischAktuell;

        
MoveL RelTool(pAblegenAktuell,0,0,0 \Rz:= nWinkelAblegen),vAnnaehern,fine,toGreiferAktuell\WObj:=woSchalugstischAktuell;

...

The thing is, that the offsets move in the wobj, and not to the tool, thats turning about 45°.

Please help. 

Best,
Peter

Answers

  • Hey Gapps,

    did you try it with the Offset command?
    This command is defined on the position instead of the tool.

    MoveL Offs(P_Test_01,inX,inY,inZ\Rx:=0\Ry:=0\Rz:=0),vmax,fine,T_Gripper\WObj:=wobj0;



    Robotic Software Engineer
  • Thanks for your quick reply, it says the command "offs" has too many commands and underlines the Rx/Ry and Rz.
  • Hey,
    yeah sorry rotation commands are not allowed on an OFFS command. Only working on RelTool for definition on tool. 

    But you could read out curr position on a Variable and rotate it via reltool




    Robotic Software Engineer
  • DenisFR
    DenisFR ✭✭✭
    edited December 2023
    Hello,
    Offs and RelTool compute new robtarget.
    So you can combine them:
    MoveL Offs(RelTool(pAblegenAktuell,0,0,-nDistanzVorNehmen \Rz:= 
    nWinkelAblegen),nOffsX,nOffsY,nOffsZ),vZufahrt,z1,toGreiferAktuell\WObj:=woSchalugstischAktuell;
    With nOffsX,Y and Z as num values.

    ☑️2024 - RobotStudio® User Group

  • mandolas
    mandolas
    edited December 2023
    DenisFR said:
    Hello,
    Offs and RelTool compute new robtarget.
    So you can combine them:
    MoveL Offs(RelTool(pAblegenAktuell,0,0,-nDistanzVorNehmen \Rz:= 
    nWinkelAblegen),nOffsX,nOffsY,nOffsZ),vZufahrt,z1,toGreiferAktuell\WObj:=woSchalugstischAktuell;
    With nOffsX,Y and Z as num values.
    Hi...
    To improve accuracy and ensure movement is achieved I suggest it calculates position so objects and tools can be changed and you still have position control.

    NO change to tools and\or objects
    MoveL CalcRobT(CalcJointT(Offs(RelTool(pAblegenAktuell,0,0,-nDistanzVorNehmen\Rz:=nWinkelAblegen),nOffsX,nOffsY,nOffsZ),toGreiferAktuell\WObj:=woSchalugstischAktuell),toGreiferAktuell\WObj:=woSchalugstischAktuell),vZufahrt,z1,toGreiferAktuell\WObj:=woSchalugstischAktuell;
    WITH changing tools and\or objects
    MoveL CalcRobT(CalcJointT(Offs(RelTool(pAblegenAktuell,0,0,-nDistanzVorNehmen\Rz:=nWinkelAblegen),nOffsX,nOffsY,nOffsZ),toGreiferAktuell\WObj:=woSchalugstischAktuell),toGreiferAktuell_2\WObj:=woSchalugstischAktuell_2),vZufahrt,z1,toGreiferAktuell_2\WObj:=woSchalugstischAktuell_2;

  • The current problem is that I want to create geometric shapes with components, but corner pieces cannot be placed from above but have to be placed from the side under already placed components. As the gripper has to rotate for each corner, it would be great to have an offset from which the final position is reached. 

    Quick drawing. So the same offset for each corner would be fine, so i just need one/final position.
    https://imgur.com/a/ZovQHnq

  • mandolas
    mandolas
    edited December 2023
    Hi...
    Gapps ...
    Does the solution presented by DenisFR not meet your needs? With it, it is possible to move the robot in X and Y in relation to the object by rotating the tool to the desired position.
    Looking at your drawing, the robot's movement doesn't seem to me to be in relation to the object's X and Y coordinates, so the RelTool command alone already works.
    If the robot is moving in an orientation other than that of the object or the claw, it is interesting to calculate the final position of the point to make it possible to check the robot's range before executing the trajectory, as I suggested.
  • I have found a workaround, but unfortunately I have to define one more point for each corner. 
    Thanks for your support.

    Example:
    PERS robtarget Triangle_C_60_1:=    [[680.52,   102.9,  42.8],[3.64828E-07,0.707107,-0.707106,3.95569E-06],[1,0,0,0],[1200.01,9E+09,9E+09,9E+09,9E+09,9E+09]];

    PERS robtarget Triangle_C_60_1_OFF:=[[730.52,   52.9,   42.8],[3.64828E-07,0.707107,-0.707106,3.95569E-06],[1,0,0,0],[1200.01,9E+09,9E+09,9E+09,9E+09,9E+09]];

    PERS robtarget Triangle_C_60_2:=    [[519.48,   102.9,  42.8],[3.64828E-07,0.707107,-0.707106,3.95569E-06],[1,0,0,0],[1200.01,9E+09,9E+09,9E+09,9E+09,9E+09]];

    PERS robtarget Triangle_C_60_2_OFF:=[[469.48,   52.9,   42.8],[3.64828E-07,0.707107,-0.707106,3.95569E-06],[1,0,0,0],[1200.01,9E+09,9E+09,9E+09,9E+09,9E+09]];

    PERS robtarget Triangle_C_60_3:=    [[600,      214.7,  42.8],[3.64828E-07,0.707107,-0.707106,3.95569E-06],[1,0,0,0],[1200.01,9E+09,9E+09,9E+09,9E+09,9E+09]];

    PERS robtarget Triangle_C_60_3_OFF:=[[600,      264.7,  42.8],[3.64828E-07,0.707107,-0.707106,3.95569E-06],[1,0,0,0],[1200.01,9E+09,9E+09,9E+09,9E+09,9E+09]]; 

  • Hi...
    I really don't like using too many positions in my programs.
    From what I saw, I think you could use just one position and reference the others.
    But if it works and solves the customer's pain, congratulations.