4. 误差建模方法:基于MDH模型的误差模型推导
好,咱们进入正题。参数辨识这件事,说白了就是先搞清楚“误差从哪来”,再想办法把它“算出来”。而误差建模,就是给这些误差一个数学上的“身份证”。我个人习惯用MDH模型来做这件事,因为它比标准DH模型更贴近真实机器人的物理结构。
4.1 为什么标准DH模型不够用?
标准DH模型有个隐含假设:相邻关节的坐标系是严格对齐的。但实际装配时,哪有那么完美?你想想看,一个机器人关节装上去,多少会有点偏。标准DH模型处理不了相邻关节轴线平行时的微小偏差——这就是所谓的“奇异问题”。
我在项目中遇到过一台六轴机器人,用标准DH模型做标定,死活收敛不了。后来一查,是第2轴和第3轴的平行度偏差只有0.02度,但就是这0.02度,让雅可比矩阵直接“炸了”。换成MDH模型,问题迎刃而解。
核心区别:MDH模型在标准DH的4个参数(a, α, d, θ)基础上,增加了一个绕Y轴的旋转参数β。这个β专门用来处理相邻关节轴线平行时的微小偏差。
4.2 MDH模型的完整参数集
MDH模型用5个参数来描述相邻连杆的变换关系:
| 参数 | 符号 | 物理含义 | 误差来源 |
|---|---|---|---|
| 连杆长度 | a | 沿X轴方向的平移距离 | 加工误差、装配误差 |
| 连杆扭角 | α | 绕X轴旋转的角度 | 装配倾斜 |
| 关节距离 | d | 沿Z轴方向的平移距离 | 轴向间隙、热膨胀 |
| 关节转角 | θ | 绕Z轴旋转的角度 | 编码器零位偏移 |
| 附加旋转 | β | 绕Y轴旋转的角度 | 平行轴微小偏差 |
嗯,这里要注意:β参数只在相邻关节轴线接近平行时才需要引入。对于轴线明显不平行的关节对,β可以固定为0,否则参数冗余反而会坏事。
4.3 误差模型的推导过程
咱们一步步来。MDH模型的相邻连杆变换矩阵长这样:
T = Rot(z, θ) · Trans(z, d) · Trans(x, a) · Rot(x, α) · Rot(y, β)
展开成4×4矩阵就是:
T =
[ cosθcosβ - sinθsinαsinβ, -sinθcosα, cosθsinβ + sinθsinαcosβ, a·cosθ ]
[ sinθcosβ + cosθsinαsinβ, cosθcosα, sinθsinβ - cosθsinαcosβ, a·sinθ ]
[ -cosαsinβ, sinα, cosαcosβ, d ]
[ 0, 0, 0, 1 ]
这个矩阵里,每个参数都有误差。我们把名义参数记作 q_nom,实际参数记作 q_real = q_nom + δq。那么实际变换矩阵就是:
T_real = T(q_nom + δq)
对δq做一阶泰勒展开:
T_real ≈ T_nom + (∂T/∂a)·δa + (∂T/∂α)·δα + (∂T/∂d)·δd + (∂T/∂θ)·δθ + (∂T/∂β)·δβ
这就是误差模型的数学基础。说白了,末端位姿误差 = 各个参数误差的线性组合。
我的经验:实际做的时候,别傻乎乎地手算这些偏导数。用符号计算工具(比如MATLAB的Symbolic Toolbox或者Python的SymPy)自动生成雅可比矩阵,又快又不容易出错。我曾经手算过一次,结果漏了一项,排查了整整两天。
4.4 误差模型的矩阵形式
把所有关节的误差累积起来,就得到末端位姿误差与各参数误差之间的关系:
δX = J · δq
其中:
δX是末端位姿误差向量(6×1),包含3个位置误差和3个姿态误差J是辨识雅可比矩阵(6×m),m是待辨识参数个数δq是参数误差向量(m×1)
对于n自由度的机器人,如果每个关节都辨识5个参数,那么m = 5n。但实际中,有些参数是不可辨识的——比如基座坐标系的位置误差,你没法把它和机器人本身的参数误差区分开。
避坑指南:我曾经犯过一个错误——把所有参数都丢进去辨识,结果雅可比矩阵的秩严重不足,辨识出来的参数值完全没物理意义。后来才意识到,需要先做可观性分析,剔除那些线性相关的参数列。
4.5 误差模型的几何意义
咱们用一张图来理解这个误差模型到底在干什么:
这张图把整个逻辑串起来了。左边是名义参数,右边是实际参数,中间差的就是我们要辨识的δq。通过正运动学传递,这些参数误差最终表现为末端的位姿误差δX。而辨识雅可比矩阵J,就是连接δq和δX的那座桥。
4.6 误差模型的线性化条件
这里有个关键点:上面的推导假设误差是小量。为什么?因为一阶泰勒展开只在δq足够小时才成立。如果误差太大,高阶项就不能忽略了。
我个人的经验是:对于工业机器人,参数误差通常在毫米/毫弧度级别,一阶近似完全够用。但如果你在做微创手术机器人或者精密装配机器人,误差可能小到微米级,这时候反而要注意数值稳定性——雅可比矩阵的条件数可能会很差。
总结一下:基于MDH的误差模型,本质上就是把复杂的几何误差问题,转化成了一个线性最小二乘问题。你只需要测出末端位姿误差δX,然后通过辨识雅可比矩阵J,反算出参数误差δq。剩下的,就是线性代数的事了。
嗯,误差模型推导到这里就差不多了。下一节我们会聊怎么构建辨识雅可比矩阵——那才是真正动手干活的部分。
可可精品资料库