概要:本文主要学习MPC约束、求解器以及优劣势的分析。
文章目录
前言
本文将对MPC约束的构建、求解器问题转化以及优劣势的分析等进行研究。
一、不等式约束的构建
在MPC模型中,除了输入、输出和系统状态的约束外,
还要考虑到以下的约束:
- 纵向安全距离的约束:保护车辆不与其它的车辆进行碰撞。
- 车辆速度的软约束:保证车辆的速度在安全的范围之内。
- 车辆横向硬约束和软约束:保证车辆轨迹在一定范围之内。
- 加速度软约束和硬约束:保证了安全性能和舒适性能的约束。
- 转向角变化的约束:和速度约束有关。
1.1 车辆纵向约束
(1)根据与前车的安全距离进行硬约束的构建,可以避免积分误差和初始条件不在优化范围内的情况。
(2)根据与前车的相对距离反向计算出合理速度值,用速度值进行硬约束的构建,用速度的积分来表示碰撞约束。但是会引入积分误差,导致碰撞约束不是很准确。
1.2 车辆速度约束
引入松弛因子的原因:
(1)由于环境或限制的突然变化,比如在开车突然进入下坡状态,速度可能超出最大速度,引入松弛因子,可以让MPC在找到解和违反约束中做出一个权衡;
(2)帮助我们初始条件不在可行域大的范围内的情况下可以收敛。
1.3 车辆横向空间约束
车辆横向空间约束有两种:
(1)不可以违反的硬约束:马路牙子、不能跨过路的边界
(2)可以违反的软约束:人类适合的驾驶范围
如图所示,横向距离加上车辆偏移不能超过我们的软边界,减去松弛因子不能超过我们的硬边界。
也就是说车辆的四个角都不能超过边界。
1.4 加速度约束
一般来说,当车辆纵向加速度很高时,车辆横向加速度相对减少,如高速加速行驶时,不会对方向盘有太大的动作;同样的车辆进行侧向加速度大的运动时,也会对纵向加速度进行限制,如车辆进行急转弯时,速度会有所下降,否则车会进行漂移,进入到非线性区域里面,很难控制车辆。
-
加速度硬约束(安全性):
(1)保证了ax,ay尽可能小于amax;
(2)利用合加速度进行综合考量及有效约束,保证安全性。 -
加速度软约束(舒适度)
1.5 总结
Curvilinear model能够很好的把横向和纵向的运动耦合起来,并且能够描述车辆运动与相对参考轨迹之间的关系;
目标函数将标准的目标函数扩展到加了松弛因子的软约束,引入了终值的目标函数,来保证系统的稳定性和可行性。
约束的建立:
(1)不等式约束
(2)状态约束
(3)执行器的输入约束
通过上述的解析,就可以找到优化的状态序列,并且将K时刻第一个优化的值作用到系统里面,达到优化的目的。
二、MPC求解器
对于线性无约束的情况利用DP进行求解;
对于线性有约束的情况利用QP进行求解;
(1)qpOASES、FORCES、OSQP能够解决线性有约束的情况;
(2)ACADO Codegen、acados、FORCES NLP能够解决非线性有约束的情况;
2.1 MPC加速
MPC问题转换为QP问题,
那么,解二次规划的问题的复杂程度:
(1)随着状态量的增大而增大
(2)随着约束量的增大而增大
(3)随着预测时长量的增大而增大
在自动驾驶应用中,我们要求的车辆控制是非常快的,为了保证实时性,采样时间往往很小都是毫秒级的,而且芯片的算例也是有限的。
快速MPC的方式:
- 简化模型,减少模型阶数,去除影响比较小的状态参数;
- MPC预测的时长变短;
- 减少约束的数量;
- 减少精确度的要求
系统化方法:
Explicit MPC
2.2 Explicit MPC
显性MPC把一部分在线Online变成了离线求解的Offline。
原理:按照不同初始状态的空间,提前计算好QP的值,这样在运用的时候直接查表就可以。
例:
假设一维二次规划问题:决策变量是z,
由图可知,当x大于-1/3时,z为正数可以取到极值点,当x小于-1/3时,z取不到极值点。
对于等式约束求极值的问题,可以使用拉格朗日乘子算法;
对于不等式约束求极值的问题,要使用KKT条件:
所以,对于QP问题来说,多参数的解其实是连续分段线性的求解。
所以,对于显性MPC我们可以一开始就计算好一部分优化问题,优化问题就可以变成分段函数,在不同的时间段有不同的表达,这样,到了Online优化过程可以根据不同的时期进行在线查表(X0所对应的最优解),速度就会提高很多。
但是,区间的个数和有限约束的个数呈指数增大,当问题的规模比较大的时候,存储内存的消耗也非常大,即使是查表也比较耗时,这也就是大多数只应用在自动化控制,在机器人领域很少使用。
三、MPC案例
实际中,我们所需要的参数比上述目标函数所示的要少。
- tracking(轨迹跟踪)MPC:terminal(终值目标函数可以不用考虑),重点在stage目标函数,重点关注轨迹每一个点的状态。
由三部分组成:
(1)模型是模型预测控制重要的一环,依据模型来做优化;
(2)建立约束;
(3)状态和输入保持在范围之内、松弛因子;
这样就可以得到一个控制优化序列。
3.1 模型(Model)
模型需要从准确性和计算便捷性(competition cost)做一个平衡。
线性自行车动力学模型(Linear Dynamic Bicycle Model)
线性化的模型对我们解决模型优化问题,多了很多求解器的选择,求解速度也会更快。
动力学模型如轮胎刚度、质量等信息都能够捕捉到车辆动力学对车辆的影响。尤其对大车、卡车、公交车等尤为重要,对小车就没那么重要。
3.2 构建代价函数(Objective/Cost function)
代价函数是我们改变汽车行驶行为的重要抓手。
代价函数主要由两个条件:
(1)跟踪能力(参加轨迹规划的参数)
(2)舒适性(车辆运动、感知危险的舒适性)
根据条件来进行目标函数的构建:
(1)tracking 能力建设(状态量):主要有位置误差ep、速度误差ev、航向角误差eΦ;
(2)comfor能力建设(输入量):主要是物理限制进行,主要是转向角和转向角速度以及加速度和加速度变化进行优化来控制我们的舒适度和有效性;
约束
最通用的是对车辆能力的约束,如转向角约束,转向角速度以及加速度和加速度变化都有物理上的约束限制。
约束条件还可以引用到状态量上,位置误差、速度误差等有约束限制。
3.3 MPC系统构建
- 构建模型(简单、性能好);
- 针对性构建损失函数(跟踪能力、舒适性);
- 选择目标函数里面的优化约束。
四、MPC优劣势
-
优点:
(1)控制器公式直观:只需要定义目标函数和相关约束,根据模型预测未来状态并进行优化,可以使用很成熟的求解器进行求解优化;
(2)可以将状态和控制信号限制在一个安全的范围内,并且可以选择同时最大化多个目标,使用软约束、硬约束等,可以给控制约束的问题给提供多个解决方案;
(3)MPC适用于线性和非线性的系统,意味着即使模型随着时间的变化发生改进,我们依然可以使用同样的方法进行优化。 -
缺点:
(1)计算量大、需要的计算资源多,可以优化公式避免处理器过载的问题,
(2)可能会不稳定,拿不到最终求得的解,可以根据具体的问题进行解决。
总结
本文主要是对于自动驾驶规划控制中模型预测的优化控制进行学习,主要介绍了MPC约束的构建、以及对于MPC求解器进行优化、MPC在具体案例中的应用,对MPC进行优劣势的分析,这篇文章希望可以对想要学习自动驾驶规划控制方向的同学们有一定的帮助。
喜欢的朋友们动动小手点个关注,我会定期分享我的一些知识总结和心得体会,感谢大家!