Main Content

Transform Sensor ブロックを使用した運動の検出

モデルの概要

Transform Sensor ブロックは、Simscape™ Multibody™ モデルで最も幅広い運動検出機能を提供します。このブロックを使用して、モデルにある任意の 2 つの座標系間で運動変数を検出できます。変数には、並進と回転の位置、速度および加速度を含めることができます。

この例では、Transform Sensor ブロックを使用して、ワールド座標系に対する下位リンクの並進位置を検出します。位置座標を直接モデル ワークスペースに出力し、次に MATLAB® コマンドを使用してこの座標をプロットします。ジョイントの状態ターゲットを変化させることで、準周期条件や無秩序な条件で下位リンク運動を解析できます。

モデル化の方法

この例では、重力を使用して二重振子を運動させます。リンクを平衡状態から変位させた後、重力を作用させます。時間ゼロでリンクを変位するには、Revolute Joint ブロックのダイアログ ボックスで [State Targets] セクションを使用します。位置または速度を指定できます。準備ができたら、モデルのシミュレーションを実行して運動を解析します。

運動を検出するには、Transform Sensor ブロックを使用します。最初に、base 座標系端子と follower 座標系端子を、ワールド座標系と下位のリンク サブシステム ブロックに接続します。端子をこれらのブロックに接続することで、下位リンクの運動を、ワールド座標系に対して検出できます。次に、検出する並進パラメーターを選択します。[Y][Z] を選択することで、それぞれ Y 軸と Z 軸に沿って並進を検出できます。これらの座標を互いに対してプロットし、それらが示す運動を解析できます。

モデルの作成

  1. MATLAB コマンド プロンプトで、「openExample("sm/DocDoublePendulumModelExample")」と入力します。二重振子モデルが開きます。このモデルの作成方法の説明については、開ループ連鎖のモデル化を参照してください。

  2. 次のブロックをモデルにドラッグして運動を検出します。

    ライブラリブロック
    [Simscape][Multibody][Frames and Transforms]Transform Sensor1
    [Simscape][Multibody][Frames and Transforms]World Frame1
    [Simscape][Utilities]PS-Simulink Converter2
    [Simulink][Sinks]To Workspace2

  3. Transform Sensor ブロックのダイアログ ボックスで、[Translation][Y][Translation][Z] を選択します。ブロックに、y と z のラベルの付いた 2 つの物理量信号出力端子が表示されます。

  4. PS-Simulink Converter ブロックで、単位 cm を指定します。

  5. To Workspace ブロックに、変数名 y_linkz_link を入力します。

  6. 図に示すように、ブロックをモデルに接続します。Transform Sensor ブロックの base 座標系端子を、World Frame ブロックに接続しなければなりません。新しいブロックはグレーの影付きで表示されています。

モデル アセンブリのガイド

各ジョイントの初期状態を指定します。後でこの状態を修正して、さまざまな運動タイプを試すことができます。最初の反復については、上位リンクのみを、小さな角度で回転します。

  1. Revolute Joint ブロックのダイアログ ボックスで、[State Targets][Specify Position Target] を選択します。

  2. [Value]10 deg に設定します。

  3. Revolute Joint1 ブロックのダイアログ ボックスで、[State Targets][Specify Position Target] がクリアされていることを確認します。

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

シミュレーションを実行します。Mechanics Explorer は、二重振子アセンブリの物理学に基づくアニメーションを再生します。

これで、下位のリンクの位置座標をプロットする準備が整いました。これを行うには、MATLAB コマンド ラインで次のように入力します。

figure; 
plot(y_link.data, z_link.data, 'color', [60 100 175]/255);
xlabel('Y Coordinate (cm)'); 
ylabel('Z Coordinate (cm)'); 
grid on;

次の図に、表示されるプロットを示します。このプロットは、下位リンクのパスが、振動ごとにわずかにしか変化しないことを示します。この動作は、準周期システムの特性です。

無秩序運動のシミュレーション

回転ジョイントの状態ターゲットを調整することで、モデルを無秩序な条件下でシミュレーションできます。無秩序運動を得る方法の 1 つは、最上部の回転ジョイントを大きな角度で回転することです。これを行うには、Revolute Joint のダイアログ ボックスで、[State Targets][Position][Value]90 に変更し、[OK] をクリックします。

ジョイントの新しい状態ターゲットを使用して、モデルのシミュレーションを実行します。下位となる振子のリンクの位置座標をワールド座標系に対してプロットするには、MATLAB コマンド プロンプトで次のコードを入力します。

figure; 
plot(y_link.data, z_link.data, 'color', [60 100 175]/255);
xlabel('Y Coordinate (cm)'); 
ylabel('Z Coordinate (cm)'); 
grid on;

次の図に、表示されるプロットを示します。

モデルの保存

モデルを double_pendulum_sensing という名前で任意のフォルダーに保存します。このモデルは、次のチュートリアル平面マニピュレーター モデルにおけるジョイントの運動の指定で再利用します。