Semi-Automatic teaching

  • Hi there,


    This is my first topic. I've found many valuable solutions on this forum by the past. But no clues for this one :


    I'm working with a KR500-2MT / KRC2 / KSS5.6 and a home made turntable (for stone milling).
    I need to improve the calibration of the turn table, that is to find its rotation axis regarding $world.


    For several reasons this is the method I want to use :


    1) place a fixed spike on the table. The spike head describes a circle around the turn table axis when the table turns.
    2) record the position of the head of the spike by touching it (manual jog) with a properly calibrated spike mounted on my robot arm ($POS_ACT)
    3) do that for several angles along a full turn (more points => greater accuracy)
    4) fit the best circle through the measured points (least square method)
    5) from the circle, deduce the turn table center and axis


    My concern is that I need to touche and record a good bunch of points to increase the accuracy (10/20). I know how to get "almost" from one position to the next one (it is just a matter of rotation in the table basis). I have already written a program so that the robot arm follows the spike from position to position.


    My question is how can I pause my program at each step, then manually jog the robot so the two spikes touch each others, then save the teach position by reading $POS_ACT, then return to the automatic execution of the program that will move table and robot to the (almost) next position, ... ??


    Thanks,
    Lionel


  • [size=2]i don't see why you want to do it this way and not measure root point, but either way, back to main question:[/size]


    [size=2]i did same thing a while ago - created program that used following:[/size]


    [size=2]save and then limit robot speed[/size]
    [size=2]first loop starts with first display dialogue with buttons for step size (10, 1 or 0.1mm), cancel or touchup.[/size]
    [size=2]step size would put values into a variable[/size]
    [size=2]Cancel exits without saving[/size]
    [size=2]touchup updates point with current position.[/size]


    [size=2]then inside that loop, placed another dialogue with buttons Directions (X+,X-,Y+,Y- etc) and BACK.[/size]
    [size=2]also inside that loop, right after dialogue used relative move so robot would go to commanded position[/size]

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

  • One of the key items to keep in mind here is that the robot is not a precise positioning device. So to avoid injecting the "noise" of the robot's own inaccuracy into your measurement of the circle, there's a few rules you should follow:


    1. Pick a TCP orientation and stick to it for all measurements. Do NOT rotate the TCP.
    1a. Ideally, this orientation should be similar to what you used to 4-point the TCP in the first place
    2. Always use the same final approach motion to the measurement point, to keep the bias of the various lost motion components the same between measurements. Usually, I do this by using a 10mm "away" motion along Tool or World Z, applying my XY correction, then making a -10mm "approach" move in Z. Lather, rinse, repeat, until you achieve your ideal position.
    3. If using an Absolute Accuracy robot, the AA calibration is not active when the robot is being jogged, only when it runs a program.

  • Thank you both for your advice,


    I was already sticking to a unique TCP orientation but its good to have a confirmation that this is the right thing to do.
    To answer to my own question (how to switch from a programmed motion to manual jogging in the same program in order to touchup my spike in T1 mode) I simply place a dummy LIN move after a HALT. I stop on this line (step by step execution, then jog, then store the new position by cling on "save pos", then continue to the next point and the actual position is saved in PTS[i] :



    panic mode : I'm doing this because in the kuka procedure you need a built-in spike on your table so you know precisely $ET2_TPINFL. This is not my case as it's a home made table for very heavy loads. Moreover I will touch 10/20 times my spike to reduce the error. I will also do that at two levels (z=0.5m and Z = 2.0m).

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account
Sign up for a new account in our community. It's easy!
Register a new account
Sign in
Already have an account? Sign in here.
Sign in Now