ELAI S.r.l.

机器人看见了零件却抓偏了:半度误差究竟有多大影响?

从夹爪偏离目标出发,逐步解释相机与机器人的标定、几何推导、数值例子和不确定性模拟,并明确区别于硬件试验。

机器人看见了零件却抓偏了:半度误差究竟有多大影响?

问题:认出来不等于够得准

设想夹爪要从桌面抓起一个小零件。相机认出了它,软件画出的框也正确,但夹指下降的位置却偏了几毫米。我们很容易怀疑视觉模型。不过,问题可能出在两套空间描述之间的转换:相机的坐标与机器人的坐标。本文解释一个几乎看不出的角度误差,为什么会变成明显的抓取偏差,以及如何把它与图像噪声区分开。

具体问题是:相机与机器人之间的几何关系稍有错误,会让指令位置改变多少?我们先构建平面例子,再估计不确定性。主要结论不需要矩阵代数也能理解:同样的方向误差,对距离变换原点越远的点影响越大。在半米距离上,半度会造成约 4.36 mm 的偏差。这些是可复现的教学计算,不是真实机器人测量,也不是 EL-AI 的工业成果。

同一张桌子的两套地图

坐标系包含原点、方向和单位。“向右 40 厘米”并不完整,还需要知道相对于什么向右。用 p_C 表示相机坐标系中的点,用 p_B 表示机器人基座坐标系中的同一点。物理点没有移动,改变的只是描述。我们假设已经获得平面上的公制位置。仅有像素框不能提供这个位置,还需要深度,或已知平面与经过标定的投影几何。

两套地图之间需要旋转 R 来对齐方向,以及平移 t 来连接原点。因此 p_B = R p_C + t 的意思是:先把相机测得的向量转换到正确方向,再加上相机原点相对基座的位移。Modern Robotics 说明了“换一种坐标描述同一点”与“实际移动物体”的区别。混淆两者,或使用了逆变换,可能产生比本文讨论的偏差大得多的错误。

p_B = R(θ) p_C + t R(θ) = [[cos θ, −sin θ], [sin θ, cos θ]]

θ 表示两个坐标系轴线之间的夹角;三角函数计算使用弧度。R 没有单位,p_C 与 t 的单位是米。为便于理解,取 θ = 0、t = (0.20, 0.10) m:方向相同,原点不同。目标 p_C = (0.40, 0.30) m 转换为 p_B = (0.60, 0.40) m。点到相机原点的距离为 0.50 m,正好对应熟悉的 3–4–5 直角三角形。

半度如何变成毫米

现在假设软件错误地使用 θ = 0.5°,而不是真实的零角度,平移仍然正确。点会绕相机原点转动一点。可以想象钟表指针的尖端:同样角度下,长指针走过的距离更大。这个比喻只涉及几何,不包含机器人的惯性或速度。将正确位置与计算位置相减,就能测量偏差,无需模拟运动。

δ = 0.5 × π / 180 = 0.008726646… rad e = (R(δ) − I) p_C e ≈ (−2.633191, 3.479191) mm ||e|| = 4.363309 mm

I 表示保持点不变的变换;双竖线表示误差向量的长度。第一项说明估计目标在所选平面中向左偏约 2.63 mm,第二项说明向上偏约 3.48 mm。不能直接相加,因为两个位移相互垂直,距离应由勾股定理计算。一个实际含义已经很清楚:即使视觉识别完美,也无法补偿错误的几何关系。

无需逐个列举,也能推广这个结果。长度为 r、夹角为 δ 的两条半径构成等腰三角形,连接端点的线段就是弦。将三角形平分,每半条弦长为 r·sin(|δ|/2)。乘二得到精确距离。小角度下,以弧度表示的角度与其正弦近似相等,因此得到简单规则:“距离乘以角度误差”。

||e|| = 2 r |sin(δ/2)| ≈ r |δ| r = ||p_C||
角度误差 (°)0.5 m 处精确偏差 (mm)近似值 (mm)
0.10.8726650.872665
0.54.3633094.363323
18.7265358.726646
543.61938743.633231

表格比较的是同一实验的两种计算,而不是两台机器人。这里即使到五度,弦长与近似值仍相差不大,但位置误差相对于许多零件已经很大。近似公式够不够准确,与工艺能否接受偏差,是两个问题。另外,r 既不是到机器人基座的距离,也不是机械臂长度,而是到我们所扰动的旋转原点的距离。

几何计算:固定 0.5° 误差下偏差随距离的变化。0.5 m 处偏差为 4.36 mm;并非硬件测量。
几何计算:固定 0.5° 误差下偏差随距离的变化。0.5 m 处偏差为 4.36 mm;并非硬件测量。

误差有方向

如果平移也有误差,影响应按向量相加。在半度例子中沿竖直轴增加 2 mm,结果约为 6.079 mm,而不是 4.363 + 2 = 6.363 mm。反方向的误差可能减少该点偏差,让人误以为标定很好。但移动目标后,这种偶然抵消就会改变。因此,一个点成功并不能证明整个工作区域的变换都正确。

对于小误差,可以分开三种贡献:观测点误差、平移误差和角度误差,分别记作 δp、δt、δθ。矩阵 J 将向量旋转九十度,指出角度改变时点最初移动的切线方向。我们忽略小误差之间的乘积。这叫线性化,是局部描述,不是一条新的精确规律。

J = [[0, −1], [1, 0]] e ≈ R δp + δt + R J p_C δθ

这条公式也提示了如何寻找原因。平移错误会以相同方式移动所有点;旋转错误产生的位置模式则取决于点在哪里;定位噪声可能逐帧改变。这些是模型给出的诊断线索,不是自动诊断:光学畸变、结构挠曲、深度变化可能叠加,需要更丰富的模型。

估计位置有多可信?

前面规定了一个确定误差。实际中,我们往往只知道离散程度:重复测量会得到略有不同的值。标准差 σ 描述这种变化的尺度,并非保证不会超过的上限。假设误差相互独立、均值为零:点的每个坐标为 0.5 mm,平移的每个分量为 0.7 mm,角度为 0.2°。这些是假设的教学参数,不是相机规格。

协方差矩阵 Σ 收集各坐标的方差,以及它们如何共同变化。若不熟悉这些术语,可以想象一团可能位置:圆形点云表示各方向离散程度相同,拉长的点云表示某方向更不确定。下面公式相加的是独立贡献。上标 T 表示转置,即交换行列;vvᵀ 构造沿 v 方向的贡献。

Σ_e ≈ R Σ_p Rᵀ + Σ_t + σ_θ² v vᵀ v = R J p_C σ_radial = √(σ_p² + σ_t²) σ_tangential = √(σ_p² + σ_t² + r² σ_θ²)

最后两行适用于本例的各向同性误差,即两个坐标方向离散程度相同。径向沿原点到目标的连线,切向与其垂直。角度误差主要扩大后者。在 r = 0.5 m 时,得到径向 0.860 mm、切向 1.946 mm。不能把它们简单叫作“相机精度”,因为这些值描述的是特定假设下的整个变换。

我们用种子 20260925 生成 100,000 组高斯误差,并应用未经线性化的精确旋转来核对。观测标准差为 0.858 mm 与 1.949 mm,接近局部预测。总距离的第 95 百分位为 3.930 mm,第 99 百分位为 5.096 mm,计算方式是排序后分别取第 95,000 与第 99,000 个样本。这是模拟百分位,不保证真实抓取有 95% 成功率,因为没有建模接触、夹爪方向或零件尺寸。

更多图像不会消除错误标定

模拟表示整个估计可能出现的误差,相当于一组假设的标定和观测。在标定固定的系统中,部分误差对所有图像都是共同的。平均 N 次独立观测可以让视觉噪声方差缩小 N 倍,却不会自动缩小共同的旋转或平移误差。因此夹爪可能重复性很好,却总是到达错误位置。重复性表示离散程度小,准确度表示接近正确参考。

标定时的几何布局同样重要。在更简单的例子中,用相距 L 的两个点估计方向,每个点具有独立、标准差为 σ 的横向噪声。两次测量的差,其标准差是 √2·σ;除以 L 即可近似得到弧度制角度不确定性。σ = 1 mm 时,100 mm 基线约得到 0.810°,500 mm 基线约为 0.162°。这是两点模型的线性化,不是手眼标定算法的精度宣称;它说明参考点过近时,方向信息可能不足。

从解释走向有效验证

与本分析相符的验证,应采用未参与变换估计的独立目标,并让它们分布在工作区域。对每个位置记录残差向量,而不仅是平均长度。近乎平行的残差提示检查平移;方向旋转或随距离增长的残差提示检查方向。这是建议的协议,并未在硬件上执行。测量参考必须具有已知不确定性,否则可能把验证系统自身的误差算到相机头上。

相机内参标定描述投影与畸变,外参标定描述坐标系之间的关系。OpenCV 4.13.0 文档区分这些对象,并提供 calibrateHandEye 接口处理相机与夹爪的关系。相机安装在机器人上时,基座与相机的关系随机械臂姿态改变,需要组合多个变换。本例的固定关系并不解决完整问题,只隔离分析一个变换中已有误差的传播。

模型没有包含第三维、相关误差、形变、采集到动作的延迟及工具不确定性。移动物体可能被正确定位,但夹爪到达时已经去了别处。非高斯分布的尾部可能比本模拟更重。因此,这里没有证明安全、合规或抓取成功。我们得到的是一种提出可测量问题的方法,可在更换 AI 模型或购买更昂贵部件之前使用。

我们理解了什么

夹爪可能抓偏一个被正确识别的物体,因为看见与到达之间还需要可靠的几何关系。半度本身没有完整的操作意义,还取决于目标距离与方向。区分系统误差、离散程度和几何布局,有助于明确缺少哪种测量。工业与协作机器人是 EL-AI 已表明感兴趣的方向;本文讨论基础知识,不宣称未经记录的产品、安装或企业试验。

来源与可复现性

Kevin M. Lynch, Frank C. Park — Modern Robotics, §3.3.1, Homogeneous Transformation Matrices.

OpenCV 4.13.0 — Camera Calibration and 3D Reconstruction; calibrateHandEye.

来源支持几何约定与标定类型的区别;数值、平面推导和模拟属于本文实际执行的教学分析。下面片段核对确定性偏差。压缩包包含完整实验,包括误差生成和百分位计算。理解结论不必运行代码,但代码使数值核心可以核查。

import math
p = (0.4, 0.3)  # metres in the camera frame
a = math.radians(0.5)
q = (math.cos(a)*p[0]-math.sin(a)*p[1],
     math.sin(a)*p[0]+math.cos(a)*p[1])
error_mm = 1000 * math.hypot(q[0]-p[0], q[1]-p[1])
print(round(error_mm, 6))  # 4.363309

代码、数据与说明 · JSON. 教学计算使用 Python 3.14.0,图使用 Matplotlib 3.11.2。分析由 AI 辅助,不声称经过同行评审或人工审核。原创 ImageGen 封面仅作示意,不记录 EL-AI 人员、场所或实际安装。来源查阅于 2026 年 9 月 25 日。