由于手眼标定不佳,触碰测试不安全(数据集仅包含平移变化)。

问题

手眼标定结果很差,进行触碰测试是不安全的。

手眼变换

手眼残差

投影验证

触碰测试

不安全

手眼标定结果不佳的示例

手眼变换矩阵看起来不正确,因为它的几个值与物理测量值相差极大,对于这种设置来说不合理。

手眼变换矩阵

0.999

-0.005

0.003

6041.859

0.005

0.999

0.024

4033.240

-0.003

-0.024

1.000

590.926

0

0

0

1

数值 590.926 应约为 130 mm,而 4033.240 则大致为 90 mm。现阶段我们忽略正负号(+/-),因为它取决于坐标系的定义;我们仅关注距离大小。

../../_images/eye_in_hand_approximate_hand_eye_matrix.png

标定的残差也明显大于预期,大约高出一个数量级。

残差

N(位姿)

平均旋转角度(°)

最大旋转角度(°)

平均平移残差(mm)

最大平移残差(mm)

7

0.033

0.108

2.623

5.001

对于小型机器人,我们预计残差在亚毫米范围内;而对于大型机器人,残差则在毫米范围内。至于残差的旋转分量,我们预计其在亚度范围内。

全部的残差数据
残差

位姿

旋转角度(°)

平移量(mm)

1

0.031

1.189

2

0.020

4.366

3

0.108

5.001

4

0.022

1.581

5

0.028

0.765

6

0.018

1.977

7

0.007

3.482

投影验证在技术上是成功的,但产生的误差仍然过大,无法接受。我们应该对投影验证持非常谨慎的态度,因为即使手眼标定不正确,投影误差也可能看起来可以接受。

../../_images/projection_verification_poor_only_translations.png

这些结果强烈表明手眼标定不正确,如果尝试进行触碰测试将会失败。

潜在原因

数据集中的机器人位姿之间只进行了平移运动。

这对于手眼标定来说是不够的,因为求解器需要旋转运动才能唯一确定相机相对于机器人的方向。如果没有旋转运动,问题就会变成欠约束问题,导致手眼标定结果不稳定或错误、残差较大、投影验证失败以及触碰测试不安全。

潜在解决方案

  1. 确保数据集中包含机器人位姿之间的平移和旋转运动。

    注意:请查看 如何获取用于手眼标定的优质数据集

  2. 重新运行手眼标定(使用正确的数据集)。

  3. 验证手眼标定结果(变换矩阵、残差、投影)。

  4. 运行触碰测试(如果手眼标定结果良好)。

../../_images/touching-test-result-aruco.jpg
重现问题(数据集中仅包含平移变化)

良好的数据集

使用下图所示的数据集成功进行了手眼标定。

../../_images/hand-eye-calibration-translations-and-rotations-dataset.png

标定结果如下:

手眼变换矩阵

0.9991385

-0.00262377

0.04141687

-55.73573

0.001416378

0.9995739

0.02915465

-91.3017

-0.04147572

-0.02907087

0.9987165

129.1951

0

0

0

1

残差

N(位姿)

平均旋转角度(°)

最大旋转角度(°)

平均平移残差(mm)

最大平移残差(mm)

14

0.028

0.068

0.133

0.278

全部的残差数据
残差

位姿

旋转角度(°)

平移量(mm)

1

0.030

0.149

2

0.039

0.278

3

0.021

0.065

4

0.037

0.138

5

0.013

0.272

6

0.014

0.079

7

0.018

0.133

8

0.013

0.075

9

0.038

0.088

10

0.015

0.061

11

0.026

0.179

12

0.036

0.065

13

0.068

0.209

14

0.023

0.066

通过触碰测试验证了手眼标定。

../../_images/touch_test_correct.png

触碰测试成功,证实了手眼标定的正确性和准确性。

错误数据集(只有平移而没有旋转变化的数据集)

使用下图所示的数据集进行手眼标定,该数据集仅包含平移彼变化,不包含旋转变化。

../../_images/hand-eye-calibration-only-translations-dataset.png

标定结果如下:

手眼变换矩阵

0.999

-0.005

0.003

6041.859

0.005

0.999

0.024

4033.240

-0.003

-0.024

1.000

590.926

0

0

0

1

残差

N(位姿)

平均旋转角度(°)

最大旋转角度(°)

平均平移残差(mm)

最大平移残差(mm)

7

0.033

0.108

2.623

5.001

全部的残差数据
残差

位姿

旋转角度(°)

平移量(mm)

1

0.031

1.189

2

0.020

4.366

3

0.108

5.001

4

0.022

1.581

5

0.028

0.765

6

0.018

1.977

7

0.007

3.482

投影验证在技术上成功了,但误差仍然过大,无法接受。对于投影验证,我们应该非常谨慎,因为即使手眼标定不正确,投影误差也可能看起来可以接受。

../../_images/projection_verification_poor_only_translations.png

这些结果强烈表明手眼标定不正确,如果尝试进行触碰测试,将会失败。

比较

下表比较了手眼变换矩阵(平移值)和手眼标定残差之间的结果。

手眼变换矩阵中的转换值

数据集

X (mm)

Y (mm)

Z (mm)

-55.73573

-91.3017

129.1951

差(仅有平移变化)

6041.859

4033.240

590.926

Δ(好 - 差)

-6097.595

-4124.542

-461.731

残差

数据集

N

平均旋转角度(°)

最大旋转角度(°)

平均平移残差(mm)

最大平移残差(mm)

14

0.028

0.068

0.133

0.278

差(仅有平移变化)

7

0.033

0.108

2.623

5.001