We perform simulations for the universal robots routes and joint positions, with mathematical inverse & forward kinematics algorithms.
So far we have used the DH parameters as described in the UR website.
Now we need to use the calibrated DH parameters to increase the simulation accuracy.
We read the info from the KinematicsInfo on the secondary monitor (which is calibration.conf + configuration) but the values
we receive are in weird mathematical format (such as -92 meters for D).
What is the way to convert the calibrated values to the “normal” mathematical format with the needed corrections? (we expect something close to the website model with small corrections).
delta_theta = [ -8.20642406610186392e-05, -0.103609197138685979, 0.673631891251821102, -0.57016974724960845, -4.59636351675856217e-05, 9.74999561134540574e-07]
delta_a = [ -0.000161187342296687116, 0.00304003843792177708, 0.0916468555721788314, -9.62964975953143595e-05, -2.97595340762196176e-05, 0]
delta_d = [ 0.000505390894843998906, 11.1984514757821039, -92.5270326908668181, 81.3282683520703529, -0.000212852818740727479, -0.000126145560998547346]
delta_alpha = [ -0.00032142399895862539, -0.00565024518540147101, -0.00378922621833689211, -0.00106533274011644252, 0.000999586303470856308, 0]
joint_checksum = [ 0x6e0f7bf, 0xa32a713f, 0xf636a50, 0x9ec2338a, 0xa1afded8, 0xb29b2979]
calibration_status = 2 # 0 == notInitialized / 1 == notLinearised / 2 == Linearised
joint_raw_offset = [ 0x31aa98, 0x324a55, 0xd4b163, 0xdd705d, 0xdce343, 0xdce0d7]
joint_selftest_data_crc = [ 0x17c8de80, 0x3ebb8929, 0xb52a8da3, 0xb0085efb, 0xdb6091f6, 0x38388502]
Hey fujikit, thank you for your response.
The problem is we use the D and A parameters to simulate origin positions in space, so if we use the calibrated parameters for IK and FK we may have accurate results, but the origin positions will make no sense.
Isnt there a way to convert them to “real” DA lengths? To match virtual joints and origins to the real ones?
those “weird” large numbers are actually correct! They basically cancel each other out, resulting in the expected shifts. The problem is that FK+IK formulas typically assume “ideal” values in their models and just updating the DH values with the calibrated ones is not sufficient. What formulas do you use?
Hey mvrooij, thanks a lot for your response.
the formulas i use are like this.
The problem is not only the inverse kinematics, but the origin positions as well.
If i use unreal numbers that “cancel” each other, i can’t get the real origin positions in space (like origin 3 position for a specific configuration).
Any way to solve this?
Those python formulas are the “ideal” formulas and neglect all the real offsets and imperfections. For the fk, you should add in the offsets to the calculation of the DH calculations and then compute the T60 matrix. Due to the offsets, you need to do this every time you do a fk calculation. You will get the actual positions that way. The ik formula doesn’t work with this solution anymore, so you should use a method that is based of, of the re-computed fk formulas, like the transpose-jacobian technique (not the greatest, there are better ones, but should get you started).