MV-8800:ウィザードを使用していない二輪車モデルへのAltair Driverの追加とSlalomイベントのシミュレーション

本チュートリアルでは、Assembly Wizard Library外で構築された任意のモデルにAltair Driverを追加し、MotionViewで使用可能なフルビークルイベントを実行する方法について学習します。

Altair Driverとは
Altair Driverは、MotionViewでフルビークルイベントシミュレーションを実行するのに必要な、コントロールライブラリと信号制御マネージャ―で構成されるシステムです。Altair Driverを使用して、以下を含む任意の数のフルビークルイベントのシミュレーションが可能です:
  • シミュレーションのスクリプト記述:シミュレーションをさまざまな運転操作に分割
  • 開ループ、閉ループ、およびユーザー定義のコントローラー
  • 経路と速度のプロファイルに追従
Altair Driverの詳細については、Full VehicleイベントとAltair Driverをご参照ください。

MotionView Assembly Wizardを使用して車両をアセンブルすると、モデルを構築しながらAltair Driverを選択できます。ただし、車両がWizard Library外でモデル化される場合、フルビークルイベントのシミュレーションを行うには、Altair Driverを手動で追加する必要があります。

本チュートリアルでは、インポートされたCADモデルからのMotionViewエンティティを使用して作成された、ウィザードを使用していない二輪車モデルに、Altair Driverを追加します。Altair Driverを追加するため、PowertrainおよびBrakeシステムが作成され、Altair Driverとリンクされます。Altair Driverがモデルに設定されると、Slalomイベントが追加され、シミュレーションが実行されます。

ウィザードを使用していない二輪車モデル
本チュートリアルで使用可能な二輪車モデルは、ポイント、ボディ、グラフィックス、ジョイント、スプリングダンパ、AutoTiresを含む基本的なマルチボディモデルです(詳細についてはAutoTire - 自動車用エンティティをご参照ください)。速度や横運動を制御するための直接的なテンプレートやコントロールベースのシステムは、モデル内では使用できません。フロントサスペンションとリアサスペンションの剛性、減衰、初期荷重のプロパティは調整済みです。モデルMotorcycle_Tutorial.mdlは、h3dファイルMotorcycle_Tutorial_graphic.h3dからグラフィックス情報を読み取ります。
1. チュートリアルの二輪車モデル


以下の手順に従うことで、単純な“線形トルクマップ”パワートレインおよびブレーキトルクシステムを作成し、イベントのシミュレーション時に車両の速度を制御することができます。

始める前に、mbd_modeling\driver_motorcycleフォルダーにあるMotorcycle_Tutorial.mdlおよびMotorcycle_Tutorial_graphic.h3dファイルを自身の<作業ディレクトリ>にコピーします。

Powertrainシステムの作成

  1. MotionViewセッションで、menu barFile > Load > Preference Fileをクリックして、Preferencesダイアログを開きます。
    1. MBD-Vehicle Dynamics Toolsを選択します。
    2. Loadをクリックします。
    2.


  2. menu barFile > Open > Modelをクリックし、Motorcycle_Tutorial.mdlを選択してウィザードを使用していない二輪車モデルを開きます。
    3. MotionViewで開かれたMotorcycle_Tutorial.mdl


  3. Model > Add > System/Assemblyを右クリックして、Powertrainシステムを作成します。
    4.


  4. Variable名にsys_powertrainと入力し、LabelにPowertrainと入力します。
    5.


  5. Powertrain > Add > General MDL Entity > Datasetを右クリックし、Powertrainシステムにデータセットを追加します。名前にPowertrain Dataと入力します。
    6.


  6. 作成されたデータセットのData Membersで、Type Realの3つのデータメンバーを次の名前で作成します。
    • Throttle scaling
    • Max torque
    • Min torque
    7.


  7. Propertiesで、データメンバーの値を入力します:
    • Throttle scaling = 1
    • Max torque = 150000
    • Min torque = -500
    8.


  8. Powertrain > Add > Control Entity > SolverArrayを右クリックしてソルバー配列を作成し、これにPowertrainというラベルを付けます。
    9.


  9. 作成されたPowertrainソルバー配列のValuesで、Editチェックボックスを選択し、5つのData point valuesをAppend(追加)します。
    10.


  10. fxボタンを使用して、Max Torqueデータセット値を選択し、これをData point value 1の式に追加します。
    11.


    または、配列Data point value 1にds_powertrain_data.max_torque.valueと入力します。
    12.


  11. 前の手順を繰り返し、Min torqueThrottle Scalingのデータセット値を、配列のData point value 2および3に追加します。
    13.


    注: ソルバー配列内のゼロ値の信号は、IC Engine Friction Clutch Powertrainとの一貫性を保つために必要です。
  12. Powertrain > Add > Control Entity > Solver Variableを右クリックして、次のように5つのソルバー変数を作成します。
    Label Variable
    Throttle sv_throttle
    Gear sv_gear
    Clutch sv_clutch
    Powertrain Speed sv_powertrain_speed
    Brake sv_brake
    Drive Torque sv_drive_torque
    14.


  13. Powertrain speedソルバー変数のPropertiesで、TypeをExpressionに変更し、次の式を入力します:
    `-WY({MODEL.sys_rear_susp.b_Rear_Wheel.cm.idstring},{MODEL.sys_rear_susp.b_SwingArm.cm.idstring})`
    15.


    注: この式は、スイングアームを基準とした後輪の角速度を表します。Altair Driverはホイールの角速度を使用して車速を予測し、速度要求を達成するために必要なスロットルを設定します。ホイールとパワートレイン間でギア比が存在する場合は、これをPowertrain speedソルバー変数式内でホイールの角速度に乗算する必要があります。
  14. Drive torqueソルバー変数で、User-defined propertiesオプションを選択します。
    16.


  15. User-definedタブで、User exprに次のように入力します:
    `USER(1,{sa_powertrain.idstring},{sv_throttle.idstring})`
  16. Use local file and function nameチェックボックスを選択し、Local Fileにmsautoutils、Function nameにVIRTUAL_POWERTRAINと入力します。
    17.


    ソルバー変数のユーザー式により指定されたソルバー信号は、Altair Driverからの指定のスロットル入力のDrive torqueを計算します。Drive torqueソルバー変数は、Powertrainソルバー配列のデータソース1とThrottleソルバー変数から情報を読み取ります。線形トルクマップパワートレインの詳細については、以下をご参照ください:線形トルクマップパワートレイン.

  17. Powertrain > Add > Force Entity > Forceを右クリックし、後輪に駆動トルクを適用する力エンティティを作成します。この力にDrive Torqueというラベルを付けます。
    18.


  18. ConnectivityでForceタイプをAction reactionに変更し、PropertiesをRotationalに変更します。Body 1にRear_Wheel、Body 2にSwingArm、Point 1にWheel_Centerを選択します。
    19.


    注: エンティティを選択できない場合は、オプションOnly show entities within valid scopeをオフにします。
    20.


  19. Drive torque力エンティティのRot Propertiesで、Tyをexpressionに変更し、次のように入力します。
    `-VARVAL({sv_drive_torque.idstring})`
    21.


  20. Powertrain > Add > Reference Entity > Curveを右クリックして、PowertrainシステムにGear Ratioという名前のカーブエンティティを追加します。
  21. xとyのタイプをvaluesに変更し、以下のように(0,0)(1,1)を入力します。
    22.


    このカーブは、マニュアルトランスミッションをモデル化するIC Engine Friction Clutch Powertrainとの一貫性を保つために必要です。このチュートリアルで使用される線形トルクマップエンジンのギア比は1つだけです。
    注: ClutchおよびGearのソルバー変数は未使用の信号で、IC Engine Friction Clutch Powertrainとの一貫性を保つために存在し、ドライバーアタッチメントの解決にも必要となります。

Brakeシステムの作成

  1. Model > Add > System/Assemblyを右クリックして、Brakeシステムを作成します。
    23.


  2. Brake > Add > Control Entity > Solver Variableを右クリックしてブレーキソルバー変数を作成し、これにBrakeというラベルを付けます。
    24.


  3. Brake > Add > Force Entity > Forceを右クリックし、前輪および後輪にブレーキトルクを適用する2つの力エンティティを作成します。これらにFront Brake TorqueおよびRear Brake Torqueというラベルを付けます。
    25.


  4. Front Brake Torqueをクリックします。ConnectivityでForceをAction Reactionに、PropertiesをSingle Component Rotationalに変更します。Body 1にFront_Wheel、Body 2にShockRod、Point 1に前輪のWheel_Centerを選択し、DirectionをVectorに変更して、Global Yを選択します。
    26.


  5. Rot Propertiesで、T:をexpressionに変更し、次のように入力します:`VARVAL({sv_brake.idstring})*10000`.
  6. Rear Brake Torqueをクリックします。ConnectivityでForceをAction Reactionに、PropertiesをSingle Component Rotationalに変更します。Body 1にRear_Wheel、Body 2にSwingArm、Point 1に後輪のWheel_Centerを選択し、DirectionをVectorに変更して、Global Yを選択します。
    27.


  7. Rot Propertiesで、T:をExpressionに変更し、次のように入力します: `VARVAL({sv_brake.idstring})*10000`.
    28.


モデルへのAltair Driverの追加

  1. Model > Add Auto Entityを右クリックします。Altair Driverを選択し、OKをクリックします。
    29.


    注: Infoダイアログが表示され、Altair Driverパネルで車両のコンフィギュレーションを設定するよう求められます。車両のコンフィギュレーションには、車両の向きに応じて定義されるFrontおよびLeftベクトルがあり、Altair Driverがこの車両を制御するための基準として使用されます。車両モデルがFront:-X、Left:-Y以外の座標系で作成されている場合、Altair DriverパネルのVehicle Orientationは、モデルの基準に変更する必要があります。
    車両に3つ以上ホイールがあるものの、車体が傾くことが予測される場合は、Vehicle Configurationを“Leaning”または“Non-leaning”に変更できます。この選択に応じて、モデルに傾きありまたはなしのイベントを追加することができます。
    30.


  2. Altair Driverパネルで、Attachmentsをクリックします。アタッチメントを次のように入力します:
    Vehicle Attachments 選択
    Vehicle Body (Body) Vehicle_Body Altair Driverは、車両の速度、加速度、位置を計算する必要があります。
    Engine Speed (Solver Variable) Powertrain speed エンジン速度を推定する必要があります。
    Path Reference (Marker) Road_Reference 経路を予測し、路面とその原点および向きを認識する必要があります。
    Gear Ratios (Curve) Gear Ratio 駆動トルクに乗算するギア比が必要です。本チュートリアルではダミーのカーブが作成されましたが、パワートレインでは使用されません。
    Driver Outputs 選択
    Steering Joint (Joint) Steering モデル内でAltair Driverからのステアリング制御トルク / モーションを適用するためのジョイントが必要です。
    Brake output (Solver Variable) Brake Brakeトルクエンティティに適用されるAltair Driverからのブレーキの値を受け取ります。
    Clutch output (Solver Variable) Clutch ドライブからクラッチコンフィギュレーションのOn/Offを受け取ります。本チュートリアルで使用される線形パワートレインの場合、これは使用されません。
    Throttle output (Solver Variable) Throttle 要求トルク / 車両速度に基づいてパワートレインモデルに適用されるスロットル出力を、Altair Driverから受け取ります。
    Gear output (Solver Variable) Gear Altair Driverからギア位置を受け取ります。
    Vehicle Constraints (optional) 選択
    Constraint – 1 (Joint) Planar_joint_for_statics 静的シミュレーションの解析中に、車両がヨーイングしないように拘束します。静的シミュレーション後、このジョイントは非アクティブになります。
    Drive Joint (Joint) Wheel_Rear 静的シミュレーションの解析中に、後輪をロックするために使用されます。静的シミュレーション後、このジョイントは非アクティブになります。
    注: これらのアタッチメントはオプションで、未解決のままにすることができますが、良好な静的解および静的平衡位置を得るには、すべてのアタッチメントを解決することをお勧めします。
    31.


Slalomイベントの追加とモデルのシミュレーション

このステップでは、任意のフルビークルイベントをモデルに追加できます。本チュートリアルでは、Slalomイベントが追加されます。
  1. ブラウザでModelを右クリックして、コンテキストメニューからAdd Eventsを選択します。
    32.


  2. イベントリストからSlalomを選択して、OKをクリックします。
    33.


  3. Slalmomイベントを右クリックし、Edit Eventを選択します。
    34.


  4. Slalomイベントでは、Number of conesを10に、速度のUnitsをkm/hに変更し、Velocityを45km/hに設定します。
    35.


    Driverタブでは、ステアリング制御入力をMotionとTorqueから選択し、PID制御の利得を変更することができます。
    36.


  5. Solver Input Fileで、ファイル名を定義して実行モデルを保存する場所をブラウズし、RunをクリックしてSlalomイベントのシミュレーションを行います。
    37.


Altair Driverへの外部制御の追加(オプション)

Altair Driverの制御は、User Signalsを使用して、外部式、サブルーチン、FMUに置き換えることができます。Steering、Throttle、Gear、Brake、Clutchの5つの車両入力は、Altair DriverのUser Signalsから調整して、特定のイベント用に、記述されたADFコマンドを上書きすることができます。
38.


開ループユーザー定義信号

このステップでは、Step Steer Eventで定義されたADF Driverコマンドを置き換えるために、User Signalsから車両の傾き制御が設定されます。

  1. User SignalsタブのAltair Driverで、Signal 0を選択し、TypeをExpressionに変更して、Step(time,5,0,10,10D)と入力します。
    39.


  2. Model > Add Eventsを右クリックします。 StepSteer、Label = StepSteer、Variable = event_stepsteerを選択し、OKをクリックします。
  3. StepSteerイベントを右クリックし、Event Menuの下にあるBuild Eventを選択します。
    40.


    Build Eventはモデルのシミュレーションに必要なファイルを生成します。
    注: Event Editorを使用してSolver Input Fileフォルダーを指定しない場合、モデル.mdlが保存されるのと同じ場所にEventという名前のフォルダーが作成されます。Build Eventオプションは、そのフォルダーにファイルを格納します。
  4. テキストエディタでファイルevent_stepsteer.adfを開き、DEMAND_LEANブロックを変更して、MotionView信号を含めます。
    41.


  5. TYPEには‘MOTIONVIEW’と入力し、Signal_ChannelはMotionViewモデルでも指定されているように0のままにし、EXPRESSION行は削除するかコメントアウトします。
    42.


  6. event_stepsteer.adfファイルを保存します。MotionView Runパネルから、Run MotionSolve fileを選択し、エクスポートされたevent_stepsteer.xmlを探し、Runをクリックします。
    43.


閉ループユーザー定義信号

このステップでは、Double Lane Changeイベントで定義されたトラクション制御入力は、Step関数式に置き換えられます。

  1. User SignalsタブのAltair Driverで、Signal 1を選択し、TypeをExpressionに変更して、`Step(time,1,10000,5,20000)`と入力します。
    44.


  2. Model > Add Eventsを右クリックします。Double Lane Change、Label = DoubleLaneChange 、Variable = event_DLCを選択し、OKをクリックします。
  3. DoubleLaneChangeイベントを右クリックし、Event Menuの下にあるBuild Eventを選択します。
    45.


    Build Eventはモデルのシミュレーションに必要なファイルを生成します。
    注: Event Editorを使用してSolver Input Fileフォルダーを指定しない場合、モデル.mdlが保存されるのと同じ場所にEventという名前のフォルダーが作成されます。Build Eventオプションは、そのフォルダーにファイルを格納します。
  4. テキストエディタでファイルevent_DLC.adfを開き、DEMAND_SPEEDブロックを変更して、MotionView信号を含めます。
    46.


  5. TYPEに‘MOTIONVIEW’と入力し、VALUE = 1000の行をSIGNAL_CHANNEL = 1に置き換えます。
    47.


  6. event_DLC.adfファイルを保存し、MotionView RunパネルでRun MotionSolve fileを選択して、エクスポートされたevent_DLC.xmlを探し、Runをクリックします。
    48.