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

问题

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

手眼变换

手眼残差

投影验证

触碰测试

合理的

尚可

欠佳

合理的

欠佳

If your robot's zeroing (mastering) is incorrect, correct the zeroing and repeat the hand-eye calibration (see Potential Solution below).

手眼标定结果不佳的示例

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

手眼变换矩阵

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

Verification by Projection technically succeeds, but the resulting error is still too large to be acceptable. Projection verification error can seem acceptable even if the hand-eye calibration is incorrect, so treat a passing result with caution.

../../_images/projection_verification_poor.png

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

潜在原因

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

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

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

  • 碰撞后

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

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

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

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

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

潜在解决方案

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

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

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

  4. Run the touch test (if the hand-eye calibration results are good).

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

Verification by Projection technically succeeded, but the resulting error was too large to be acceptable. Projection verification error can seem acceptable even if the hand-eye calibration is incorrect, so treat a passing result with caution.

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