基于MPC的自适应巡航控制

关于MPC(模型预测控制),网上的理论很多,简单易懂的,复杂全面的都有。这边我也记录一下MPC的学习,主要是通过汽车ACC的例子,这里汽车模型只是简单的积分器,主要目的还是MPC的一个应用。

1,simulink模型搭建

基于MPC的自适应巡航控制_第1张图片
(中间的相减模块不小心被注释掉了,不想打开Matlab重新截图了,因为懒,直接编辑了一下,ahhh)
首先分别用两个积分器表示前车与本车的速度与位置的变化,左上角的sine模块来模拟前车加速度的变化,我们的目的是通过两车之间的距离、本车的车速以及设定的本车车速限制来作为控制器的输入,输出是本车的加速度值,制器通过一个Matlab function 模块来实现。

2 MPC控制器

基于MPC的自适应巡航控制_第2张图片
首先定义主函数的输入输出,初始值,周期和步长,一般来说,步长和周期的选取和系统相关,步长选取过长,只会增加计算量,且通常我们只取求出来第一个控制量。步长选取过小,预测效果可能不太好。一般选取预步长的20%作为控制步长,当然也可以将两者设置为一致,不能一概而论。周期的选取类似,一般选取开环系统响应上升时间5%到10%。myOptimizer是模型的求解函数,其参数为周期,步长,本车速度,设定速度,两车距离。
基于MPC的自适应巡航控制_第3张图片求解器采用fmincon来求解,(后续会换成quadprog来求解),首先是fmincon的一些设置,包括迭代步数,算法等,其次是初始值,上下界设定,在求解过程中还涉及到两个子函数,一个是代价函数,一个是约束函数。
基于MPC的自适应巡航控制_第4张图片
第一个为代价函数,v为预测的本车速度与设定速度做差,o为代价函数,其中v的二次型表征本车车速跟随设定车速的能力。
第二个为约束,分为等式约束c和不等式约束ceq,等式约束条件为两车的实际距离与预测的距离之间存在一个安全距离,这个安全距离跟速度有关,即速度越快,安全距离越大,也即c小于等于零。

3运行结果

基于MPC的自适应巡航控制_第5张图片
回到simulink‘,设置好积分器的初始值,以及目标车加速度的频率和初值(注:如果频率太快,会影响跟踪效果),如上图为速度的比较,黄线为目标车,蓝色为本车,仿真开始,本车先加速,朝设定的车速30靠近,当本车车速大于目标车速时,两车的距离会减小,当块接近安全距离时,MPC会让本车速度下降来保持安全距离。下图为两车距离的变化,可以看到,两车的距离保持效果还是较好的。
基于MPC的自适应巡航控制_第6张图片

你可能感兴趣的:(基于MPC的自适应巡航控制)