这个例子展示了如何使用looptune
为六自由度机械臂调整多回路控制器。
本例使用以下所示的六个程度的自由度机器人臂。此臂由标记的从底部到尖端六个关节的:“转盘”,“二头肌”,“前臂”,“手腕”,“手”和“抓取”。每个关节由DC马达除了使用两个直流电动机串联的二头肌关节致动。
图1:机械手。
cst_robotarm文件”。slx”包含了该系统的机电部分的万博1manbetxSimulink模型。
图2:机器人手臂的S万博1manbetximulink模型。
“控制器”子系统由6个数字PI控制器(每个关节1个)组成。每个PI控制器都是使用Simulink库中的“2-DOF PID控制器”块实现的(参见万博1manbetxPID调优用于定点跟踪和干扰抑制动机的例子)。控制采样时间为Ts=0.1 (10hz)。
图3:控制器结构。
通常,这样的多回路控制器是通过每次调整一个PID循环来依次调整的,并在循环中循环,直到整体性能令人满意为止。这个过程可能很耗时,而且不能保证收敛到最佳的整体调优。或者,您可以使用systune
要么looptune
根据系统级需求(如响应时间和最小交叉耦合),联合调优所有6个PI循环。
在这个例子中,手臂必须在大约1秒内移动到一个特定的配置,每个关节都要有平滑的角度运动。手臂以完全伸展的垂直姿势开始,除了二头肌角度为90度外,所有关节角度为0。末端配置由角度位置指定:转台= 60度,二头肌= 80度,前臂= 60度,手腕= 90度,手= 90度,夹持器= 60度。
在Simulink模型中按下“Play”按钮,以模拟在模型中指万博1manbetx定的PI增益值的角度轨迹。你可以先双击蓝色按钮,也可以显示机器人手臂的3D动画。角响应和3D动画如下图所示。显然,这种反应过于迟缓和不准确。
图4:未调优的响应。
机器人臂动力学是非线性的。了解有无臂可与一组PI涨幅得到控制,线性沿着感兴趣的轨迹不同点(快照倍)的工厂。这里的“植物”是指控制信号(PID块的输出)和测量信号(“6 DOF机器人手臂”块的输出)之间的动态关系。
SnapshotTimes = 0:1:5;工厂是从PID输出到机械手输出LinIOs = [...的LiNiO(“cst_robotarm /控制器/ turntablePID”,1“openinput”),...的LiNiO('cst_robotarm /控制器/ bicepPID',1“openinput”),...的LiNiO(“cst_robotarm /控制器/ forearmPID”,1“openinput”),...的LiNiO(“cst_robotarm /控制器/ wristPID”,1“openinput”),...的LiNiO(“cst_robotarm /控制器/ handPID”,1“openinput”),...的LiNiO(“cst_robotarm /控制器/ gripperPID”,1“openinput”),...的LiNiO(“cst_robotarm/6自由度机械臂”,1“输出”));LinOpt = linearizeOptions (“SampleTime”,0);寻求连续时间模型G =线性化(“cst_robotarm”,SnapshotTimes LinIOs LinOpt);大小(G)
6x1状态空间模型数组。每个模型有6个输出,6个输入,19个状态。
在t=0、1、2、3、4秒时绘制线性化模型与t=5秒时最终模型之间的差距。
G5 = G(:,:,结束);% t = 5G5.SamplingGrid = [];西格玛(G5,G(:,:,2:5)-G5,{1E-3,1e3}),网格标题(“线性化动力学沿轨迹的变化”)传说(在t=5秒处线性化,“绝对差异”,...“位置”,“西南”)
在低频率和高频率时,动态变化显著,但在10 rad/s附近,变化下降到10%以下,这大致是期望的控制带宽。在目标增益交叉频率附近的小的工厂变化表明,我们可以用一组PI增益来控制手臂,而不需要使用增益调度。
与looptune
,您可以直接调整所有六个PI环来实现所需的响应时间以最小的循环互动和足够的MIMO稳定裕度。控制器在连续的时间调整和写入PI增益回到Simulink中时自动离散化。万博1manbetx使用slTuner
接口,用于指定必须调优哪些块并定位工厂/控制器边界。
%线性化该植物在t = 3秒tLinearize = 3;创建slTuner接口TunedBlocks = {“turntablePID”,“bicepPID”,“forearmPID”,...“wristPID”,“handPID”,“gripperPID”};ST0 = slTuner(“cst_robotarm”、TunedBlocks tLinearize);将PID块的输出标记为工厂输入addPoint (ST0 TunedBlocks)将接头角度标记为设备输出addPoint(ST0,“6自由度机械臂”)%标记参考信号RefSignals = {...“裁判选择/不洁净的”,...“裁判选择/ bREF”,...“裁判选择/ fREF”,...'REF SELECT / WREF',...“裁判选择/ hREF”,...“裁判选择/ gREF”};addPoint (ST0 RefSignals)
在最简单的使用,looptune
只需要知道目标控制带宽,它应该至少是所需响应时间的倒数的两倍。这里期望的响应时间是1秒,所以尝试3 rad/s的目标带宽(记住,植物动态变化最小,接近10 rad/s)。
wc = 3;%目标增益交叉频率控制= TunedBlocks;%执行命令测量=“6自由度机械臂”;接头角度测量相约= looptune (ST0、控制测量、wc);
最终:峰值增益= 0.957,迭代次数= 10次,达到目标增益值TargetGain=1。
接近或低于1的最终值表示looptune
达到要求的带宽。比较初始控制器和调优控制器在角度位置上对step命令的响应。
T0 = getIOTransfer (ST0 RefSignals,测量);T1 = getIOTransfer (RefSignals相约,测量);选择= timeoptions;opt.IOGrouping =“所有”;opt.Grid =“上”;stepplot (T0,'b--',T1,“r”4选择)传说(“初始”,“调”,“位置”,“东南”)
y=1附近的六条沉降曲线代表各节点的阶跃响应,y=0附近的沉降曲线代表交叉耦合项。调谐的控制器是一个明显的改进,但有一些超调和二头肌反应需要很长时间来解决。
该2自由度PI控制器具有前馈和反馈两部分。
图5:两个自由度PID控制器。
默认情况下,looptune
只调整反馈回路,不“看到”前馈组件。这可以通过验证PI控制器的参数保持为初始值(类型showTunable(死神)
以查看调优值)。为了利用前馈作用,减少超调,将带宽目标替换为从参考角到关节角的明确的步进跟踪要求。
TR = TuningGoal.StepTracking (RefSignals,测量,0.5);ST2 = looptune (ST0、控制测量,TR);
最终:峰值增益= 0.766,迭代次数= 13达到目标增益值目标值目标值=1。
二自由度调谐消除超调和改善二头肌反应。
T2 = getIOTransfer (ST2 RefSignals,测量);stepplot (T1,“r——”,T2,‘g’4选择)传说(“1-DOF调优”,“双自由度优化”,“位置”,“东南”)
调整后的线性响应看起来令人满意,因此将PI增益的调整值写回Simulink块,并模拟整体机动。万博1manbetx仿真结果如图6所示。
writeBlockValue (ST2)
图6:调优的角响应。
二头肌关节的非线性响应明显冲。进一步的调查表明,两种可能的罪魁祸首。首先,将PI控制器是过于激进和饱和电机(输入电压限制在±5 V)。
图7:直流电机的输入电压(控制信号)。
第二,腕部和肱二头肌之间的交叉耦合效应,在进行测量时,会对肱二头肌的反应产生显著而持久的影响。要看这个,画出这三个关节的阶跃响应实际在机动过程中出现的台阶变化(肱二头关节-10度,腕关节90度)。
H2 = T2([2 4],[2-4])* DIAG([ - 10 90]);%按步幅缩放H2。u = {“二”,“手腕”};H2。y = {“二”,“手腕”};步骤(H2, 5),网格
为了改善这种特定的手臂动作的二头肌回应,我们必须保持交叉偶联反应小相对于最终的角位移在每个关节。要做到这一点,在缩放由基准角度振幅步骤跟踪需求交叉耦合项。
[6010 60 90 90 90 60];命令角度位移,以度为单位TR.InputScaling = JointDisp;
为了减少执行器的饱和,限制从参考信号到控制信号的增益。
你= TuningGoal.Gain (RefSignals控制6);
使用这些优化的调优目标重新调整控制器。
ST3 = looptune (ST0、控制测量、TR UR);
决赛:峰值增益= 1.13,迭代= 189
将比例响应与之前的设计进行比较。注意腕部和肱二头肌运动之间的耦合显著减少,无论是峰值还是总能量。
T2s = diag(1 /合营disp) * T2 * diag(合营disp);T3s = diag(1 /合营disp) * getIOTransfer(ST3,RefSignals,Measurements) * diag(合营disp);stepplot (t2,“g——”t3,'M'4选择)传说(“初始2- DOF”,“精二自由度”,“位置”,“东南”)
将重新调整的值推入Simulink进行进一步验证。万博1manbetx
writeBlockValue (ST3)
仿真结果显示在图8中二头肌响应是现在看齐其他关节在稳定时间的术语和平滑的过渡,并且有致动器饱和度比在以前的设计更小。
图8:角位置和与精制控制器的控制信号。
在3D动画证实,现在手臂快速,准确地移动到所需的配置。
图9:微调响应。
TuningGoal.MaxLoopGain
|TuningGoal.MinLoopGain
|TuningGoal.Tracking
|systune