第四节:电机与传动系统模型

各位同学,今天我们来聊聊机器人关节里最核心的物理部分——电机和传动系统。说白了,就是让关节听话的硬件基础。我做了这么多年机器人控制,发现很多问题其实不是算法不行,而是模型没建对。

你想想看,一个关节从发出指令到真正动起来,中间经历了什么?电流进电机,电机转起来,经过减速器放大扭矩,最后带动负载。每一步都有物理特性在起作用。我们得把这些特性用数学语言描述出来,才能做精准控制。

4.1 直流电机模型

直流电机是机器人关节最常用的驱动源。它的模型其实不复杂,但有几个关键点必须抓住。

先看电学部分。电机两端加上电压,线圈里就有电流。这个电流会产生电磁转矩,同时电机转动时又会产生反电动势。我习惯用下面这个等效电路来理解:

电枢回路方程:U = R·i + L·di/dt + e
反电动势:    e = K_e · ω
电磁转矩:    T_m = K_t · i

其中U是电枢电压,R是电枢电阻,L是电枢电感,i是电枢电流,e是反电动势,ω是电机转速,K_e是反电动势常数,K_t是转矩常数。对于理想电机,K_e和K_t在数值上是相等的(国际单位制下)。

再看机械部分。电机产生的转矩一部分用来加速转子,一部分克服摩擦,还有一部分输出到负载:

转矩平衡方程:T_m = J_m · dω/dt + B_m · ω + T_load

J_m是转子惯量,B_m是粘性摩擦系数,T_load是负载转矩。

关键参数辨识:我个人习惯用阶跃响应法来辨识电机参数。给电机一个固定电压,记录转速上升曲线。从稳态转速可以算出K_e,从时间常数可以算出J_m/B_m的比值。

实战技巧:我在项目中遇到过电机参数随温度变化的问题。电机跑久了,线圈发热,电阻R会增大。这时候如果还用常温下的参数做控制,效果会变差。我建议在控制器里加一个简单的温度补偿模型。

4.2 谐波减速器模型

机器人关节里,电机转速通常很高,但扭矩不够。谐波减速器就是用来解决这个问题的。它的特点是:体积小、重量轻、传动比大、精度高。

谐波减速器的核心模型其实就是一个比例环节加上一些非线性因素:

理想传动关系:θ_out = θ_in / N
             T_out = T_in · N · η

N是减速比,η是传动效率。但实际中,谐波减速器有几个让人头疼的特性:

  • 扭转刚度:谐波减速器不是刚性的。它有一个扭转刚度K_h,在负载作用下会产生微小变形。这个变形在高精度定位时不能忽略。
  • 滞回特性:正反转时,传动误差不一样。我记得有一次做力控,发现关节在正反两个方向上的刚度不一样,查了半天才发现是谐波减速器的滞回造成的。
  • 摩擦:谐波减速器内部有摩擦,而且这个摩擦跟温度、润滑状态都有关系。

我常用的谐波减速器模型是这样的:

考虑柔性的模型:
T_in = J_h · d²θ_in/dt² + B_h · dθ_in/dt + (1/N) · K_h · (θ_in/N - θ_out) + T_friction

J_h是减速器输入端的等效惯量,B_h是阻尼系数,K_h是扭转刚度,T_friction是摩擦力矩。

注意:谐波减速器的柔性会在系统中引入一个谐振频率。这个频率如果落在控制带宽内,很容易引起振荡。我曾经在一个项目中,因为没考虑这个柔性,导致关节在高速运行时剧烈抖动。后来在模型里加了一个二阶陷波滤波器才解决。

4.3 齿轮间隙与柔性

除了谐波减速器,有些机器人关节还会用到齿轮传动。齿轮传动最让人头疼的问题就是——间隙。

齿轮间隙,说白了就是两个齿轮啮合时,齿与齿之间的空隙。这个空隙会导致什么问题?你想想看,电机反转时,要先走过这段空隙才能带动负载。这就造成了位置控制的死区。

我画一个简单的模型图来说明:

齿轮间隙模型:
T_out = 0, 当 |θ_in - θ_out| < δ
T_out = K_g · (θ_in - θ_out - δ·sign(θ_in - θ_out)), 当 |θ_in - θ_out| ≥ δ

δ是间隙大小,K_g是齿轮啮合刚度。这个模型虽然简单,但已经能描述间隙的主要特性了。

除了间隙,齿轮传动还有柔性。齿轮齿本身不是刚性的,在受力时会产生弹性变形。这个变形可以用一个弹簧-阻尼模型来描述:

齿轮柔性模型:
T_out = K_g · (θ_in - θ_out) + B_g · (dθ_in/dt - dθ_out/dt)

K_g是啮合刚度,B_g是啮合阻尼。

避坑指南:我曾经在一个精密装配项目中,因为齿轮间隙导致定位重复精度达不到要求。后来用了两个方法:一是加预紧力,让齿轮始终单侧接触;二是在控制算法里加了一个间隙补偿环节,根据运动方向提前补偿。

4.4 完整的关节传动模型

把上面这些串起来,就得到了一个完整的关节传动系统模型。我习惯用二质量系统来描述:

电机侧:T_m = J_m · d²θ_m/dt² + B_m · dθ_m/dt + T_g
负载侧:T_g = J_l · d²θ_l/dt² + B_l · dθ_l/dt + T_ext
传动:  T_g = K · (θ_m/N - θ_l) + B · (dθ_m/dt / N - dθ_l/dt)

θ_m是电机转角,θ_l是负载转角,J_m和J_l分别是电机侧和负载侧的惯量,K和B是传动系统的等效刚度和阻尼,T_ext是外部负载。

这个模型虽然看起来复杂,但实际辨识起来并不难。我通常的做法是:

  1. 先单独辨识电机参数(电阻、电感、反电动势常数、摩擦系数)
  2. 再辨识传动系统的刚度和阻尼(用频率响应法)
  3. 最后辨识间隙大小(用低速爬行实验)

我的经验:模型不是越复杂越好。对于大多数工业机器人,用二质量系统加上间隙模型就足够了。太复杂的模型反而会让参数辨识变得困难,而且对控制性能的提升有限。

嗯,到这里,电机与传动系统的模型就讲完了。这些模型是后续做系统辨识和控制的基础。你想想看,如果没有这些模型,我们怎么知道该辨识哪些参数?怎么设计实验?怎么验证结果?所以,花点时间把模型搞透,后面会省很多事。

电机与传动系统模型结构 直流电机模型 电枢回路:U = R·i + L·di/dt + e 反电动势:e = K_e · ω 电磁转矩:T_m = K_t · i 转矩平衡:T_m = J·dω/dt + B·ω + T_load 参数:R, L, K_e, K_t, J_m, B_m 转矩 转速 传动系统模型 谐波减速器:θ_out = θ_in / N 扭转刚度:T = K_h · (θ_in/N - θ_out) 齿轮间隙:死区模型 柔性:弹簧-阻尼模型 参数:N, K_h, B_h, δ, K_g 减速后 转矩/位置 负载 关节连杆 外部力 惯量J_l 阻尼B_l 完整关节传动模型(二质量系统) 电机侧:T_m = J_m·d²θ_m/dt² + B_m·dθ_m/dt + T_g 负载侧:T_g = J_l·d²θ_l/dt² + B_l·dθ_l/dt + T_ext 传动:T_g = K·(θ_m/N - θ_l) + B·(dθ_m/dt/N - dθ_l/dt) 辨识流程:电机参数 → 传动刚度/阻尼 → 间隙大小 电机模型 传动系统 负载 完整模型

可可精品资料库