RobotStudio event

Attach multiple workobjects to "parent" workobject

Hello everyone

I'm working on a project with a CNC-made table with a fixed "grid" of screw threads to mount other objects on. My goal is to make the diffrent wobj positions dependent on the one from the table, so the operator just needs to teach the real position of the table via three-point-method. I use the wobjs with MoveL and offset to arrive at the desired positions to pick and place 200 bolts.

What have i found so far:
  • It's not possible to attach wobjs to one another
  • You can attach wobjs to geometries, but i couldn't find the geometry's coordinate system to re-teach on the teachpendant (This would solve my question, if possible)
  • The wobjs consist of only one userframe and one objectframe, multiple objectframes per userframe would also solve this issue
  • I've tried to use the table's pos as a variable and use it with the other wobjs within their userframes, but robotstudio tells me that it "expected pos, found identifier", i found no other way than to hardcode the coordinates in RAPID and that is no real option
  • Targets kind of work in the way intended but if you use a move command (such as MoveL) you need to specify a wobj and can't choose the robtarget itself as a coordinate reference

For now i use one workobject with one robtarget per object on the table, this works fine as long as no object is placed in other angles as the grid or the "parent" wobj, see image below.

Is there another option to solve this issue? Thank you for your time.

Best regards,
Claude Wenger
FHNW Brugg, Switzerland

Comments

  • Modify the Oframe of the workobject.
    Lee Justice
  • I am not sure what your root issue is?

    In your image you have 3 grids on your table - are these fixed or can they be moved and/or be replaced by other grids?

    The idea behind workobjects is all the robtargets for a area or object (grid) can be adjusted/moved together easily. So in your image you would have 3 workobjects one for each grid.

  • It sounds like you could benefit from reading this:

    https://www.robot-forum.com/blog/entry/2-picking-part-2-from-a-tray-of-parts/

    And I stand by saying just modify the oframe of the workobject.  If you are talking about doing it manually just define coords and select the oframe, teach those points.  Or, if you know the values, you can assign them like so:

    MyWobj.oframe:=MyOtherWobj.oframe;
    or:
    MyWobj.oframe:=MyPose; ! data of the pose type
    Lee Justice
  • Hello everyone, thank you for the replies.

    Under normal circumstances the installation on the table stays the same, so using the table WOBJ and the rest as Robtargets works just fine. But i've got a problem if i want to rotate any of the objects on the table. Because i start off from the Robtargets and move with "Offs" and "MoveL", and MoveL only takes WOBJs as orientation reference.

    lemster68 said:
    It sounds like you could benefit from reading this:

    https://www.robot-forum.com/blog/entry/2-picking-part-2-from-a-tray-of-parts/

    And I stand by saying just modify the oframe of the workobject.  If you are talking about doing it manually just define coords and select the oframe, teach those points.  Or, if you know the values, you can assign them like so:

    MyWobj.oframe:=MyOtherWobj.oframe;
    or:
    MyWobj.oframe:=MyPose; ! data of the pose type
    "MyWobj.oframe:=MyOtherWobj.oframe" I tried this one but i got an error stating that i gave an indicator, but a pose was expected. Is there a way to avoid this problem? Because that would solve my issue.

    Again, thank you for your time and help!

    Best regards
    Claude Wenger

  • I just tested this in RS, no syntax errors or any other errors, was able to execute it and see that the values from the latter were written into the former.
            wobj1.oframe:=MyOtherWobj.oframe;

    Lee Justice
  • Ok, now i have found out what i did wrong: I tried to write the values next to the wobj declarations. When i put it in a PROC it works as well. Silly mistake from me.
    Thank you for your help!

    Kind regards
    Claude