Open yck011522 opened 3 years ago
This issue warranted a new private repo created to house the measurement and other scripts. I'll post the results here for future reference.
The result of the first measurement conducted on 2102-06-01 around 8pm,
included only axis sweep of bridge1_joint_EA_X
, robot11_joint_EA_Y
and robot11_joint_EA_Z
.
Yields the following results:
- - - - - - -
Axis Straightness - X
- - - - - - -
Analysis of dataset points_axis_x1, sensor = igps_frame_39, len(datapoints) = 20
Average igps quality = 12.0
Line fit error average = 0.5191068154508421 , max = 1.005901597181011
- - - - - - -
- - - - - - -
Analysis of dataset points_axis_x1, sensor = igps_frame_59, len(datapoints) = 20
Average igps quality = 10.85
Line fit error average = 0.6017136168506352 , max = 1.3721206657837353
- - - - - - -
- - - - - - -
Analysis of dataset points_axis_x2, sensor = igps_frame_39, len(datapoints) = 20
Average igps quality = 10.4
Line fit error average = 0.5291454379615171 , max = 1.0395067673305547
- - - - - - -
- - - - - - -
Analysis of dataset points_axis_x2, sensor = igps_frame_59, len(datapoints) = 20
Average igps quality = 12.0
Line fit error average = 0.5363181312581637 , max = 1.0654944413737615
- - - - - - -
Axis Straightness - Y
- - - - - - -
Analysis of dataset points_axis_y1, sensor = igps_frame_39, len(datapoints) = 20
Average igps quality = 12.0
Line fit error average = 0.3151069387208134 , max = 0.7320896147380721
- - - - - - -
- - - - - - -
Analysis of dataset points_axis_y1, sensor = igps_frame_59, len(datapoints) = 20
Average igps quality = 12.0
Line fit error average = 0.3169683572892694 , max = 0.8248343117544645
- - - - - - -
- - - - - - -
Analysis of dataset points_axis_y2, sensor = igps_frame_39, len(datapoints) = 20
Average igps quality = 12.0
Line fit error average = 0.35767245497957334 , max = 0.9638672124046539
- - - - - - -
- - - - - - -
Analysis of dataset points_axis_y2, sensor = igps_frame_59, len(datapoints) = 20
Average igps quality = 12.0
Line fit error average = 0.33118568275603844 , max = 0.7955880431314706
- - - - - - -
Axis Straightness - Z
- - - - - - -
Analysis of dataset points_axis_z, sensor = igps_frame_39, len(datapoints) = 20
Average igps quality = 12.0
Line fit error average = 0.10511640058415803 , max = 0.23563918779084142
- - - - - - -
- - - - - - -
Analysis of dataset points_axis_z, sensor = igps_frame_59, len(datapoints) = 20
Average igps quality = 12.0
Line fit error average = 0.1424025174844114 , max = 0.47678506916346025
- - - - - - -
- - - - - - -
Perpendicularity
- - - - - - -
Angle between x y = 0.0468360056105584 (kiloTangent (angle-pi/2)) , 90.00268350544877 (degrees)
Angle between z and (x cross y) = 1.5010627461875383 (kiloTangent(angle)) , 0.08600449554609686 (degrees)
I can see the some general tendency:
bridge1_joint_EA_X
to have ~ 0.52 mm deviation from line fit.
bridge1_joint_EA_Y
to have ~ 0.35 mm deviation from line fit.
bridge1_joint_EA_Z
to have ~ 0.15 mm deviation from line fit.
One interpretation is that the later the axis is in the kinematic chain, the more straight it is.
(Note that kiloTangent unit refer to mm/m deviation) Another note of concern is the perpendicularity of XY is 0.04 mm/m while perpendicularity of Z axis is 1.5 mm/m This is a rather significant amount.
I'm aware the RFL URDF model is based on a CAD model. The actual error in the construction of the RFL gantry and robots are either not measured-in or that value is nowhere to be found.
In particularly the following errors is of concern if both robot 11 and 12 are used collaboratively:
bridge1_joint_EA_X
and (robot11_joint_EA_Y
orrobot12_joint_EA_Y
)bridge1_joint_EA_X
androbot11_joint_EA_Y
) and (robot11_joint_EA_Z
)bridge1_joint_EA_X
androbot12_joint_EA_Y
) and (robot12_joint_EA_Z
)fixed
joint betweenrobot11_base
androbot11_base_link
fixed
joint betweenrobot12_base
androbot12_base_link
I suggest performing a robotic dance with 1 or 2 iGPS sensors to calibrate these joints. In particular, measuring a number of points while the robot moves one of these joint.
bridge1_joint_EA_X
robot11_joint_EA_Y
robot12_joint_EA_Y
robot11_joint_EA_Z
robot12_joint_EA_Z
robot11_joint_1
robot11_joint_2
robot11_joint_3
The way how the error is interrogated from the data collection is not so straightforward and may have multiple ways. I'll try formulate them with actionable code in the coming days so we can have an idea if the data collection make sense.
I'm hoping to perform the data collection run in May and the subsequent error correction for the URDF later. In order to demonstrate the effect of the correction in terms of absolute accuracy, I plan to create some TCP-stationary but 7-9 joints moving in latent space type of movement to validate the correctness of the IK solution. The error can be objectively measured with a dial gauge probing a stationary object fixed to the RFL ground or can be measured by the same iGPS sensor.
I'm calling for support from @gonzalocasas @matteo-pacher @fleischp.
Future steps