RobotStudio event

Create a frame of cylindrical workobject

Hi, I need help with creating a work object frame. My work object is a pipe standing on the the robot plate. Since I create a setup that stays on the robot plate to hold the pipe on which I want to work, I need to have an axis that is perfectly parallel to the pipe so that the pipe can rotate without moving from the central axis. So far I have determined 3 points on the circumference of the pipe. My problem is from now on: I don't know how to position the work object frame in the center with the right orientation (the pipe needs to move  and rotate horizontally with respect to the world coordinate system). I am stuck because I only have 1 point, not 3 to determine the frame. 
Thank you very much in advance to you all.

Comments

  • lemster68
    lemster68 ✭✭✭
    You can manually enter the data for the workobject.  Use the robot tcp to measure in world coordinates where you want the origin of the workobject.  Take note of the x, y and z numbers.  Enter those in the workobject data for the origin.  Try 1,0,0,0 for the orientation.  Check by jogging in the coordinates of that workobject.
    Lee Justice
  • Ok thank you very much. It worked!
  • Another thing, if the robot is holding the tool, how can I define the user coordinate system? I read on the manual that they have to be expressed in world coordinates but I don't know which point to get as origin, rn I have a circular plate as work object of the robot, and on it I have the pipe with their own new frame, does it make sense to get the center of this plate as user coordinate system?  
    Thank you :)
  • lemster68
    lemster68 ✭✭✭
    It might be a good idea to have a workobject for the plate.  Further, you could combine the two if you make the plate the uframe component of the workobject and the pipe is the oframe component.
    Lee Justice
  • Eleonora
    Eleonora
    edited May 2022
    Thank you again. 

    Ok, I have created the workobject knowing it is probably wrong (I wanted to test it to see what it does and modify it).  It looks something like this

    TASK PERS wobjdata wobj_pipes := [TRUE, TRUE, "", [[0, 0, 0],[1, 0,0 ,0]], [[989.0366, 14.751, 535.2085],[0.707107,0,-0.707107,0]]];

    The problem is that now I cant run it due to an error coming up that I can't solve. 
    This is the problematic part of my code:

    FOR j FROM 1 TO 3 DO
            
            p1:= RelTool(j_100, 0, 0, 0 \Rz:=45);
    MoveL p1, v25, fine, tool0\WObj:=wobj_pipes;
            p2:=CrobT();
    MoveL Offs(p2, 0, 0, 40), v25, fine, \WObj:=wobj_pipes;
            p3:=CrobT();
    MoveL RelTool(p3, 0, 0, 0 \Rz:= 45), v25, fine, \WObj:=wobj_pipes;
     
        ENDFOR
        
    The error that comes up is the following:
    Missing required argument: Tool.

    So i tried in a way in which it was actually working before (with \WObj:=WObj0). Like this:

    FOR j FROM 1 TO 3 DO
            
            p1:= RelTool(j_100, 0, 0, 0 \Rz:=45);
    MoveL p1, v25, fine, tool0\WObj:=wobj_pipes;
            p2:=CrobT();
    MoveL Offs(p2, 0, 0, 40), v25, fine, \WObj:=wobj_pipes;
            p3:=CrobT();
    MoveL RelTool(p3, 0, 0, 0 \Rz:= 45), v25, fine, tool0\WObj:=wobj_pipes;
     
       ENDFOR
        

    But it tells me that it doesn't know what the robot is holding, the tool or the Work object. 

    I guess the problem is somewhere in the teach but I don't know where... 


  • lemster68
    lemster68 ✭✭✭
    You left out the tool in the move instruction. v25, fine, \WObj:= /\ insert tool here In the Workobject definition, the component ROBHOLD component should be set to FALSE.
    Lee Justice
  • Eleonora
    Eleonora
    edited May 2022
    Thank you. 
    Mmmmh let me understand correctly, so I add the Tool there even though I want the pipes to move according to  the workobject frame? I mean, it makes sense because the command is called reltool but I want the robot to rotate around the Workobject wobj_pipes... 
    Post edited by Eleonora on
  • lemster68
    lemster68 ✭✭✭
    In any move instruction the tool is required.
    Lee Justice
  • Eleonora
    Eleonora
    edited June 2022
    Hi Lee, 

    I am still having struggles with the part of the program in which I am creating a new robot axis, the robot should rotate around. I tried to create a new frame of reference as follows but apparently its not working: 

    1) i create a home position "homepos", which corresponds to the initial position of the robot's plate with respect to the world (base_1)
    TASK PERS wobjdata homepos:= [FALSE, TRUE, "base_1", [[889.0366, 14.751, 535.2085],[0.707107,0,-0.707107,0]],[[0, 0, 0],[1, 0, 0, 0]]];

    2) I, then, move the homepos of certain values which represent the distance of the center of the plate with respect to the axis of the pipe I found the center of the pipes empirically and then I calculated the distance with the plate in x and y coordinates 
    TASK PERS wobjdata wo_R2_pipe:= [FALSE, TRUE, "homepos", [[2.9629, -7.5927, 0],[1, 0, 0, 0]],[[0, 0, 0],[1, 0, 0, 0]]];

    Unfortunately this is not giving the expected result. Do you know where I could have made a mistake?

    Thank you very much for your help
  • lemster68
    lemster68 ✭✭✭
    Yes.  A workobject does not move another workopject.  It is the mechanical unit which moves the workobject.  The mechanical unit is what should be between the quotes, e.g, "MyMechUnit"
    Lee Justice
  • lemster68
    lemster68 ✭✭✭
    And parameter for mech unit is set to allow move of user frame.
    Lee Justice
  • Eleonora
    Eleonora
    edited June 2022
    Ahhh ok, thank you very much! Can I create the mech unit directly on the script?
    May I also have an indication of where I find how to create a mechanical unit? I don't find it in the technical manual. 
    thank you!
  • I found the answer in the manual. :) 
  • Type your commUFRAME three points (X1-X2-Y) but after the creation of the three points I manually tested the movement of the Robot I see a shift from the Y points to the X1 point (Movement is not linear)ent
  • Good morning Helenora...

    I believe I have already solved your problem, but I came across the same situation and I solved it using a stationary tool 'tStat' with TCP in the center of my cylinder and for the robot to move around it I created an object 'oMove' using the measure of the radius of the cylinder for the x. To move around the cylinder I used:
    'MoveL RelTool(point,0,0,0\Rz:=30),v100,fine,tStat\\WObj:=oMove'.

    Here's a way to move the robot in relation to the object.
    Hope it can help.