此示例显示了如何使用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增益控制手臂,不需要诉诸增益调度。
和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.
仅调整反馈循环,并不“请参阅”馈送组件。这可以通过验证这一点来证实PI控制器的参数仍然设置为初始值(类型展示(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:微调响应。
Systune.
|TuningGoal.maxloopgain.
|TuningGoal.minloopgain.
|TuningGoal.Tracking.