主要内容

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

ロボット アームのマルチループ 圆周率制御

この例では、环调を使用して、六自由度ロボット アーム マニピュレーターのマルチループ コントローラーを調整する方法を説明します。

ロボット アーム モデルとコントローラー

この例では、以下に示す 6.自由度のロボット アームを使用します。このアームは、ベースから先端へとラベル付けされた 6.つのジョイント:"转盘、二头肌、前臂、手腕、手および "“夹持器”で構成されます。2.つの 直流モーターを並行して使用する 二头肌ジョイントを除いて、各ジョイントは 1.つの 直流モーターによって作動します。

図 1: ロボット アーム マニピュレーター。

ファイル "cst\u robotarm.slx“には、このシステムの電気系と機械系のコンポーネントの金宝app 模拟モデルが含まれています。

図 2: ロボット アームの 金宝app模拟モデル。

“控制器”サブシステムは 6.つ (ジョイントごとに 1.つ) のデジタル 圆周率コントローラーで構成されます。各 圆周率コントローラーは、模拟ライブラリの金宝app "“2自由度PID控制器”ブロックを使用して実装されます (理由については、「設定点の追従と外乱の抑制の PID調整」の例を参照してください)。制御のサンプル時間は Ts=0.1(10赫兹)です。

図 三:コントローラーの構造。

一般的に、このようなマルチループ コントローラーは、PIDループを 1.つずつ調整し、全体の動作が満足できる状態になるまでループを周期的に繰り返すことで順番に調整されます。このプロセスは時間がかかることがあります。また、必ずしも全体が最適に調整された状態に収束するとは限りません。あるいは、系统または环调を使用し、応答時間や最小相互干渉といったシステム レベルの要件に従って、6.つすべての 圆周率ループを一緒に調整することもできます。

この例では、各ジョイントでの滑らかな角運動により、アームを特定の構成に約 1.秒で移動させなければなりません。アームは、二头肌の 90度の角度以外は、すべてのジョイントの角度がゼロである完全に伸ばされた垂直位置から動き始めます。最終的な構成は次の角度位置で指定されます。转盘=60度、二头肌=80度、前臂=60度、手腕=90度、手=90度、夹持器=60度。

金宝app模拟モデルの "再生" ボタンをクリックして、モデルに指定された 圆周率ゲイン値の角度の軌跡をシミュレートします。最初に青いボタンをダブルクリックして、ロボット アームの 三维アニメーションを表示することもできます。以下に角度応答と 三维アニメーションを示します。応答が非常に遅く、不正確であることは明らかです。

図 4: 調整されていない応答。

プラントの線形化

ロボット アームのダイナミクスは非線形です。アームを 1.セットの 圆周率ゲインで制御できるかどうかを把握するには、目的の軌跡に沿ってさまざまな点 (スナップショット時間) でプラントを線形化します。ここで、"プラント" は制御信号 (PIDブロックの出力) と測定信号 ("“6自由度机械臂”ブロックの出力) の間のダイナミクスを示しています。

快照时间=0:1:5;%设备从PID输出到机械臂输出里尼奥斯=[...里尼奥('cst\U机器人手臂/控制器/转盘PID'1.'打开输入'),...里尼奥('cst\u机器人手臂/控制器/bicepPID'1.'打开输入'),...里尼奥('cst\U机器人手臂/控制器/前臂PID'1.'打开输入'),...里尼奥('cst\u机器人手臂/控制器/腕表ID'1.'打开输入'),...里尼奥('cst\U机器人手臂/控制器/手PID'1.'打开输入'),...里尼奥('cst\u机器人手臂/控制器/抓握器ID'1.'打开输入'),...里尼奥(“cst\U机器人手臂/6自由度机器人手臂”1.'输出')]; LinOpt=线性化选项('采样时间',0);%寻找连续时间模型G=线性化('cst\U机器人手臂',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=5 s时的线性化’,'绝对变化',...'位置','西南')

低周波数と高周波数ではダイナミクスが大幅に変化しますが、その変化は 10拉德/秒付近で 10% 未満まで低下します。大まかに言うと、これが目的の制御帯域幅です。ターゲット ゲイン交差周波数付近の小さなプラント変化は、単一セットの 圆周率ゲインでアームを制御することができ、ゲイン スケジューリングを使用する必要がないことを示しています。

环调を使用した 圆周率コントローラーの調整

环调を使用すると、6.つすべての 圆周率ループを直接調整し、最小限のループ相互作用と適切な 多输入多输出安定余裕で目的の応答時間を実現することができます。圆周率ゲインを金宝app 模拟に書き戻すときに、コントローラーは連続時間で調整され、自動的に離散化されます。单反调谐器インターフェイスを使用して、調整しなければならないブロックを指定し、プラントやコントローラーの境界を特定します。

%在t=3s时使设备线性化t线性化=3;%创建slTuner接口调谐块={'转盘PID','双活塞','前臂PID',...'腕带','手PID','夹爪ID'}; ST0=单反调谐器('cst\U机器人手臂',调谐块,t线性化);%将PID块的输出标记为设备输入添加点(ST0、TunedBlocks)%将接头角度标记为设备输出添加点(ST0,“6自由度机械臂”)%标记参考信号参考信号={...'参考选择/tREF',...'参考选择/bREF',...'参考选择/fREF',...'参考选择/wREF',...'参考选择/hREF',...'参考选择/gREF'}; 添加点(ST0,参考信号)

最も簡単な使用方法では、环调に必要な情報はターゲットの制御帯域幅のみであり、目的の応答時間の逆数の少なくとも 2.倍でなければなりません。ここでは、目的の応答時間が 1.秒であるため、ターゲットの帯域幅を 3弧度/秒で試します (プラント ダイナミクスが少なくとも 10拉德/秒付近で変化することを忘れないでください)。

wc=3;%目标增益交叉频率控制=调谐块;%执行器命令测量=“6自由度机械臂”;%关节角度测量ST1=循环调谐(ST0、控制、测量、wc);
最终:峰值增益=0.957,迭代次数=10达到目标增益值TargetGain=1。

1.付近または 1.より小さい最終値は、环调が要求された帯域幅を達成したことを示しています。最初のコントローラーと調整コントローラーに関して、角度位置のステップ コマンドへの応答を比較します。

T0=获取传输(ST0、参考信号、测量值);T1=获取传输(ST1、参考信号、测量);opt=时间选项;选择性分组='全部'; 可选网格='打开'; 步进图(T0,“b--”,T1,“r”,4,opt)图例('首字母','调谐','位置','东南')

y=1の付近で整定された 6.つの曲線は各ジョイントのステップ応答を表しています。また、y=0の付近で整定された曲線は相互干渉項を表しています。調整されたコントローラーは明らかに改善されていますが、オーバーシュートがあるため 二头肌応答が安定するまで時間がかかります。

2.自由度の活用

二自由度PIコントローラーには、フィードフォワード コンポーネントとフィードバック コンポーネントがあります。

図 5: 2 自由度 PIDコントローラー。

既定では、环调はフィードバック ループを調整するだけで、フィードフォワード コンポーネントを "認識" しません。これを確認するには、圆周率コントローラーの十亿美元$パラメーターがその初期値$b=1$に設定されたままであることを検証します (調整された値を表示するには可显示(ST1)と入力します)。フィードフォワード アクションを利用してオーバーシュートを削減するには、明示的なステップ追従要件による帯域幅のターゲットを基準角からジョイントの角度に置換します。

TR=调谐目标。步进跟踪(参考信号,测量值,0.5);ST2=循环调谐(ST0、控制、测量、TR);
最终:峰值增益=0.766,迭代次数=13达到目标增益值TargetGain=1。

2自由度調整によってオーバーシュートを除去し、二头肌の応答を改善します。

T2=getIOTransfer(ST2,参考信号,测量值);步进图(T1,'r--',T2,“g”,4,opt)图例('单自由度调谐',“2自由度调谐”,'位置','东南')

調整コントローラーの検証

調整された線形応答は満足できるものに見えるため、圆周率ゲインの調整された値を 金宝app模拟ブロックに書き戻し、全体的な操作をシミュレートします。シミュレーション結果を図 6.に示します。

writeBlockValue(ST2)

図 6: 調整された角度応答。

二头肌ジョイントの非線形応答はアンダーシュートが顕著です。さらに詳しく調査すると、その原因には次の 2.つが考えられます。まず、圆周率コントローラーがあまりにアグレッシブであり、モーターを飽和させるため (入力電圧は ±5伏に制限されます)。

図 7:直流モーターへの入力電圧 (制御信号)。

次に、手腕と 二头肌間の相互干渉効果をスケーリングすると、二头肌の応答に有意で持続的な影響を及ぼすため。これを確認するには、操作 (二头肌ジョイントに -10度、手腕ジョイントに 90度) 時に発生する実際のステップ変化に対して、この 3.つのジョイントのステップ応答をプロットします。

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

設計の改良

この特定のアーム操作に対する 二头肌の応答を改善するには、相互干渉の影響を各ジョイントでの最終的な角変位 "に対して"小さく維持しなければなりません。これを行うには、ステップ追従要件の相互干渉項を基準角の振幅でスケーリングします。

JointDisp=[60 10 60 90 90 60];%指令角位移,单位为度TR.InputScaling=JointDisp;

アクチュエータの飽和を削減するには、基準信号から制御信号へのゲインを制限します。

UR=调谐目标增益(参考信号,控制,6);

これらの改良された調整目標でコントローラーを再調整します。

ST3=循环调谐(ST0、控制、测量、TR、UR);
最终:峰值增益=1.14,迭代次数=187

スケーリングされた応答を以前の設計と比較します。手腕と 二头肌の動作間の干渉が、ピーク値および合計エネルギーのいずれにおいても大幅に削減されていることがわかります。

T2s=diag(1./JointDisp)*T2*diag(JointDisp);T3s=diag(1./JointDisp)*getIOTransfer(ST3,RefSignals,Measurements)*diag(JointDisp);步进图(T2s,“g——”,T3s,'m',4,opt)图例('初始2-DOF',“精致的2自由度”,'位置','东南')

再調整された値を 金宝app模拟に入れて、さらに検証します。

writeBlockValue(ST3)

シミュレーション結果を図 8.に示します。二头肌の応答は、整定時間および滑らかな過渡に関して他のジョイントと同レベルになり、以前の設計と比べてアクチュエータの飽和が減っています。

図 8: 改良されたコントローラーを使用した角度位置と制御信号。

アームが目的の構成に従って迅速かつ正確に動くことを 三维アニメーションで確認できます。

図 9: 微調整された応答。

参考

|||

関連するトピック