Motion Planning for Mobile Robots 学习笔记8
模型预测控制是控制的一个自学科,涉及建模、优化等领域。
在此处重点关注模型预测控制在机器人学和运动规划中的运用。
Overview
- Introduction
- Linear Model Predictive Control(MPC)
- Non-linear MPC
- Homework
注意:
线性MPC往往解决凸的问题,而非线性MPC往往是一些非凸的问题。
大部分工程问题特别是运动规划中都需要使用非线性MPC。
但对于线性/非线性MPC,其核心都是解优化的过程。
但重点不在于讲解优化问题的本质和数学方法,而是多介绍求解的算子与软件工具包。
Introduction
什么是模型预测控制
-
模型
什么是模型?
物理学模型:
知道一个质点的力与质量,就可以求出其位置、速度、加速度,可以完整地描述质点在未来的轨迹。- 系统模型
也即其运动轨迹的描述。
有时候系统模型可以用简单的线性方程描述。 - 问题模型
例如,质点需要到红色的目标点去。那么,\({\rm min}(p-p_d)\)称之为问题模型。
但问题模型(优化目标)往往非常复杂,因此不得不用非线性的方法解决问题。
- 系统模型
-
预测
- 状态空间
- 输入空间
给定一定的输入,其他状态(状态空间中的量)如何变化。 - 参数空间
由于现实世界是连续的,因此其求解十分困难。
将力的变化放在参数空间中表达,将其变为有限阶的优化问题。
-
控制
- 选择最佳策略的过程
模型预测控制的一个经典描述
模型
其代价函数由两部分组成,一是final-cost\(C_{F}\left(x\left(t_{f}\right)\right)\),二是running-cost\(\int_{t=t_{0}}^{t_{f}} C_{R}(x, u) d t\)。
约束条件:
- 动力学约束(系统方程)
- 不等式条件(速度、加速度约束)
- 等式条件(起始点、终点约束)
- 避障条件(往往是非凸的)
参数空间
- 零阶保持器(直接离散化)
给出离散频率直接离散。 - 多项式表示\(u(t)\)(含B-样条等)
- 非线性方法
- 数值解
- 机器学习的方式(如神经网络)
优化
- 搜索:
- 图搜索
- 基于随机抽样的搜索
- 凸优化:
- 二次编程
- 非凸优化:
- 顺序二次编程
- 粒子群优化(针对非凸,非线性,不连续)
控制
Receding Horizon Control
- 设置优化问题。
- 进行当前状态测量并最终确定优化问题。
- 解决优化问题并得到u *。
- 在短时间内应用u *。
Tube based MPC
以极低的频率求解优化问题,随之以较高频率控制实际系统。
Tube:使实际系统状态在理想状态附近的一个“管道”内。
代码库
- Matlab MPC toolbox
https://www.mathworks.com/products/mpc.html
内置了大量教程。 - HAO-MPC
http://ifatwww.et.uni-magdeburg.de/syst/muAO-MPC/ - Acado toolkit
https://acado.github.io/
实现了Real time interration
非线性MPC
前3个可一键生成代码。
- YANE
http://www.nonlinearmpc.com/
集成了大量非线性MPC算子
以上4个均为数值计算方法。
- Multi-Parametric Toolbox 3
https://www.mpt3.org/
实现了显示MPC的方法,进行查表寻找解析解
Linear MPC
basics
其中\(B_p\)、\(B_v\)、\(B_a\)是关于\(p_0\)、\(v_0\)、\(a_0\)的函数;
\(T_p\)、\(T_v\)、\(T_a\)是系数矩阵,\(J\)是参数空间,选定一组参数空间值后,可通过预测模型得到系统状态未来的值。
问题模型:
目标1:达到零位置,零速度和零加速度。
目标2:平滑的轨迹。
优化:
凸二次规划问题(hessian矩阵正定)
标准的4段式方法:
解析解:
硬约束
Less equal form是因为很多求解器仅可输入小于等于的约束条件。
模型预测控制与运动规划的不同:
由于必须在predication horizon内完成,在限制了速度与加速度之后,如果必须要求最终到达终点,很可能会没有解。
因此,大部分MPC会把终点限制放在目标函数而不是约束条件。
在MPC中也可以改变其predication horizon,但其值的增大会带来更大的计算量,过短的predication horizon会无法镇定系统(系统发散)。
软约束
如果不可避免地违反了速度和加速度约束怎么办?
如果使用硬约束:
- 求解器不会报告任何求解!!
- 控制器不知道该怎么办。
如何施加软约束?
加入软约束后,其不能再化为二次优化问题。
但大部分MPC算子是针对二次优化的,怎么办?
方法:
\(L\)是足够大的正数向量,以使得约束始终成立。
但不希望\(L\)过大,以免超过约束条件过多。
在目标函数中加入\(\omega_5L^TL\)。
然后所有的H,F,A,b矩阵都应进行相应调整。
\(\omega_5\)会给的很大,以使系统先将其拉回满足约束的状态,再考虑其他优化目标。
如何设置约束?
- 状态约束->使用软约束
它们受测量噪声和干扰的影响 - 输入约束->使用硬约束
它们可以任意更改,违反它们可能会损害物理系统。
线性MPC局限性:
- 它通常需要线性模型,或者模型可以合理地线性化(自适应MPC)。
- 本质上,障碍约束通常是非凸的。
非凸的优化算子(如SQP)往往对初值敏感。