由于手眼标定不佳(手眼配置错误),触碰测试不安全。

问题

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

手眼变换

手眼残差

投影验证

触碰测试

不安全

手眼标定结果不佳的示例

手眼变换矩阵看起来不正确,因为它的几个值与实际测量值之间的偏差超出了预期。这些偏差虽然不算特别大,但对于这种设置来说已经超出了合理范围。

手眼变换矩阵

0.626

0.780

0.008

116.163

-0.672

0.545

-0.502

1183.242

-0.396

0.309

0.865

-286.632

0.000

0.000

0.000

1.000

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

../../_images/eye_in_hand_approximate_hand_eye_matrix.png

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

残差

N(位姿)

平均旋转角度(°)

最大旋转角度(°)

平均平移残差(mm)

最大平移残差(mm)

14

7.847

22.552

26.112

74.373

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

全部的残差数据
残差

位姿

旋转角度(°)

平移量(mm)

1

0.690

6.318

2

9.634

18.759

3

12.329

18.773

4

6.403

17.827

5

6.900

44.173

6

0.662

3.098

7

7.149

17.514

8

8.731

28.463

9

22.552

55.483

10

12.946

24.909

11

0.666

9.978

12

9.530

17.392

13

7.362

74.373

14

4.309

28.505

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

../../_images/projection_verification_poor.png

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

潜在原因

手眼标定使用了错误的手眼配置( Eye-in-Hand 或 Eye-to-Hand ),这意味着求解器获得了关于物理设置的错误信息。

因此,您可能会看到较高的残差、较差的投影精度,以及手眼变换矩阵中距离与真实几何形状存在差异。在严重的情况下,由此产生的变换可能会因碰撞风险而使触碰测试验证变得不安全。

潜在解决方案

  1. 请确保使用与您的实际设置相匹配的正确手眼配置进行手眼标定:

    • Eye-to-Hand:相机固定在环境中,机器人移动标定对象(即*标定物体在机械臂上*或*固定安装/静态的相机*)。

    • Eye-in-Hand:相机安装在机器人上,标定板固定在环境中(即*标定对象在机械臂外*或*手臂安装/移动的相机*)。

  2. 使用同一数据集重复进行手眼标定。

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

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

../../_images/touching-test-result-aruco.jpg
重现问题(手眼配置错误)

良好的数据集

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

../../_images/hand-eye-calibration-small-movements-dataset.png

标定结果如下。

手眼变换矩阵

0.999

-0.004

0.043

-55.936

0.003

0.999

0.013

-91.919

-0.043

-0.013

0.998

128.086

0

0

0

1

残差

N(位姿)

平均旋转角度(°)

最大旋转角度(°)

平均平移残差(mm)

最大平移残差(mm)

14

0.022

0.034

0.180

0.338

全部的残差数据
残差

位姿

旋转角度(°)

平移量(mm)

1

0.017

0.163

2

0.008

0.135

3

0.028

0.172

4

0.009

0.053

5

0.031

0.236

6

0.006

0.060

7

0.009

0.154

8

0.015

0.102

9

0.031

0.147

10

0.009

0.145

11

0.030

0.249

12

0.023

0.152

13

0.034

0.255

14

0.031

0.169

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

../../_images/touch_test_correct.png

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

错误数据集

为了模拟该问题,我们使用错误的手眼配置( Eye-to-Hand 而 Eye-in-Hand )进行了手眼标定。标定结果如下。

手眼变换矩阵

0.626

0.780

0.008

116.163

-0.672

0.545

-0.502

1183.242

-0.396

0.309

0.865

-286.632

0.000

0.000

0.000

1.000

残差

N(位姿)

平均旋转角度(°)

最大旋转角度(°)

平均平移残差(mm)

最大平移残差(mm)

14

7.847

22.552

26.112

74.373

全部的残差数据
残差

位姿

旋转角度(°)

平移量(mm)

1

0.690

6.318

2

9.634

18.759

3

12.329

18.773

4

6.403

17.827

5

6.900

44.173

6

0.662

3.098

7

7.149

17.514

8

8.731

28.463

9

22.552

55.483

10

12.946

24.909

11

0.666

9.978

12

9.530

17.392

13

7.362

74.373

14

4.309

28.505

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

这些结果强烈表明手眼标定不正确,如果尝试进行触碰测试将会失败,因此出于安全原因跳过了该测试。

比较

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

手眼变换矩阵中的转换值

数据集

X (mm)

Y (mm)

Z (mm)

-55.936

-91.919

128.086

差(手眼配置错误)

116.163

1183.242

-286.632

Δ(好 - 差)

-172.099

-1275.161

414.718

残差

数据集

N

平均旋转角度(°)

最大旋转角度(°)

平均平移残差(mm)

最大平移残差(mm)

14

0.022

0.034

0.180

0.338

差(手眼配置错误)

14

7.847

22.552

26.112

74.373