Absolute Accuracy Info KRC2 - KRC4

  • Does anyone know the whereabouts of information or KUKA documentation regarding Absolute Accuracy?


    This is what I know so far:- I found an old document for KRC2 called Configuration - High Precision Robot which describes the installation of the necessary service pack, copying the relevant robot specific PID file and setting $ABS_ACCUR = TRUE. This is clearly only relevant for KRC2 SW versions and in addition I found in an old KSS system variables document where there are three relevant BOOL variables:-


    $ABS_ACCUR - Switch absolutely accurate robot model on/off

    $ABS_CONVERT - Conversion of point coordinates into absolutely accurate robot model

    $ABS_RELOAD - Reload absolutely accurate robot model


    In addition I believe that the E6POS and POS structures contain the INT S(Status) and T(Turn), and there is at least 1 bit (perhaps bit 4?) in the S field that contains information whether the point coordinates were taught with or without using the AA model.


    However it would appear that the functionality of Absolute Accuracy may have changed with KRC4, as I found the variables described above have changed in KSS 8.1:-


    The variable $ABS_ACCUR - Indicates whether the positionally accurate robot model is active.

    But changes from type: BOOL to type: ENUM having values:-

     #ACTIVATED: Positionally accurate robot model active
     #SUPPRESSED: Positionally accurate robot model currently suppressed (by $SUPPRESS_ABS_ACCUR)
     #NONE: No positionally accurate robot model available

    $ABS_CONVERT - seems to be missing with KSS 8.1

    $ABS_RELOAD - Reloading of the positionally accurate robot model

    $ABS_UPDATE - Updating of the positionally accurate robot model by means of a SOAP-HTTP protocol

    $SUPPRESS_ABS_ACCUR - Suppression of the positionally accurate robot model


    So this is a far as I got. I remember vaguely once (20 years ago?) using the $ABS_CONVERT variable to convert point coordinates in a program taught without the AA model being active. I had to run the program having correct LOAD DATA with the $ABS_CONVERT set to TRUE and then the coordinates for each point was updated with new AA coordinates and S(Status) bit 4 for the same point was written to TRUE. At the end of the program $ABS_CONVERT was reset to FALSE. So then when the program was run, the positions the robot executed with the AA model active were then identical to those executed with the AA model inactive - albeit with slightly different point coordinates for every move. However as long as the AA model was active, if the program was then subsequently run with different loads and corresponding Load Data, each position would be executed correctly with enhanced accuracy.


    So my question is how does one perform point conversion in KSS 8.x? Is it that S bit 4 is no longer used? Do I have to use $SUPPRESS_ABS_ACCUR somehow to achieve the conversion?

    A colleague who generates offline programs in KRL tells me that S bit 4 is never used, either in KSS 5.x or KSS 8.x so we wonder how offline generated programs can ever be Absolute Accurate?


    So you see my confusion of trying to figure out how Absolute Accuracy is supposed to work across older and newer platforms without any solid documentation. Can anyone help?

  • Quote

    So my question is how does one perform point conversion in KSS 8.x? Is it that S bit 4 is no longer used? Do I have to use $SUPPRESS_ABS_ACCUR somehow to achieve the conversion?

    I do not think anything changed here. You still should be able to use $abs_convert. But usually you do not need to convert at all. $abs_convert is only for a very specific use case: A robot is initially without absolute accuracy package installed and users teach their programs without absolute accuracy. Later on the robot is equipped with absolute accuracy and the already teached programs should still realize the same real positions. For this the controller looks at status bit 4 and if it is not(!) set calculates the point coordinates that with consideration of absolute accuracy correction reach exactly the same Cartesian position as before without absolute accuracy. Additionally bit 4 is set to true so this algorithm is not applied multiple times on a teached position. This is the only case inside the controller where status bit 4 actually has some significance.


    On the other hand the controller replaces the standard kinematic equations with the individual more exact absolute accuracy kinematics equations whenever absolute accuracy is active. In e.g. KRC4 absolute accuracy is always active as soon as a pid file is added to rdc. You can only manually deactivate absolute accuracy by setting $deactivate_abs_accur to true. This is the opposite to KRC2 where you had to activate absolute accuracy manually using $abs_accur as mentioned by you before. Especially whether the robot uses absolute accuracy kinematics equations does not depend on the status bit.


    Quote

    A colleague who generates offline programs in KRL tells me that S bit 4 is never used, either in KSS 5.x or KSS 8.x so we wonder how offline generated programs can ever be Absolute Accurate?


    Offline generated programs in itself are in a sense always absolute accurate. As mentioned before absolute accuracy reduces the difference between ideal robot and actual robot. This is done by individually tweaking kinematic parameters of the real robot so that he behaves as close as possible as the ideal robot. Offline programs always use the ideal robot.


    The difference between ideal robot and actual robot result from multiple influences like manufacturing tolerances, deflections due to robot load, elasticities, ... and absolute accuracy tries to compensates these. Actually if you only teach your programs you should not need absolute accuracy at all because you compensate those influences implicitly yourself by making your process work.


    Fubini

  • Thank you for your explanation which has reduced my confusion to almost zero! I had erroneously thought that if the status bit 4 was not set, then the Absolute Accuracy behaviour would be permanently disabled for that move. But as you point out:-

    ...bit 4 is set to true so this algorithm is not applied multiple times on a teached position. This is the only case inside the controller where status bit 4 actually has some significance.

    That makes sense why offline programs that don't have status bit 4 set, still work properly in the AA sense. Although I suppose if one had such a program and actually ran it with $ABS_CONVERT set to TRUE, then those points (and the interpolated path to those points) where bit 4 was not set, would be executed without AA and therefore be displaced from their prior coordinates. Consequently, the newly refreshed AA derived coordinates for every point would be incorrect.


    Perhaps that's why with later platforms, the documentation omits to mention the existence of $ABS_CONVERT, as without a detailed explanation, it would be just too easy to ruin a program that previously ran properly with AA. The author probably thought that if the description didn't exist in user documentation that implicitly reserves the use of the variable to KUKA personnel - what the user doesn't know can't harm him.


    However, for the sake of convention in offline programming, I believe that bit 4 should always be set for those points generated offline. As you point out:-

    Offline generated programs in itself are in a sense always absolute accurate.

    In the case of an AA robot, do you think manually taught points will have status bit 4 set automatically? In an offline generated program which is run on the robot, what happens to bit 4 that has been downloaded with it set to FALSE when one manually performs a touch up? Will it become set to TRUE?


    I would still like to see official documentation though. Do you think it's worth asking KUKA for it?

  • I have sent a request to Kuka through xpert.kuka.com relating to my KR60HA. I have also asked if there are mada optimizations to improve the accuracy of linear moves in a machining context. I will let you know if I get anything back.

  • Quote

    In the case of an AA robot, do you think manually taught points will have status bit 4 set automatically? In an offline generated program which is run on the robot, what happens to bit 4 that has been downloaded with it set to FALSE when one manually performs a touch up? Will it become set to TRUE?


    Whenever you teach positions with active absolute accuracy the KUKA software sets bit 4 to TRUE. So in both cases mentioned you will end up with bit 4 set to TRUE.


    You can ask KUKA for this documentation but as far as I remember there are only a few internal specifications and memoranda for technical support that describes this behaviour. Maybe something can be found in the full access kuka xpert Portal. As you already mentioned yourself $abs_convert can be tricky to be applied correct and is therefore not documented officially.


    Quote

    have also asked if there are mada optimizations to improve the accuracy of linear moves in a machining context.

    There is not. Usually KLs are very stiff so absolute accuracy is not needed. But you should measure on how exactly the robot is mounted on the KL. There is a measuring wizard on the Kuka Hmi for this. This basically defines the KL direction with respect to the robot base.


    Also it is much more difficult to model a linear axis with an absolute accuracy model since the model does not repeat itself every 360 degrees but would be different depending on KL lengths. So basically all you could do is define an individual lookup table for each KL.

  • There is not. Usually KLs are very stiff so absolute accuracy is not needed. But you should measure on how exactly the robot is mounted on the KL. There is a measuring wizard on the Kuka Hmi for this. This basically defines the KL direction with respect to the robot base.

    Hi Fubini, when I said Linear moves I meant LIN prog motions not linear track.

  • Ah. Ok. But still answer would be no. Most of the deviances of LIN moves is caused by the internal handling of path filtering. This is different for Spline and old motion. If you need high accuracy that is velocity independent use spline.


    E.g. a fast Circ looks more like an egg and this gets worse the faster you go. A scirc is always a circle.


    But newest KUKA releases will have a feature called Motion Modes which basically bring task specific machine data. One of these modes will be a exact path following mode. I do not know if this is already released but it will definitely not be supported for all robot types. This is caused by the effort to determine new task specific machine data for every robot type. New robot types will definitely support this but older models like 60HA might never be supported.

Advertising from our partners