基于PID、H_2和H_∞控制器的车辆横向动力学非线性MIMO-PID神经控制器设计(Matlab代码实现)

本文探讨了自动驾驶汽车的横向控制,比较了PID、H_2和H_∞控制器的设计及其对干扰的衰减性能。在无干扰情况下,PID表现良好,但在鲁棒性和干扰抑制上,H_2和H_∞控制器更具优势。对于实时控制实现,计算资源有限且需高干扰衰减时,PID是优选;否则,H_2和H_∞控制更为适用。
摘要由CSDN通过智能技术生成

👨‍🎓个人主页:研学社的博客  

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

1.1 车辆横向动力学

1.2 PID控制器设计

1.3 H_2控制器设计

1.3 H_∞控制器设计

1.4 对干扰的衰减

1.5 PID、H_2和H_oo控制器设计的比较

1.6 小结

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、数据、文章讲解


💥1 概述

文献来源:

 

 自动驾驶汽车的横向控制。研究了设计的PID、H2和H∞控制器以及设计中的权衡,以实现实时实现。

1.1 车辆横向动力学

在分析中,运动学模型用于车辆动力学的横向控制。为了简化分析,假设车辆运动是平面的。为了忽略车辆运动过程中的载荷传递,重心沿投影到纸张中的方向取。根据平面假设,我们需要一次旋转和一次平移来估计车辆的状态。用于分析的坐标系如图 1 所示。车辆的x轴指向车辆前方,y轴从驾驶员的角度指向右侧,右手规则的z轴指向地面。

1.2 PID控制器设计

使用PID的控制器设计是相位超前滞后补偿器设计的一种相对极端的形式,其中一个极点位于原点,另一个极点趋于无穷大。与PID类似的PI和PD控制器设计分别是相位滞后和相位超前补偿器的极端情况。

1.3 H_2控制器设计

H_2控制器旨在最大限度地降低系统H_2norm。为了设计H_2控制器,求解了代数李嘉蒂方程。由于分离原理,控制器和观察者的动力学是分开获得的。

1.3 H_∞控制器设计

H_∞控制器旨在最大限度地减少系统的H_∞规范。对于控制器的设计H_∞,在控制器设计中,以H_2控制系统的H_∞范数作为平分法的上限,延续了H_2问题。同样,由于分离原理,控制器和观察者的动力学是分开获得的。

1.4 对干扰的衰减

研究了对PID、H_2和H_∞控制系统干扰的响应,以比较控制器设计的鲁棒性。图7和图8显示了对干扰响应的输出1和2。蓝线是PID控制,红线是H_2control,绿线是H_∞控制系统。H_2和H_∞控制系统比PID更好地衰减干扰,因此与PID控制系统相比更稳健。对于输出 1,H_2控制器的性能最佳,而对于输出 2,H_∞比其他两种控制设计更好地衰减干扰

1.5 PID、H_2和H_oo控制器设计的比较

在没有干扰的情况下,PID的性能略好于H_2和H_∞控制器。在干扰衰减方面,H_2和H_∞控制器设计比预期的PID控制鲁棒性更好。

1.6 小结

对于嵌入式系统环境中的实时控制实现,其中计算能力非常有限,并且我们对干扰衰减的容忍度很高,则PID控制优于H_2和H_∞控制。在其他情况下,鲁棒控制是必不可少的,计算能力不是很有限,H_2和H_∞控制比PID控制更可取。

📚2 运行结果

 

 

 部分代码:

variable X(nx,nx) symmetric
variable W(nz,nz) symmetric
variable Z(nu,nx)
[A Bu]*[X;Z] + [X Z']*[A';Bu'] + Bw*Bw' < 0
[W (Cz*X + Du*Z); (Cz*X + Du*Z)' X] > 0
minimize trace(W)
cvx_end
h2K = Z*inv(X);
hinfK = [-1.4 -4e-14;3e-11 4e-16];
[lqrK,S,E] = lqr(A,Bu,Cz'*Cz,Du'*Du);
h2G = ss(A+Bu*h2K, Bw, Cz + Du*h2K, zeros(nw,2));
hinfG = ss(A+Bu*hinfK, Bw, Cz + Du*hinfK, zeros(nw,2));
lqrG = ss(A-Bu*lqrK, Bw, Cz + Du*lqrK , zeros(nw,2));
T = [0:0.01:20];
w = [5*randn(length(T),1) 5*randn(length(T),1)];
% w = [0.5*sin(10*T);0.5*sin(10*T)];
[y1,t1,x1] = lsim(h2G,w,T);
[y2,t2,x2] = lsim(lqrG,w,T);
[y3,t3,x3] = lsim(hinfG,w,T);
f1=figure(1); clf;
set(f1,'defaulttextinterpreter','latex');
for i=1:2
subplot(2,1,i);
plot(t1,y1(:,i),'r',t2,y2(:,i),'b:',t3,y3(:,i),'y', 'linewidth',2);
xlabel('Time(s)');
ylabel(sprintf('Output $z_%d$',i));
end
subplot(2,1,1); legend('H_2','LQR','Hinf');
print -depsc h2ex1.eps

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

 

🌈4 Matlab代码、数据、文章讲解

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值