Custom HMI / Calibration Method

  • Hello,


    I have a KR5002-MT, KRC2, KSS 5.6.


    I would like to make a custom calibration method, something like service > measure > tool > XYZ - 4Points but for more points to increase accuracy. Lets say I want to make a XYZ - 8Points method.


    I have already written the KRL code. But I don't understand how I can expose my code step by step like the XYZ - 4Points method through a set of dialog boxes and forms.


    I've already dig into the UserTech package but I don't think I can achieve what I want with this package.


    Can you please point me to useful ressources / plugins / TP that can help me do that ?


    Thanks,
    Lionel

  • UserTech is pretty much the only way to add new menu options to the KUKA HMI.


    Is this program intended to be used in Teach mode, or in Auto?


    One slightly crude workaround might be to dedicate an input signal to "activate" this program, and use SPS code to use CWRITE $CMD commands to cancel the current program, then select the calibration program (conditions permitting).

  • Ok thanks.


    I've already managed to launch my code through a menu item with the help of UserTech (kfd file).


    However, what I'm trying to achieve is a semi-auto calibration method for a turntable (see : https://www.robot-forum.com/ro…hing/msg121789/#msg121789).


    I have a predefined set of targets : a spike is fixed on my turntable and the table is rotated N times until a fullturn is achieved.
    At each step, I'm approaching the spike automatically (I know the theoretical position from the spike position and the rotation angle).
    Then, in T2 mode, I do a touchUp of the real fixed spike position and store the position in a .dat
    Then I rotate the table to put the spike in a new position and automatically approach this new position.
    Then, in T2 mode, I do a touchUp of the real fixed spike position and store the position in a .dat
    I repeat the process until a full turn is achieved ...


    With the real position in the .dat I can compute the bestfit circle through least square method and have its center and rotation axis.


    My problem is when I jog the arm to touchup the real spike position I loose the BCO.
    At the moment I've inserted a fake LIN instruction in my program at the place where I need to jog the robot and stop at this line (#STEP execution)
    When my arm correctly touches the spike, I hit the "TouchUp" button on the LIN instruction.
    Thus, I can run the LIN instruction to achieve BCO and continue the program execution (going to the next position ...)


    I would like to have something more user friendly and hide this trick to restore the BCO each time the arm is jogged :
    1) warn the user that the robot will now approach the next spike position
    2) auto rotate the table and move the arm near the next spike position
    3) ask the user to jog the TCP to properly touchup the real spike position
    4) ask the user to validate the touchup position and store the result in .dat
    5) repeat 1-4 until full turn is achieved


    Any suggestions to achieve this would be greatly appreciate !
    Many thanks,
    Lionel

  • ...I'm not sure why you would be doing this in T2 -- that's unnecessarily hazardous. But that's beside the point.


    When you jog the robot to adjust the calibration, are you doing a TouchUp on the point? That should (as a side effect) perform a Block Select on the point you just modified, and you can get nearly instant BCO by simply hitting the Step Forward button once (because the robot will "move" to the location you are already physically at).


    Losing BCO while jogging is an inherent part of the KRC -- I don't think there's any way to get around that.


    When I've done things like this in the past, I generally used the method of Touching Up each point along the way, and then at the end of the program a subroutine would take all the new XYZ values of the points and perform the mathematical operations required.

  • Hey,


    ... I should do that in T1, that is what you suggest ?


    Indeed, I'm doing a TouchUp to a dummy LIN instruction (to have instant BCO on the position I want) and immediately after save $POS_ACT.
    This is the only "trick" I have came up with to do this "semi-auto" procedure.
    I'm also focusing the operator attention on this instruction by putting all the extra code in some folds.


    So I think my procedure is structure like what you used to do in the past :icon_wink:


    Thanks,
    Lionel

Advertising from our partners