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

问题

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

手眼变换

手眼残差

投影验证

触碰测试

合理的

合理的

尚可

欠佳

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

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

手眼变换矩阵

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

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

全部的残差数据
残差

位姿

旋转角度(°)

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

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

../../_images/projection_verification_poor.png

触碰测试结果不理想。例如,触碰测试工具的尖端无法触及ArUco标记。

潜在原因

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

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

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

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

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

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

潜在解决方案

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

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

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

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

    • 确认结构在相机或末端执行器的重量下不会发生变形

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

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

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

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

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

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

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