手眼标定结果不理想(相机超出工作距离)

问题

手眼标定结果勉强合格,触碰测试结果不理想(通常表现为各轴均存在临界误差)。该标定结果看起来像是以下某种组合之一:

手眼变换

手眼残差

投影验证

触碰测试

合理的

尚可

欠佳

尚可

合理的

尚可

临界状态的手眼标定结果示例。

手眼变换矩阵看起来合理,与粗略的手动测量结果一致(见下表和图像)。

手眼变换矩阵

0.999

-0.006

0.043

-59.008

0.005

1.000

0.026

-88.747

-0.044

-0.025

0.999

129.722

0

0

0

1

../../_images/eye_in_hand_approximate_hand_eye_matrix.png

标定的残差在可接受的范围内,表明优化已成功收敛。

残差

N(位姿)

平均旋转角度(°)

最大旋转角度(°)

平均平移残差(mm)

最大平移残差(mm)

14

0.099

0.259

0.344

0.823

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

全部的残差数据
残差

位姿

旋转角度(°)

平移量(mm)

1

0.080

0.229

2

0.109

0.157

3

0.043

0.142

4

0.095

0.148

5

0.122

0.553

6

0.118

0.383

7

0.028

0.610

8

0.069

0.423

9

0.125

0.277

10

0.146

0.823

11

0.260

0.229

12

0.046

0.083

13

0.057

0.628

14

0.091

0.130

通过投影验证成功。

../../_images/projection_verification_good.png

触碰测试结果不理想。例如,触碰测试工具的尖端未能准确触及ArUco标记的中心(x轴和y轴方向均有误差),并且会按压ArUco标记(z轴方向有误差)。

潜在原因

数据集是在标定物体位于 相机的推荐工作距离 之外捕获的。

Zivid 相机已经经过标定,可在有效工作距离内提供最佳尺寸精度。超出工作距离后,点云图像可能仍然良好,但尺寸精度会随着距离的增加而逐渐下降。当尺寸精度过差时,手眼标定的结果可能不理想,触碰测试也可能失败。

潜在解决方案

  1. 在相机推荐的工作距离内重新采集手眼标定数据集。如果可能,尽量在最佳工作距离内进行操作,以获得最佳结果。请参阅 适用于您的相机型号的工作距离

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

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

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

../../_images/touching-test-result-aruco.jpg
重现问题(手眼标定超出工作距离)

本节中介绍的所有手眼标定均使用 Zivid 2+ MR60 相机进行,其工作距离如下:

  • 建议工作距离:300 毫米 - 1100 毫米

  • 最佳工作距离:350 毫米 - 900 毫米

良好数据集(在工作范围内)

在采集手眼标定数据集时,标定物体位于距离相机 z 轴约 900 毫米处。这在推荐的工作距离 300-1100 毫米范围内,并且处于 Zivid 2+ MR60 相机最佳工作距离 350-900 毫米的边界。

../../_images/hand-eye-calibration-optimal-distance-dataset.png
手眼变换矩阵

0.999

-0.004

0.043

-56.943

0.003

1.000

0.027

-90.317

-0.043

-0.027

0.999

128.422

0

0

0

1

残差

N(位姿)

平均旋转角度(°)

最大旋转角度(°)

平均平移残差(mm)

最大平移残差(mm)

14

0.056

0.115

0.270

0.383

全部的残差数据
残差

位姿

旋转角度(°)

平移量(mm)

1

0.070

0.184

2

0.051

0.295

3

0.076

0.321

4

0.049

0.383

5

0.055

0.128

6

0.030

0.328

7

0.052

0.211

8

0.020

0.337

9

0.018

0.256

10

0.088

0.345

11

0.022

0.368

12

0.111

0.093

13

0.027

0.264

14

0.115

0.344

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

../../_images/projection_verification_good.png

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

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

错误数据集(超出工作范围)

在采集手眼标定数据集时,标定物体位于距离相机 z 轴约 1300 毫米处。这超过了 Zivid 2+ MR60 相机推荐的工作距离 300-1100 毫米。

../../_images/hand-eye-calibration-far-distance-dataset.png

标定结果如下:

手眼变换矩阵

0.999

-0.006

0.043

-59.008

0.005

1.000

0.026

-88.747

-0.044

-0.025

0.999

129.722

0

0

0

1

残差

N(位姿)

平均旋转角度(°)

最大旋转角度(°)

平均平移残差(mm)

最大平移残差(mm)

14

0.099

0.259

0.344

0.823

全部的残差数据
残差

位姿

旋转角度(°)

平移量(mm)

1

0.080

0.229

2

0.109

0.157

3

0.043

0.142

4

0.095

0.148

5

0.122

0.553

6

0.118

0.383

7

0.028

0.610

8

0.069

0.423

9

0.125

0.277

10

0.146

0.823

11

0.260

0.229

12

0.046

0.083

13

0.057

0.628

14

0.091

0.130

投影验证成功。

../../_images/projection_verification_poor.png

触碰测试结果不理想,因为触碰测试工具的尖端没有对准 ArUco 标记的中心(x 轴和 y 轴误差),反而按压了 ArUco 标记(z 轴误差)。

比较

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

手眼变换矩阵中的转换值

数据集

X (mm)

Y (mm)

Z (mm)

好(在工作距离内)

-56.943

-90.317

128.422

差(超出工作距离)

-59.008

-88.747

129.722

Δ(好 - 差)

2.065

-1.570

-1.300

残差

数据集

N

平均旋转角度(°)

最大旋转角度(°)

平均平移残差(mm)

最大平移残差(mm)

好(在工作距离内)

14

0.056

0.115

0.270

0.383

差(超出工作距离)

14

0.099

0.259

0.344

0.823