由于手眼标定不佳(标定板移动或移位),无法安全执行触摸测试。

问题

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

手眼变换

手眼残差

投影验证

触碰测试

不安全

手眼标定结果不佳的示例

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

手眼变换矩阵

0.994

0.040

0.099

-84.190

-0.042

0.999

0.021

-84.129

-0.098

-0.025

0.995

147.697

0

0

0

1

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

../../_images/eye_in_hand_approximate_hand_eye_matrix.png

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

残差

N(位姿)

平均旋转角度残差(°)

最大旋转角度残差(°)

平均平移残差(mm)

最大平移残差(mm)

13

2.449

5.590

4.626

10.946

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

全部的残差数据
残差

位姿

旋转角度(°)

平移量(mm)

1

5.590

10.946

2

4.864

6.151

3

5.294

5.707

4

1.682

7.975

5

1.537

4.446

6

1.570

6.958

7

1.738

2.492

8

0.950

2.917

9

1.973

5.113

10

1.546

0.831

11

1.851

0.773

12

1.701

3.509

13

1.544

2.329

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

../../_images/projection_verification_poor.png

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

潜在原因

Eye-in-Hand:

在数据集采集过程中,标定板发生了移动。

Eye-to-Hand:

在采集数据集的过程中,相机或标定板发生了移动。

在数据集采集过程中,标定板(Eye-in-Hand)或相机/安装在法兰的标定板(Eye-to-Hand)的任何移动都会破坏手眼标定所依赖的刚体几何假设。这会导致机器人与相机之间的相对关系在各坐标系之间出现不一致,从而使求解器收敛到一个与实际物理配置不符的手眼变换矩阵。

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

潜在解决方案

  1. 确保相机和标定板安装牢固,在数据采集过程中不会移动。

  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

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

错误的数据集(手眼配置错误)

为了模拟这个问题,在采集数据集期间,故意在两次采集之间移动了标定板(见下图)。

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

标定结果如下。

手眼变换矩阵

0.994

0.040

0.099

-84.190

-0.042

0.999

0.021

-84.129

-0.098

-0.025

0.995

147.697

0

0

0

1

残差

N(位姿)

平均旋转角度残差(°)

最大旋转角度残差(°)

平均平移残差(mm)

最大平移残差(mm)

13

2.449

5.590

4.626

10.946

全部的残差数据
残差

位姿

旋转角度(°)

平移量(mm)

1

5.590

10.946

2

4.864

6.151

3

5.294

5.707

4

1.682

7.975

5

1.537

4.446

6

1.570

6.958

7

1.738

2.492

8

0.950

2.917

9

1.973

5.113

10

1.546

0.831

11

1.851

0.773

12

1.701

3.509

13

1.544

2.329

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

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

比较

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

手眼变换矩阵中的转换值

数据集

X (mm)

Y (mm)

Z (mm)

好(标定板稳定固定)

-55.936

-91.919

128.086

差(棋盘被移动过)

-84.190

-84.129

147.697

Δ(好 - 差)

28.254

-7.790

-19.611

残差

数据集

N

平均旋转角度残差(°)

最大旋转角度残差(°)

平均平移残差(mm)

最大平移残差(mm)

好(标定板稳定固定)

14

0.022

0.034

0.180

0.338

差(棋盘被移动过)

13

2.449

5.590

4.626

10.946