机器人动力学到底在模拟什么?一张图看懂从控制信号到运动的完整因果链
从控制信号到机器人运动:拆解 u→u \rightarrowu→ 执行器动态 →τa→\rightarrow \tau_a \rightarrow→τa→ 多体动力学 →q¨→q,q˙\rightarrow \ddot q \rightarrow q,\dot q→q¨→q,q˙
很多初学者会问:
为什么机器人动力学模型总是和“力矩”绑在一起?整个模型到底在模拟什么?
一句话回答:
动力学模型模拟的是一条完整的物理因果链:
控制输入 uuu 先经过执行器,变成关节力矩 τa\tau_aτa;关节力矩作用在机器人多体结构上,产生关节加速度 q¨\ddot qq¨;加速度再被积分成速度 q˙\dot qq˙ 和位置 qqq。
力矩不是终点,它只是这条链上的一个关键接口。
一、总览:一条完整的因果链
先看整体流程:
u → 执行器动态 → τa → 机器人多体动力学 → q¨ → q,q˙ u \;\rightarrow\; \text{执行器动态} \;\rightarrow\; \tau_a \;\rightarrow\; \text{机器人多体动力学} \;\rightarrow\; \ddot q \;\rightarrow\; q,\dot q u→执行器动态→τa→机器人多体动力学→q¨→q,q˙
画成图就是:
控制器输出 u
↓
执行器动态:电气、流体、热、机械耦合
↓
关节力矩 τ_a
↓
机器人多体动力学:惯量、科氏、重力、摩擦、外力
↓
关节加速度 q̈
↓
积分
↓
关节速度 q̇、关节位置 q
↓
传感器反馈给控制器,形成闭环
严格来说,执行器动态会依赖关节速度 q˙\dot qq˙,机器人动力学又依赖执行器力矩 τa\tau_aτa,所以这是一个耦合系统。
但为了理解,我们可以先把这条链看成单向因果链。
二、环节 1:控制输入 uuu
uuu 是控制器最终送给驱动器的指令。
它可以是:
- 电机电压;
- 电机电流;
- PWM 占空比;
- 液压伺服阀电压;
- 气动比例阀开度;
- 压电驱动电压;
- SMA 加热电流。
不同执行器的 uuu 物理量不同,但作用一样:
它是能量或信号入口。
控制器为什么给出这个 uuu?
因为它根据期望轨迹和传感器反馈,计算出当前应该施加多大的驱动量。
三、环节 2:执行器动态
执行器动态的任务是:
u → τa u \;\rightarrow\; \tau_a u→τa
但它不是瞬时映射,而是有内部状态和动态过程。
一般可以写成:
x˙a=fa(xa,u,q˙,τL) \dot x_a = f_a(x_a,u,\dot q,\tau_L) x˙a=fa(xa,u,q˙,τL)
τa=ga(xa,u,q˙) \tau_a = g_a(x_a,u,\dot q) τa=ga(xa,u,q˙)
其中:
- xax_axa 是执行器内部状态,比如电流、压力、温度、马氏体分数、阀芯位移;
- q˙\dot qq˙ 是关节速度,会影响反电动势、液压流量、气动压差等;
- τL\tau_LτL 是负载力矩;
- τa\tau_aτa 是执行器最终输出到关节的力矩。举几个例子。
1. 直流电机
电气动态:
Ldidt=u−Ri−Keθ˙ L\frac{di}{dt}=u-Ri-K_e\dot\theta Ldtdi=u−Ri−Keθ˙
电磁力矩:
τa=Kti \tau_a=K_t i τa=Kti
所以电压 uuu 不会立刻变成力矩,它先改变电流 iii,电流再产生力矩。
2. 液压执行器
阀控液压缸:
QL=Kqxv−KcPL Q_L=K_q x_v-K_c P_L QL=Kqxv−KcPL
压力动态:
Vt4βeP˙L=QL−Apx˙p−CtPL \frac{V_t}{4\beta_e}\dot P_L=Q_L-A_p\dot x_p-C_tP_L 4βeVtP˙L=QL−Apx˙p−CtPL
输出力:
F=ApPL F=A_pP_L F=ApPL
对旋转关节,再通过机构变成力矩。
3. 气动执行器
气体可压缩,所以压力动态和热力学过程必须考虑:
dPdt=γRTV(m˙in−m˙out)−γPVdVdt \frac{dP}{dt}=\frac{\gamma RT}{V}(\dot m_{in}-\dot m_{out})-\frac{\gamma P}{V}\frac{dV}{dt} dtdP=VγRT(m˙in−m˙out)−VγPdtdV
输出力由两侧压差决定:
F=P1A1−P2A2 F=P_1A_1-P_2A_2 F=P1A1−P2A2
4. 智能材料执行器
压电、SMA、EAP 等往往有滞回、蠕变、热动态或粘弹性。
例如 SMA:
mcpdTdt=I2Re−hAs(T−T∞)−mΔHξ˙ m c_p\frac{dT}{dt}=I^2R_e-hA_s(T-T_\infty)-m\Delta H\dot\xi mcpdtdT=I2Re−hAs(T−T∞)−mΔHξ˙
温度变化驱动相变,相变产生应力和力。
所以执行器动态这一环的核心是:
把控制输入 uuu 转换成机器人本体能接受的广义力 τa\tau_aτa。
四、环节 3:τa\tau_aτa 为什么是力矩?
因为机器人关节大多是旋转关节。
旋转运动中,和牛顿第二定律 F=maF=maF=ma 对应的是:
τ=Jθ¨ \tau = J\ddot\theta τ=Jθ¨
其中:
- τ\tauτ 是力矩;
- JJJ 是转动惯量;
- θ¨\ddot\thetaθ¨ 是角加速度。
如果关节是移动关节,那么对应的就是力 FFF 和位移 xxx。
所以在机器人动力学中,统称它们为“广义力”。
旋转关节的广义力就是力矩,移动关节的广义力就是力。
从拉格朗日方程看:
ddt(∂L∂q˙)−∂L∂q=Q
\frac{d}{dt}\left(\frac{\partial L}{\partial \dot q}\right)-\frac{\partial L}{\partial q}=Q
dtd(∂q˙∂L)−∂q∂L=Q
如果 qqq 是角度,那么 QQQ 的量纲就是 N⋅mN\cdot mN⋅m,也就是力矩。
因此,τa\tau_aτa 不是人为规定必须叫力矩,而是由关节自由度自然决定的。
五、环节 4:机器人多体动力学
执行器输出 τa\tau_aτa 后,它进入机器人多体动力学。
机器人整体动力学通常写成:
M(q)q¨+C(q,q˙)q˙+G(q)+τf(q˙)=τa+τext M(q)\ddot q+C(q,\dot q)\dot q+G(q)+\tau_f(\dot q)=\tau_a+\tau_{ext} M(q)q¨+C(q,q˙)q˙+G(q)+τf(q˙)=τa+τext
各项含义:
- M(q)q¨M(q)\ddot qM(q)q¨:惯性力矩;
- C(q,q˙)q˙C(q,\dot q)\dot qC(q,q˙)q˙:科氏力和离心力项;
- G(q)G(q)G(q):重力项;
- τf(q˙)\tau_f(\dot q)τf(q˙):摩擦项;
- τa\tau_aτa:执行器主动力矩;
- τext\tau_{ext}τext:外部接触力、负载、碰撞等。这个方程在说:
执行器给的力矩、外部给的力矩,要用来克服机器人本身的惯性、科氏力、重力、摩擦,剩下的才变成加速度。
把加速度解出来:
q¨=M(q)−1[τa+τext−C(q,q˙)q˙−G(q)−τf(q˙)] \ddot q=M(q)^{-1}\left[\tau_a+\tau_{ext}-C(q,\dot q)\dot q-G(q)-\tau_f(\dot q)\right] q¨=M(q)−1[τa+τext−C(q,q˙)q˙−G(q)−τf(q˙)]
所以,机器人多体动力学这一环的输出是:
q¨ \ddot q q¨
也就是关节加速度。
六、环节 5:从 q¨\ddot qq¨ 到 q,q˙q,\dot qq,q˙
加速度不是最终状态。
真实机器人运动需要速度和位置。
通过积分:
q˙k+1=q˙k+q¨kΔt \dot q_{k+1}=\dot q_k+\ddot q_k\Delta t q˙k+1=q˙k+q¨kΔt
qk+1=qk+q˙kΔt q_{k+1}=q_k+\dot q_k\Delta t qk+1=qk+q˙kΔt
实际仿真中常用更高精度的积分器,比如 RK4。
于是:
- q¨\ddot qq¨ 决定速度怎么变;
- q˙\dot qq˙ 决定位置怎么变;
- q,q˙q,\dot qq,q˙ 决定机器人当前姿态和运动状态。
这就是仿真里每个时间步发生的事:
- 控制器算出 uuu;
- 执行器模型算出 τa\tau_aτa;
- 多体动力学算出 q¨\ddot qq¨;
- 积分器更新 q˙,q\dot q,qq˙,q;
- 传感器和接触模型更新反馈与外力;
- 进入下一时刻。
七、闭环:链条不是单向的
上面为了清楚,写成了单向链:
u→τa→q¨→q,q˙ u\rightarrow \tau_a\rightarrow \ddot q\rightarrow q,\dot q u→τa→q¨→q,q˙
但真实系统是闭环:
控制器 → u → 执行器 → τ_a → 机器人 → q, q̇
↑ ↓
└──────────── 传感器反馈 ──────────────┘
控制器不断读取 q,q˙q,\dot qq,q˙,和期望轨迹比较,再重新计算 uuu。
所以动力学模型模拟的是:
在控制输入、执行器动态、外部负载和接触作用下,机器人状态如何随时间演化。
八、正动力学与逆动力学
这条链可以从两个方向使用。
正动力学
给定力矩 τa\tau_aτa 和外力 τext\tau_{ext}τext,求运动:
τa,τext→q¨,q˙,q \tau_a,\tau_{ext} \rightarrow \ddot q,\dot q,q τa,τext→q¨,q˙,q
用于仿真、预测、虚拟样机。
逆动力学
给定期望运动:
q,q˙,q¨ q,\dot q,\ddot q q,q˙,q¨
求需要多少力矩:
τ=M(q)q¨+C(q,q˙)q˙+G(q)+τf(q˙) \tau = M(q)\ddot q+C(q,\dot q)\dot q+G(q)+\tau_f(\dot q) τ=M(q)q¨+C(q,q˙)q˙+G(q)+τf(q˙)
用于前馈控制、计算力矩控制、轨迹规划。
所以动力学模型不是单纯“输出力矩”或“输出位置”,而是描述力和运动之间的映射。
九、建模时怎么选层次?
不是所有场景都需要完整链条。
-
低速、低精度控制:
可以把执行器简化为力矩源,甚至 τa≈Ku\tau_a\approx K uτa≈Ku。 -
高精度力控、位置控:
必须加入摩擦、间隙、减速器柔顺、执行器动态。 -
液压、气动:
必须考虑压力动态、阀流量、可压缩性、泄漏。 -
压电、SMA、EAP:
必须考虑滞回、蠕变、热动态或粘弹性。 -
实时控制:
常做降阶,比如电流环近似一阶,阀动态近似一阶,智能材料用现象学模型。
十、总结:一句话记住这条链
u→执行器动态→τa→机器人多体动力学→q¨→q,q˙ u \rightarrow \text{执行器动态} \rightarrow \tau_a \rightarrow \text{机器人多体动力学} \rightarrow \ddot q \rightarrow q,\dot q u→执行器动态→τa→机器人多体动力学→q¨→q,q˙
它的含义是:
- uuu 是控制命令;
- 执行器把命令变成广义力 τa\tau_aτa;
- 多体动力学把广义力变成加速度 q¨\ddot qq¨;
- 积分把加速度变成速度 q˙\dot qq˙ 和位置 qqq;
- 传感器再把运动反馈给控制器,形成闭环。
所以,力矩只是执行器和机械本体之间的接口变量。
整个动力学模型模拟的,是机器人从控制信号到实际运动的完整物理因果链。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)