第三章:视觉定位系统标定——相机畸变校正、手眼标定、像素当量计算与标定板设计

各位同行,大家好。今天咱们聊点硬核的——视觉定位系统的标定。

说实话,我刚入行那会儿,觉得标定就是个“走流程”的事。直到有一次,一台排版机贴出来的胶带总是偏了0.3mm,怎么调机械都调不回来。折腾了两天,最后发现是相机畸变没校正。从那以后,我再也不敢小看标定这一步。

这一章,我会把相机畸变校正、手眼标定、像素当量计算和标定板设计这四块内容,掰开了揉碎了讲清楚。你跟着我走一遍,保证以后遇到类似问题,心里有底。

视觉定位系统标定知识体系 视觉标定核心 相机畸变校正 径向畸变 + 切向畸变 张正友标定法 手眼标定 Eye-to-Hand / Eye-in-Hand AX = XB 求解 像素当量计算 mm/pixel 换算 精度验证方法 标定板设计 棋盘格 / 圆点阵 / 编码标定板 精度等级与材质选择

3.1 相机畸变校正——别让镜头骗了你

先说说相机畸变。你想想看,一个镜头拍出来的画面,边缘是不是有点“鼓”或者“凹”?这就是畸变。说白了,就是镜头的光学特性让直线变成了曲线。

畸变主要分两种:径向畸变切向畸变

  • 径向畸变:图像边缘向内凹(枕形畸变)或向外鼓(桶形畸变)。排版机上最常见的是桶形畸变,因为广角镜头用得比较多。
  • 切向畸变:镜头和成像平面不平行造成的。这个在工业相机里相对少见,但也不能忽略。

校正的方法,业内最常用的是张正友标定法。这个方法的核心思路是:拍一组不同角度的棋盘格照片,然后通过数学计算反推出相机的内参和畸变系数。

核心公式(径向畸变模型):

x_corrected = x * (1 + k1*r^2 + k2*r^4 + k3*r^6)
y_corrected = y * (1 + k1*r^2 + k2*r^4 + k3*r^6)

其中 r 是像素点到图像中心的距离,k1、k2、k3 是径向畸变系数。

我在项目中遇到过一台老旧的相机,畸变特别严重,边缘的圆点都快变成椭圆了。当时我用OpenCV的 calibrateCamera() 函数跑了一遍,校正后精度从0.5mm直接降到了0.05mm。嗯,效果立竿见影。

我的小技巧:拍标定板的时候,尽量让标定板占满整个视野的1/3到2/3。别只拍中间一小块,那样畸变参数算不准。我一般拍15-20张不同角度的照片,覆盖视野的各个区域。

3.2 手眼标定——让相机知道“手”在哪

手眼标定,说白了就是建立相机坐标系和机械手坐标系之间的转换关系。排版机上,相机看到胶带的位置,机械手要去贴,这两个坐标系必须对齐。

手眼标定分两种场景:

  • Eye-to-Hand(眼在手外):相机固定安装,机械手在相机视野内运动。排版机里这种用得比较多。
  • Eye-in-Hand(眼在手上):相机装在机械手末端,跟着手一起动。这种在精密装配里常见。

核心数学问题就是解方程 AX = XB。A是机械手两次运动的变换矩阵,B是相机两次观测到的标定板变换矩阵,X就是我们要找的手眼关系矩阵。

手眼标定流程(Eye-to-Hand):

  1. 固定标定板在机械手末端
  2. 机械手移动到位置1,记录机械手位姿,相机拍照
  3. 机械手移动到位置2,记录机械手位姿,相机拍照
  4. 重复步骤2-3,至少采集5组数据
  5. 用Tsai法或Park法求解AX=XB

我曾经犯过一个低级错误:标定的时候机械手运动范围太小,导致求解出来的X矩阵误差很大。后来我学乖了,让机械手在视野内做大幅度的平移和旋转运动,覆盖整个工作区域。这样算出来的结果才靠谱。

注意:手眼标定对机械手的绝对定位精度有要求。如果你的机械手本身重复定位精度就很差(比如超过0.1mm),那标定出来的结果也不会好。我建议先确认机械手的精度,再做手眼标定。

3.3 像素当量计算——一个像素到底是多少毫米?

像素当量,就是每个像素代表的实际物理尺寸,单位是mm/pixel。这个值直接决定了视觉系统的测量精度。

计算方法其实很简单:

像素当量 = 标定板上已知距离(mm) / 该距离对应的像素数

举个例子:标定板上两个圆心的距离是10mm,在图像上测得是500个像素,那像素当量就是10/500 = 0.02 mm/pixel。

但这里有个坑——像素当量不是一成不变的。它会随着工作距离、镜头焦距的变化而变化。所以每次更换镜头或者调整相机高度后,都必须重新计算。

精度验证方法:

  • 用高精度标定板(比如0.01mm精度的玻璃板)测量多个已知距离
  • 计算测量值和真实值的偏差
  • 偏差应该在像素当量的1-2倍以内才算合格

我个人习惯在排版机调试完成后,用一块已知尺寸的工件跑一遍全流程,验证像素当量的准确性。如果偏差超过0.02mm,我会重新标定一次。

3.4 标定板设计——工欲善其事,必先利其器

标定板的质量,直接决定了标定结果的精度。别在这上面省钱,否则后面调试会哭的。

常见的标定板类型:

类型 优点 缺点 适用场景
棋盘格 角点检测稳定,算法成熟 边缘模糊时精度下降 通用场景,最常用
圆点阵 圆心定位精度高,抗噪好 需要椭圆拟合,计算量大 高精度场景
编码标定板 自动识别标定点编号 制作成本高 自动化标定

设计标定板时,有几个要点:

  • 尺寸:标定板上的图案应该覆盖相机视野的1/3以上。太小了,畸变参数算不准。
  • 精度:标定板的加工精度至少要比你期望的测量精度高一个数量级。比如你要0.1mm的精度,标定板精度至少0.01mm。
  • 材质:玻璃基板最好,热膨胀系数小。亚克力板便宜但容易变形,只适合低精度场景。

我的经验:如果预算允许,直接买陶瓷基板的标定板。热稳定性好,表面硬度高,用个三五年都不会变形。我在一条高速排版线上用过,三年了精度依然稳定。

好了,这一章的内容就到这里。标定这件事,看起来是“体力活”,但每一步都藏着细节。你把这些细节吃透了,后面调试纠偏系统的时候,会轻松很多。

本章核心要点回顾:

  • 相机畸变校正:用张正友法,拍15-20张不同角度照片
  • 手眼标定:解AX=XB,机械手运动要覆盖整个工作区域
  • 像素当量:mm/pixel,每次更换镜头或调整高度后必须重新计算
  • 标定板设计:精度高一个数量级,材质选玻璃或陶瓷

专注资料整理