基于LQR的车辆LKA算法设计

记录分享一下基于LQR控制算法的车辆LKA设计,通过carsim和simulink进行联合仿真。

1控制算法设计

基于LQR的车辆LKA算法设计
整体思路是通过车辆以及道路模型,得到控制器的输入(v:纵向速度,r:横摆角速度,y:侧向路径偏移,phi:横摆角误差),通过最优控制器输出前后轮转角给车辆。控制器的四个输入可以写为状态空间方程的形式,因此需要给出将四个输入的表达式。
基于LQR的车辆LKA算法设计
这里车辆模型采用车二*度模型,可以看出里面包含了v和 r 的表达式,因此,只需求出y和phi的表达式。
基于LQR的车辆LKA算法设计
基于LQR的车辆LKA算法设计
四个状态变量都有了,将其整理得到状态空间模型,如图:
基于LQR的车辆LKA算法设计
基于LQR的车辆LKA算法设计
有了控制器的状态空间方程,接下来通过定义性能指数,目标是通过寻找最优控制量u使得 I 最小。
基于LQR的车辆LKA算法设计
基于LQR的车辆LKA算法设计
基于LQR的车辆LKA算法设计
此时得到了车辆输入的表达式,只要在simulink中搭建模型即可。

2 carsim搭建模型

车辆模型采用软件自带的C级车,车辆参数基本不做修改,但由于采用四驱模式,在转向系统中加入rear steering即可。
基于LQR的车辆LKA算法设计
接下来是工况的设置,车速设置有40km/h。
基于LQR的车辆LKA算法设计
接下来是道路的设计,采用正弦道路进行道路保持仿真。
基于LQR的车辆LKA算法设计
carsim输入输出如下:
基于LQR的车辆LKA算法设计
基于LQR的车辆LKA算法设计
其中,carsim接受simulink的方向盘转角输入,输出车速,横摆角速度,车辆坐标以及期望的路径坐标给到simulink。

3 simulink模型搭建

基于LQR的车辆LKA算法设计
首先是期望路径坐标的模块,求出Y target的两阶导数和一阶导数,用来后续计算道路曲率和侧向路径偏差。
基于LQR的车辆LKA算法设计
控制器模块如下:
基于LQR的车辆LKA算法设计
各子模块都是根据之前推出来的表达式搭建的,最后两个输出前的传递函数模块是用来模拟实际转角信号,避免出现阶跃转角信号的情况。控制器搭建完了,但是根据之前的公式,很多常量还没给到控制器,可以在matlab中将车辆信息比如质量,前后轴距,轮胎侧偏刚度等给到控制器,还需要利用matlab lqr函数求解k,再根据Riccati方程求出s,可得到控制器的所有参数,最后看一下carsim中的仿真效果,可以看出车道保持的效果还是不错的。

基于LQR的车辆LKA算法设计

有不懂或者感兴趣的可以私信我,大家一起学习进步。