由于手眼标定不佳(标定板移动或移位),无法安全执行触摸测试。
问题
手眼标定结果很差,进行触碰测试是不安全的。
手眼变换 |
手眼残差 |
投影验证 |
触碰测试 |
|---|---|---|---|
差 |
差 |
差 |
不安全 |
手眼标定结果不佳的示例
手眼变换矩阵看起来不正确,因为它的几个值与实际测量值之间的偏差超出了预期。这些偏差虽然不算特别大,但对于这种设置来说已经超出了合理范围。
0.994 |
0.040 |
0.099 |
-84.190 |
-0.042 |
0.999 |
0.021 |
-84.129 |
-0.098 |
-0.025 |
0.995 |
147.697 |
0 |
0 |
0 |
1 |
数值 147.697 应约为 130 mm,而 -84.129 则应大致为 90 mm。现阶段我们忽略正负号(+/-),因为它取决于坐标系的定义;我们仅关注距离大小。
标定残差也明显大于预期,大约高出一个数量级。
N(位姿) |
平均旋转角度残差(°) |
最大旋转角度残差(°) |
平均平移残差(mm) |
最大平移残差(mm) |
|---|---|---|---|---|
13 |
2.449 |
5.590 |
4.626 |
10.946 |
对于小型机器人,我们预计残差在亚毫米范围内;而对于大型机器人,残差则在毫米范围内。至于残差的旋转分量,我们预计其在亚度范围内。
全部的残差数据
位姿 |
旋转角度(°) |
平移量(mm) |
|---|---|---|
1 |
5.590 |
10.946 |
2 |
4.864 |
6.151 |
3 |
5.294 |
5.707 |
4 |
1.682 |
7.975 |
5 |
1.537 |
4.446 |
6 |
1.570 |
6.958 |
7 |
1.738 |
2.492 |
8 |
0.950 |
2.917 |
9 |
1.973 |
5.113 |
10 |
1.546 |
0.831 |
11 |
1.851 |
0.773 |
12 |
1.701 |
3.509 |
13 |
1.544 |
2.329 |
投影验证在技术上是成功的,但产生的误差仍然过大,无法接受。我们应该对投影验证持非常谨慎的态度,因为即使手眼标定不正确,投影误差也可能看起来可以接受。
这些结果强烈表明手眼标定不正确,如果尝试进行触碰测试将会失败。
潜在原因
- Eye-in-Hand:
在数据集采集过程中,标定板发生了移动。
- Eye-to-Hand:
在采集数据集的过程中,相机或标定板发生了移动。
在数据集采集过程中,标定板(Eye-in-Hand)或相机/安装在法兰的标定板(Eye-to-Hand)的任何移动都会破坏手眼标定所依赖的刚体几何假设。这会导致机器人与相机之间的相对关系在各坐标系之间出现不一致,从而使求解器收敛到一个与实际物理配置不符的手眼变换矩阵。
因此,您可能会看到较高的残差值、较差的投影精度,以及手眼变换矩阵中的距离与真实几何形状存在差异。在严重的情况下,由此产生的变换可能会因碰撞风险而使触碰测试验证变得不安全。
潜在解决方案
确保相机和标定板安装牢固,在数据采集过程中不会移动。
使用同一数据集重复进行手眼标定。
验证手眼标定结果(变换矩阵、残差、投影)。
运行触碰测试(如果手眼标定结果良好)。
重现问题(故意移动标定板)
良好的数据集
使用下图所示的数据集成功进行了手眼标定。
标定结果如下:
0.999 |
-0.004 |
0.043 |
-55.936 |
0.003 |
0.999 |
0.013 |
-91.919 |
-0.043 |
-0.013 |
0.998 |
128.086 |
0 |
0 |
0 |
1 |
N(位姿) |
平均旋转角度残差(°) |
最大旋转角度残差(°) |
平均平移残差(mm) |
最大平移残差(mm) |
|---|---|---|---|---|
14 |
0.022 |
0.034 |
0.180 |
0.338 |
全部的残差数据
位姿 |
旋转角度(°) |
平移量(mm) |
|---|---|---|
1 |
0.017 |
0.163 |
2 |
0.008 |
0.135 |
3 |
0.028 |
0.172 |
4 |
0.009 |
0.053 |
5 |
0.031 |
0.236 |
6 |
0.006 |
0.060 |
7 |
0.009 |
0.154 |
8 |
0.015 |
0.102 |
9 |
0.031 |
0.147 |
10 |
0.009 |
0.145 |
11 |
0.030 |
0.249 |
12 |
0.023 |
0.152 |
13 |
0.034 |
0.255 |
14 |
0.031 |
0.169 |
通过触碰测试验证手眼标定结果。
触碰测试成功,证实了手眼标定的正确性和准确性。
错误的数据集(手眼配置错误)
为了模拟这个问题,在采集数据集期间,故意在两次采集之间移动了标定板(见下图)。
标定结果如下。
0.994 |
0.040 |
0.099 |
-84.190 |
-0.042 |
0.999 |
0.021 |
-84.129 |
-0.098 |
-0.025 |
0.995 |
147.697 |
0 |
0 |
0 |
1 |
N(位姿) |
平均旋转角度残差(°) |
最大旋转角度残差(°) |
平均平移残差(mm) |
最大平移残差(mm) |
|---|---|---|---|---|
13 |
2.449 |
5.590 |
4.626 |
10.946 |
全部的残差数据
位姿 |
旋转角度(°) |
平移量(mm) |
|---|---|---|
1 |
5.590 |
10.946 |
2 |
4.864 |
6.151 |
3 |
5.294 |
5.707 |
4 |
1.682 |
7.975 |
5 |
1.537 |
4.446 |
6 |
1.570 |
6.958 |
7 |
1.738 |
2.492 |
8 |
0.950 |
2.917 |
9 |
1.973 |
5.113 |
10 |
1.546 |
0.831 |
11 |
1.851 |
0.773 |
12 |
1.701 |
3.509 |
13 |
1.544 |
2.329 |
投影验证在技术上成功了,但误差仍然过大,无法接受。对于投影验证,我们应该非常谨慎,因为即使手眼标定不正确,投影误差也可能看起来可以接受。
这些结果强烈表明手眼标定不正确,如果尝试进行触碰测试将会失败,因此出于安全原因跳过了该测试。
比较
下表比较了手眼变换矩阵(平移值)和手眼标定残差之间的结果。
数据集 |
X (mm) |
Y (mm) |
Z (mm) |
|---|---|---|---|
好(标定板稳定固定) |
-55.936 |
-91.919 |
128.086 |
差(棋盘被移动过) |
-84.190 |
-84.129 |
147.697 |
Δ(好 - 差) |
28.254 |
-7.790 |
-19.611 |
数据集 |
N |
平均旋转角度残差(°) |
最大旋转角度残差(°) |
平均平移残差(mm) |
最大平移残差(mm) |
|---|---|---|---|---|---|
好(标定板稳定固定) |
14 |
0.022 |
0.034 |
0.180 |
0.338 |
差(棋盘被移动过) |
13 |
2.449 |
5.590 |
4.626 |
10.946 |