标定板选型与设计:棋盘格、圆点阵、ChArUco板的选择标准与制作规范

标定板选型,说白了就是给你的相机找一把「尺子」。这把尺子准不准,直接决定了手眼标定的成败。我见过太多项目,算法调了半天,最后发现是标定板本身有问题——嗯,这种坑踩过一次就忘不了。

市面上主流的有三种:棋盘格、圆点阵、ChArUco板。它们各有脾气,选对了事半功倍,选错了...你可能得重新采集数据。

三种标定板的核心差异

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

类型 角点提取精度 遮挡鲁棒性 制作难度 适用场景
棋盘格 高(亚像素级) 差(遮挡即失效) 低(打印即可) 实验室、固定工位
圆点阵 中(圆心拟合) 中(部分遮挡可恢复) 中(需控制圆度) 大视场、远距离
ChArUco板 高(结合编码) 强(部分可见即可用) 高(需生成编码) 大场景、多视角、自动化

棋盘格:经典但娇气

棋盘格是入门首选,HALCON里find_caltab用起来也顺手。角点检测精度高,算法成熟,我早期做项目基本都用它。

但有个致命弱点:棋盘格必须完整可见。只要有一个角被遮挡,整张图就废了。我在一个汽车焊装线项目里吃过这个亏——机器人手臂稍微挡了一下标定板边缘,采集了半小时的数据全得重来。

避坑指南:棋盘格不要用反光材质打印。我曾经用相纸打印,结果在环形光源下一片惨白,角点全丢了。用哑光覆膜,或者直接买陶瓷基板。

制作规范:

  • 内角点数量:建议 7×7 或 9×7(行列数不要相等,否则方向歧义)
  • 方格边长:占图像宽度的 1/10 ~ 1/8 为宜
  • 边框留白:至少半个方格宽度,避免边缘截断

圆点阵:远距离的优选

圆点阵用圆心作为特征点。圆心拟合对透视变形不敏感,适合大视场或倾斜拍摄。HALCON里find_caltab也支持圆点阵,但需要指定'caltab_type'为'circle'。

我个人习惯在远距离(>2米)场景用圆点阵。为什么呢?因为棋盘格在远距离下,角点之间的像素距离太小,亚像素精度会下降。圆点阵的圆心拟合反而更稳定。

经验之谈:圆点阵的圆度很关键。打印时如果纸张受潮变形,圆变成椭圆,圆心偏差就会引入误差。我建议用铝基板或玻璃基板,热稳定性好。

设计参数:

  • 圆点直径:占方格边长的 60%~70%
  • 圆心距:至少 2 倍直径,避免粘连
  • 行列数:建议 7×7 或 11×9,同样避免正方形

ChArUco板:工业级的全能选手

ChArUco板是棋盘格和ArUco码的结合体。每个格子内部嵌有唯一编码,即使部分遮挡,也能通过编码恢复位姿。说白了,它解决了棋盘格「全或无」的痛点。

我在一个大型物流分拣项目里用过ChArUco板。现场环境复杂,标定板经常被传送带上的包裹挡住一半。换成ChArUco板后,只要能看到 4 个以上编码,就能完成标定。效率提升不是一星半点。

核心优势:ChArUco板支持「部分可见」标定。对于机器人手眼标定这种需要多角度采集的场景,你不需要每次都保证标定板完整出镜。

HALCON生成示例:

* 生成ChArUco板描述文件
create_caltab (
    7, 7,           * 棋盘格内角点行列数
    0.012, 0.008,   * 方格边长(m),编码边长(m)
    'charuco',      * 类型
    'caltab.descr', * 输出描述文件
    'caltab.ps'     * 输出打印文件
)

注意事项:

  • 编码字典:HALCON默认使用'DICT_4X4_50',足够日常使用
  • 打印尺寸:编码区域至少 20×20 像素,否则解码失败
  • 光照均匀:编码对光照敏感,避免局部过曝

选型决策流程

我整理了一个简单的决策逻辑,你照着走就行:

标定板选型决策流程 开始选型 拍摄距离 > 2米? 是 圆点阵 否 场景易遮挡? 是 ChArUco板 否 棋盘格 提示:如果项目要求高自动化、多视角采集,直接选ChArUco板 它虽然制作稍复杂,但后期省心太多

制作规范与常见陷阱

不管选哪种板子,制作环节都有几条铁律:

  1. 平面度第一:标定板必须贴在刚性基板上。我见过有人贴在三合板上,结果受潮变形,标定误差直接翻倍。
  2. 尺寸精度:方格边长或圆心距的误差控制在 0.1mm 以内。工业级建议用光刻或蚀刻工艺。
  3. 对比度:黑白区域的灰度差至少 100 以上。HALCON的find_caltab对对比度敏感,灰蒙蒙的板子检测会失败。
  4. 防反光:哑光处理是必须的。如果现场有强光,可以考虑偏光片。
我曾经踩过的坑:有一次用圆点阵,打印时没注意墨量,圆点边缘有毛刺。HALCON拟合圆心时,偏差达到了 0.3 像素。后来换成激光打印,问题解决。记住:标定板的精度决定了整个系统的精度上限。

HALCON中的标定板文件生成

不管你选哪种,都需要生成描述文件(.descr)和打印文件(.ps)。HALCON的create_caltab一步搞定:

* 棋盘格示例
create_caltab (7, 7, 0.012, 0.012, 'caltab.descr', 'caltab.ps')

* 圆点阵示例
create_caltab (7, 7, 0.012, 0.012, 'caltab.descr', 'caltab.ps', 'circle')

* ChArUco示例
create_caltab (7, 7, 0.012, 0.008, 'caltab.descr', 'caltab.ps', 'charuco')

参数说明:前两个是内角点行列数,第三个是方格边长(米),第四个是编码边长(仅ChArUco需要)。

小技巧:生成后先用read_caltab加载描述文件,再用disp_caltab显示,确认角点顺序和坐标系方向正确。这一步花不了 1 分钟,但能避免后续标定时的方向混乱。

好了,标定板选型这块就聊到这儿。记住一句话:没有最好的板子,只有最合适的板子。根据你的场景、距离、遮挡情况来选,别盲目跟风。