本文主要是介绍笔记100:使用 OSQP-Eigen 对 MPC 进行求解的方法与代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. 前言:
我们在对系统进行建模的时候,为了减少计算量,一般都将系统简化为线性的,系统如果有约束,也是将约束简化为线性的;
因此本篇博客只针对两种常见系统模型的 MPC 问题进行求解:
- 线性系统 + 无约束
- 线性系统 + 线性约束
a
a
a
a
2. 线性系统 + 无约束的 MPC 问题求解
目前已知:
- 目标(代价)函数:
- 矩阵
,
,
均为正定矩阵;
- 线性系统状态空间方程:
- 当前时间步 k = 0 时系统的初始状态量:
注:代价函数和状态空间方程中的状态量 x 已经是误差量了;
a
求解方法:
- 动态规划(针对无约束的问题,根本不需要使用到二次规划,直接使用动态规划即可求解)
a
进行求解:
a
a
a
a
3. 线性系统 + 线性约束的 MPC 问题求解
目前已知:
- 目标(代价)函数:
-
- 矩阵
,
,
均为正定矩阵;
-
- 线性系统状态空间方程:
- 当前时间步 k = 0 时的初始状态量:
- 系统的目标状态值:
- 线性约束条件:
- 线性等式约束:
- 线性不等式约束:
- 线性等式约束:
注:代价函数和状态空间方程中的 x 并不是误差量,才是误差量;
a
求解方法:
- 二次规划
- 解释:因为系统带了约束,所以动态规划方法已经不好使了,这种方法无法处理带有约束条件的问题,而二次规划方法可以用来处理带有约束条件的问题,所以需要我们将问题等价转换为二次规划的形式,再调用 OSQP 求解;
3.1 将问题转化为二次规划的形式
(1)目标:
(2)代价函数的转化过程:
(3)约束条件转化:
参考文章:LQR、MPC以及osqp库_osqp mpc-CSDN博客
3.2 使用 OSQP-Egine 库求解二次规划问题
这篇关于笔记100:使用 OSQP-Eigen 对 MPC 进行求解的方法与代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!