控制一个倒立摆上的车

这个示例使用systune控制车上的倒立摆。

摆/车总成

cart/钟摆组装如图1所示,并在Simulink中使用Simscape Multibody建模。金宝app

图1:小车上的倒立摆

图2:Simscape多体模型

这个系统是通过施加一个可变的力来控制的$ F $在购物车。我们需要保持钟摆直立,同时移动推车到一个新的位置或当钟摆推动前进(脉冲干扰dF美元)。

控制结构

立摆是倒立摆的不稳定平衡。工厂的不稳定性使得控制任务更具挑战性。在本例中,我们使用了如下的双环控制结构:

open_system (“rct_pendulum.slx”)set_param (“rct_pendulum”,“SimMechanicsOpenEditorOnUpdate”,“关闭”);

内环使用一个二阶状态空间控制器来稳定摆的垂直位置(\θ美元外环使用比例导数(PD)控制器来控制小车的位置。注意,我们使用PD而不是PID控制器,因为工厂已经提供了一些积分动作。

设计要求

使用TuningGoal指定所需闭环行为的需求。指定3秒的响应时间来跟踪购物车位置的设定值更改x美元

%跟踪x命令req1 = TuningGoal.Tracking (“xref”,“x”3);

充分抑制脉冲干扰dF美元在钟摆的顶端,使用该表单的LQR惩罚

$ $ \ int_0 ^ \ infty(16 \θ^ 2 (t) + x ^ 2 (t) + 0.01 F ^ 2 (t)) dt $ $

这强调了一个小的角度偏差\θ美元并限制控制努力$ F $

脉冲干扰抑制率Qxu = diag([16 1 0.01]);req2 = TuningGoal.LQG (“dF”,{“θ”,“x”,“F”}1 Qxu);

为了稳健性,需要至少6db的增益裕度和40度的相位裕度。

%稳定利润req3 = TuningGoal.Margins (“F”6、40);

最后,对闭环极点的阻尼和固有频率进行约束,以防止跳变或欠阻尼瞬态。

%杆位置MinDamping = 0.5;MaxFrequency = 45;req4 = TuningGoal.Poles (0 MinDamping MaxFrequency);

控制系统优化

对于PD和状态空间控制器的初始值(1和),闭环系统是不稳定的2美元/ s $分别)。您可以使用systune联合调优这两个控制器。使用slTuner接口来指定可调块并注册工厂输入F作为测量稳定裕度的分析点。

ST0 = slTuner (“rct_pendulum”,{位置控制器的,“角控制器”});addPoint (ST0“F”);

下一步,使用systune根据上面指定的性能要求来调整PD和状态空间控制器。根据稳定裕度和极点位置约束(硬要求)优化跟踪和干扰抑制性能(软要求)。

rng(0) Options = systuneOptions(“RandomStart”5);[ST, fSoft] = systune(ST0,[req1,req2],[req3,req4],Options);
最后:软= 1.38,= 0.99851,最后迭代= 313:软= 1.44,= 0.99925,最后迭代= 157:软= 1.44,= 0.99858,最后迭代= 300:软= 1.27,= 0.99402,最后迭代= 265:软= 1.44,= 0.99986,最后迭代= 277:迭代软= 1.4,= 0.99855,= 257一些闭环极点略微稳定(衰变率接近1 e-07)

最佳设计的软需求值接近1,同时满足硬需求(< 1)。这意味着调谐后的控制系统在满足稳定裕度和极点位置约束的同时,几乎达到了跟踪和抗干扰的目标性能。

验证

使用viewGoal以进一步分析最佳设计如何应对每个需求。

图(“位置”,[100 100 575 660]);viewGoal ([req1、req3 req4],圣)

这些情节证实了前两个要求几乎得到了满足,而后两个要求得到了严格的执行。接下来,绘制对位置上的步进变化和对推车上的力脉冲的响应。

T = getIOTransfer (ST, {“xref”,“dF”},{“x”,“θ”});图(“位置”,[100 100 650 420]);次要情节(121),步骤(T(: 1), 10)标题(“跟踪设定值的位置变化”) subplot(122), impulse(T(:,2),10)"抑制冲动干扰")

在期望的稳定时间内,响应是平滑的。检查控制器的调谐值。

C1 = getBlockValue(圣位置控制器的)
C1 = s Kp + Kd *——Tf*s+1,其中Kp = 5.96, Kd = 2.06, Tf = 0.0534。
C2 = zpk (getBlockValue(圣“角控制器”))
C2 (s + 12.9) = -1596.7 (s + 4.396) - - - - - - - - - - - - - - - - - - - - - - - - - - - - (s + 134.3) (s - 14.18)名称:Angle_Controller连续时间零/钢管/增益模型。

请注意,角度控制器有一个不稳定杆,它与植物不稳定杆配对以稳定倒立摆。要查看这个,在植物输入处获取开环转移并绘制根轨迹。

L = getLoopTransfer(圣,“F”1);图;rlocus (L)集(gca,“XLim”20 [-25],“YLim”20 [-20])

要完成验证,需要将调优后的值上传到Simulink,并模拟cart/摆锤组件的非线性响应。金宝app模拟结果的视频如下所示。

writeBlockValue (ST)

图3:带有调谐控制器的购物车/钟摆仿真。

仿真后关闭模型。

set_param (“rct_pendulum”,“SimMechanicsOpenEditorOnUpdate”,“上”);close_system (“rct_pendulum”,0);