1. 9点标定:从原理到实战代码
9点标定是视觉引导定位中最基础也最关键的环节。我第一次接触这个技术时,也被"为什么需要9个点"这个问题困扰过。后来在实际项目中才发现,虽然理论上3个点就能确定仿射变换,但多采集几个点能显著提高标定精度。
在"眼在手外"的布局中(相机固定在工作台上方),我常用的标定方法是这样的:先准备一块带有9个圆形标记的标定板,用相机拍摄后通过图像处理获取每个圆心的像素坐标。这里有个细节要注意 - 采集点的顺序最好采用Z字形路径,这样能避免机械手在标定时产生不必要的空程移动。
python复制# 示例:Halcon实现9点标定
px = [x1, x2, x3, x4, x5, x6, x7, x8, x9] # 像素X坐标
py = [y1, y2, y3, y4, y5, y6, y7, y8, y9] # 像素Y坐标
Rx = [X1, X2, X3, X4, X5, X6, X7, X8, X9] # 机械手X坐标
Ry = [Y1, Y2, Y3, Y4, Y5, Y6, Y7, Y8, Y9] # 机械手Y坐标
# 计算仿射变换矩阵
vector_to_hom_mat2d(px, py, Rx, Ry, HomMat2D)
实际项目中我踩过的一个坑是标定高度问题。有次在调试时发现标定误差忽大忽小,排查半天才发现是因为标定板放置的高度与工件实际加工高度不一致。工业相机在不同高度下会有不同的成像特性,这个细节很容易被忽视。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 5点旋转中心标定的必要性
当项目涉及到旋转运动时,单纯的9点标定就不够用了。我记得有个贴片机项目,机械手需要旋转吸嘴来调整元件角度,刚开始直接用仿射变换结果偏差很大,后来才发现是因为没考虑旋转中心的问题。
旋转中心标定的核心思想是:通过多个角度下的特征点位置,拟合出旋转中心的实际位置。这里有个关键点 - 当吸嘴、旋转中心和特征点三者不重合时,必须通过旋转中心标定来补偿这个偏差。
python复制# 5点旋转中心标定示例
angles = [0, 72, 144, 216, 288] # 5个旋转角度
contours = []
for angle in angles:
# 机械手旋转到指定角度
rotate_robot(angle)
#
