Carsim应用:LKA车道保持辅助系统(LQR控制器模型)

news/2025/3/28 12:23:28/

二轮转向汽车LKA控制器算法(LQR)

公式推导见上一篇文章
在这里插入图片描述

建立控制器模型

由上诉算法可知,算法计算的前提是:
1)获得输入变量:侧向速度(m/s)、横摆角速度(rad/s)、实际侧向偏移量(m)、实际横摆角偏移(rad)、期望横摆角速度(rad/s)、期望路径的曲率(1/m)
2)获得中间变量:k11,k12,k13,k14、k21,k22,k23,k24(K矩阵)、sy12,sy22(SR矩阵)、sr11,sr21(SR矩阵)、b11,b21(B矩阵)、W5(R矩阵)
3)输出变量:前轮偏转角

获得中间变量 利用Matlab语言编写程序
1)设置车辆参数–>A矩阵、B矩阵、E矩阵

m=1270;
Iz=1536.7;
L=2.91;
a=1.015;
b=1.895;
k1=-180000;
k2=-180000;
u=40/3.6;
p=0.85;
g=9.8;a11=(k1+k2)/m/u;
a12=(a*k1-b*k2)/m/u-u;
a21=(a*k1-b*k2)/Iz/u;
a22=(a^2*k1+b^2*k2)/Iz/u;b11=-k1/m;
b12=-k2/m;
b21=-a*k1/Iz;
b22=b*k2/Iz;A=[a11,a12,0,0;a21,a22,0,0;1,0,0,u;0,1,0,0];
B=[b11;b21;0;0];
E=[0;0;0;-u];

2)设置权重系数–>Q矩阵、R矩阵

w1=1;
w2=100000;
w3=10000000;
w4=10;
w5=10000;Q=[w1,0,0,0;0,w2,0,0;0,0,w3,0;0,0,0,w4];
R=w5;

3)lqr(A B Q R)函数–>K矩阵

[P,K]=lqr(A,B,Q,R);

4)(K A B R Q E)矩阵–>SY SR矩阵

F=A'-K*B*inv(R)*B';
SY=inv(F)*Q;
SR=-inv(F)*K*E;

5)获得必须的中间参数

k11=K(1,1);
k12=K(1,2);
k13=K(1,3);
k14=K(1,4);k21=K(2,1);
k22=K(2,2);
k23=K(2,3);
k24=K(2,4);sy12=SY(1,2);
sy22=SY(2,2);sr11=SR(1,1);
sr21=SR(2,1);

获得输入变量 利用simulink工具箱:
1)设置carsim车辆模型的输出变量:
车辆侧向速度、横摆角速度、车辆质心大地坐标、期望路径坐标
在这里插入图片描述
2)对输出的侧向速度、横摆角速度进行单位转换得到侧向速度(m/s)、横摆角速度(rad/s)
在这里插入图片描述
3)利用期望路径横纵坐标计算期望路径的曲率(1/m)
首先计算路径的一阶导数和二阶导数
在这里插入图片描述
然后计算期望路径的曲率(1/m)
在这里插入图片描述
其中的function代码用于计算(1+y’*y’)^(1.5)
在这里插入图片描述
4)根据期望路径的曲率(1/m)、横摆角速度(rad/s)、车辆横向坐标计算期望横摆角速度(rad/s)、实际侧向偏移量(m)、实际横摆角偏移(rad)
在这里插入图片描述
其中的function用于平滑
在这里插入图片描述
获得输出变量 simulink模块
按照公式进行搭建
在这里插入图片描述

联合仿真

1)设置carsim车辆模型的输入变量为方向盘转角
在这里插入图片描述
2)将控制器输出变量转化为方向盘转角
前轮偏角乘以转向器的转向比(方向盘转角–>齿条偏移–>前轮偏角)
在这里插入图片描述
3)跑一下
先运行m文件 得到中间变量存在工作空间
在这里插入图片描述
然后运行simlunk
在这里插入图片描述结果:车辆实际路径基本可以保持在期望路径
在这里插入图片描述


http://www.ppmy.cn/news/379129.html

相关文章

Agisoft Metashape 如何让Python解释器使用Metashape模块

Agisoft Metashape 如何让Python解释器使用Metashape模块 文章目录 Agisoft Metashape 如何让Python解释器使用Metashape模块前言一、安装虚拟环境模块1.1在windows上安装虚拟环境模块1.2在 Linux 上安装虚拟环境模块二、在 PyCharm 中安装 Metashape 包前言 用Agisoft Metash…

AVL树的解析

我们在之前的学习里面已经发现了,搜索二叉树是有一些问题的。它可能会存在单边树的问题,如果你插入的值是有序的话,就会导致这个问题。 那我们肯定是要来解决一下的,如何解决呢? 》一种解决方案是AVL树,还有…

Spark数据倾斜解决方案六:随机前缀和扩容Join(包含完整案例代码)

如何扩容 两个RDD数据都特别多且倾斜的Key有成千上万个,该如何解决数据倾斜的问题?初步的想法:在倾斜的Key上加上随机数。该想法的原因:Shuffle的时候把Key的数据可以分到不同的Task里。加随机数有一个前提:必须知道哪些是倾斜的Key。但是,现在的倾斜的Key非常多,成千上…

如何修改hugging face的模型默认下载地址

主要原因是hugging face 的数据缓存比较大,jupyter执行的时候,需要加一个环境变量 方法一:在linux中指定环境变量 export HF_DATASETS_CACHE"/disk/cache/" export HF_HOME"/disk/cache/" export HUGGINGFACE_HUB_CACH…

推荐四种好看的加载动画,需要的自取

好看的四种加载动画,效果如图: 代码: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&…

Falcon 登陆 Hugging Face 生态

引言 Falcon 是由位于阿布扎比的 技术创新研究院 (Technology Innovation Institute, TII) 创建的一系列的新语言模型&#xff0c;其基于 Apache 2.0 许可发布。值得注意的是&#xff0c;Falcon-40B 是首个“真正开放”的模型&#xff0c;其能力可与当前许多闭源模型相媲美。这…

【动漫推荐】

动漫 排序是随便排的&#xff0c;加粗的是个人极力推荐的。 序号名称1镇魂街2狐妖小红娘3斗罗大陆4魔道祖师5星游记6弹珠传说7超神学院8超兽武装9武庚纪10妖神记11国宝特工12超兽武装13斗破苍穹14魁拔之殊途15一人之下16星辰变17少年歌行18灵笼19终结的炽天使20龙珠z21火影忍…

推荐几部好看的漫画,漫迷们不容错过的动漫新番哦

有人喜欢看玄幻打斗类的漫画&#xff0c;勾心斗角的宫斗漫画&#xff0c;也有人喜欢看纯纯的校园爱情漫画&#xff0c;以及幽默轻松的搞笑漫画......有句老话说&#xff0c;萝卜青菜各有所爱&#xff0c;今天小编就来推荐几部好看的漫画&#xff0c;漫迷们走过路过千万不要错过…