第三章:视觉定位系统标定——相机畸变校正、手眼标定、像素当量计算与标定板设计
各位同行,大家好。今天咱们聊点硬核的——视觉定位系统的标定。
说实话,我刚入行那会儿,觉得标定就是个“走流程”的事。直到有一次,一台排版机贴出来的胶带总是偏了0.3mm,怎么调机械都调不回来。折腾了两天,最后发现是相机畸变没校正。从那以后,我再也不敢小看标定这一步。
这一章,我会把相机畸变校正、手眼标定、像素当量计算和标定板设计这四块内容,掰开了揉碎了讲清楚。你跟着我走一遍,保证以后遇到类似问题,心里有底。
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,记录机械手位姿,相机拍照
- 重复步骤2-3,至少采集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,每次更换镜头或调整高度后必须重新计算
- 标定板设计:精度高一个数量级,材质选玻璃或陶瓷