MV-1051:シーケンシャルシミュレーションの理解

本チュートリアルでは、ボディの状態を捕捉するためのセンサー要素を有したモデルの構築、センサー信号を使った一部のジョイントのアクティブ化とその他の非アクティブ化、およびシーケンシャル シミュレーションの実行について学習します。

シーケンシャルシミュレーションでは、モデルの変更、ソルバー設定の修正および解析のサブミットのためのシミュレーション命令を書くことができます。

本チュートリアルに含まれるトピックは以下の通りです:
  • マーカー定義を用いた一致しないポイント間の固定ジョイント定義
  • シミュレーション中に2つのマーカーが一致した際の、センサーを使ったジョイントのアクティブ化
  • 下記の目的でのTemplexステートメントの使用:
    • マーカーが一致しない際の固定ジョイントの非アクティブ化
    • マーカーが一致する際の固定ジョイントのアクティブ化
    • t = 5.00秒までのシミュレーション
注: <installation_directory>\tutorials\hwdesktop\mv_hv_hg\mbd_modeling\interactive\sequential_simulationフォルダーにあるファイルを自身の作業ディレクトリ<working directory>にコピーします。

ジョイント、マーカー、センサーの作成

  1. 新しいMotionViewセッションを開始します。
  2. 標準ツールバーからOpen Model をクリックします。

    または

    FileメニューからOpen > Modelを選択し、モデルSequential_simulation.mdlを開きます。

    モデルには2つのボディ、すなわちスライダーとピッカーが含まれます。マーカー、ジョイント、センサーを作成し、さらにTemplexステートメントを使ってシーケンシャルシミュレーションを実行する必要があります。


    図 1.
  3. ProjectブラウザModelを右クリックし、Add > Constraint > Jointを選択(またはツールバーからJoints を 右クリック)します。
  4. Typeには、Translational Jointを選択します。ジョイントをslider transとラベル付けします。
  5. 以下の選択を行います:
    1. Body 1にsliderを選択します。
    2. Body 2にGround Bodyを選択します。
    3. Originにslider cgを選択します。
    4. ポイントslide endを使ってAlignment axisを定義します。


      図 2.
  6. 別のジョイントを追加します。TypeにFixed Jointを選択し、ジョイントをpicker rest fixとラベル付けします。
  7. 以下の選択を行います:
    1. Body 1にpickerを選択します。
    2. Body 2にGround Bodyを選択します。
    3. Originにpart fixを選択します。
    このジョイントは、シミュレーション中にsliderボディがpickerボディと一致する際、非アクティブとなります。


    図 3.

    スライダーとピッカーの間に固定ジョイントを作成する際、それら2つが接した場合、当初は一致していなかったがシミュレーション中に一致する2つのマーカーを定義する必要があります。マーカーをベースとしたジョイントの作成はユーザーインターフェースからは不可能であるため、Templexを使って行わなくてはなりません。

  8. ProjectブラウザModelを右クリックし、Add Reference Entity > Markerを選択(またはツールバーからMarker を 右クリック)します。Marker Slider Trackと命名し、下の図に示すとおりプロパティを設定します:


    図 4.
  9. 同様に、Marker Picker Trackという名のもう1つのマーカーを作成し、下の図に示すとおりプロパティを設定します:


    図 5.
  10. ProjectブラウザModelを右クリックし、Add Control Entity > Sensorを選択(またはツールバーからSensor を 右クリック)し、グラフィックを追加します。
  11. Signal欄で、タイプにExpressionを選択し、次のように入力します:
    `DX({m_slider_track.idstring},{m_picker_track.idstring})`
  12. Compare to欄で、Valueに0.0010、Errorに0.0010と入力します。Respond ifをSignal is greater than VALUE - ERRORに設定します。
  13. Response欄で、Return to Command Fileを選択します。

    これは、信号が得られたらどのように進めるかの指示についてテンプレートを参照するようソルバーに示します。

  14. ProjectブラウザModelを右クリックし、Add Constraint > Motionを選択(またはツールバーからMotion を 右クリック)します。下図に示すように、次の式を使ってプロパティを設定します。
    `STEP(TIME, 0, 0, 5, 800)`


図 6.


図 7.

Templexを使って2つの一致しないマーカー間に固定ジョイントを作成

  1. スライダーとピッカーとの距離がゼロになるとアクティブ化されるスライダーとピッカー間の固定ジョイントを作成するには、ProjectブラウザModelを右クリックし、Add General MDL Entity > Templateを選択(または、ツールバーでTemplate を右クリック)します。
  2. Fixed Joint Defnとラベル付けします。TypeにWrite text to solver input deckを選択します。下記に示すコマンドを、その順番どおり入力します:
    <Constraint_Joint
    id                  = "5000"
    type                = "FIXED"
    i_marker_id         = "{the_model.m_slider_track.idstring}"
    j_marker_id         = "{the_model.m_picker_track.idstring}"
    />
    パネルは下の図のように見えるはずです:


    図 8.

シーケンシャルシミュレーションを定義するためのテンプレートの作成

ここでは、下記を実行するためのテンプレートを書きます:
  • 最初のシミュレーションについてのSliderとPickerの間のジョイントを非アクティブ化
  • 過渡解析を3.5秒間実行
  • SliderとPickerの間のジョイントをアクティブ化
  • PickerとGroundの間のジョイントを非アクティブ化
  • Sensor要素を非アクティブ化
  • 過渡解析を5秒間実行
  1. ProjectブラウザModelを右クリックし、Add General MDL Entity > Templateを選択(またはツールバーからTemplate を 右クリック)します。
  2. TypeをWrite text to solver command fileに指定します。
  3. 下記のコマンドを入力します:
    <Deactivate
    element_type = "JOINT"
    element_id   = "5000"
    />
    <Simulate
    analysis_type       = "Transient"
    end_time            = "3.5"
    print_interval      = "0.01"
    />
    <Deactivate
    element_type = "JOINT"
    element_id   = "{the_model.j_picker_rest_fix.idstring}"
    />
    <Deactivate
    element_type = "SENSOR"
    element_id   = "{the_model.sen_0.idstring}"
    />
    <Activate
    element_type = "JOINT"
    element_id   = "5000"
    />
    <Simulate
    analysis_type       = "Transient"
    end_time            = "5."
    print_interval      = "0.01"
    />
    <Stop/>

シミュレーションの実行と結果のアニメーション表示

  1. Run Solverをクリックします。
  2. Save and run current model をクリックし、ソルバー実行ファイルの名称を入力します。
  3. End timeを5に、Print intervalを0.01に設定します。
  4. Runをクリックします。
  5. ソルバーのプロシージャが成功裏に終了すると、MainタブのAnimateボタンがアクティブになります。Animate をクリックしてモデルをアニメーション表示します。アニメーションを開始するには、停止するにはをクリックします。


    図 9.