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

问题

The hand-eye calibration results are bad, and it is unsafe to perform the touch test.

手眼变换

手眼残差

投影验证

触碰测试

不安全

If the dataset has only translational movements between poses, re-acquire it with both translational and rotational movements and repeat the hand-eye calibration (see Potential Solution below).

手眼标定结果不佳的示例

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

手眼变换矩阵

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

For this setup, the value 590.926 is expected to be approximately 130 mm, and the value 4033.240 is expected to be roughly 90 mm (the expected values depend on your camera-to-calibration-object geometry). At this stage we ignore the sign (+/-), because it depends on the coordinate-system definitions; we focus only on the distances.

../../_images/eye_in_hand_approximate_hand_eye_matrix.png

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

残差

N(位姿)

平均旋转角度(°)

最大旋转角度(°)

平均平移残差(mm)

最大平移残差(mm)

7

0.033

0.108

2.623

5.001

For smaller robots, we expect the residuals to be in the sub-millimeter range, while for larger robots, the residuals can be in the millimeter range. As for the rotational component of the residuals, we expect them to be in the sub-degree range.

全部的残差数据
残差

位姿

旋转角度(°)

平移量(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

Verification by Projection technically succeeds, but the resulting error is still too large to be acceptable. Treat projection verification critically, because the projection error can seem acceptable even if the hand-eye calibration is incorrect.

../../_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

Verification by Projection technically succeeded, but the resulting error was still too large to be acceptable. Treat projection verification critically, because the projection error can seem acceptable even if the hand-eye calibration is incorrect.

../../_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