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 误差模型的几何意义

咱们用一张图来理解这个误差模型到底在干什么:

MDH误差模型核心逻辑 名义MDH参数 a_nom, α_nom, d_nom θ_nom, β_nom 参数误差 δq δa, δα, δd δθ, δβ 实际MDH参数 a_real = a_nom + δa ... + = 正运动学计算 T_end = T1 · T2 · ... · Tn 末端位姿误差 δX δX = J · δq 图4-1 MDH误差模型:从参数误差到位姿误差的映射关系

这张图把整个逻辑串起来了。左边是名义参数,右边是实际参数,中间差的就是我们要辨识的δq。通过正运动学传递,这些参数误差最终表现为末端的位姿误差δX。而辨识雅可比矩阵J,就是连接δq和δX的那座桥。

4.6 误差模型的线性化条件

这里有个关键点:上面的推导假设误差是小量。为什么?因为一阶泰勒展开只在δq足够小时才成立。如果误差太大,高阶项就不能忽略了。

我个人的经验是:对于工业机器人,参数误差通常在毫米/毫弧度级别,一阶近似完全够用。但如果你在做微创手术机器人或者精密装配机器人,误差可能小到微米级,这时候反而要注意数值稳定性——雅可比矩阵的条件数可能会很差。

总结一下:基于MDH的误差模型,本质上就是把复杂的几何误差问题,转化成了一个线性最小二乘问题。你只需要测出末端位姿误差δX,然后通过辨识雅可比矩阵J,反算出参数误差δq。剩下的,就是线性代数的事了。

嗯,误差模型推导到这里就差不多了。下一节我们会聊怎么构建辨识雅可比矩阵——那才是真正动手干活的部分。


可可精品资料库