Main Content

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

拘束力の検出

モデルの概要

Simscape™ Multibody™ は、各種の力とトルクの検出機能を提供します。ジョイント ブロックを使用すると、個々のジョイント プリミティブを駆動する作動力と作動トルクを検出できます。また、ジョイント全体に働く合計力と拘束力も検出できます。

このチュートリアルでは、Weld Joint ブロックを使用して、ボディを一体として保持する時変内力を検出します。二重振子モデル smdoc_double_pendulum がこのチュートリアルの開始点となります。このモデルの作成方法の詳細については、開ループ連鎖のモデル化を参照してください。

バイナリ リンク サブシステムの固体要素間に Weld Joint ブロックを接続することで、それらの固体要素の間に働く拘束力を検出できます。次の図に、このチュートリアルで検出する拘束力を示します。縦方向の拘束力は、Weld Joint 座標系の X 軸と一致しています。横方向の拘束力は、Y 軸と一致しています。Z 軸に沿った拘束力は非常に小さい値なので無視されます。

Weld Joint ブロックによって、follower 座標系が base 座標系に及ぼす拘束力、あるいは base 座標系が follower 座標系に及ぼす拘束力を検出できます。2 つの力の大きさは同じですが、バイナリ リンクの概略図に示されるように、方向が逆です。このチュートリアルでは、follower 座標系が base 座標系に及ぼす拘束力を検出します。

また、拘束力の測定値を解決するための座標系を選択することもできます。解決する座標系は、base 座標系と follower 座標系のどちらでもかまいません。特定のジョイント ブロックでは、端子の座標系に異なる向きをもたせることが可能です。それにより、同じ測定が、解決する座標系の選択によって異なる結果になります。しかし、Weld Joint ブロックの自由度はゼロであるため、解決するどちらの座標系でも、同じ拘束力ベクトル成分が生成されます。

モデルへの Weld Joint ブロックの追加

  1. MATLAB® コマンド プロンプトで「smdoc_double_pendulum」と入力します。二重振子モデルが開きます。

  2. Binary Link A1 Subsystem ブロックで、[マスク内部を検索] 矢印をクリックします。

  3. [Simscape][Multibody][Joints] ライブラリから、Weld Joint ブロックをドラッグします。

  4. 次の図のように Weld Joint ブロックを接続します。このブロックによって、運動中にボディをひとつに保持する拘束力を検出できるようになります。端子の座標系間に与えられる自由度はゼロであるため、モデル ダイナミクスへの影響はありません。

拘束力検出の追加

  1. Weld Joint ブロックのダイアログ ボックスで、[Constraint Force] を選択します。ブロックに fc というラベルの付いた物理量信号出力端子が表示されます。

  2. Simscape Output 端子をサブシステムのブロック線図に追加します。次の図のようにブロックを接続し、サブシステムのビューを抜けます。

  3. 次のブロックを、モデルのメイン ウィンドウにドラッグします。これらのブロックを使用して、拘束力の信号を MATLAB ワークスペースに出力できます。

    ライブラリブロック
    [Simscape][Utilities]PS-Simulink Converter
    [Simulink][Sinks]To Workspace

  4. 次の図のようにブロックを接続します。PS-Simulink Converter ブロックが、新しく追加された Simscape 端子に接続されていることをチェックします。

  5. 次のブロック パラメーターを指定します。

    ブロックダイアログ ボックスのパラメーター
    PS-Simulink ConverterOutput signal unitmN
    To Workspace変数名fcf_weld

    およそ 30 cm × 2 cm × 0.8 cm のアルミニウム製リンクが含まれるこのモデルには、単位 mN が適切です。

ジョイントへの減衰の追加

各 Revolute Joint ブロックのダイアログ ボックスで、[Internal Mechanics][Damping Coefficient] を選択して 1e-5 と入力します。減衰係数を使用すると、運動中のエネルギー散逸をモデル化して、二重振子モデルがやがて静止するようにできます。

モデルのシミュレーション

  1. [モデル化] タブで、[モデル設定] をクリックします。

  2. [コンフィギュレーション パラメーター] ウィンドウの [ソルバー] タブで、[ソルバー] パラメーターを [ode15s] に設定します。これは、物理モデル用に推奨するソルバーです。

  3. 同じタブで、[最大ステップ サイズ] パラメーターを 0.001 秒に設定します。

  4. シミュレーションを実行します。Mechanics Explorer に、モデルの動的な表示が開きます。Mechanics Explorer のメニュー バーで、[Isometric View] ボタンを選択して、等角投影の視点から二重振子を表示します。

拘束力のプロット

MATLAB コマンド プロンプトで、次のプロット コマンドを入力します。

figure;
plot3(fcf_weld.time, fcf_weld.data(:,1), fcf_weld.data(:,2),...
'.', 'MarkerSize', 1, 'Color', 'r');
grid on;
xlabel('T, s'); 
ylabel('F_{C,X}, mN'); 
zlabel('F_{C,Y}, mN');
MATLAB により、時間に対する軸方向と横方向の拘束力が 3 次元でプロットされます。次の図に、結果のプロットを示します。Constaint Force