MPC控制初长成——我陷过的误区

真正接触控制一个多月,现记录自己的误区,以警示自己:

1 . 离散与连续

我经常会拿到连续的系统,用离散的方式去控制,然后反复找原因,还是找不到。要记住:离散和连续要分开!!!,网上的例子大都是连续的!!!

重复一下之前的笔记:

装载系统:sys = ss(A,B,C,D)

转化为离散:sysd = c2d(sys,0.1)    0.1为采样时间

方便调用:Ad = sysd.A         Bd = sysd.B

调用内置函数求解Kd和P_lqr:

[Kd, P_lqr] = dlqr(Ad, Bd, Q, R)                      Q,R连续与离散通用,求解K值得P与MPC的H矩阵最后项的P是同一个P

(之前将连续和离散混在一起了,导致系统根本不稳定或是阶跃感太强,总之出现的样子你无法理解就想想是不是离散和连续搞混了)

2 . MPC的思想

误区,由X0计算出的一系列矩阵,最终得到的Z(包含u和x序列),错将此作为仿真输出;

事实上:误区中我们得到Z序列,而我们需要的也仅是第一项u,其他的没用,用此u控制系统,得到新的X1,新的X1当作X0

更新Beq,重新计算Z序列,得到的u继续控制系统,会得到X2,X2当作X0代入…………,X0,X1,X3,……XN才是我们需要的仿真值,在carsim中,车辆模型代替了系统,得到的X仍用于更新Beq,实车控制时,需要周期采集X来更新Beq,总之要有u作用于系统的思想。

茅塞顿开的感觉真棒,有人带的感觉真好,感谢王工,希望有一天自己也可以独当一面!!!加油

原文地址:https://www.cnblogs.com/niulang/p/9188076.html