跳到正文
PreciSim
physics

真值与容差

「真值」到底指什么、偏差怎么算、容差从哪来——以及为什么残差小不等于标得准。

真值是什么

在虚拟设备里,真值是生成这个场景时用的那组参数本身,不是反推出来的近似:

标定链 真值
像素当量 由相机内参与工作距离解析算出的 mm/px
手眼 场景里相机与工具的位姿变换,配置里直接写着
内参畸变 配置里的 fx, fy, cx, cy, k₁, k₂, p₁, p₂
振镜场校正 生成场畸变时用的那张畸变表
Z 轴焦点 光学模型里的最佳焦面位置
平台几何 配置里的正交度、旋转中心

所以真值评分不是「用另一种算法再算一遍」,而是拿你的结果和生成器的输入对账。 这是虚拟设备相对真机唯一的、也是决定性的优势。

残差 ≠ 偏差

这是整份文档里最值得记住的一句话。

定义 说明什么
残差 模型对参与求解的数据的拟合误差 模型和数据自洽程度
偏差 你的结果与真值之差 标得准不准

残差小只说明「你的模型能解释你采的这批数据」。如果数据本身有系统性问题 (畸变没标、全挤在视野中心、单向采集把反向间隙藏了), 残差会很小,偏差会很大

实验 1 的第 4 步专门让你造出这个现象:把畸变调大,残差 RMS 只从 0.08 px 涨到 0.21 px, 看起来没什么问题,但实际偏差从 0.018 mm 涨到 0.15 mm,直接超差 3 倍。

偏差怎么算

不同链的量纲不同,统一折算成「在标称工作范围上的等效长度偏差」,这样能横向比较:

偏差定义
像素当量 |scale_est − scale_true| / scale_true × L_refL_ref = 20 mm
手眼 一组测试位姿下,预测位置与真实位置的欧氏距离 RMS
内参畸变 测试点的重投影误差 RMS(px),另折算成视野边缘的 mm 偏差
振镜场校正 校正后场内残差的 RMS 与 max(µm)
Z 轴焦点 多次独立标定结果的标准差(µm),以及与真实焦面之差
平台几何 补偿后对角线长度误差(mm/m)

verify 步骤用的数据必须没参与 solve,否则这些数字全都不作数。

容差从哪来

不是拍脑袋,是从误差预算倒推的。做法:

  1. 写下最终要保证的指标,比如「贴装位置精度 ±0.05 mm(3σ)」;
  2. 列出所有贡献项:标定误差、运动误差、视觉重复性、工件本身公差、热漂移;
  3. 按平方和开方(RSS)合成,因为这些误差互相独立
σ_total = sqrt(σ_calib² + σ_motion² + σ_vision² + σ_part² + σ_thermal²)
  1. 给每一项分配预算,使 3σ_total ≤ 0.05 mm

demo-2axis-vision 的默认预算:

贡献项 1σ (mm) 占总方差
标定(C1+C2+C3 合成) 0.0080 36%
运动(重复定位 + 间隙) 0.0042 10%
视觉重复性 0.0095 51%
工件公差 0.0020 2%
热漂移(30 分钟内) 0.0015 1%
合计 RSS 0.0133 3σ = 0.040 mm ✓

看占比而不是看绝对值:这台机器上视觉重复性占了一半方差, 说明继续优化标定算法收益有限,该去改善光照和圆点尺寸。 误差预算最大的价值就是告诉你别优化错地方

把这套用到真机上

真机没有真值,但误差预算照样成立,只是验证方式变了:

  • 更高精度的量具当参考(千分表、块规、激光干涉仪、高精度标定板);
  • 一致性代替准确性:同一位置重复测 30 次看分散度;
  • 闭环校验:标定完做一个已知尺寸的动作,量实际结果。

虚拟设备的作用,是让你在已经知道答案的条件下先把方法练熟, 到真机上你才有底气判断「量出来的这个数是不是合理」。

最后更新: 2026/9/21
这页有帮助吗?