无人驾驶汽车系统入门(十)——基于运动学模型的模型预测控制
无人驾驶汽车系统入门(十)——基于运动学模型的模型预测控制
在前面的第五篇博客中,我们介绍了两种常见的车辆模型——运动学自行车模型和动力学自行车模型,本节我们基于运动学车辆模型引入一种新的控制理论—— 模型预测性控制 (Model Predictive Control) ,传统的PID控制器简单易于实现,被广泛应用,但是它并不一定能够以最“节约”的方式进行控制,即所谓的 优化控制, 而MPC则是一类追求短时间间隔内最优化控制的理论,此外,PID控制是实际的车辆控制中存在延迟问题,而MPC则可以将这种延迟考虑到车辆模型中去,从而避免这个问题。所以,我们本节将从理论以及和无人驾驶实践相结合来讨论模型预测控制。
创作不易,转载请注明出处:http://blog.****.net/adamshan/article/details/79083755
将PID控制应用于无人车的问题
PID作为一种反馈控制方法,因其简单易实现被大量应用。但是在实际的车辆控制中,车辆往往不能立刻执行我们所下的指令,这其中存在一定的延迟,也就是说,我们的控制指令会在“未来的车辆状态”被执行,但是,由于PID是一种反馈控制,控制的指令使用当前车辆所处的状态决定的,然而当制动的指令被执行的时候,由于存在一定的延迟,车辆已经处于“未来的状态“了,在这个”未来的状态”使用这个指令去制动就会有一定的危险性。这是在无人车控制中使用PID算法的最大问题。
什么是模型预测控制
模型预测控制(MPC)是一种致力于将更长时间跨度、甚至于无穷时间的最优化控制问题,分解为若干个更短时间跨度,或者有限时间跨度的最优化控制问题,并且在一定程度上仍然追求最优解。模型预测控制由如下三个要素组成:
- 预测模型:预测模型能够在短时间内很好地预测系统状态的变化
- 在线滚动优化:通过某种最优化算法来优化未来一段短时间的控制输入,使得在这种控制输入下预测模型的输出与参考值的差距最小
- 反馈校正:到下一个时间点根据新的状态重新进行预测和优化
下面我们分别从这三个方面来讨论模型预测控制理论。
预测模型
在本文中,我们使用运动学自行车模型作为预测模型,它的形式如下:
那么各个状态量的更新公式如下:
其中
公式的具体含义参见我的第五篇博客。基于以上的公式,在给定一个控制指令的情况下,我们的这个预测模型能够根据运动学的规律计算出
我们从下图的情况出发进行讨论,下图是一条 S 路,图中的虚线是我们的参考线,我们控制的目标是让车辆尽量沿着参考线行驶:
我们选取10个
在线滚动优化
那么现在问题就变成了一个最优化的问题,参照我们在神经网络优化中的经验,首先我们需要定义损失函数(Loss function),在本问题中,我们首先想到的一个损失函数就是我们的模型预测的轨迹和参考线之间的“差距”, 即 CTE(Cross Track Error),我们优化的目标就是找出一组控制量(即
上文中我们只考量未来10个时间间隔内的模型预测,所以i的取值范围是
再进一步,损失函数还可添加许多项使控制变得更加平滑,比如我们希望油门系数不要突变(即缓慢的才油门和刹车,这样乘客的体验会更加舒适),那么我们就可以将前后两个油门系数的差值的平方作为一项加入到损失函数中:
以此类推,损失函数还可以更加完善,损失函数设计得越合理,模型预测控制的输出也就也符合人的需求。当然,除了损失函数意外,我们的这个最优化问题中的变量还是 带约束的 ,比如说车辆的前轮转角
假设我们车辆的制动延迟是
反馈矫正
如图所示是MPC的简化示意图,可以看出,MPC本质上还是一种反馈控制,当我们通过最优化方法得到一组控制输出以后(本例中就是未来10步的控制输出),车辆执行控制指令,并且继续以一定的频率反馈当前车辆的状态
小结
通过使用不同的预测模型和损失函数,可以构造出各种模型预测控制器,但是,总的来说,模型预测控制往往可以分解成如下几步:
1. 从
2. 基于模型的控制信号以及相应的输出信号,构造损失函数,并且通过调整控制信号最优化损失函数
3. 将控制信号输入到系统
4. 等到下一个时间点,在新的状态重复步骤1