第四节:电机与传动系统模型
各位同学,今天我们来聊聊机器人关节里最核心的物理部分——电机和传动系统。说白了,就是让关节听话的硬件基础。我做了这么多年机器人控制,发现很多问题其实不是算法不行,而是模型没建对。
你想想看,一个关节从发出指令到真正动起来,中间经历了什么?电流进电机,电机转起来,经过减速器放大扭矩,最后带动负载。每一步都有物理特性在起作用。我们得把这些特性用数学语言描述出来,才能做精准控制。
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是外部负载。
这个模型虽然看起来复杂,但实际辨识起来并不难。我通常的做法是:
- 先单独辨识电机参数(电阻、电感、反电动势常数、摩擦系数)
- 再辨识传动系统的刚度和阻尼(用频率响应法)
- 最后辨识间隙大小(用低速爬行实验)
我的经验:模型不是越复杂越好。对于大多数工业机器人,用二质量系统加上间隙模型就足够了。太复杂的模型反而会让参数辨识变得困难,而且对控制性能的提升有限。
嗯,到这里,电机与传动系统的模型就讲完了。这些模型是后续做系统辨识和控制的基础。你想想看,如果没有这些模型,我们怎么知道该辨识哪些参数?怎么设计实验?怎么验证结果?所以,花点时间把模型搞透,后面会省很多事。
可可精品资料库