2、机器人运动学标定:运动学参数(DH参数)辨识、误差模型建立、最小二乘法求解、标定流程与实操
运动学标定,说白了就是给机器人“量体裁衣”。
你买回来的机器人,说明书上给的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。
建立误差模型的步骤:
- 建立理论运动学模型:用标准DH或改进DH写出T矩阵。
- 对每个DH参数求偏导:得到辨识雅可比矩阵J的每一列。
- 组装误差方程:Δ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后,问题解决。
最小二乘的迭代流程:
- 用当前DH参数计算理论末端位姿。
- 测量实际末端位姿,计算ΔP。
- 组装J矩阵,求解Δξ。
- 更新DH参数:ξ_new = ξ_old + Δξ。
- 重复1-4步,直到Δξ足够小(比如小于1e-6)。
2.4 标定流程与实操——手把手带你走一遍
下面是我在产线上反复验证过的标定流程:
| 步骤 | 操作内容 | 注意事项 |
|---|---|---|
| 1 | 安装测量设备(激光跟踪仪/视觉系统) | 确保测量设备自身已校准 |
| 2 | 设计测量位姿(30-50个点) | 覆盖整个工作空间,避免奇异位形 |
| 3 | 记录理论关节角与实测末端位姿 | 每个点重复测量3次取平均 |
| 4 | 建立误差模型,组装J矩阵 | 检查J矩阵条件数(应小于100) |
| 5 | 最小二乘法求解Δξ | 优先用SVD分解 |
| 6 | 更新DH参数,验证标定效果 | 用未参与标定的验证点检查精度 |
实操技巧:测量位姿时,别只测机器人正前方的点。我习惯让机器人摆出“伸展”、“收缩”、“扭转”三种姿态,这样J矩阵的各列才能被充分激励。
下面这张图,是我总结的运动学标定核心逻辑:
2.5 实操中的几个坑
- 测量噪声:激光跟踪仪本身有0.01mm的误差,别指望标定后精度能超过测量设备。
- 参数耦合:比如a1和d2在某些姿态下高度相关。我一般用可观测性指数(Observability Index)来评价测量位姿的质量。
- 迭代收敛:如果迭代10次还不收敛,八成是模型建错了,或者测量数据有粗大误差。
我曾经踩过的坑:有一次标定完,验证精度反而从0.5mm变成了1.2mm。排查了两天,发现是测量时机器人还没达到热平衡状态。后来我规定:开机后先让机器人跑20分钟“热身运动”,再进行标定测量。
好了,运动学标定的核心内容就这些。记住:标定不是一次性工作,机器人使用一段时间后(比如半年),建议重新标定一次。机械磨损会让DH参数慢慢漂移。