手眼标定结果不理想(标定板松动、下垂或振动)

问题

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

手眼变换

手眼残差

投影验证

触碰测试

合理的

合理的

尚可

欠佳

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

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

手眼变换矩阵

0.01

1.00

0.02

-23.06

1.00

-0.01

0.06

440.37

0.06

0.02

-1.00

1969.85

0.00

0.00

0.00

1.00

../../_images/eye_to_hand_approximate_hand_eye_matrix.png

标定的残差略大于预期。

残差

N(位姿)

平均旋转角度(°)

最大旋转角度(°)

平均平移残差(mm)

最大平移残差(mm)

16

0.24

0.79

0.68

1.48

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

全部的残差数据
残差

位姿

旋转角度(°)

平移量(mm)

1

0.04

0.78

2

0.74

1.46

3

0.17

0.72

4

0.10

0.72

5

0.15

0.51

6

0.12

0.51

7

0.22

0.60

8

0.11

0.26

9

0.12

0.26

10

0.16

0.54

11

0.27

0.91

12

0.14

0.73

13

0.20

0.58

14

0.79

1.48

15

0.21

0.44

16

0.30

0.34

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

../../_images/projection_verification_poor_eth.jpg

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

潜在原因

导致残差较大的常见原因是连接机器人法兰和标定板的机械臂安装结构或标定板本身存在弯曲或位移。这会导致标定板在相机拍摄过程中持续振动,或在多次拍摄过程中发生轻微偏移。这两个因素都会直接影响手眼标定结果的准确性。

这种情况可能发生在:

  • 机器人加速度过高

  • 延迟时间太短,不足以让标定板的振动消失

  • 固定标定板的支架是3D打印的,要么太薄,要么刚性不足

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

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

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

潜在解决方案

  1. 确保在数据集采集过程中标定板完全静止:

    • 在数据集采集过程中保持机器人加速度较低

    • 在机器人到达目标位姿后,增加足够的延迟时间再进行拍摄

  2. 确保机器人法兰与标定板之间的安装接口完全牢固:

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

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

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

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

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

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

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

重现问题(标定板振动)

良好的数据集

使用下图所示的数据集成功进行了手眼标定。

../../_images/hand-eye-calibration-eth-good-dataset.png

标定结果如下:

手眼变换矩阵

0.01

1.00

0.02

-24.28

1.00

-0.01

0.06

442.41

0.06

0.02

-1.00

1969.45

0.00

0.00

0.00

1.00

残差

N(位姿)

平均旋转角度(°)

最大旋转角度(°)

平均平移残差(mm)

最大平移残差(mm)

16

0.06

0.11

0.34

0.65

全部的残差数据
残差

位姿

旋转角度(°)

平移量(mm)

1

0.03

0.56

2

0.06

0.65

3

0.11

0.34

4

0.06

0.08

5

0.05

0.64

6

0.03

0.06

7

0.07

0.36

8

0.06

0.18

9

0.07

0.14

10

0.04

0.19

11

0.05

0.29

12

0.09

0.34

13

0.06

0.21

14

0.07

0.33

15

0.06

0.46

16

0.06

0.62

投影验证成功。

../../_images/projection_verification_good_eth.jpg

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

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

错误数据集(标定板振动)

手眼标定使用了相同的数据集。然而,为了模拟标定板在数据集采集过程中的振动,特意增加了机器人的加速度。此外,为了进一步模拟标定板振动的影响,还特意缩短了机器人到达目标位姿后到采集数据的延迟时间。

标定结果如下:

手眼变换矩阵

0.01

1.00

0.02

-23.06

1.00

-0.01

0.06

440.37

0.06

0.02

-1.00

1969.85

0.00

0.00

0.00

1.00

残差

N(位姿)

平均旋转角度(°)

最大旋转角度(°)

平均平移残差(mm)

最大平移残差(mm)

16

0.24

0.79

0.68

1.48

全部的残差数据
残差

位姿

旋转角度(°)

平移量(mm)

1

0.04

0.78

2

0.74

1.46

3

0.17

0.72

4

0.10

0.72

5

0.15

0.51

6

0.12

0.51

7

0.22

0.60

8

0.11

0.26

9

0.12

0.26

10

0.16

0.54

11

0.27

0.91

12

0.14

0.73

13

0.20

0.58

14

0.79

1.48

15

0.21

0.44

16

0.30

0.34

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

../../_images/projection_verification_poor_eth.jpg

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

比较

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

手眼变换矩阵中的转换值

数据集

X (mm)

Y (mm)

Z (mm)

好(稳定)

-24.28

442.41

1969.45

差(震动)

-23.06

440.37

1969.85

Δ(好 - 差)

-1.22

2.04

-0.40

残差

数据集

N

平均旋转角度(°)

最大旋转角度(°)

平均平移残差(mm)

最大平移残差(mm)

好(稳定)

16

0.06

0.11

0.34

0.65

差(震动)

16

0.24

0.79

0.68

1.48