手眼标定结果不理想(机械臂上的支架松动或下垂)

问题

手眼标定结果不理想(差或勉强合格),介于以下几种组合之间:

手眼变换

手眼残差

投影验证

触碰测试

合理的

合理的

尚可

欠佳

If the on-arm mount is loose or sagging, make the mounting interface rigid and repeat the hand-eye calibration (see Potential Solution below).

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

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

手眼变换矩阵

0.999

0.004

0.047

-54.326

-0.004

1.000

-0.008

-86.359

-0.047

0.007

0.999

125.236

0

0

0

1

../../_images/eye_in_hand_approximate_hand_eye_matrix.png

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

残差

N(位姿)

平均旋转角度(°)

最大旋转角度(°)

平均平移残差(mm)

最大平移残差(mm)

14

0.756

1.545

3.162

5.944

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.449

2.486

2

0.935

2.737

3

0.854

4.049

4

0.753

3.035

5

0.589

4.105

6

0.535

2.682

7

0.593

2.973

8

1.004

1.442

9

0.618

3.502

10

0.614

3.648

11

1.545

3.464

12

0.283

1.775

13

0.773

5.944

14

1.044

2.430

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标记。

潜在原因

高残差的常见原因是连接机器人法兰和相机的机械臂安装结构发生弯曲或移动。这种情况可能发生在以下情况下:

  • 该支架是3D打印的,太薄,或者刚性不足

  • 螺丝或紧固件未正确拧紧

  • 当机器人改变方向时,支架会发生下垂、弯曲或移位

  • 相机的重量或额外的工具会产生支架无法承受的扭矩

数据集采集过程中任何机械运动都会导致标定板的位姿略有不同,从而直接增加残差。

潜在解决方案

  1. 确保机器人法兰与相机之间的安装接口完全牢固:

    • 使用实心金属支架或其他高刚度材料

    • 避免使用 3D 打印、细长或过长的悬臂式设计

    • 确认所有螺丝、适配器和延长板均已完全拧紧。

    • Verify that the structure does not deflect under the weight of the camera or end-of-arm-tooling

    • 必要时,缩短杠杆臂或加固安装支架

  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-large-movements-dataset.png

标定结果如下:

手眼变换矩阵

0.999

-0.001

0.043

-56.355

-0.000

1.000

0.020

-89.248

-0.043

-0.020

0.999

129.899

0

0

0

1

残差

N(位姿)

平均旋转角度(°)

最大旋转角度(°)

平均平移残差(mm)

最大平移残差(mm)

14

0.135

0.180

0.578

1.341

全部的残差数据
残差

位姿

旋转角度(°)

平移量(mm)

1

0.180

0.465

2

0.122

0.449

3

0.100

0.545

4

0.096

0.331

5

0.126

0.356

6

0.180

0.179

7

0.175

1.341

8

0.136

0.621

9

0.102

0.996

10

0.140

0.375

11

0.135

0.763

12

0.104

0.636

13

0.156

0.448

14

0.141

0.588

投影验证成功。

../../_images/projection_verification_good.png

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

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

错误数据集(手臂支架松动)

手眼标定使用了相同的数据集。但是,为了模拟该问题并展示其对手眼标定结果的影响,特意将相机臂架上的螺丝拧松。

标定结果如下:

手眼变换矩阵

0.999

0.004

0.047

-54.326

-0.004

1.000

-0.008

-86.359

-0.047

0.007

0.999

125.236

0

0

0

1

残差

N(位姿)

平均旋转角度(°)

最大旋转角度(°)

平均平移残差(mm)

最大平移残差(mm)

14

0.756

1.545

3.162

5.944

全部的残差数据
残差

位姿

旋转角度(°)

平移量(mm)

1

0.449

2.486

2

0.935

2.737

3

0.854

4.049

4

0.753

3.035

5

0.589

4.105

6

0.535

2.682

7

0.593

2.973

8

1.004

1.442

9

0.618

3.502

10

0.614

3.648

11

1.545

3.464

12

0.283

1.775

13

0.773

5.944

14

1.044

2.430

Verification by Projection technically succeeded, but the resulting error was 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 标记。

比较

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

手眼变换矩阵中的转换值

数据集

X (mm)

Y (mm)

Z (mm)

好(结构紧固)

-56.355

-89.248

129.899

坏(结构松动)

-54.326

-86.359

125.236

Δ(好 - 差)

-2.029

-2.890

4.663

残差

数据集

N

平均旋转角度(°)

最大旋转角度(°)

平均平移残差(mm)

最大平移残差(mm)

好(结构紧固)

14

0.135

0.180

0.578

1.341

坏(结构松动)

14

0.756

1.545

3.162

5.944