Transform Sensor ブロックを使用した運動の検出
モデルの概要
Transform Sensor ブロックは、Simscape™ Multibody™ モデルで最も幅広い運動検出機能を提供します。このブロックを使用して、モデルにある任意の 2 つの座標系間で運動変数を検出できます。変数には、並進と回転の位置、速度および加速度を含めることができます。
この例では、Transform Sensor ブロックを使用して、ワールド座標系に対する下位リンクの並進位置を検出します。位置座標を直接モデル ワークスペースに出力し、次に MATLAB® コマンドを使用してこの座標をプロットします。ジョイントの状態ターゲットを変化させることで、準周期条件や無秩序な条件で下位リンク運動を解析できます。
モデル化の方法
この例では、重力を使用して二重振子を運動させます。リンクを平衡状態から変位させた後、重力を作用させます。時間ゼロでリンクを変位するには、Revolute Joint ブロックのダイアログ ボックスで [State Targets] セクションを使用します。位置または速度を指定できます。準備ができたら、モデルのシミュレーションを実行して運動を解析します。
運動を検出するには、Transform Sensor ブロックを使用します。最初に、base 座標系端子と follower 座標系端子を、ワールド座標系と下位のリンク サブシステム ブロックに接続します。端子をこれらのブロックに接続することで、下位リンクの運動を、ワールド座標系に対して検出できます。次に、検出する並進パラメーターを選択します。[Y] と [Z] を選択することで、それぞれ Y 軸と Z 軸に沿って並進を検出できます。これらの座標を互いに対してプロットし、それらが示す運動を解析できます。
モデルの作成
MATLAB コマンド プロンプトで、「
openExample("sm/DocDoublePendulumModelExample")
」と入力します。二重振子モデルが開きます。このモデルの作成方法の説明については、開ループ連鎖のモデル化を参照してください。次のブロックをモデルにドラッグして運動を検出します。
ライブラリ ブロック 数 [Simscape] 、 [Multibody] 、 [Frames and Transforms] Transform Sensor 1 [Simscape] 、 [Multibody] 、 [Frames and Transforms] World Frame 1 [Simscape] 、 [Utilities] PS-Simulink Converter 2 [Simulink] 、 [Sinks] To Workspace 2 Transform Sensor ブロックのダイアログ ボックスで、[Translation] 、 [Y] と [Translation] 、 [Z] を選択します。ブロックに、y と z のラベルの付いた 2 つの物理量信号出力端子が表示されます。
PS-Simulink Converter ブロックで、単位
cm
を指定します。To Workspace ブロックに、変数名
y_link
とz_link
を入力します。図に示すように、ブロックをモデルに接続します。Transform Sensor ブロックの base 座標系端子を、World Frame ブロックに接続しなければなりません。新しいブロックはグレーの影付きで表示されています。
モデル アセンブリのガイド
各ジョイントの初期状態を指定します。後でこの状態を修正して、さまざまな運動タイプを試すことができます。最初の反復については、上位リンクのみを、小さな角度で回転します。
Revolute Joint ブロックのダイアログ ボックスで、[State Targets] 、 [Specify Position Target] を選択します。
[Value] を
10 deg
に設定します。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
という名前で任意のフォルダーに保存します。このモデルは、次のチュートリアル平面マニピュレーター モデルにおけるジョイントの運動の指定で再利用します。