このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
平面マニピュレーター モデルにおけるジョイントの運動の指定
この例では、平面マニピュレーターのエンドエフェクタの軌跡を指定して、マニピュレーター ジョイントの必要なアクチュエータ トルクを計算する方法を説明します。
この例では、エンドエフェクタ座標系の時変軌跡座標を、6-DOF Joint ブロックを使用することによりワールド座標系を基準にして指定します。このブロックは、2 つの座標系間に必要とされる自由度を与えます。このモデルでは、6-DOF Joint ブロックは物理的接続としては動作しません。
シミュレーション中に、エンドエフェクタは指定された四角形のパターンを追跡し、回転ジョイントでは必要なアクチュエータ トルクが計算されます。
バーチャル ジョイントの追加
MATLAB® コマンド プロンプトで、「
smdoc_double_pendulum
」と入力して、モデルを開きます。このモデルの作成方法の説明については、開ループ連鎖のモデル化を参照してください。6-DOF Joint ブロックをモデルに追加し、ブロック間を図に示すように接続します。
このモデルでは、6-DOF Joint ブロックはワールド座標系とエンドエフェクタ座標系との間の仮想接続として動作します。ブロックは位置の入力を使用して、エンドエフェクタ座標系の軌跡をワールド座標系を基準にして指定します。6-DOF Joint ブロックの base 座標系がワールド座標系に接続されており、follower 座標系がエンドエフェクタ座標系に接続されていることを確認します。
運動入力の指定
6-DOF Joint ブロックをダブルクリックしてブロックのダイアログ ボックスを開き、次のパラメーターを指定します。
パラメーター 選択 [Y Prismatic Primitive (Py)] 、 [Actuation] 、 [Motion] Provided by Input
[Z Prismatic Primitive (Pz)] 、 [Actuation] 、 [Motion] Provided by Input
ブロックに端子 [py] および [pz] が表示されます。
2 つの Simulink-PS Converter ブロックと 1 つの Signal Editor ブロックをモデルに追加します。
Signal Editor ブロックを使用して位置入力を指定します。
Signal Editor ブロックをダブルクリックしてダイアログ ボックスを開きます。
[信号プロパティ] で、[信号エディターを起動します] ボタン
をクリックして [信号エディター] ウィンドウを開きます。
左側のペインで [シナリオ] を展開し、
signal 1
の名前をpy
に変更し、[プロット/編集] チェック ボックスをオンにして、図に示すようにデータを編集します。左側のペインで [シナリオ] を右クリックし、[挿入] 、 [信号] を選択し、新しい信号の名前を
pz
に変更し、[プロット/編集] チェック ボックスをオンにして、図に示すようにデータを編集します。[信号エディター] タブで [保存] をクリックしてデータを MAT ファイルに保存します。[信号エディター] ウィンドウを閉じます。
ダイアログ ボックスの [信号プロパティ] で [アクティブな信号] を
py
に設定して [データを内挿する] を選択します。次に、[アクティブな信号] をpz
に設定して [データを内挿する] を選択します。[適用] および [OK] をクリックします。
Simulink-PS Converter ブロックを使用して Simulink® 信号を物理量信号に変換します。
2 つの Simulink-PS Converter ブロックで、次のパラメーターを指定します。
パラメーター 値 [単位] 、 [入力信号単位] cm
[入力の取り扱い] 、 [フィルター処理と微分] [入力のフィルター処理、微分の算出]
[入力の取り扱い] 、 [入力フィルター次数] [2 次フィルター処理]
[入力の取り扱い] 、 [入力フィルター処理時定数 (秒)] 0.1
時間フィルター処理定数が小さいと、シミュレーションの速度が大幅に低下する場合があります。ほとんどの Simscape™ Multibody™ モデルでは、多くの場合、0.1 秒の値で、シミュレーション時間と精度の十分なバランスが得られます。
次の図のようにブロックを接続します。
ジョイントの作動トルクの検出
2 つの Revolute Joint ブロックで、次のパラメーターを設定します。
パラメーター 設定 [Actuation] 、 [Torque] Automatically Computed
[Sensing] 、 [Actuator Torque] 選択 メモ
Simscape Multibody では、運動入力によるジョイント プリミティブの自由度の数が、自動的に計算されたジョイントの作動力とアクチュエータ トルクをもつジョイント プリミティブの自由度の数と等しくなる必要があります。モデルがこの条件を満たさない場合、シミュレーションではエラーが発生して失敗します。
2 つの PS-Simulink Converter ブロックと 2 つの To Workspace ブロックをモデルに追加します。
PS-Simulink Converter ブロックで、[ベクトル形式] を
1-D
配列に設定します。PS-Simulink Converter ブロックによって、物理量信号出力が Simulink 信号に変換されます。2 つの To Workspace ブロックで、[変数名] パラメーターをそれぞれ
t1
とt2
として指定します。次の図のようにブロックを接続します。
モデルのシミュレーション
シミュレーションを実行すると、simulink ではエラーが発生して失敗します。
メモ
Simscape Multibody では、閉じた運動学的ループには少なくとも 1 つの、運動入力も自動計算された作動力やアクチュエータ トルクもないジョイント ブロックが含まれていなければなりません。
このエラーを解決するには、Weld Joint ブロックを Binary Link A サブシステムに追加し、ブロック間を図に示すように接続します。
シミュレーションを再度実行します。Mechanics Explorer に、平面マニピュレーター モデルの動的 3 次元表示が開きます。
リンク機構で 2 つの回転ジョイントに働く、計算された作動トルクをプロットします。MATLAB コマンド ラインで次のように入力します。
figure; hold on; plot(t1.time, t1.data, 'color', [60 100 175]/255); plot(t2.time, t2.data, 'color', [210 120 0]/255); xlabel('Time'); ylabel('Torque (N*m)'); grid on;