112、MPC:线性MPC与二次规划求解

发布时间:2026/5/21 20:18:56

112、MPC:线性MPC与二次规划求解 112、MPC:线性MPC与二次规划求解去年在调试一个四轮差速底盘循迹项目时,我遇到了一个诡异的抖动问题。底盘在直线段跑得挺好,一到弯道就开始“点头”——不是机械间隙那种咔哒响,而是控制量在相邻周期里来回跳变,像有人在跟方向盘较劲。PID调了三天,增益从大到小试了个遍,最后发现是预测时域和约束条件没匹配好,导致QP求解器在边界上反复震荡。那次之后我才真正理解,MPC不是把公式抄进代码就能跑的东西,你得跟求解器“交朋友”。从“预测”到“优化”的直觉MPC的核心逻辑其实很朴素:每走一步,往前看几步,算一个最优的走法,然后只迈出第一步,到了新位置再重新算。但这里有个关键——你往前看的时候,得知道系统接下来会怎么动。这就是“模型”的用处。线性MPC假设系统是线性的,或者至少在某个工作点附近可以近似成线性的。状态方程写成:x(k+1) = A x(k) + B u(k)这个式子看起来简单,但实际写代码时有个坑:A和B矩阵的离散化。很多人直接用连续系统的A和B,采样周期一长,预测出来的轨迹就飘了。我习惯用零阶保持法做离散化,如果采样周期在1ms到10ms之间,用一阶泰勒展开近似也凑合,但超过10ms就别偷懒了,老老实实算矩阵指数。代价函数:你真正在乎什么MPC的代价函数通常写成二次型:J = Σ (x_ref - x)^T Q (x_ref - x) + Σ u^T R u + Σ Δu^T S Δu这里Q、R、S三个权重矩阵决定了控制器的性格。Q大,系统响应快但容易超调;R大,控制

相关新闻