![454a92af36d50e779452245c371dd77e.png](https://i-blog.csdnimg.cn/blog_migrate/b3ac6e20b03104979b85d046df816e95.jpeg)
摘要
本篇文章主要介绍利用模型预测控制作为上层控制器,PID作为下层控制器来实现无人驾驶车辆对特定工况下车速的跟踪。
设计思路
一、 设计模型预测控制器
该模型预测控制器有一个输入和两个输出,输入为当前车辆的车速,输出为期望的车辆加速度和目标车速。之所以叫上册控制器,在我看来,是控制器的输出是一种对目标控制量进行间接控制的量,加速度就是调控速度的间接量。我们不能在现实中对车辆输入一个加速度,而我们实现车辆加速的常规操作是踩油门。
二、 设计下层控制器
下层控制器是PID控制器,这一块,主要引用了便于调参的模块PID controller, 以模型预测控制器的输出(期望加速度)和车辆的实际加速度的误差为输入,输入为发动机的油门开度。这里,需要指出的一个细节是:在Tune PID参数时,应在无延时情况下进行。对于存在代数环的模型,往往我们会使用延时模块来消除。但是对于error和warning两种情况下,调PID controller时,要加以区分,error下是硬性的,必须加延时模块,而warning下,可以先Tune PID Controller,再加延时模块,这样,控制的准确度会更高。如果在warning下,先加延时,再调PID,则结果会很惊人,完全不是你想要的那种。
模型建立
一、建立目标车速模型
本文选择的目标车速是根据之前的一篇用Simdriveline得到的连续换挡加速的车速。目标车速与实际车速的误差计算主要在MPC控制器中进行,同时为了便于观察,也会在MPC中映出一个输出口用来输出目标车速,以便后续步骤。由于目标车速是在simulink中以变步长的形式仿真得到,因此,在采样时间点上并不严格遵循一个固定采样时间。通过神经网络来拟合复杂的目标车速曲线,是一种比较理想方案。本文利用的神经网络模型是五层六隐含单元的前馈神经网络,计算得到的均方误差在0.01个数量级,非常理想。之后,编写拟合的函数,用于MPC控制器计算目标车速。
二、建立发动机模型
一般的车辆仿真会让你用一个外特性来做车辆仿真,也即用三阶甚至五阶拟合公式来表示发动机转矩和转速的关系。但是在通用性方面,这一方法并不可取。在Carsim或者其他车辆仿真软件中可以获得一些发动机的数据。即Te = F(n , a)。通过神经网络拟合,可以得到很好的近似表达。分别五层六隐含单元神经网络和一百六十单元的径向基函数神经网络对数据进行处理,前者的均方误差>200,后者的均方误差<30。
仿真结果
![4a9924f3a4feb7a49eb48395f6b240f1.png](https://i-blog.csdnimg.cn/blog_migrate/2f16ff255219fc3ed7a4e650ca5ae66e.png)
实际车速(km/h)
![db8200e16ba4f4500543709159489f99.png](https://i-blog.csdnimg.cn/blog_migrate/d10d5bf5ae15727471d61877f3945042.png)
目标车速(km/h)
![b12144490eb4c7f8e5e524267f0c3b80.png](https://i-blog.csdnimg.cn/blog_migrate/5a0f8391f5f56302c6624ee812aaef48.png)
相对误差
以下附上以控制量U的真实值为变量的模型预测控制代码
function
进一步需要探索与解决的问题
- 相对误差类正弦状波动以及末尾处有上升趋势
- 选档决策,换挡动作的纯数学模型的建立。
谢谢阅读,如有不足或者错误,还望批评指正。
更多精彩内容欢迎关注公众号:豪杰仿真科技