调整倒立摆
在这个经典的控制系统问题中,要设计一个控制器,使一个处于不稳定平衡的系统达到稳定. 将倒立摆关于垂直位置线性化. StateFeedbackGains 给出一个可被认为是控制器的矩阵,它把极点放在复平面的左半部分. 然后对闭环系统进行两次仿真.
pendulum = StateSpaceModel[{(M + m)x''[t] - m l Sin[θ[t]] θ'[t]^2 + m l Cos[θ[t]] θ''[t] == F[t] + d[t] Cos[θ[t]], m x''[t] Cos[θ[t]] + m l θ''[t] == m g Sin[θ[t]] + d[t]}, {θ[t], θ'[t], x[t], x'[t]}, {F[t], d[t]}, {θ[t], x[t]}, t] /. {M -> 5.6, m -> 0.53, l -> 0.85, g -> 9.8};
poles = {-1 + 2I, -1 - 2I, -5, -7};k = Join[StateFeedbackGains[SystemsModelExtract[pendulum, 1], poles], {ConstantArray[0, 4]}]Plot[OutputResponse[{SystemsModelStateFeedbackConnect[pendulum, k], {0, 0.01, 0, 0}}, {0}, {t, 4}]//Evaluate, {t, 0, 4}, PlotRange -> All, PlotStyle -> {Blue, Red}, Epilog -> Inset[Column[{Style["x(t)", 10, Blue], Style["θ(t)", 10, Red]}], {3, 0.004}], AxesLabel -> {"t"}]Plot[OutputResponse[SystemsModelStateFeedbackConnect[pendulum, k], {0, UnitStep[t] - UnitStep[t - 1]}, {t, 4}]//Evaluate, {t, 0, 4}, PlotRange -> All, PlotStyle -> {Blue, Red}, Epilog -> Inset[Column[{Style["x(t)", 10, Blue], Style["θ(t)", 10, Red]}], {3, 0.5}], AxesLabel -> {"t"}]