(一)车辆建模
两自由度车辆模型为:
![](https://img-blog.csdnimg.cn/20210429202044261.png)
考虑
恒定不变,则上述模型可以看作一个输入为
、状态变量为
的控制系统,可以表示为:
![](https://img-blog.csdnimg.cn/20210429202253776.png)
对于参考轨迹,可以表示为:
![](https://img-blog.csdnimg.cn/20210429202333777.png)
将(2)式在
处泰勒展开,并忽略高次项,有:
![](https://img-blog.csdnimg.cn/20210429202508345.png)
记
、
,式(4)-(3)可得:
![](https://img-blog.csdnimg.cn/20210429202650343.png)
对上式进行离散化处理,可得:
![](https://img-blog.csdnimg.cn/20210429202727581.png)
所以,
![](https://img-blog.csdnimg.cn/2021042920280487.png)
记:
![](https://img-blog.csdnimg.cn/20210429202845249.png)
则(7)式可以写为:
![](https://img-blog.csdnimg.cn/20210429202945239.png)
由于系统矩阵A和输入矩阵B的元素随时间变化,所以上述系统是一个线性时变系统。
(二) LQR控制算法仿真
根据上一篇博文的分析,LQR设计步骤如下:
1)根据工程经验和性能分析,确定矩阵Qf、Q和R;
2)倒序求解P;
3)计算反馈矩阵K;
4)正序求解u(k)。
基于第一部分的车辆运动学模型,运用python对LQR控制算法进行仿真,跟踪一个圆形轨迹的仿真结果如下图所示。
![](https://img-blog.csdnimg.cn/20210429203555685.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1Jvbm5pZV9IdQ==,size_16,color_FFFFFF,t_70)
具体仿真总结如下:
1)R矩阵的选取
如果不对控制量(前轮转角)进行限制,R需要选择较大的值,比如这里选择86能达到较好的跟踪效果(见上图);如果R选择较小的值,比如取1,跟踪效果就会很差,如下图所示。
![](https://img-blog.csdnimg.cn/20210429203745317.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1Jvbm5pZV9IdQ==,size_16,color_FFFFFF,t_70)
此时,如果对控制量(前轮转角)进行限幅处理,可以提升跟踪效果,如下图所示。
![](https://img-blog.csdnimg.cn/20210429203952233.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1Jvbm5pZV9IdQ==,size_16,color_FFFFFF,t_70)
所以,选取较大的R可以减小控制量。
2)Q矩阵的选取
有资料指出:较大的Q可以得到较快的调节速度。
目前仿真下来还没有摸清楚Q选取的规律,只能说Q不能太大、也不能太小。
3)Qf矩阵的选取
将Qf取为0,也能达到较好的跟踪效果,如下图所示。如果对终端误差不作限制,Qf可以取为0。
![](https://img-blog.csdnimg.cn/20210429204244104.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1Jvbm5pZV9IdQ==,size_16,color_FFFFFF,t_70)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)