主要内容

机械臂的多环PI控制

这个例子展示了如何使用looptune为六自由度机械臂机械臂调整多回路控制器。

机械臂模型与控制器

本例使用如下所示的六自由度机械臂。该机械臂由六个关节组成,从底部到尖端标记为:“转盘”、“二头肌”、“前臂”、“手腕”、“手”和“夹持器”。每个关节由直流电机驱动,但二头肌关节除外,二头肌关节使用两个直流电机串联。

图1:机械臂机械手。

cst_robotarm文件”。slx”包含该系统的电气和机械部金宝app件的Simulink模型。

图2:机械臂的Sim金宝appulink模型。

“控制器”子系统由六个数字PI控制器组成(每个关节一个)。每个PI控制器都是使用Simulink库中的“2-DOF PID控制器”模块实现的金宝appPID整定跟踪与干扰抑制动机的例子)。控制采样时间Ts=0.1 (10 Hz)。

图3:控制器结构。

通常,这样的多回路控制器是通过一次调整一个PID环和循环循环的循环顺序调整,直到整体行为是令人满意的。这个过程可能很耗时,并且不能保证收敛到最佳的总体调优。或者,您可以使用systunelooptune根据响应时间和最小交叉耦合等系统级要求,联合调整所有6个PI回路。

在这个例子中,手臂必须在大约1秒内移动到一个特定的位置,每个关节都要有平滑的角度运动。手臂以完全伸展的垂直位置开始,除了肱二头肌角度为90度外,所有关节角度为零。末端配置由角位置指定:转台= 60°,二头肌= 80°,前臂= 60°,手腕= 90°,手= 90°,夹持器= 60°。

在Simulink模型中按下“Play”按钮,模拟模型中指定的金宝appPI增益值的角轨迹。你可以先双击蓝色按钮来显示机械臂的3D动画。角度响应和3D动画如下所示。显然,回应过于迟缓和不准确。

图4:未调优的响应。

线性的植物

机械臂动力学是非线性的。为了了解机械臂是否可以用一组PI增益进行控制,沿着感兴趣的轨迹在不同的点(快照时间)对设备进行线性化。此处“设备”指控制信号(PID块的输出)和测量信号(6自由度机械臂的输出)之间的动力学块)。

SnapshotTimes = 0:1:5;% Plant是从PID输出到机器臂输出LinIOs = [...利尼奥(“cst_robotarm /控制器/ turntablePID”, 1“openinput”),...利尼奥(“cst_机器人手臂/控制器/bicepPID”, 1“openinput”),...利尼奥(“cst_robotarm /控制器/ forearmPID”, 1“openinput”),...利尼奥(“cst_robotarm /控制器/ wristPID”, 1“openinput”),...利尼奥(“cst_robotarm /控制器/ handPID”, 1“openinput”),...利尼奥(“cst_robotarm /控制器/ gripperPID”, 1“openinput”),...利尼奥('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=[];sigma(G5,G(:,:,2:5)-G5,{1e-3,1e3}),网格标题(沿轨迹线性化动力学的变化)传说(' t= 5s时的线性化'“绝对变化”...“位置”“西南”

当动态在低频和高频显著变化时,在10 rad/s附近变化小于10%,这大致是所需的控制带宽。目标增益交叉频率附近的小变化表明,我们可以用一组PI增益来控制手臂,而不需要采用增益调度。

使用LOOPTUNE调整PI控制器

looptune,您可以直接调整所有六个PI环路,以获得所需的响应时间,同时实现最小的环路交互和足够的MIMO稳定裕度。控制器在连续时间内进行调整,并在将PI增益写入Simulink时自动离散化。使用金宝appslTuner接口来指定必须调优哪些块,并定位设备/控制器边界。

%在t=3s时对设备进行线性化tLinearize = 3;%创建slTuner接口TunedBlocks={“turntablePID”“bicepPID”“forearmPID”...“wristPID”“handPID”“gripperPID”};ST0=单反调谐器(“cst_robotarm”、TunedBlocks tLinearize);%将PID块的输出标记为植物的输入addPoint (ST0 TunedBlocks)%标记关节角度作为植物的输出添加点(ST0,“6自由度机器人手臂”标记参考信号参考信号={...“裁判选择/不洁净的”...“裁判选择/ bREF”...“裁判选择/ fREF”...“参考选择/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达到所请求的带宽。比较初始和调谐控制器在角位置的阶跃命令的响应。

T0 = getIOTransfer (ST0 RefSignals,测量);T1 = getIOTransfer (RefSignals相约,测量);选择= timeoptions;opt.IOGrouping =“所有”;选择网格=“上”;stepplot (T0,“b——”,T1,“r”4选择)传说(“初始”“调”“位置”‘东南’

在y=1附近的6条曲线表示各关节的阶跃响应,在y=0附近的6条曲线表示交叉耦合项。调谐控制器是一个明显的改进,但有一些超调和二头肌反应需要很长时间来解决。

利用第二自由度

二自由度PI控制器具有前馈和反馈两部分。

图5:两自由度PID控制器。

默认情况下,looptune只调优反馈循环,而不“看到”前馈组件。这可以通过验证b美元PI控制器的参数保持为初始值$b=1$(类型showTunable(死神)查看已调优的值)。为了利用前馈作用和减少超调,将带宽目标替换为从参考角度到关节角度的显式步进跟踪要求。

TR = TuningGoal.StepTracking (RefSignals,测量,0.5);ST2 = looptune (ST0、控制测量,TR);
最终:峰值增益= 0.766,迭代次数= 13已实现的目标增益值TargetGain=1。

二自由度调谐消除了超调,改善了二头肌的响应。

T2 = getIOTransfer (ST2 RefSignals,测量);stepplot (T1,“r——”,T2,‘g’4选择)传说(“1-DOF调优”“双自由度优化”“位置”‘东南’

验证调优控制器

调整后的线性响应看起来令人满意,因此将PI增益的调整值写回Simulink模块并模拟整体机动。金宝app仿真结果如图6所示。

writeBlockValue (ST2)

图6:调整后的角度响应。

二头肌关节的非线性响应明显不足。进一步的调查表明有两个可能的原因。首先,PI控制器过于激进,使电机饱和(输入电压限制在±5 V)。

图7:直流电机的输入电压(控制信号)。

其次,手腕和肱二头肌之间的交叉耦合效应,当规模,有一个显著和持久的影响肱二头肌反应。为了看到这个,画出这三个关节的阶跃响应实际在操作过程中发生的步幅变化(二头肌关节-10度,腕关节90度)。

H2=T2([24],[24])*diag([-1090]);%幅度阶跃H2。u = {“二”“手腕”};H2。y = {“二”“手腕”};步骤(H2, 5),网格

细化设计

为了改善这一特定手臂动作的二头肌反应,我们必须保持较小的交叉耦合效应相对于每个关节中的最终角位移。为此,通过参考角振幅缩放阶跃跟踪要求中的交叉耦合项。

JointDisp = [60 10 60 90 90 60];%表示角位移,以度表示TR.InputScaling=连接到SP;

为了降低执行器的饱和,限制从参考信号到控制信号的增益。

你= TuningGoal.Gain (RefSignals控制6);

使用这些优化目标重新调整控制器。

ST3 = looptune (ST0、控制测量、TR UR);
最终:峰值增益=1.14,迭代次数=195

将比例响应与之前的设计进行比较。注意腕部和肱二头肌运动之间的耦合显著减少,无论是峰值还是总能量。

T2 = diag(1./JointDisp) * T2 * diag(JointDisp);T3s = diag(1./JointDisp) * getIOTransfer(ST3,RefSignals,Measurements) * diag(JointDisp);stepplot (t2,“g——”t3,“我是4选择)传说(“初始2自由度”“精二自由度”“位置”‘东南’

将返回的值推入Simulink进行进一步验证。金宝app

writeBlockValue (ST3)

仿真结果如图8所示,在稳定时间和平稳过渡时间上,二次侧响应与其它关节相比,比以前的设计少。

图8:带有改进控制器的角度位置和控制信号。

3D动画确认手臂现在快速准确地移动到所需配置。

图9:经过微调的响应。

另请参阅

|||

相关话题