Rotation of work objects

I have two rectangular surfaces that will be on opposite sides of a shaft and rotated as the work objects.  I defined the first oframe based on the user frame of the positioner.  Instead of just rotating 180 degrees and repeating I want another work object defined in the same orientation/location on both objects so after rotating I'm on the 2nd object but don't have to worry about positioner accuracy.  

I tried setting up the wobjdata for both as movable so it could rotate but then my positions are out of reach.  Using fixed both positions work but the TCP doesn't follow the new object.  What am I doing wrong or rather missing?

PERS wobjdata PanelA:=[FALSE,FALSE,"STN1",[[1117.6,-1575,950],[0,0,0.70711,0.70711]],[[100,100,650],[1,0,0,0]]];
   
PERS wobjdata PanelB:=[FALSE,FALSE,"STN1",[[1117.6,-1575,950],[0,0,0.70711,0.70711]],[[-100,-100,650],[-1,0,0,0]]];
 

Comments

  • lemster68
    lemster68 United States ✭✭✭
    The only thing that stands out to me right now is that you inverted the values of the oframe, except for "Z".  If they are essentially identical, and presented to the robot the same, then I expect those should be the same.
    Lee Justice
  • In reference to world, Z of the oframe is Y so they should be the same value.  The difference is facing PanelA the origin should be the top left corner of the panel and PanelB's origin should be where the lower left corner of A is located.  Both offset from each other 100mm in X.  I guess my issue is I don't know how to ensure that if I rotate the positioner 180 degrees and start using PanelB wobj that I'm going to have proper compensation for the possibility that the positioner is not exactly located where it should be.  

    I need to rely on either the robot arm's accuracy or the positioner, can't do both so I chose the robot arm.  

    If I set it up this way it won't allow me to move the TCP to the origin of either object, but this is what I need:
    PERS wobjdata PanelA:=[FALSE,FALSE,"STN1",[[1117.6,-1575,950],[0,0,0.70711,0.70711]],[[100,100,650],[1,0,0,0]]];
     
    PERS wobjdata PanelB:=[FALSE,FALSE,"STN1",[[1117.6,-1575,950],[0,0,0.70711,0.70711]],[[-100,-100,650],[-1,0,0,0]]];

    If I do it this way I can move to them but it doesn't really make sense to have two objects anymore and they don't move with the positioner:
    PERS wobjdata PanelA:=[FALSE,TRUE," ",[[1117.6,-1575,950],[0,0,0.70711,0.70711]],[[100,100,650],[1,0,0,0]]];
       
    PERS wobjdata PanelB:=[FALSE,TRUE," ",[[1117.6,-1575,950],[0,0,0.70711,0.70711]],[[-100,-100,650],[-1,0,0,0]]];

    If I'm not out of range of joints in the sense that I can reach them without movable objects then I must have an issue with orientation of the objects declaration, that's where I'm getting confused.  But I also have not used this rotating object code before either so I'm not sure I'm doing that correctly as well.

  • lemster68
    lemster68 United States ✭✭✭
    edited December 2020
    What do you mean when you say positioner?  An ABB positioner, an external axis, or something controlled and moved by another, external drive system?  And I did notice that the oframe orient is -1, 0, 0, 0, not sure but that could be part of your issue.  The strange part is the - sign.  I am thinking that "perfect" orients are combinations of 1,0,0,0 where the 1 remains positive.  I would have to investigate that more to be sure.
    Lee Justice
  • ABB positioner, IRBP-L.  I tried having the same orient but it doesn't work either way.  That's why I wasn't sure if it has something to do with the orientation of the oframe in relation to the uframe or what.  I was trying a negative value to see if that would inverse the coordinates so once it was rotated it would match the other orientation but also wasn't sure if that's how you handle it.
  • lemster68
    lemster68 United States ✭✭✭
    You might try 0,0,0,1 for inversion.
    Lee Justice
  • graemepaulin
    graemepaulin New Zealand mod
    Have you taught the baseframe of the positioner?
  • That's it!  I don't know why but the baseframe values in station were way off from what I had them set at originally.  Thank you very much