手眼标定结果不理想(机器人零点校准/主校准不佳)

问题

手眼标定结果很差,看起来像以下几种组合之一:

手眼变换

手眼残差

投影验证

触碰测试

合理的

尚可

欠佳

合理的

欠佳

手眼标定结果不佳的示例

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

手眼变换矩阵

0.999

-0.005

0.040

-49.956

0.003

0.999

0.037

-95.704

-0.040

-0.037

0.998

132.236

0

0

0

1

../../_images/eye_in_hand_approximate_hand_eye_matrix.png

标定的残差略大于预期。

残差

N(位姿)

平均旋转角度(°)

最大旋转角度(°)

平均平移残差(mm)

最大平移残差(mm)

13

0.083

0.213

0.438

1.205

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

全部的残差数据
残差

位姿

旋转角度(°)

平移量(mm)

1

0.030

0.092

2

0.033

0.382

3

0.045

0.201

4

0.140

0.565

5

0.212

1.205

6

0.032

0.273

7

0.146

0.356

8

0.178

0.338

9

0.57

0.491

10

0.029

0.471

11

0.061

0.290

12

0.043

0.234

13

0.073

0.794

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

../../_images/projection_verification_poor.png

触碰测试结果不理想。例如,触碰测试的尖端未能触及ArUco标记。

潜在原因

机器人零点校准(关节零位校准)不正确。

每台工业机器人的关节上都装有编码器。在出现功率损耗、编码器电池故障或拆卸后,机器人会丢失其编码器的绝对位置。因此,需要重新校准控制器,使其精确定位关节零点。

通常情况下,什么时候需要重新校准机器人?

  • 碰撞后

  • 机器人报告 Mastering requiredJoint not referenced 或类似信息

  • 机器人移动不准确(TCP漂移)

  • 编码器电池耗尽,导致关节位置丢失

  • 更换接头、电机或齿轮后

  • 更换底座法兰或工具法兰后

潜在解决方案

  1. 请确保机器人归零(关节零位校准)正确。当机器人处于零位(所有关节均设置为零)时,机器人连杆和关节上的物理标记应对齐。

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

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

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

../../_images/touching-test-result-aruco.jpg
重现问题(机器人零点校准/主校准不佳)

本节中介绍的所有手眼标定都是使用下图所示的数据集进行的。

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

良好的数据集(机器人已进行零点校准)

本次手眼标定是在一台已正确归零/主校准的机器人上进行的。标定结果如下:

手眼变换矩阵

0.999

-0.004

0.043

-55.558

0.003

1.000

0.013

-91.637

-0.043

-0.013

0.999

128.629

0

0

0

1

残差

N(位姿)

平均旋转角度(°)

最大旋转角度(°)

平均平移残差(mm)

最大平移残差(mm)

13

0.020

0.031

0.143

0.221

全部的残差数据
残差

位姿

旋转角度(°)

平移量(mm)

1

0.025

0.069

2

0.012

0.221

3

0.017

0.140

4

0.024

0.207

5

0.025

0.188

6

0.007

0.123

7

0.008

0.134

8

0.019

0.044

9

0.027

0.116

10

0.012

0.116

11

0.025

0.156

12

0.027

0.179

13

0.031

0.160

投影验证成功。

../../_images/projection_verification_good.png

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

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

错误数据集(机器人需要进行零点校准)

为了模拟不正确的机器人归零/主校准设置,我们修改了以下关节的角度偏移量:

  • J2 = J2 + 0.5°

  • J3 = J3 + 0.5°

  • J4 = J4 - 0.5°

标定结果如下:

手眼变换矩阵

0.999

-0.005

0.040

-49.956

0.003

0.999

0.037

-95.704

-0.040

-0.037

0.998

132.236

0

0

0

1

残差

N(位姿)

平均旋转角度(°)

最大旋转角度(°)

平均平移残差(mm)

最大平移残差(mm)

13

0.083

0.213

0.438

1.205

全部的残差数据
残差

位姿

旋转角度(°)

平移量(mm)

1

0.030

0.092

2

0.033

0.382

3

0.045

0.201

4

0.140

0.565

5

0.212

1.205

6

0.032

0.273

7

0.146

0.356

8

0.178

0.338

9

0.57

0.491

10

0.029

0.471

11

0.061

0.290

12

0.043

0.234

13

0.073

0.794

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

../../_images/projection_verification_poor.png

触碰测试结果不理想,因为触碰测试的尖端没有触碰到 ArUco 标记。

比较

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

手眼变换矩阵中的转换值

数据集

X (mm)

Y (mm)

Z (mm)

良好的零点校准

-55.558

-91.637

128.629

错误的零点校准

-49.956

-95.704

132.236

Δ(好 - 差)

-5.602

3.933

-3.607

残差

数据集

N

平均旋转角度(°)

最大旋转角度(°)

平均平移残差(mm)

最大平移残差(mm)

良好的零点校准

13

0.020

0.031

0.143

0.221

错误的零点校准

13

0.083

0.213

0.438

1.205