模糊PID控制主动悬架模型 基于2自由度1/4悬架模型,模糊PID可以自适应调整PID控制的系数,实现更好的控制效果 Simulink模型中对比了被动悬架、PID控制和模糊PID控制主动悬架效果 如图为车身加速度、悬架动挠度和轮胎动载荷的对比结果 (包括被动悬架的对比图在simulink中有) 资料中有matlab代码,simulink模型和介绍资料(自制),包括详细的建模过程和算法内容

老司机们都知道,好悬架不仅要能吞掉小坑洼,还得在大颠簸面前稳得住。传统悬架就像固定参数的滤镜,遇到复杂路况就露怯。这次咱们玩点花的,把模糊逻辑塞进PID控制器,让悬架自己学着调参数。

先拆开这个1/4车模型看看构造:上车体带着簧载质量m1坐镇上方,下控制臂拖着非簧载质量m2。中间夹着作动器,底下轮胎刚度kt硬扛地面冲击。状态方程列出来也就五行的事儿:

% 二自由度悬架状态方程
A = [0 1 0 -1;
     -ks/m1 -c/m1 ks/m1 c/m1;
     0 0 0 1;
     ks/m2 c/m2 -(ks+kt)/m2 -c/m2];
B = [0; 1/m1; 0; 0];
C = [1 0 0 0;  % 车身位移
     0 1 0 0;  % 车身速度
     (ks+kt)/m2 0 -kt/m2 0]; % 轮胎动载荷

这组矩阵藏着悬架所有动态特性,不过重点在于作动器那个位置——这里就是我们要介入控制的地方。

模糊PID控制主动悬架模型 基于2自由度1/4悬架模型,模糊PID可以自适应调整PID控制的系数,实现更好的控制效果 Simulink模型中对比了被动悬架、PID控制和模糊PID控制主动悬架效果 如图为车身加速度、悬架动挠度和轮胎动载荷的对比结果 (包括被动悬架的对比图在simulink中有) 资料中有matlab代码,simulink模型和介绍资料(自制),包括详细的建模过程和算法内容

普通PID在仿真里表现像个直男:Kp=1200,Ki=80,Kd=180,参数定得死死的。遇到连续颠簸路面,车身加速度曲线抖得像心电图。这时候该模糊控制器上场表演了,它的绝活是边开边调参数:

fis = newfis('fpid');
% 误差和误差变化率作为输入
fis = addvar(fis,'input','e',[-1 1]);
fis = addvar(fis,'input','ec',[-0.5 0.5]);
% 输出三个PID参数增量
fis = addvar(fis,'output','deltaKp',[-300 300]);
fis = addvar(fis,'output','deltaKi',[-20 20]);
fis = addvar(fis,'output','deltaKd',[-50 50]);

% 搞点三角形隶属度函数
fis = addmf(fis,'input',1,'N','trimf',[-1.5 -1 0]);
fis = addmf(fis,'input',1,'Z','trimf',[-0.5 0 0.5]);
fis = addmf(fis,'input',1,'P','trimf',[0 1 1.5]);
% 类似结构给其他变量都安排上...

% 核心在于这组经验规则
ruleList = [
    1 1 1 1 1 1;  % 误差负大时狂补P值
    2 2 2 2 1 1;  % 接近平衡点时调小积分
    3 3 3 3 1 1;  % 超调来了猛加微分
    % 总共攒了27条组合规则...
];
fis = addrule(fis,ruleList);

这套规则库相当于老司机的驾驶经验数字化了。比如当车身下沉过快(误差负向增大),控制器会自动增大比例系数来紧急拉升;当接近平衡位置时,又悄悄减小积分防止过冲。

在Simulink里搭模型时有个小技巧:把模糊推理系统的采样时间设为0.001秒,比主仿真步长快10倍,这样参数调整更丝滑。对比曲线出来那刻,被动悬架的加速度波形活像锯齿刀,普通PID算是磨平了尖刺,而模糊PID的曲线跟德芙巧克力似的——纵使遇到20cm高的突降障碍,车身加速度稳稳压在0.3g以内。

轮胎动载荷的数据更有意思。传统PID为了压住车身晃动,导致轮胎抓地力波动超过15%,而模糊控制器把这个数字压到8%以下。这意味着在湿滑路面,主动悬架能降低30%的打滑概率。不过实测时发现,当路面频率超过5Hz时,作动器响应开始滞后,这时候得在模糊规则里加个高频补偿因子才能稳住。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐