RobotStudio event

Robot not maintaining Z position during MoveL between points

rakshithb174
edited March 2020 in Robot Controller
Hello,

I have noticed that the robot Z co-ordinates (displayed on the teach pendant) vary quite a lot from the programmed position. My program consists of series of TriggL and MoveL statements with same Z co-ordinates but different X-Y co-ordinates (all linear moves are done in the same X-Y plane).

Here is snapshot of my code:

MoveL [[44.043,104.280,0.200],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,z0,R3DP_Tool,\WObj:=BedOrigin;

TriggL [[45.000,104.206,0.200],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,robvel,z0,R3DP_Tool,\WObj:=BedOrigin;

MoveL [[45.000,104.206,0.200],[0.00000000,0.00000000,1.00000000,0.00000000],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,z0,R3DP_Tool,\WObj:=BedOrigin;

TriggL [[210.006,104.206,0.200],[0.00000000,0.00000000,1.00000000,0.00000000],[-1,-1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,robvel,z0,R3DP_Tool,\WObj:=BedOrigin;

MoveL [[210.006,104.206,0.200],[0.00000000,0.00000000,1.00000000,0.00000000],[-1,-1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,z0,R3DP_Tool,\WObj:=BedOrigin;

TriggL [[211.207,104.323,0.200],[0.00000000,0.00000000,1.00000000,0.00000000],[-1,-1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,robvel,z0,R3DP_Tool,\WObj:=BedOrigin;

MoveL [[211.207,104.323,0.200],[0.00000000,0.00000000,1.00000000,0.00000000],[-1,-1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,z0,R3DP_Tool,\WObj:=BedOrigin;

TriggL [[212.370,104.670,0.200],[0.00000000,0.00000000,1.00000000,0.00000000],[-1,0,3,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,robvel,z0,R3DP_Tool,\WObj:=BedOrigin;

MoveL [[212.370,104.670,0.200],[0.00000000,0.00000000,1.00000000,0.00000000],[-1,0,3,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,z0,R3DP_Tool,\WObj:=BedOrigin;

TriggL [[213.444,105.232,0.200],[0.00000000,0.00000000,1.00000000,0.00000000],[-1,-1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,robvel,z0,R3DP_Tool,\WObj:=BedOrigin;

MoveL [[213.444,105.232,0.200],[0.00000000,0.00000000,1.00000000,0.00000000],[-1,-1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,z0,R3DP_Tool,\WObj:=BedOrigin;

TriggL [[214.386,105.987,0.200],[0.00000000,0.00000000,1.00000000,0.00000000],[-1,-1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,robvel,z0,R3DP_Tool,\WObj:=BedOrigin;

MoveL [[214.386,105.987,0.200],[0.00000000,0.00000000,1.00000000,0.00000000],[-1,-1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v30,z0,R3DP_Tool,\WObj:=BedOrigin;


I am using zone 0 (z0) in all the moves. I don't want to use fine since robot comes to a complete stop. If the programmed Z height is 1.60 mm from Wobj, I am observing deviations as much as 1.50 to 1.70 mm. 

Link to video-1 (Programmed Z Height: 1.60 mm): https://vimeo.com/user109562193/review/397067732/c79deb907c

Link to video-2 (Programmed Z Height: 3.20 mm): https://vimeo.com/user109562193/review/397067739/722d793823                         


Is this deviation normal for zone 0? Can it be improved?

Comments

  • Is the robot calibrated correctly?
    Is the tool and any payload defined correctly?

    It appears from your code that the z co-ordinate has been manually entered (as all robtargets have exactly the same z value)?
    Robots are repeatable not accurate so you will get deviation when you manually enter potions/robtargets as opposed to teaching them.
    There is an option called absolute accuracy that improves the accuracy of the robot.
  • Is the robot calibrated correctly?
    We upgraded to IRC5 from S4C in 2018 and our robot arm (IRB 140) was also serviced at that time. I believe this was calibrated at the factory before shipping. Is there a way to verify this?

    Is the tool and any payload defined correctly?

    This is the tool declaration: 
    ! Tool declaration
    PERS tooldata R3DP_Tool := [TRUE,[[71.200,43.500,34.111],[0.50000000,0.50000000,0.50000000,0.50000000]],[1.000,[0.000,0.000,20.000],[1.00000000,0.00000000,0.00000000,0.00000000],0.000,0.000,0.005]];

    I think i have the weight accurate. I can re-check this by weighing it. How to find the center of gravity of the tool? 


    It appears from your code that the z co-ordinate has been manually entered (as all robtargets have exactly the same z value)?
    Yes. The RAPID code is generated from a g-Code file. There are lot of X/Y moves in the same Z plane. The robtargets are not manually entered. They are obtained from the g-Code file. Usually there are a lot of robtargets with same Z value but different X/Y values. 

    Robots are repeatable not accurate so you will get deviation when you manually enter potions/robtargets as opposed to teaching them.
    The robtargets are programmed points. 

    There is an option called absolute accuracy that improves the accuracy of the robot.
    Is this a hardware option or software? 

  • To check the calibration jog the robot so all axis are exactly at 0°, or use a moveabsj command to send the robot there.
    All the calibration marks should line up exactly.

    Use the LoadID function to determine the center of Gravity.

    Absolute accuracy is a correction table that is built at the factory using a laser measurement system.
    Last I heard it could be added in the field but would be expensive as an technician and equipment has to be sent out from the factory.

  • Use the LoadID function to determine the center of Gravity.

    I ran the LoadID routine and robot did small movements to determine Tool mass and center of gravity. The new values were updated according to a message on the teach pendant. However, When I check the tool definition in RAPID code stored on controller memory, I don't see any modifications. Does robot controller store these values internally or make changes to an existing tool definition? My original tool definition in RAPID code seems to be unaltered. 
  • Nevermind, values were updated after a controller restart.