第3章 坐标系与运动基础

3.1 坐标系——打标的“地图”和“导航”

做激光打标,第一个要搞明白的就是坐标系。说白了,你得知道“激光该往哪儿打”。我刚开始接触这个领域时,总觉得坐标系是个理论概念,跟实际加工关系不大。直到有一次,我在一台双工位打标机上栽了跟头——左边工位打出来是正的,右边工位打出来是歪的。查了一整天,最后发现是两边的坐标系根本没对齐。

从那以后我明白了:坐标系就是打标的“地图”,坐标变换就是“导航”。在激光打标中,我们主要跟两套坐标系打交道:工件坐标系和振镜坐标系。搞不清这两套坐标的关系,后面的轨迹规划根本没法做。

3.2 工件坐标系——你的零件在哪儿

工件坐标系,就是以工件为参考建立的坐标系。通常我们会在工件上选一个固定点作为原点,比如工件的一个角、一个定位孔,或者某个特征边沿。我个人习惯把原点设在工件的左下角,这样所有坐标都是正值,调试时看着舒服。当然,这没有硬性规定,你完全可以根据实际需求来定。

工件坐标系有几个关键特点:

  • 原点在工件上,随工件移动
  • 坐标值反映的是工件上的物理位置
  • 通常用毫米或微米作单位

我在项目中遇到过这样的事:操作员把工件放反了,结果所有打标内容都跑到了工件背面。这就是工件坐标系没定义清楚的典型问题。所以,每次换产时,第一件事就是确认工件坐标系的原点和方向。

特性 工件坐标系 振镜坐标系
原点位置 工件上选定点 视场中心
参考物 工件本身 振镜扫描头
常用单位 mm 或 μm 数字量(D/A 码值)
使用场景 编程、轨迹设计 实际控制、打标执行

3.3 振镜坐标系——激光头怎么看世界

振镜坐标系,是扫描振镜自身的坐标系。振镜通过 X 镜和 Y 镜的偏转,把激光束定位到视场内的不同位置。原点通常在视场中心,也就是激光束垂直于打标平面时的落点。X 轴和 Y 轴分别对应振镜的两个偏转方向。

这里有个关键点:振镜坐标系的单位不是毫米,而是“数字量”——振镜控制卡输出的数字信号,经过 D/A 转换后控制镜片偏转。要把这个数字量转换成实际位置,需要做标定。出厂时振镜会带一份标定文件,但换过镜头或重新安装后,标定数据就要重新做。

为什么会这样?因为振镜本身是个非线性系统,镜片偏转角度和光斑位移之间不是简单的线性关系。尤其是大视场打标时,边缘的畸变很明显。不做标定,打出来的方形就是枕形或桶形。

我曾经遇到过一台振镜,安装时有点旋转偏差,导致打出来的正方形变成了菱形。后来在变换参数里加了旋转校正才解决。嗯,这里要注意:振镜的机械安装偏差,一定要通过坐标变换来补偿,别想着去拧镜片支架。

3.4 坐标变换——让两边对上话

有了两套坐标系,问题就来了:怎么把工件坐标系中的位置,告诉振镜?答案就是坐标变换。

核心是一个 3x3 的变换矩阵,把旋转和平移打包在一起:

[x']   [cosθ  -sinθ  tx] [x]
[y'] = [sinθ   cosθ  ty] [y]
[1 ]   [0      0     1 ] [1]

x、y 是工件坐标,x'、y' 是振镜坐标。θ 是旋转角,tx、ty 是平移量。这个矩阵看着简单,但用起来特别顺手。我平时用 Python 写控制脚本,会封装这样一个函数:

import numpy as np

def transform_coord(x, y, theta, tx, ty):
    # 构建变换矩阵
    T = np.array([
        [np.cos(theta), -np.sin(theta), tx],
        [np.sin(theta),  np.cos(theta), ty],
        [0,              0,             1]
    ])
    # 齐次坐标
    p = np.array([x, y, 1])
    # 变换
    x_new, y_new, _ = T @ p
    return x_new, y_new
核心思想:坐标变换就是把工件坐标“映射”到振镜坐标,让激光知道该往哪儿打。没有这一步,振镜就是个“瞎子”。

3.5 旋转与平移——变换的两个基本功

坐标变换就两个基本操作:旋转和平移。别小看这两个动作,所有复杂的轨迹归根结底都是它们组合出来的。

旋转:工件在台上放歪了,或者你想在工件上打一个旋转后的图案。旋转矩阵长这样:

R = [cosθ  -sinθ]
    [sinθ   cosθ ]

θ 的正负遵循右手法则:逆时针为正,顺时针为负。我习惯用角度制编程,但算矩阵时记得转弧度。

平移:工件位置变了,或者你想在工件上换个位置打标。平移就是加上一个偏移量 tx、ty。说白了,就是把整个图形“挪”到新位置。

我的小技巧:调参时先调平移,把位置对准了,再调旋转。两个一起调容易乱。尤其是做多产品切换时,平移偏差往往比旋转偏差大,先解决大头。

下面是这章的知识体系框架,帮你把几个核心概念串起来:

坐标系与坐标变换框架 输入 处理 输出 工件坐标系 (x, y) 单位:mm 振镜坐标系 (x', y') 单位:码值 坐标变换 旋转 + 平移 矩阵映射 实际打标位置 激光落点 校准基准点 3~5 个特征点 工件坐标 振镜坐标 映射结果 校准数据 核心公式 [x' ; y' ; 1] = [cosθ -sinθ tx ; sinθ cosθ ty ; 0 0 1] · [x ; y ; 1]

3.6 坐标系校准——实战中的关键一步

讲完理论,咱们说说实战。坐标系校正是每次换产时必须做的步骤。不做校准,所有轨迹规划都是纸上谈兵。

基本流程如下:

  1. 在工件上选 3~5 个基准点,记录它们的工件坐标
  2. 用振镜打标这些点,测量实际打标位置的振镜坐标
  3. 用对应点数据求解变换参数(θ, tx, ty)
  4. 验证:打一个测试图形,检查是否对准
注意:基准点不要选在一条直线上!否则解出来的变换参数不唯一。尽量选在工件的四个角附近,形成一个覆盖加工区域的凸四边形。我曾经因为基准点选得太集中,导致变换参数算出来是错的,打出来的图形整体偏了 2mm。后来改用四点法——工件四个角各取一点,精度一下子就上去了。

你想想看,坐标系这件事说难也不难,就是把“工件在哪儿”和“激光往哪儿打”这两件事对齐。搞清楚了,后面的轨迹规划才能跑得顺。