2. 机器人运动学标定

运动学标定,说白了就是给机器人“量体裁衣”。

你买回来的机器人,说明书上给的DH参数是理论值。但实际装配有公差、减速器有回差、连杆有变形。我见过太多项目,仿真里跑得飞起,一上产线就偏了2-3mm。嗯,这时候你就得做运动学标定。

2.1 运动学参数(DH参数)辨识——到底要标什么?

DH参数有四个:θ(关节角)、d(连杆偏距)、a(连杆长度)、α(连杆扭角)。

理论上,每个关节只需要标定这4个参数。但实际中,我习惯把θ拆成两部分:

  • θ_offset:零位偏移。电机编码器零点与机械零点的偏差。这是最常见的误差源。
  • θ_actual:实际关节角 = 指令角 + θ_offset。

所以,一个6轴机器人,你需要辨识的参数最多是 6 × 4 = 24个。但别急着全标,有些参数耦合度高,标了反而坏事。

我的经验:先标θ_offset和a,这两个对末端精度影响最大。d和α除非你发现残差特别大,否则可以先不动。

2.2 误差模型建立——从几何到数学

误差模型,就是把“理论位姿”和“实际位姿”之间的差距,用数学公式表达出来。

我们通常用一阶泰勒展开来近似:

ΔP = J * Δξ

其中:

  • ΔP:末端位置误差(3×1向量)
  • J:辨识雅可比矩阵(3×n矩阵,n是待标参数个数)
  • Δξ:DH参数误差向量(n×1)

为什么会这样?因为机器人的运动学方程是非线性的,但误差通常是小量,线性化处理足够精确。我在一个焊接机器人项目里试过,线性模型标定后,精度从2.1mm降到了0.3mm。

建立误差模型的步骤:

  1. 建立理论运动学模型:用标准DH或改进DH写出T矩阵。
  2. 对每个DH参数求偏导:得到辨识雅可比矩阵J的每一列。
  3. 组装误差方程:ΔP = J · Δξ。

关键点:J矩阵的每一列,代表某个DH参数变化1单位时,末端位置的变化量。你想想看,如果某两列高度相关(比如a1和d2),那标定就会不稳定。这时候需要剔除冗余参数。

2.3 最小二乘法求解——让误差最小

我们有误差方程:ΔP = J · Δξ。但通常测量点远多于待标参数(比如测50个点,标24个参数),方程是超定的。

这时候就用最小二乘法:

Δξ = (J^T · J)^{-1} · J^T · ΔP

这就是经典的法方程解法。但我得提醒你,直接求逆在数值上可能不稳定。我一般用:

  • QR分解:数值稳定性好,适合中等规模问题。
  • SVD(奇异值分解):能处理J矩阵秩亏的情况,我最常用。
避坑指南:我曾经在一个项目里直接用法方程求解,结果标定后精度反而变差了。后来一查,是J矩阵的条件数太大(接近1000),导致求解结果对测量噪声极其敏感。改用SVD后,问题解决。

最小二乘的迭代流程:

  1. 用当前DH参数计算理论末端位姿。
  2. 测量实际末端位姿,计算ΔP。
  3. 组装J矩阵,求解Δξ。
  4. 更新DH参数:ξ_new = ξ_old + Δξ。
  5. 重复1-4步,直到Δξ足够小(比如小于1e-6)。

2.4 标定流程与实操——手把手带你走一遍

下面是我在产线上反复验证过的标定流程:

步骤 操作内容 注意事项
1 安装测量设备(激光跟踪仪/视觉系统) 确保测量设备自身已校准
2 设计测量位姿(30-50个点) 覆盖整个工作空间,避免奇异位形
3 记录理论关节角与实测末端位姿 每个点重复测量3次取平均
4 建立误差模型,组装J矩阵 检查J矩阵条件数(应小于100)
5 最小二乘法求解Δξ 优先用SVD分解
6 更新DH参数,验证标定效果 用未参与标定的验证点检查精度
实操技巧:测量位姿时,别只测机器人正前方的点。我习惯让机器人摆出“伸展”、“收缩”、“扭转”三种姿态,这样J矩阵的各列才能被充分激励。

下面这张图,是我总结的运动学标定核心逻辑:

运动学标定核心流程 理论DH参数 θ, d, a, α 理论末端位姿 P_theory 位置误差 ΔP = P_meas - P_theory 实测末端位姿 P_meas 最小二乘法求解 Δξ = (J^T·J)^{-1}·J^T·ΔP 更新DH参数 ξ_new = ξ_old + Δξ 迭代判断:Δξ < 阈值? 是 → 标定完成;否 → 继续迭代

2.5 实操中的几个坑

  • 测量噪声:激光跟踪仪本身有0.01mm的误差,别指望标定后精度能超过测量设备。
  • 参数耦合:比如a1和d2在某些姿态下高度相关。我一般用可观测性指数(Observability Index)来评价测量位姿的质量。
  • 迭代收敛:如果迭代10次还不收敛,八成是模型建错了,或者测量数据有粗大误差。
我曾经踩过的坑:有一次标定完,验证精度反而从0.5mm变成了1.2mm。排查了两天,发现是测量时机器人还没达到热平衡状态。后来我规定:开机后先让机器人跑20分钟“热身运动”,再进行标定测量。

好了,运动学标定的核心内容就这些。记住:标定不是一次性工作,机器人使用一段时间后(比如半年),建议重新标定一次。机械磨损会让DH参数慢慢漂移。