Incorrect position of a coordinated workobject

tucker_s91
tucker_s91 Winnipeg, MB, Canada
Hello all,

This is my first post on this forum so I hope this is the correct category to post this question.

I'm working on a virtual cell with an IRB 4600 and a 2-axis tilting turntable. Robot controller (IRC 5 Single) has the option "610-1 Independent Axis". The turntable library in the station is custom, created using the CAD model. 

The movements are correct if the rotation axis is set as an independent axis or if I'm using a workobject with a programmed user frame (i.e. fixed user coordinate system) while defining external axis values in Robtargets.

However, if the workobject is coordinated by the turntable, the movements are all over the place. There is a discrepancy between the location of the turntable and the value in the robot controller. I'm trying to find the source of this error.

When I check the base frame coordinates in Motion Configuration window (under the Controller Tab), the translation values are:
x = 1862.71 mm, y = 31.90 mm, z = -333.79 mm
And this matches with the values in MOC.cfg
ROBOT:
      -name "ROB_1" -use_robot_serial_number "rob_1"\
      -use_robot_type "ROB1_4600_2.55_40" -use_robot_calib "r1_uncalib"\
      -use_joint_0 "rob1_1" -use_joint_1 "rob1_2" -use_joint_2 "rob1_3"\
      -use_joint_3 "rob1_4" -use_joint_4 "rob1_5" -use_joint_5 "rob1_6"\
      -base_mass 57.2 -base_mass_centre_x -0.0614 -base_mass_centre_y 0.0019\
      -base_mass_centre_z 0.0916 -use_lin_jog "ROB1" -use_reorient_jog "ROB1"\
      -use_joint_jog "ROB1"\
      -use_motion_process_mode "rob1_optimal_cycle_time_mode"

      -name "TurnTable" -use_robot_type "TurnTable" -use_joint_0 "M8DM1"\
      -use_joint_1 "M7DM1" -base_frame_pos_x 1.86271 -base_frame_pos_y 0.0319\
      -base_frame_pos_z -0.33379 -base_frame_orient_u0 0.707107\
      -base_frame_orient_u3 0.707107


As mentioned, a workobject is created on the turntable.
PERS wobjdata wobjTurntable:=[FALSE,FALSE,"TurnTable",[[0,0,0],[1,0,0,0]],[[0,0,0],[1,0,0,0]]];
The location of the workobject in the station is also correct when I synchronize RAPID to station.

Position-of-the-wobj



Now here is the problem. I created a simple program to probe the origin of this workobject. 
VAR robtarget pTTZero:=[[0,0,0],[1,0,0,0],[0,0,0,0],[0,0,9E9,9E9,9E9,9E9]];
PERS wobjdata wobjTurntable:=[FALSE,FALSE,"TurnTable",[[0,0,0],[1,0,0,0]],[[0,0,0],[1,0,0,0]]];
PERS tooldata tCalibration:=[TRUE,[[-0.623,-99.998,170],[1,0,0,0]],[1,[0,0,1],[1,0,0,0],0,0,0]];
    
PROC GoToTurnTableOrigin()
    pTTZero.rot:=OrientZYX(-180,0,-90); 
    ConfJ\Off;
    MoveJ pTTZero,v200,fine,tCalibration\WObj:=wobjTurntable;
ENDPROC

When this routine is executed, the robot moves to a position 108mm away from the origin, in negative y-axis of the userframe.
probe-position

This is because for some reason, the x coordinate of the workobject with respect to robot base is wrong (x=1970.71 mm instead of 1862.71 mm). 

 probe-position-wrt-ttable


I originally noticed this issue when I was trying to sychronize paths that I created in the station to RAPID. I would create a path, Move Along Path in the station which would give me correct results. However, once sychronized to RAPID and executed, the movements were incorrect.

So far, I couldn't find what's causing this error. Has anyone encountered anything similar? Do you have any suggestions? 


Thanks all.








Answers

  • lemster68
    lemster68 United States ✭✭✭
    You may need to use this type of configuration:
    #
    MECHANICAL_UNIT:

          -name "MTT180" -use_activation_relay "" -use_brake_relay "rob1_brake"\
          -use_robot "MTT180" -allow_move_of_user_frame  -activate_at_start_up 
    Note, "allow_move_of_user_frame".
    Your workobject declaration appears correct.
    Lee Justice
  • tucker_s91
    tucker_s91 Winnipeg, MB, Canada
    Thanks Lee. 

    This is what I have for the mechanical unit:

    MECHANICAL_UNIT:

          -name "TurnTable" -use_activation_relay "" -use_brake_relay ""\
          -use_robot "TurnTable" -allow_move_of_user_frame  -activate_at_start_up \
          -deactivation_forbidden

    The only difference is deactivation_forbidden. 


    I still don't understand why it would calculate correctly on the station side and not on the RAPID side. For example, "move along the path" doesn't work if the VC is shutdown. So I assumed those calculations were still somehow coming from the virtual controller.

    Maybe it's the RAPID kernel or something in the RW files that got corrupted. I'm going to try reinstalling Robot studio and see if that solves this issue. I'll provide updates here.