主要内容

机器人手臂的多环PI控制

此示例显示了如何使用loopune.为6-DOF机器人臂操纵器调整多环控制器。

机器人臂模型和控制器

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

图1:机器人臂操纵器。

文件“CST_ROBOTARM.SLX”包含该系统的电气和机械组件的SIMUL金宝appINK模型。

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

“控制器”子系统由六个数字PI控制器(每个接头)组成。每个PI控制器都使用Simulink库的“2-Dof PID控制器”块实现(参见金宝app用于设定点跟踪的PID调整与扰动抑制动机示例)。控制采样时间是TS = 0.1(10Hz)。

图3:控制器结构。

通常,通过一次调谐一个PID循环并通过环路循环直到整体行为令人满意,顺序地调谐这种多环控制器。此过程可能是耗时的,并且不保证收敛到最好的整体调谐。或者,您可以使用Systune.或者loopune.共同调整所有六个PI循环,受系统级要求,如响应时间和最小交叉耦合。

在该示例中,臂必须在大约1秒内移动到特定配置,在每个接头处具有平滑的角运动。该臂在完全扩展的垂直位置开始,除了百分比的二头肌角度,零的所有接头角度为零。结束配置由角度位置指定:转盘= 60°,双重= 80°,前臂= 60°,手腕= 90°,手= 90°,夹具= 60°。

按Simulink模型中的“播放”按钮以模拟模型中指定的PI增金宝app益值的角轨迹。您可以先双击蓝色按钮,也可以显示机器人手臂的3D动画。下面的角度响应和3D动画显示。显然,反应过于缓慢和不精确。

图4:无核响应。

线性化植物

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

Snapshottimes = 0:1:5;%工厂来自PID输出到机器人臂输出Linios = [......Linio('cst_robotarm / controller / turntablepid',1,'OpenInput'),......Linio('cst_robotarm / controller / biceppid',1,'OpenInput'),......Linio('cst_robotarm / controller / forearmpid',1,'OpenInput'),......Linio('cst_robotarm / controller / wristpid',1,'OpenInput'),......Linio('cst_robotarm / controller / handpid',1,'OpenInput'),......Linio('cst_robotarm / controller / gripperpid',1,'OpenInput'),......Linio('CST_ROBOTARM / 6 DOF ROBOT ARM',1,'输出')];linopt = linearizeOptions('采样时间',0);%寻求连续时间模型g =线性化('cst_robotarm',linios,snapshottimes,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 = 5 s的线性化'绝对变化'......'地点''西南'

虽然动态在低频率和高频率下显着变化,但变化率达到10%近10%,这是大致所需的控制带宽。目标增益交叉频率附近的小植物变化表明,我们可以用一套PI增益控制手臂,不需要诉诸增益调度。

用loopopune调整PI控制器

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

%线性化植物在t = 3stlinearize = 3;%创建SLTuner接口TunedBlocks = {'turntablepid''biceppid''forearmpid'......'手腕''handpid''gripperpid'};st0 = sltuner('cst_robotarm',tunedblocks,tlinearize);作为工厂输入的PID块的%标记输出addpoint(st0,tunedblocks)%标记关节角度作为植物输出addpoint(st0,'6 DOF机器人手臂'%标记参考信号recsignals = {......'ref select / tref'......'ref select / bren'......'ref选择/ fref'......'ref select / wref'......'ref select / href'......'ref选择/ gref'};addpoint(st0,refsignals)

在最简单的使用中,loopune.只需要知道目标控制带宽,这应该是所需响应时间的倒数的至少两倍。这里所需的响应时间为1秒,因此尝试3 rad / s的目标带宽(记住植物动力学最小近10 rad / s)。

WC = 3;%目标增益交叉频率控件= TunedBlocks;%执行器命令测量='6 DOF机器人手臂';%关节角度测量ST1 = loopune(ST0,控制,测量,WC);
最终:峰值增益= 0.957,迭代= 10实现目标增益值目标= 1。

1附近或1以下的最终值表示loopune.达到了请求的带宽。将响应与初始和调谐控制器的角度位置的响应进行比较。

t0 = getiotransfer(ST0,Refsignals,测量);t1 = getiotransfer(ST1,Refsignals,测量);选择= TimeOptions;opt.iogrouping =.'全部';opt.grid ='在';Stepplot(t0,'B--',t1,'r',4,选择)传奇('最初的''调整''地点''东南'

近y = 1附近的六条曲线表示每个关节的步骤响应,并且近y = 0附近的曲线表示交叉耦合术语。调谐控制器是一个明确的改进,但有一些过冲,二头肌响应需要很长时间才能解决。

利用第二种自由度

2-DOF PI控制器具有前馈和反馈部件。

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

默认情况下,loopune.仅调整反馈循环,并不“请参阅”馈送组件。这可以通过验证这一点来证实$ b $PI控制器的参数仍然设置为初始值$ b = 1 $(类型展示(ST1)要查看调谐值)。为了利用前馈动作并减少过冲,通过从参考角度与关节角度的显式步骤跟踪要求更换带宽目标。

tr = tuninggoal.steptracking(Refsignals,测量,0.5);ST2 = Loopeune(ST0,控制,测量,TR);
最终:峰值增益= 0.766,迭代= 13实现目标增益值目标= 1。

2-DOF调谐消除过冲并改善了二头肌响应。

t2 = getiotransfer(ST2,Refsignals,测量);Stepplot(T1,'r--',t2,'G',4,选择)传奇('1-DOF调音''2-DOF调音''地点''东南'

验证调谐控制器

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

WriteBlockValue(ST2)

图6:调谐角度响应。

二滴关节的非线性响应明显下划。进一步调查表明两种可能的罪魁祸首。首先,PI控制器过于攻击并饱和电机(输入电压限制为±5 V)。

图7:输入电压为DC电机(控制信号)。

其次,手腕和二头肌之间的交叉耦合效果,当延长时,对二头肌的反应产生显着且持久的影响。要看到这一点,请绘制这三个关节的步骤响应实际的步骤在机动期间发生变化(用于双冰坡接头的-10°和腕关节90度)。

H2 = T2([2 4],[2 4])*诊断([ -  10 90]);逐步幅度缩放h2.u = {'二头肌''手腕'};h2.y = {'二头肌''手腕'};步骤(h2,5),网格

精炼设计

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

联合= [60 10 60 90 90 60];%指挥角位移,以度为单位tr.InputScaling = Connectdisp;

为了减少致动器的饱和,将来自参考信号的增益限制为控制信号。

UR = TuningGoal.gain(Refsignals,Controls,6);

使用这些精致的调谐目标重新调整控制器。

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

将缩放的响应与以前的设计进行比较。注意峰值和总能量的手腕和二头肌运动之间的耦合显着降低。

t2s = diag(1./jointdisp)* t2 * diag(connectdisp);t3s = diag(1./jointdisp)* getiotransfer(st3,refsignals,测量)* diag(connectdisp);Stepplot(T2S,'G - ',t3s,'M',4,选择)传奇('最初的2-DOF''精致2-DOF''地点''东南'

将重新定义的值推向Simulink以进行进一步验证。金宝app

WriteBlockValue(ST3)

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

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

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

图9:微调响应。

也可以看看

|||

相关话题