主要内容

机械臂的多环PI控制

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

机械臂模型与控制器

此示例使用下面所示的六个自由度机器人手臂。该臂由六个关节组成,标有底座,尖端:“转盘”,“二头肌”,“前臂”,“手腕”,“手”和“夹具”。除了使用两种直流电动机的双重电机进行双直流接头,每个接头由DC电机驱动。

图1:机械臂机械手。

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

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

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

图3:控制器结构。

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

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

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

图4:未调优的响应。

线性的植物

机器人臂动力学是非线性的。为了了解手臂是否可以用一组PI增益控制,沿着感兴趣的轨迹在各个点(快照时)下线性化植物。这里“工厂”是指控制信号(PID块的输出)和测量信号之间的动态(“6 DOF机器人臂”块)。

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

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

使用LOOPTUNE调整PI控制器

looptune,您可以直接调整所有六个PI环,以实现具有最小环路交互和充足的MIMO稳定性边距的所需响应时间。控制器以连续时间调谐,并在将PI增益写回SIMULINK时自动离散化。金宝app使用slTuner接口来指定必须调优哪些块,并定位设备/控制器边界。

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

T0 = getIOTransfer (ST0 RefSignals,测量);T1 = getIOTransfer (RefSignals相约,测量);选择= timeoptions;opt.IOGrouping =“所有”;opt.grid =“上”;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([2 4],[2 4])*诊断([ -  10 90]);%幅度阶跃H2。u = {“二”“手腕”};H2。y = {“二”“手腕”};步骤(H2, 5),网格

细化设计

为了改善这种特定的ARM机动的二头肌响应,我们必须保持小耦合效果小相对于每个关节的最终角位移。为此,通过参考角度幅度在步进跟踪要求中缩放交叉耦合术语。

JointDisp = [60 10 60 90 90 60];%表示角位移,以度表示tr.InputScaling = Connectdisp;

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

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

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

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

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

T2 = diag(1./JointDisp) * T2 * diag(JointDisp);T3s = diag(1./JointDisp) * getIOTransfer(ST3,RefSignals,Measurements) * diag(JointDisp);stepplot (t2,“g——”t3,'M'4选择)传说('最初的2-DOF'“精二自由度”“位置”“东南”

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

writeBlockValue (ST3)

模拟结果出现在图8中。BICEP响应现在与稳定时间和平稳的瞬态相比,与其他关节相同,并且持续的执行器饱和而不是先前的设计。

图8:具有精制控制器的角位置和控制信号。

3D动画确认,ARM现在现在可以快速,准确地移动到所需的配置。

图9:经过微调的响应。

另请参阅

|||

相关话题