由于手眼标定不佳(单位使用了米而不是毫米),触碰测试不安全。
问题
手眼标定结果很差,进行触碰测试是不安全的。
手眼变换 |
手眼残差 |
投影验证 |
触碰测试 |
|---|---|---|---|
差 |
差 |
差 |
不安全 |
手眼标定结果不佳的示例
手眼变换矩阵看起来不正确,因为它的几个值与物理测量值相差极大,对于这种设置来说不合理。
0.971 |
-0.214 |
-0.108 |
-1.683 |
-0.019 |
0.380 |
-0.925 |
375.305 |
0.239 |
0.900 |
0.365 |
457.970 |
0 |
0 |
0 |
1 |
数值 457.970 应约为 130 mm,而 375.305 则大致为 90 mm。现阶段我们忽略正负号(+/-),因为它取决于坐标系的定义;我们仅关注距离大小。
标定的残差也明显大于预期,高出几个数量级。
N(位姿) |
平均旋转角度(°) |
最大旋转角度(°) |
平均平移残差(mm) |
最大平移残差(mm) |
|---|---|---|---|---|
14 |
5.247 |
12.851 |
135.333 |
760.322 |
对于小型机器人,我们预计残差在亚毫米范围内;而对于大型机器人,残差则在毫米范围内。至于残差的旋转分量,我们预计其在亚度范围内。
全部的残差数据
位姿 |
旋转角度(°) |
平移量(mm) |
|---|---|---|
1 |
0.948 |
760.322 |
2 |
0.746 |
92.317 |
3 |
2.557 |
177.495 |
4 |
9.364 |
167.930 |
5 |
10.202 |
174.986 |
6 |
0.951 |
55.776 |
7 |
10.514 |
65.690 |
8 |
12.851 |
69.575 |
9 |
2.470 |
70.544 |
10 |
2.625 |
81.236 |
11 |
0.927 |
43.069 |
12 |
2.134 |
32.829 |
13 |
10.851 |
44.558 |
14 |
6.316 |
58.329 |
通过投影验证失败,这表明手眼标定不正确,触碰测试将会严重失败。
潜在原因
用于手眼标定的机器人位姿(平移分量)以 米 为单位提供。
大多数工业机器人默认使用米作为机器人位姿单位。然而,Zivid 点云的单位是毫米。为了获得正确的手眼标定结果,用于手眼标定的机器人位姿和点云必须使用相同的单位。如果机器人位姿单位为米,而点云单位为毫米,则必然会导致手眼标定结果不佳,并生成完全错误的手眼变换矩阵。
警告
ROS 使用国际单位制 (SI),因此 ROS 主题中返回的机器人位姿数据以 米 为单位。如果您通过 ROS 采集机器人位姿数据,请在运行手眼标定之前将位移分量转换为毫米。
潜在解决方案
请确保机器人输入位姿的单位为 毫米 。
注意:如果机器人位姿的平移分量以米为单位,则只需将其除以 1000 即可将其转换为毫米。
使用相同的数据集(机器人位姿以毫米为单位)重复手眼标定。
验证手眼标定结果(变换矩阵、残差、投影)。
运行触碰测试(如果手眼标定结果良好)。
重现问题(机器人位姿单位显示为米而不是毫米)
良好的数据集
使用下图所示的数据集成功进行了手眼标定。
标定结果如下:
0.999 |
-0.004 |
0.043 |
-55.476 |
0.004 |
1.000 |
0.013 |
-91.613 |
-0.043 |
-0.013 |
0.999 |
128.667 |
0 |
0 |
0 |
1 |
N(位姿) |
平均旋转角度(°) |
最大旋转角度(°) |
平均平移残差(mm) |
最大平移残差(mm) |
|---|---|---|---|---|
14 |
0.019 |
0.029 |
0.144 |
0.222 |
全部的残差数据
位姿 |
旋转角度(°) |
平移量(mm) |
|---|---|---|
1 |
0.026 |
0.071 |
2 |
0.013 |
0.218 |
3 |
0.020 |
0.146 |
4 |
0.026 |
0.222 |
5 |
0.026 |
0.181 |
6 |
0.007 |
0.114 |
7 |
0.007 |
0.128 |
8 |
0.015 |
0.066 |
9 |
0.023 |
0.110 |
10 |
0.010 |
0.113 |
11 |
0.024 |
0.149 |
12 |
0.023 |
0.175 |
13 |
0.029 |
0.184 |
14 |
0.022 |
0.132 |
通过触碰测试验证了手眼标定。
触碰测试成功,证实了手眼标定的正确性和准确性。
错误数据集(机器人位姿单位为米而非毫米)
为了模拟该问题,将手眼标定数据集中输入机器人位姿的平移向量从毫米转换为米。然后,使用修改后的机器人位姿对同一数据集再次进行手眼标定。
标定结果如下:
0.971 |
-0.214 |
-0.108 |
-1.683 |
-0.019 |
0.380 |
-0.925 |
375.305 |
0.239 |
0.900 |
0.365 |
457.970 |
0 |
0 |
0 |
1 |
N(位姿) |
平均旋转角度(°) |
最大旋转角度(°) |
平均平移残差(mm) |
最大平移残差(mm) |
|---|---|---|---|---|
14 |
5.247 |
12.851 |
135.333 |
760.322 |
全部的残差数据
位姿 |
旋转角度(°) |
平移量(mm) |
|---|---|---|
1 |
0.948 |
760.322 |
2 |
0.746 |
92.317 |
3 |
2.557 |
177.495 |
4 |
9.364 |
167.930 |
5 |
10.202 |
174.986 |
6 |
0.951 |
55.776 |
7 |
10.514 |
65.690 |
8 |
12.851 |
69.575 |
9 |
2.470 |
70.544 |
10 |
2.625 |
81.236 |
11 |
0.927 |
43.069 |
12 |
2.134 |
32.829 |
13 |
10.851 |
44.558 |
14 |
6.316 |
58.329 |
投影验证失败,表明手眼标定不正确,触碰测试将会严重失败。因此,出于安全考虑,跳过了触碰测试。
比较
下表比较了手眼变换矩阵(平移值)和手眼标定残差之间的结果。
数据集 |
X (mm) |
Y (mm) |
Z (mm) |
|---|---|---|---|
好(位姿单位为毫米) |
-55.476 |
-91.613 |
128.667 |
差(位姿以米为单位) |
-1.683 |
375.305 |
457.970 |
Δ(好 - 差) |
-53.793 |
-466.918 |
-329.303 |
数据集 |
N |
平均旋转角度(°) |
最大旋转角度(°) |
平均平移残差(mm) |
最大平移残差(mm) |
|---|---|---|---|---|---|
好(位姿单位为毫米) |
14 |
0.019 |
0.029 |
0.144 |
0.222 |
差(位姿以米为单位) |
14 |
5.247 |
12.851 |
135.333 |
760.322 |