[运动控制算法]模型预测控制

文章目录

  • 前言
  • 一、基于运动学模型的模型预测控制
    • 1. 预测模型
      • 1.1 轨迹模型
      • 2.1 轨迹模型
    • 2. 在线滚动优化
    • 3. 反馈校正
  • 二、项目演示
  • 三、总结
  • 四、参考


前言

模型预测控制(MPC)是一种致力于将更长时间跨度、甚至于无穷时间的最优化控制问题,分解为若干个更短时间跨度,或者有限时间跨度的最优化控制问题,并且在一定程度上仍然追求最优解。模型预测控制由如下三个要素组成:

  • 预测模型:预测模型能够在短时间内很好地预测系统状态的变化。
  • 在线滚动优化:通过某种最优化算法来优化未来一段短时间的控制输入,使得在这种控制输入下预测模型的输出与参考值的差距最小。
  • 反馈校正:到下一个时间点根据新的状态重新进行预测和优化。

一、基于运动学模型的模型预测控制

1. 预测模型

1.1 轨迹模型

轨迹模型以3阶多项式模型为例,对X求导即为车身角度ψ的正切:
在这里插入图片描述

2.1 轨迹模型

以自行车模型为例,计算预测车辆轨迹,利用t时刻的状态去预测在t+1时刻的车辆状态。
[运动控制算法]模型预测控制_第1张图片

2. 在线滚动优化

假设我们给出一组控制参数,按照控制模型,会得到一个控制预测轨迹,

我们期望这组轨迹和我们的控制目标要要一致,但是这中间要经历运动模型(非线性)变换,并且我们知道的是一条3阶多项式,也要转化成油门转角,所以中间的模型参数,都需要建模处理。

现在我们知道控制目标(一串轨迹,或者3阶多项式),按照控制模型反求合适的控制参数,定义损失函数。

首先想到的一个损失函数就是我们的模型预测的轨迹和参考线之间的“差距”, 我们优化的目标就是找出一组控制量(即 油门刹车系数和方向盘转角),使得我们的Loss function最小化
在这里插入图片描述
上文中我们只考量未来10个时间间隔内的模型预测,所以i的取值范围是(1,10) 。
可以给损失函数添加更多项,比如想控制车辆在每个点上的速度,则添加一项速度的平方差:
在这里插入图片描述
为了控制平滑,如果希望油门系数不要突变,则将前后两个油门系数的差值的平方作为一项加入损失函数中:
在这里插入图片描述
损失函数可以更加完善,损失函数设计得越合理,模型预测控制的输入就越符合乘坐舒适性要求。


3. 反馈校正

MPC的简化示意图,可以看出,MPC本质上还是一种反馈控制,通过最优化方法得到一组控制输出以后,车辆执行控制指令,并且继续以一定的频率反馈当前车辆的状态 zt。这个状态会被同时输入到路径规划模块以及MPC控制模块,路径规划模块会依据新的车辆状态,结合感知模块的信息以及地图信息重新做出规划。MPC则根据新的参考路径和车辆当前状态进行新一轮的预测控制。需要注意的是,车辆真实状态的反馈并不是一个预测时间段的控制执行完以后才反馈的,反馈的时间间隔往往小于一个预测时间段。
[运动控制算法]模型预测控制_第2张图片


二、项目演示

基于两轮差速模型

【运动控制算法】模型预测控制(1)

【运动控制算法】模型预测控制(2)

基于自行车模型

【Autoware入门教程】如何使用MPC进行路径跟踪


三、总结

模型预测控制往往可以分解成如下几步:

  1. 从 t时刻开始,预测未来 a 步系统的输出信号
  2. 基于模型的控制信号以及相应的输出信号,构造损失函数,并且通过调整控制信号最优化损失函数
  3. 将控制信号输入到系统
  4. 等到下一个时间点,在新的状态重复步骤

四、参考

【1】一抹烟霞博客 基于运动学模型的模型预测控制
【2】一实相印博客 自动驾驶(六)---------模型预测控制

你可能感兴趣的:(控制)