RobotStudio event

Calculating RobTargets

Hello Friends, 

Does anyone have an application to calculating "RobTargets"? 

For example, in palletizing applications, it is necessary create some positions 0 A? and 90 A?, the algorithm would create these positions automatically and randomly. 

Thank you. 

Luis Rivas 
Project Coodinator - SEE Sistemas
Luis Rivas
Projects Coordinator - Robotics

Comments

  • How to calculate a robtarget... is pretty simple if you keep in mind the four composite data types of a robtarget. What is not simple is how to determine the required method to derive teh required compsite data type elements -

    They are

     

    Data type Name Description

    pos trans   x, y and z coordinates
    orient rot   Orientation
    confdata robconf   Specifies robot axes angles
    extjoint extax   Specifies positions for up to 6 additional axes.      
    The value is set to 9E9 where no additional axis is used.


     

    For the most part most palletizing apps do not use external axis - so you can set it to the default.

     

    The next not so obvious data type to set for a robtarget is the configuration data required for this position. It will be influenced by the actual quadrant axis 1 needs to be in which in turn influences axis 6 - axis 6 confdata is also dependent on the tool orientation required for the operation (pick or place) and can be -180 -90, 0, +90 +180 - (bet you did not see that coming) - so yes there are 5 possible orientations. The +/- 180 are the same - but may not be reachable depending on the limits imposed on axis 6 due to upper arm cable managment - etc. traditionaly, a robtarget is stored for the specific station at 0 degrees, which stores the robconf data required for 0 degrees orientation - then we add or subtract to axis 6 robconf to get it in the required quadrant for the required tool orientation. This dictates that each station needs to be handled exclusively. So somewhere there needs to be a robtarget for the station (example robtarget ThisStation). All this assumes the wrist orientation is down and the mounting flange is parallel with the floor (like a 640 or 660).

     

    The actual transform (X,Y,Z) whould be some increment based on the case position, layer and pick and place cycle you are peroforming at the time. They are usually a multiple of the case dimensions determined before the robtarget is to be computed. For this example, they are already computed in global variables x_product,y_product,z_product.

     

    PROC ThisStationsConf(
    INOUT confdata config,
    num tool_orient)

      config:=ThisStation.robconf;
      config.cf6:=config.cf6-tool_orient DIV 90;


    ENDPROC

    Using the method above, we can call that procedure for the specific station to build the rest of the robtarget, and return it using a function for example.

     

    FUNC robtarget ComputeMyPosition(

         num tool_orient)

     

         VAR robtarget pResult;

       

        pResult.rot:=OrientZYX(180+tool_orient,0,180);

        ThisStationsConf pResult.robconf, tool_orient;

         !add a check here to make sure xonfig data is within capable limits, correct if not.

        pResult.extax:=[9e9,9e9,9e9,9e9,9e9,9e9];

        psresult.trans:=[0,0,0];
        pResult:=Offs(pResult,x_product,y_product,z_product);

    !All would be with in respect to a normalized workobject coplanar with wobj0 with only an orientation in Z with respect to the workobject for a 4 axis robot assuming the robot is level and plumb with the stations.

        RETURN pResult;



    ERROR

        !your error handler here 

    ENDFUNC

     

     

     
    Thomas H. Johnston
    PACs Application Engineer