目录
一、为什么吊舱稳定平台必须死磕摩擦补偿?难点在哪?
1.1 纯线性控制视角(传统 PID)
1.2 纯机械/结构视角
1.3 摩擦模型 + 扰动观测 + Simulink 互补(核心思想)
二、仿真总体架构
三、关键参数(教学默认)
四、Simulink 建模 Step‑by‑Step
Step ① —— 构建 LuGre 动态摩擦模型(灵魂所在)
Step ② —— 扰动观测器 (DOB) 设计(核心)
Step ③ —— 抗饱和 PI 控制器(Anti-windup)
Step ④ —— 载机扰动与视线隔离
Step ⑤ —— 性能评估与波形分析
五、典型结果判读
5.1 过零补偿效果
5.2 扰动观测器验证
5.3 载机隔离测试
六、参数调优与常见坑
6.1 LuGre 参数辨识
6.2 常见坑
七、工程升级方向
八、结论
手把手教你学 Simulink
—— 机载吊舱稳定平台框架电机的摩擦力矩补偿控制仿真
一、为什么吊舱稳定平台必须死磕摩擦补偿?难点在哪?
1.1 纯线性控制视角(传统 PID)
优点
- 逻辑简单,工程落地快,适合大角度机动或粗跟踪阶段。
- 对传感器噪声不敏感,系统鲁棒性在宏观上较好。
误差来源(导致图像撕裂/脱靶)
- 忽略“过零死区”:在速度过零换向时,摩擦力从静摩擦突变为动摩擦,线性控制器无法提供足够的瞬时力矩,导致象限突起(Glitch)。
- 缺乏动态记忆:未考虑预滑动阶段的微观鬃毛变形(Stribeck 效应),导致低速微动时出现**爬行(Stick-Slip)**现象。
- 带宽受限:为了抑制摩擦引起的抖动,被迫降低速度环增益,牺牲了隔离载机高频振动的能力。
1.2 纯机械/结构视角
优点
- 能够精确分析轴承预紧力、润滑脂粘度对摩擦特性的影响。
- 适合进行结构模态分析,避免机械共振与摩擦抖振耦合。
误差来源
- 无法实时补偿:机械改进(如改用气浮轴承)成本极高且受体积限制,无法解决磨损后的参数漂移。
- 环境敏感:高空低温(-50℃)或高温(+70℃)下,润滑脂特性剧变,地面标定的摩擦模型在天上完全失效。
1.3 摩擦模型 + 扰动观测 + Simulink 互补(核心思想)
| 层级/时间段 | 谁主导 | 原因 |
|---|---|---|
| 物理层/本体 | LuGre 动态摩擦模型 | 精确模拟预滑动鬃毛变形与 Stribeck 负阻尼特性,还原过零非线性 |
| 观测层/估计 | 扰动观测器 (DOB) | 将摩擦、风扰、不平衡力矩视为“总扰动”,基于逆模型实时剥离 |
| 控制层/补偿 | 前馈 + 反馈复合 | 前馈抵消大部分摩擦,反馈 PI 处理剩余误差,避免积分饱和(Anti-windup) |
二、仿真总体架构
┌─────────────────────────────────────────────┐ │ 载机扰动与视线指令 │ │ ┌─────────────┐ ┌──────────────────┐ │ │ │ 载机角振动 │─────│ 视线角指令 │ │ │ │ (正弦/随机) │ │ (阶跃/斜坡) │ │ │ └─────────────┘ └────────┬─────────┘ │ │ │ θ_ref, ω_dist│ └────────────────────────────────┼────────────┘ ▼ ┌─────────────────────────────────────────────┐ │ 稳定平台复合控制核心 │ │ ┌──────────────┐ ┌───────────────────┐ │ │ │ 摩擦前馈补偿 │──│ 速度/位置 PI 调节器 │ │ │ │ (LuGre/DOB) │ │ (含抗积分饱和) │ │ │ └──────────────┘ └────────┬──────────┘ │ │ │ i_q_ref │ │ ┌────────▼──────────┐ │ │ │ 电流环 + SVPWM │ │ │ │ (转矩常数 Kt) │ │ │ └────────┬──────────┘ │ └───────────────────────────────┼─────────────┘ │ 电磁转矩 T_e ▼ ┌─────────────────────────────────────────────┐ │ 吊舱框架机电耦合模型 │ │ ┌──────────────┐ ┌───────────────────┐ │ │ │ LuGre 摩擦 │──│ 刚体动力学方程 │ │ │ │ (鬃毛状态 z) │ │ (J, B, T_dist) │ │ │ └──────────────┘ └───────────────────┘ │ └─────────────────────────────────────────────┘三、关键参数(教学默认)
| 模块 | 参数 | 说明 |
|---|---|---|
| 电机本体 | 类型 | 无框力矩电机 (Frameless Torque Motor) |
| 0.5 Nm/A (需精确标定) | ||
| 0.002 kg·m² (含负载) | ||
| 1e-4 Nm/(rad/s) | ||
| 摩擦模型 | 100~300 Nm/rad (关键:影响预滑动刚度) | |
| 10~50 Nms/rad (关键:影响过零抖动) | ||
| 0.05~0.1 rad/s (性格转变点) | ||
| 控制策略 | 速度环带宽 | 50~100 Hz (受机械谐振限制) |
| 观测器带宽 | 200~500 Hz (需快于速度环) | |
| 抗饱和阈值 | 90% 最大电流 (防止 Windup) | |
| 仿真设置 | 求解器 | ode45 (固定步长,匹配 DSP 采样) |
| 1e-4 s (100kHz 电流环 / 10kHz 速度环) |
四、Simulink 建模 Step‑by‑Step
Step ① —— 构建 LuGre 动态摩擦模型(灵魂所在)
建模思路:
摒弃简单的库伦+粘性模型,引入内部状态变量 $z$(鬃毛平均变形量),捕捉预滑动阶段的非线性刚度。
Simulink 实现:
使用MATLAB Function模块,核心代码逻辑如下:
function tau_f = LuGre(v, z_in, sigma0, sigma1, sigma2, Ts) % 1. 计算 Stribeck 函数 g(v) v_s = 0.1; % Stribeck 速度 g_v = sigma0 * (0.5 + 0.5 * exp(-(v/v_s)^2)); % 简化 Stribeck % 2. 鬃毛状态更新 (dz/dt = v - sigma0*|v|/g(v)*z) dz = v - (sigma0 * abs(v) / g_v) * z_in; z_out = z_in + dz * Ts; % 欧拉积分 % 3. 摩擦力计算 tau_f = sigma0 * z_out + sigma1 * dz + sigma2 * v; end关键点:sigma1 * dz项是产生过零尖峰和滞回环的根源,不可省略。
Step ② —— 扰动观测器 (DOB) 设计(核心)
建模思路:
不直接观测摩擦,而是观测“总扰动”。利用电机逆模型,从电流和速度反推所需力矩,差值即为摩擦+风扰+不平衡力矩。
Simulink 实现:
function tau_dist = DistObserver(i_q, v_mech, J, B, Kt, Ts) persistent v_prev; if isempty(v_prev), v_prev = 0; end % 1. 差分求加速度 (注意噪声,可加低通) acc = (v_mech - v_prev) / Ts; % 2. 逆动力学计算理论力矩 tau_model = J * acc + B * v_mech; % 3. 实际力矩 (Kt * i_q) tau_actual = Kt * 1.5 * i_q; % 1.5 为 Park 变换系数 % 4. 扰动估计 tau_dist = tau_actual - tau_model; v_prev = v_mech; endStep ③ —— 抗饱和 PI 控制器(Anti-windup)
建模思路:
摩擦补偿需要快速响应,但执行器(电流)有限。当输出饱和时,必须停止积分累积,否则换向时积分器“释放”会导致严重超调。
Simulink 实现:
在标准 PI 的积分器前加一个Switch或Conditional逻辑:
% 伪代码:当 |u| < u_max 时才积分 if (abs(u_out) < u_max) || (sign(e) ~= sign(u_out)) integral = integral + Ki * e * Ts; endStep ④ —— 载机扰动与视线隔离
Simulink 实现:
- 使用
Sine Wave模拟载机俯仰/偏航振动(如 5Hz, 2° 幅值)。 - 将载机角速度通过
Gain(1:1 耦合) 叠加到吊舱动力学方程的扰动端。 - 验证指标:视线稳定精度(如 < 10 μrad, 3σ)。
Step ⑤ —— 性能评估与波形分析
Simulink 实现:
- Scope 1:速度跟踪误差(关注过零点 ±50rpm 处的突起)。
- Scope 2:摩擦转矩 vs 观测转矩(验证 DOB 的跟踪精度,应基本重合)。
- Scope 3:电流环响应(验证抗饱和是否生效,无过冲)。
五、典型结果判读
5.1 过零补偿效果
| 指标 | 无补偿 | 仅前馈 (静态模型) | 前馈 + DOB | 备注 |
|---|---|---|---|---|
| 过零误差峰值 | ±50 rpm | ±15 rpm | < ±5 rpm | DOB 消除了模型参数误差 |
| 恢复时间 | > 50 ms | ~20 ms | < 5 ms | 鬃毛动态被有效阻尼 |
| 稳态抖动 | 明显 | 轻微 | 极微 | 高频摩擦分量被滤除 |
5.2 扰动观测器验证
| 现象 | 预期表现 | 备注 |
|---|---|---|
| 0.6s 开启 DOB | 误差曲线瞬间收敛 | 观测器带宽足够 |
| 摩擦突变 | 观测值在 2~5ms 内跟踪 | 验证动态响应能力 |
| 噪声水平 | 观测值毛刺 < 1% 额定转矩 | 加速度差分噪声被抑制 |
5.3 载机隔离测试
| 现象 | 预期表现 | 备注 |
|---|---|---|
| 载机 5Hz 振动 | 吊舱视轴抖动 < 10 μrad | 速度环带宽与滤波匹配 |
| 冲击干扰 | 恢复时间 < 0.1s | 抗饱和与 DOB 协同工作 |
六、参数调优与常见坑
6.1 LuGre 参数辨识
| 参数 | 太小 | 合适 | 太大 |
|---|---|---|---|
| 预滑动区过软,跟踪滞后 | 匹配实测滞回环宽度 | 高频振荡,电流噪声大 | |
| 过零无抑制,突起明显 | 临界阻尼状态 | 过零反向力矩过大,超调 |
关键技巧:在 Simulink 中使用Parameter Sweep工具,扫描 $\sigma_0, \sigma_1$,以“过零误差积分”为目标函数自动寻优。
6.2 常见坑
| 现象 | 原因 | Fix |
|---|---|---|
| DOB 输出发散 | 加速度差分噪声放大 | 在acc计算后加 100Hz 低通,或改用扩展观测器 (ESO) |
| 过零依然有坑 | 观测器带宽 < 摩擦动态带宽 | |
| 换向后长时间不跟踪 | PI 积分饱和 (Windup) | 检查抗饱和逻辑,确保饱和时积分停止 |
| 仿真步长报错 | LuGre 刚性问题 | 必须用固定步长 ode45/ode23tb,步长 ≤ 1e-5s |
七、工程升级方向
- 自适应 LuGre:利用 Lyapunov 稳定性理论,在线辨识 $\sigma_0, \sigma_1$,解决磨损和温升导致的参数漂移。
- 神经网络补偿:用 RBFNN 拟合 LuGre 的未建模动态(如高频颤振),实现“模型+数据”双驱动。
- 谐振抑制:在 DOB 输出端串联Notch Filter,防止摩擦补偿力矩激发框架的一阶弯曲模态。
- 硬件在环 (HIL):将 LuGre + DOB 部署至 DSP,注入真实陀螺噪声,验证算法在低信噪比下的鲁棒性。
八、结论
你已完成:
- 构建了包含LuGre 动态摩擦、扰动观测器 (DOB)、抗饱和 PI的吊舱稳定平台全闭环仿真。
- 掌握了摩擦“过零死区”与“预滑动鬃毛”的物理本质,以及 DOB 将非线性问题转化为线性问题的工程技巧。
- 验证了复合控制策略在载机扰动隔离与微动跟踪中的双重优势。
- 具备了从摩擦机理建模到高精度伺服算法落地的跨层级仿真能力。