physics_simulation

第8章:驱动器与传动模型

章节大纲

8.1 力矩控制与位置控制

8.2 串联弹性驱动器(SEA)与齿轮传动

8.3 摩擦与反向间隙

8.4 延迟与带宽限制


开篇段落

驱动器是机器人系统中将控制指令转换为物理运动的关键组件。在物理仿真中,准确建模驱动器特性对于实现真实的机器人行为至关重要。本章深入探讨各种驱动器模型,从理想的力矩控制到复杂的非线性传动系统,重点关注这些模型如何影响强化学习策略的训练和部署。我们将分析驱动器的动态响应、传动机构的非理想特性,以及控制延迟对系统稳定性的影响,为设计高保真度的机器人仿真环境提供理论基础。

8.1 力矩控制与位置控制

8.1.1 理想驱动器模型

在最简单的情况下,我们假设驱动器能够瞬时产生所需的力矩或达到目标位置。对于力矩控制模式,关节力矩直接等于控制输入:

\[\tau = \tau_{cmd}\]

而位置控制模式通常通过PD控制器实现:

\[\tau = K_p(q_{des} - q) + K_d(\dot{q}_{des} - \dot{q})\]

其中$K_p$和$K_d$分别是位置和速度增益,$q_{des}$是目标位置,$q$是当前位置。

8.1.2 PD控制器的稳定性分析

考虑单自由度系统的动力学方程:

\[M\ddot{q} + C\dot{q} + G = \tau\]

其中$M$是惯性,$C$是阻尼系数,$G$是重力项。将PD控制律代入,得到闭环系统:

\[M\ddot{q} + (C + K_d)\dot{q} + K_p q = K_p q_{des} + K_d \dot{q}_{des} + G\]

系统的特征方程为:

\[Ms^2 + (C + K_d)s + K_p = 0\]

稳定性条件要求所有特征根具有负实部,这要求:

临界阻尼条件为:

\[K_d = 2\sqrt{MK_p} - C\]

这决定了系统响应是过阻尼、临界阻尼还是欠阻尼。

8.1.3 力矩饱和与速度限制

实际驱动器具有物理限制。力矩饱和可以建模为:

\[\tau = \text{sat}(\tau_{cmd}, \tau_{max}) = \begin{cases} \tau_{max} & \text{if } \tau_{cmd} > \tau_{max} \\ \tau_{cmd} & \text{if } |\tau_{cmd}| \leq \tau_{max} \\ -\tau_{max} & \text{if } \tau_{cmd} < -\tau_{max} \end{cases}\]

速度限制通常由电机的反电动势决定:

\[\tau_{available} = \tau_{stall} \cdot \max\left(0, 1 - \frac{|\dot{q}|}{\dot{q}_{max}}\right)\]

其中$\tau_{stall}$是堵转力矩,$\dot{q}_{max}$是空载最大速度。

8.1.4 阻抗控制理论基础

阻抗控制通过调节机械阻抗实现柔顺控制:

\[\tau = K_p(q_{des} - q) + K_d(\dot{q}_{des} - \dot{q}) + M_{des}\ddot{q}_{des}\]

目标阻抗可以表示为:

\[M_{des}(\ddot{q} - \ddot{q}_{des}) + D_{des}(\dot{q} - \dot{q}_{des}) + K_{des}(q - q_{des}) = F_{ext}\]

这允许机器人在与环境交互时表现出期望的动态特性。

8.2 串联弹性驱动器(SEA)与齿轮传动

8.2.1 SEA的动力学建模

串联弹性驱动器在电机和负载之间引入弹性元件,提供力感知和冲击吸收能力。双质量-弹簧系统的动力学方程为:

\[\begin{aligned} I_m \ddot{\theta}_m &= \tau_m - k_s(\theta_m - \theta_l/N) - b_s(\dot{\theta}_m - \dot{\theta}_l/N) \\ I_l \ddot{\theta}_l &= k_s N(\theta_m - \theta_l/N) + b_s N(\dot{\theta}_m - \dot{\theta}_l/N) - \tau_{ext} \end{aligned}\]

其中:

传递函数分析揭示了系统的谐振频率:

\[\omega_n = \sqrt{\frac{k_s}{I_l} \left(1 + \frac{I_l}{N^2 I_m}\right)}\]

8.2.2 齿轮传动比与惯量耦合

齿轮传动改变力矩和速度的关系:

\[\begin{aligned} \tau_{out} &= N \cdot \eta \cdot \tau_{in} \\ \omega_{out} &= \frac{\omega_{in}}{N} \end{aligned}\]

其中$\eta$是传动效率。反射惯量为:

\[I_{reflected} = N^2 I_{motor}\]

这种惯量放大效应在高传动比系统中尤为显著,可能导致:

8.2.3 弹性元件的选择与设计

弹性元件的刚度选择需要权衡多个因素:

软弹簧(低刚度):

硬弹簧(高刚度):

最优刚度可通过以下准则确定:

\[k_{opt} = \frac{4\pi^2 I_l f_{desired}^2}{1 + I_l/(N^2 I_m)}\]

其中$f_{desired}$是期望的控制带宽。

8.2.4 传动链的能量损失

传动系统的能量损失包括:

  1. 齿轮啮合损失: \(P_{gear} = (1 - \eta_{gear}) \cdot |\tau \cdot \omega|\)

  2. 轴承摩擦: \(P_{bearing} = \mu_{bearing} \cdot F_{radial} \cdot \omega \cdot r_{bearing}\)

  3. 密封摩擦: \(P_{seal} = \tau_{seal} \cdot |\omega|\)

总效率模型: \(\eta_{total} = \eta_{gear} \cdot \eta_{bearing} \cdot \eta_{seal} \cdot \eta_{motor}\)

8.3 摩擦与反向间隙

8.3.1 静摩擦与动摩擦模型

经典库仑摩擦模型:

\[\tau_f = \begin{cases} \tau_{applied} & \text{if } |\tau_{applied}| < \tau_{static} \text{ and } \dot{q} = 0 \\ \tau_{coulomb} \cdot \text{sgn}(\dot{q}) & \text{if } \dot{q} \neq 0 \end{cases}\]

更精确的LuGre摩擦模型引入内部状态$z$:

\[\begin{aligned} \dot{z} &= \dot{q} - \frac{|\dot{q}|}{g(\dot{q})} z \\ \tau_f &= \sigma_0 z + \sigma_1 \dot{z} + \sigma_2 \dot{q} \end{aligned}\]

其中: \(g(\dot{q}) = \tau_c + (\tau_s - \tau_c) e^{-|\dot{q}/v_s|^2}\)

这个模型捕获了预滑动、粘滑转换和Stribeck效应。

8.3.2 Stribeck效应与速度依赖性

Stribeck曲线描述了摩擦力随速度的变化:

\[\tau_f(\dot{q}) = \left[\tau_c + (\tau_s - \tau_c) e^{-|\dot{q}/v_s|^\delta}\right] \text{sgn}(\dot{q}) + b_v \dot{q}\]

参数含义:

8.3.3 反向间隙的数学描述

反向间隙(backlash)在齿轮传动中普遍存在。死区模型:

\[\theta_{out} = \begin{cases} \theta_{in} - \alpha/2 & \text{if } \theta_{in} > \theta_{last} + \alpha/2 \\ \theta_{last} & \text{if } |\theta_{in} - \theta_{last}| \leq \alpha/2 \\ \theta_{in} + \alpha/2 & \text{if } \theta_{in} < \theta_{last} - \alpha/2 \end{cases}\]

其中$\alpha$是间隙角度,$\theta_{last}$是上次接触时的输出角度。

更复杂的模型考虑接触刚度:

\[\tau_{contact} = \begin{cases} k_{contact}(\theta_{in} - \theta_{out} - \alpha/2) & \text{if } \theta_{in} - \theta_{out} > \alpha/2 \\ 0 & \text{if } |\theta_{in} - \theta_{out}| \leq \alpha/2 \\ k_{contact}(\theta_{in} - \theta_{out} + \alpha/2) & \text{if } \theta_{in} - \theta_{out} < -\alpha/2 \end{cases}\]

8.3.4 迟滞现象与记忆效应

机械系统中的迟滞可用Preisach模型描述。对于简化的迟滞算子:

\[y(t) = \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} \mu(\alpha, \beta) \gamma_{\alpha\beta}[u](t) \, d\alpha \, d\beta\]

其中$\gamma_{\alpha\beta}$是基本迟滞算子,$\mu(\alpha, \beta)$是权重分布。

实用的Bouc-Wen模型:

\[\begin{aligned} \tau &= \alpha k_e \theta + (1-\alpha) k_e z \\ \dot{z} &= \dot{\theta}[A - (\beta \text{sgn}(\dot{\theta}z) + \gamma)|z|^n] \end{aligned}\]

参数$A$, $\beta$, $\gamma$, $n$控制迟滞环的形状和大小。

8.4 延迟与带宽限制

8.4.1 控制回路延迟的来源

控制系统中的延迟来自多个环节:

  1. 传感器延迟($\tau_{sensor}$):
    • 编码器采样和处理:1-5 ms
    • 力/力矩传感器:2-10 ms
    • IMU滤波:5-20 ms
  2. 通信延迟($\tau_{comm}$):
    • CAN总线:1-10 ms
    • EtherCAT:< 1 ms
    • 无线通信:10-100 ms
  3. 计算延迟($\tau_{comp}$):
    • 控制律计算:0.1-1 ms
    • 轨迹规划:1-10 ms
    • 视觉处理:10-50 ms
  4. 驱动器延迟($\tau_{driver}$):
    • PWM周期:0.05-1 ms
    • 电流环响应:0.1-1 ms

总延迟: \(\tau_{total} = \tau_{sensor} + \tau_{comm} + \tau_{comp} + \tau_{driver}\)

8.4.2 带宽限制的频域分析

系统带宽由开环传递函数的交叉频率决定。对于典型的位置控制系统:

\[G(s) = \frac{K_p(1 + T_d s)}{s^2(Js + B)} e^{-\tau s}\]

其中延迟项$e^{-\tau s}$显著影响相位裕度。使用Padé近似:

\[e^{-\tau s} \approx \frac{1 - \tau s/2}{1 + \tau s/2}\]

相位裕度随频率下降: \(\phi_{margin} = 180° - \angle G(j\omega_{gc})\)

其中$\omega_{gc}$是增益交叉频率。延迟引入的相位滞后: \(\phi_{delay} = -\omega_{gc} \tau \cdot \frac{180°}{\pi}\)

稳定性要求$\phi_{margin} > 30°$,这限制了可达到的带宽: \(\omega_{gc,max} < \frac{\phi_{margin,min} \cdot \pi}{180° \cdot \tau}\)

8.4.3 延迟补偿策略

Smith预估器用于补偿已知延迟:

控制器设计基于无延迟模型$G_p(s)$,实际系统为$G_p(s)e^{-\tau s}$。Smith预估器结构:

\[C_{smith}(s) = \frac{C(s)}{1 + C(s)G_p(s)(1 - e^{-\tau s})}\]

前馈补偿预测未来状态:

\[q_{pred}(t + \tau) = q(t) + \tau \dot{q}(t) + \frac{\tau^2}{2}\ddot{q}(t)\]

使用卡尔曼滤波器估计状态导数:

\[\begin{aligned} \mathbf{x}_{k+1} &= \mathbf{A}\mathbf{x}_k + \mathbf{B}u_k + \mathbf{w}_k \\ \mathbf{y}_k &= \mathbf{C}\mathbf{x}_k + \mathbf{v}_k \end{aligned}\]

其中状态向量$\mathbf{x} = [q, \dot{q}, \ddot{q}]^T$。

自适应延迟估计

使用相关分析估计变化的延迟:

\[R_{xy}(\tau) = \mathbb{E}[x(t)y(t-\tau)]\]

延迟估计值: \(\hat{\tau} = \arg\max_\tau R_{xy}(\tau)\)

8.4.4 采样率对稳定性的影响

离散化引入额外的相位滞后。对于采样周期$T_s$,零阶保持器的传递函数:

\[G_{ZOH}(s) = \frac{1 - e^{-T_s s}}{s}\]

频率响应显示高频衰减:

\[|G_{ZOH}(j\omega)| = T_s \left|\frac{\sin(\omega T_s/2)}{\omega T_s/2}\right|\]

Nyquist-Shannon定理要求: \(f_s > 2 f_{BW}\)

但实际控制系统需要更高的采样率: \(f_s > 10-20 \times f_{BW}\)

采样引起的最大延迟为$T_s/2$,这进一步限制了系统带宽。

离散PID控制器的稳定域分析:

\[G_d(z) = K_p + K_i \frac{T_s}{z-1} + K_d \frac{z-1}{T_s z}\]

稳定性条件通过Jury判据确定,通常比连续系统更严格。

RL应用:驱动器模型对策略学习的影响

在强化学习中,驱动器模型的保真度直接影响策略的可迁移性:

仿真简化的影响

  1. 理想驱动器假设
    • 训练快速但sim-to-real gap大
    • 策略可能依赖不现实的瞬时响应
    • 建议:至少包含力矩饱和和基本延迟
  2. 忽略传动动力学
    • 错过关节弹性和振荡模式
    • 策略可能激发真实系统的谐振
    • 建议:高传动比系统必须建模SEA效应
  3. 摩擦模型简化
    • 低速控制精度差
    • 粘滑现象导致不稳定
    • 建议:至少使用速度依赖的摩擦模型

域随机化策略

关键参数的随机化范围:

驱动器参数随机化:
- 力矩限制:±20% 标称值
- 控制延迟:1-10 ms 均匀分布
- 摩擦系数:±30% 变化
- 齿轮间隙:0-2° 随机
- PD增益:±15% 扰动

渐进式复杂度增加

训练策略建议:

  1. 初始阶段:理想驱动器,专注任务学习
  2. 中期:添加饱和和基本延迟
  3. 后期:完整非线性模型和噪声
  4. 微调:真实参数辨识结果

历史人物:Pratt与1995年串联弹性驱动器的发明

Jerry Pratt和Gill Pratt在MIT腿部实验室开发了串联弹性驱动器(SEA),这一创新从根本上改变了机器人驱动器设计理念。

创新背景

传统刚性驱动器追求高刚度和精确位置控制,但在力控制和安全交互方面存在根本限制:

SEA的突破

Pratt兄弟反其道而行之,故意引入弹性:

  1. 力感知:通过测量弹簧变形间接测量力,无需昂贵的力传感器
  2. 冲击吸收:弹性元件自然滤波高频冲击
  3. 稳定力控制:弹性提供被动稳定性
  4. 能量存储:可用于爆发性运动

设计原则

SEA的核心洞察: \(F = k \cdot \Delta x\)

简单的胡克定律提供了:

影响与应用

SEA技术广泛应用于:

Pratt的工作启发了整个”柔顺驱动”研究领域,包括变刚度驱动器(VSA)和准直接驱动(QDD)等后续发展。

高级话题:变刚度驱动器与阻抗控制理论

变刚度驱动器(VSA)

VSA允许独立控制位置和刚度,提供额外的控制自由度:

\[\begin{aligned} \tau &= k(\alpha)(q_m - q_l) \\ k(\alpha) &= k_0 + k_1 f(\alpha) \end{aligned}\]

其中$\alpha$是刚度调节参数。

主要VSA设计

  1. 拮抗式VSA: 两个驱动器通过非线性弹簧耦合: \(\begin{aligned} \tau &= k_1(\theta_1 - q) - k_2(\theta_2 - q) \\ K_{eff} &= k_1 + k_2 \end{aligned}\)

  2. 机械可调刚度: 通过改变弹簧预载或有效长度: \(k_{eff} = \frac{dF}{dx} = k_0 \left(1 + \frac{x_{pre}}{L_{eff}(\alpha)}\right)\)

阻抗控制的统一框架

广义阻抗控制律: \(\tau = \mathbf{J}^T[\mathbf{K}_d(\mathbf{x}_d - \mathbf{x}) + \mathbf{D}_d(\dot{\mathbf{x}}_d - \dot{\mathbf{x}}) - \mathbf{M}_d\ddot{\mathbf{x}}]\)

其中$\mathbf{K}_d$, $\mathbf{D}_d$, $\mathbf{M}_d$是笛卡尔空间的期望刚度、阻尼和惯量矩阵。

能量视角

从能量角度分析VSA:

势能函数: \(U(q, \alpha) = \frac{1}{2}k(\alpha)(q_m - q_l)^2\)

功率流: \(P = \tau \dot{q} + \tau_\alpha \dot{\alpha}\)

其中第二项是调节刚度所需的功率。

最优刚度调节

对于周期性运动,最优刚度满足: \(k_{opt} = m\omega^2\)

这使系统处于谐振状态,最小化能量消耗。

对于冲击任务,刚度调节策略:

  1. 接触前:低刚度减少冲击
  2. 接触中:高刚度精确控制
  3. 分离后:中等刚度保持稳定

学习型阻抗控制

结合强化学习自适应调节阻抗参数:

\[\begin{aligned} \mathbf{K}_d &= \mathbf{K}_0 + \pi_K(\mathbf{s}) \\ \mathbf{D}_d &= \mathbf{D}_0 + \pi_D(\mathbf{s}) \end{aligned}\]

其中$\pi_K$, $\pi_D$是学习得到的策略网络。

本章小结

本章深入探讨了驱动器与传动系统的建模,这是实现高保真机器人仿真的关键环节。主要内容包括:

核心概念

  1. 控制模式:力矩控制提供直接控制,位置控制通过PD反馈实现
  2. SEA动力学:弹性引入谐振模式,需要权衡力感知和位置带宽
  3. 非线性效应:摩擦、间隙、饱和等显著影响低速和换向性能
  4. 时间延迟:多源延迟限制系统带宽,需要预测补偿

关键公式

设计权衡

练习题

基础题

习题8.1 PD控制器稳定性 给定单关节系统:$M = 1$ kg·m², $C = 0.1$ N·m·s/rad,设计PD控制器使系统具有临界阻尼响应,自然频率$\omega_n = 10$ rad/s。

提示 使用临界阻尼条件$\zeta = 1$和自然频率公式。
答案 从$\omega_n^2 = K_p/M$得$K_p = 100$ N·m/rad。 临界阻尼条件:$K_d = 2\sqrt{MK_p} - C = 20 - 0.1 = 19.9$ N·m·s/rad。

习题8.2 SEA设计 设计一个SEA系统,负载惯量$I_l = 0.5$ kg·m²,电机惯量$I_m = 0.001$ kg·m²,传动比$N = 50$,要求控制带宽至少5 Hz。计算所需的弹簧刚度。

提示 使用谐振频率公式,确保谐振频率高于控制带宽。
答案 要求$f_n > 5$ Hz,即$\omega_n > 31.4$ rad/s。 使用公式:$k_s = \frac{\omega_n^2 I_l}{1 + I_l/(N^2 I_m)} = \frac{986 \times 0.5}{1 + 0.5/(2500 \times 0.001)} = \frac{493}{1.2} = 411$ N·m/rad。

习题8.3 摩擦补偿 测得某关节的Stribeck参数:$\tau_s = 2$ N·m,$\tau_c = 1$ N·m,$v_s = 0.1$ rad/s,$b_v = 0.5$ N·m·s/rad。计算速度为0.05 rad/s时的摩擦力矩。

提示 使用Stribeck曲线公式,注意低速区域的指数项。
答案 $\tau_f = [1 + (2-1)e^{-(0.05/0.1)^2}] \times \text{sgn}(0.05) + 0.5 \times 0.05$ $= [1 + e^{-0.25}] + 0.025 = 1.779 + 0.025 = 1.804$ N·m

习题8.4 延迟影响分析 系统开环传递函数$G(s) = \frac{100}{s(s+10)}$,延迟$\tau = 10$ ms。计算延迟对相位裕度的影响(在增益交叉频率处)。

提示 先找到增益交叉频率,然后计算延迟引入的相位滞后。
答案 增益交叉频率:$|G(j\omega)| = \frac{100}{\omega\sqrt{\omega^2+100}} = 1$,解得$\omega_{gc} \approx 9.5$ rad/s。 延迟相位:$\phi_{delay} = -9.5 \times 0.01 \times 180/\pi = -5.4°$。 原相位裕度约84°,加入延迟后降至约79°。

挑战题

习题8.5 多模态控制切换 设计一个控制器,在自由空间使用位置控制(高刚度),接触时切换到力控制(低刚度)。推导平滑切换函数避免不连续。

提示 使用sigmoid函数或双曲正切函数实现平滑过渡。考虑基于力传感器反馈的切换逻辑。
答案 平滑切换函数:$\alpha(F) = \frac{1}{1 + e^{-k(|F| - F_{threshold})}}$ 混合控制律:$\tau = (1-\alpha)K_p(q_{des} - q) + \alpha K_f(F_{des} - F)$ 其中$k$控制切换速度,$F_{threshold}$是切换阈值。 需要确保$k$足够大以快速切换,但不能太大导致抖动。

习题8.6 VSA能量优化 推导变刚度驱动器在周期运动中的最优刚度轨迹,使能量消耗最小。考虑正弦轨迹$q(t) = A\sin(\omega t)$。

提示 分析势能和动能的相位关系,利用谐振条件。
答案 能量消耗主要来自阻尼损失:$E_{loss} = \oint b\dot{q}^2 dt$ 在谐振条件$k = m\omega^2$下,驱动器只需补偿阻尼损失。 最优刚度轨迹:$k(t) = m\omega^2[1 + \epsilon\cos(2\omega t)]$ 其中$\epsilon$是调制深度,可存储和释放能量。

习题8.7 反向间隙补偿 设计一个前馈补偿器,预测并补偿齿轮间隙引起的位置误差。考虑间隙角度$\alpha = 1°$,如何在轨迹规划中提前补偿?

提示 检测速度反向,预先"填充"间隙。考虑加速度连续性。
答案 补偿策略: 1. 检测反向:$\text{sgn}(\dot{q}_t) \neq \text{sgn}(\dot{q}_{t-1})$ 2. 注入补偿脉冲:$q_{comp} = q_{des} + \alpha \cdot \text{sgn}(\dot{q})$ 3. 使用S曲线过渡:$\Delta q(t) = \alpha \cdot \frac{1}{2}[1 + \tanh(k(t - t_{reverse}))]$ 确保加速度限制:$|\ddot{q}_{comp}| < a_{max}$

习题8.8 分布式延迟建模 考虑多级控制系统,每级有不同延迟:视觉处理(30ms) → 轨迹规划(10ms) → 底层控制(5ms)。如何设计预测器补偿级联延迟?

提示 使用多步预测,每级使用不同时间范围的预测。
答案 级联预测器设计: 1. 视觉级:预测$t + 45$ms的目标状态 2. 规划级:基于$t + 15$ms预测生成轨迹 3. 控制级:前馈$t + 5$ms的控制输入 使用扩展卡尔曼滤波器融合多时间尺度预测: $\hat{x}(t+\tau) = \Phi(\tau)\hat{x}(t) + \Gamma(\tau)u(t)$ 其中$\Phi(\tau) = e^{A\tau}$是状态转移矩阵。

常见陷阱与错误 (Gotchas)

1. PD增益调试陷阱

错误:盲目增加增益追求快速响应 后果:高频振荡、电机过热、齿轮箱损坏 正确做法:使用Bode图分析,确保足够相位裕度(>45°)

2. 忽视采样率影响

错误:使用与连续系统相同的控制增益 后果:离散化导致不稳定,特别是高增益时 正确做法:根据采样率调整增益,使用离散控制器设计

3. SEA刚度选择误区

错误:选择过软的弹簧追求力控制精度 后果:位置控制带宽太低,无法跟踪快速轨迹 正确做法:根据任务需求权衡,考虑可变刚度方案

4. 摩擦模型过度简化

错误:仅使用库仑摩擦,忽略Stribeck效应 后果:低速爬行、定位精度差 正确做法:至少包含静摩擦和速度依赖项

5. 延迟补偿过度

错误:过度预测导致系统领先实际状态 后果:过冲、振荡、甚至不稳定 正确做法:保守估计延迟,包含鲁棒性裕度

6. 间隙补偿时机

错误:在高速运动中补偿间隙 后果:冲击、振动、机械磨损 正确做法:在低速或静止时进行间隙补偿

7. 忽略电机热特性

错误:持续使用峰值力矩 后果:电机过热、永磁体退磁 正确做法:建模热动态,实施热保护

8. 传感器噪声放大

错误:高微分增益放大编码器噪声 后果:控制信号抖动、电机发热 正确做法:低通滤波速度信号,使用状态观测器

最佳实践检查清单

驱动器选型审查

控制器设计验证

仿真建模完整性

实验验证步骤

Sim-to-Real检查

性能优化要点