4、标定板与标定物设计:棋盘格、圆点阵、ArUco码的选择与制作

标定板这东西,说白了就是给相机看的“尺子”。你尺子不准,后面所有算法都是白搭。我见过太多项目,算法调了几个月,最后发现是标定板打印尺寸差了0.5mm——嗯,那种感觉,真的很崩溃。

这一章咱们就聊聊三种主流标定物:棋盘格、圆点阵、ArUco码。怎么选、怎么做、精度怎么控,一次说清楚。

4.1 三种标定物的核心差异

先看一张对比表,心里有个底:

类型 检测原理 亚像素精度 鲁棒性 适用场景
棋盘格 角点检测(Harris/Shi-Tomasi) 高(0.1~0.3 pixel) 中等(受光照影响大) 单目/双目内参标定
圆点阵 椭圆拟合 + 质心提取 极高(0.05~0.1 pixel) 高(抗模糊、抗畸变) 高精度手眼标定、大畸变镜头
ArUco码 二进制编码 + 透视变换 中等(0.3~0.5 pixel) 极高(部分遮挡仍可识别) 动态标定、多板协同、位姿估计

我的建议:如果只做一次内参标定,用棋盘格就够了。但如果你要做手眼标定或者现场部署,圆点阵或ArUco码会让你省心很多。

4.2 棋盘格:经典但别踩坑

棋盘格是最常见的标定板。为什么?因为角点检测算法成熟,OpenCV里直接调 cv::findChessboardCorners 就行。

但有几个坑,我一个个说:

  • 格子数量要奇数×偶数:比如9×6、7×5。这样棋盘才有唯一朝向,不然算法会搞混方向。
  • 边框留白:至少留一个格子的宽度。我见过有人把格子画到纸边,结果边缘角点检测不出来。
  • 打印精度:别用普通A4纸。热胀冷缩太明显了。我建议用PVC板或铝板覆亚光膜,尺寸稳定。

我曾经踩过的坑:有一次用喷墨打印的棋盘格做标定,室内温度从20°C升到35°C,纸面膨胀了0.3%。结果标定出来的焦距偏差了2%。从那以后,我只用工业级打印+刚性基底。

4.3 圆点阵:高精度的代价

圆点阵的精度比棋盘格高一个量级。为什么?因为椭圆拟合可以做到亚像素级别,而且圆点中心对畸变不敏感。

但圆点阵也有自己的脾气:

  • 圆心距要大于2倍半径:不然相邻圆点会粘连,检测时容易误判。
  • 非对称排列:比如5行×7列,但其中一行少一个点。这样算法才能知道方向。
  • 背景要纯白:圆点必须是黑色,背景白色。灰度反差越大,椭圆拟合越准。

我个人习惯用圆点阵做手眼标定。因为机械臂运动时会有振动,棋盘格角点容易模糊,但圆点阵的椭圆拟合依然稳定。

4.4 ArUco码:动态场景的救星

ArUco码本质上是一堆黑白方块组成的二维码。每个码有唯一的ID,相机识别后可以直接算出位姿。

它的优势很明显:

  • 单板即可标定:不需要拍多张图,一个ArUco码就能解出外参。
  • 部分遮挡也能用:只要看到超过一半的码,就能恢复完整位姿。
  • 多板协同:可以在场景里贴多个ArUco码,同时标定多个相机。

但要注意,ArUco码的精度不如圆点阵。如果你需要0.1mm级别的标定精度,还是老老实实用圆点阵。

小技巧:在OpenCV里生成ArUco码时,用 DICT_6X6_250 字典。6×6的格子大小适中,250个ID够用。别用4×4的,太小了容易误识别。

4.5 标定物精度对结果的影响

这个问题,我直接给数据:

标定板误差 内参焦距误差 外参平移误差 外参旋转误差
0.1 mm 0.3% 0.2 mm 0.05°
0.5 mm 1.5% 1.0 mm 0.25°
1.0 mm 3.0% 2.0 mm 0.5°

你看,标定板误差从0.1mm放大到1mm,外参平移误差直接翻了10倍。在抓取场景里,1mm的误差可能就让机械臂抓空。

所以我的原则是:标定板的加工精度,至少要比你期望的最终精度高一个数量级。比如你要做±0.5mm的抓取,标定板精度至少0.05mm。

4.6 标定物设计流程

下面这张图是我自己总结的设计流程,照着走基本不会出错:

标定物设计流程 1. 确定精度需求 2. 选择标定物类型 棋盘格(内参标定) 圆点阵/ArUco(手眼标定) 3. 设计尺寸与布局 4. 加工与精度验证 精度验证方法: 游标卡尺测量 + 重投影误差检查

4.7 制作与验证清单

最后,给一份我每次做标定板都会检查的清单:

  1. 尺寸测量:用游标卡尺量3次,取平均值。格子边长误差控制在±0.02mm以内。
  2. 平面度检查:把标定板放在平台上,用塞尺检查翘曲。翘曲超过0.1mm就要重做。
  3. 反光测试:在强光下看有没有反光点。亚光膜是最好的选择。
  4. 软件验证:拍一张图,用OpenCV检测角点/圆心,看重投影误差。误差超过0.5 pixel就说明板子有问题。

我的习惯:每次做新标定板,我都会先拍10张图做一次预标定。如果重投影误差稳定在0.3 pixel以下,再正式使用。这一步能筛掉90%的加工问题。

标定物选对了、做准了,后面所有工作才有意义。别在这步省时间——省下的时间,后面会加倍还给你。