MV-8002:複数の運転操作イベント

本チュートリアルでは、運転操作またはサブイベントの終了条件の定義、パラメトリックな式の書き出し、およびイベントの連続して実行される複数のサブイベントとしての定義を行う方法について学びます。

終了条件
指定のシミュレーション終了時刻の前に特定の運転操作を終了する条件
終了条件の例 – 前後方向の速度が10 m/sを上回った際、または、ロール角が定常状態に達した際に運転操作を終了
終了条件は、グループ分けすることにより、論理的に結合することができます(OR-ed または AND-ed)
複数の運転操作イベント
2つ以上の運転操作から成るイベント – これらの運転操作は連続して実行される
コントローラーは、運転操作を切り替えている間にのみ、切り替えが可能
したがって、おおまかには – コントローラを切り替える必要があるときには、運転操作を切り替える
ドライバーは、運転操作を切り替える際に、以下を行う
  • 1つ前の運転操作を停止する
  • パラメトリックな式の場合、次の運転操作の初期値として機能する信号値を保存する(ドライバーがモニターする信号のリストが存在)。詳細については、該当する資料を参照のこと
  • コントローラーの / コントローラーでの切り替えを実行する
  • 新しい運転操作を開始する
例:フィッシュフック、J-ターン、スロットルオフでのコーナリング解析
パラメトリックな式
複数の運転操作イベントでは、信号の連続性を保つために、運転操作の開始に先駆けて、式を再評価する必要がある
{ 波括弧(中括弧)内の式 }
MotionSolveに渡される前に式を評価するようドライバーに指示
{SIGNAL}
VARVAL(信号ソルバー変数ID)として評価される
{SIGNAL_0}
最後の運転操作の終了時における信号値として評価される
{%SIGNAL}
{SIGNAL} – {SIGNAL_0} として評価される
ドライバーは、運転操作の前に運転操作について式を評価する

例:

スロットルオフでのコーナリングのイベント
運転操作1
定常円旋回、ロール角が最大値に達して安定するまで、一定速度で一定半径の経路を追従
運転操作2
同じ経路を追従している間にスロットルをステップダウン

このイベントでは、運転操作1は閉ループのステアリングとスロットルコントローラーで構成されます。運転操作 2では、ステアリングコントローラーは同じに留まりますが、スロットルコントローラーは開ループで、式 –‘STEP(TIME – end time of maneuver 1 , 0, throttle value at the end of maneuver 1, 0.5, 0)’を入力します。

図 1.

車両の組み立て

MV-8000のStep 1の指示に従って、以下のトポロジーの車両を生成します:
ページ ラベル 選択 デフォルト(Yes/No)
1 Model type Full vehicle with advanced driver No
2 Driveline configuration Front wheel drive Yes
3 車体 Body Yes
3 Front suspension Frnt macpherson susp (1 pc. LCA) Yes
3 Steering linkages Rackpin steering Yes
3 Rear subframe None Yes
3 Rear suspension Rear quadlink susp Yes
3 Powertrain Linear torque map powertrain Yes
3 Signal generator Driver signal generator Yes
3 Tires FIALA Yes
4 Steering column Steering column 1 (not for Abaqus) Yes
4 Steering boost None Yes
5 Front struts Frnt strut (with inline jts) Yes
5 Front stabilizer bars Frnt stabar with links No
5 Rear struts Rear strut (with inline jts) Yes
5 Rear stabilizer bars Rear stabar with links No
6 Front jounce bumpers None Yes
6 Front rebound bumpers None Yes
6 Rear jounce bumpers None Yes
6 Rear rebound bumpers None Yes
7 Disk brakes Disk brakes Yes
7 Front driveline Independent fwd Yes
8   Next No
9   Finish No

ドライバー解析の追加

Task Wizardを使って、ドライバー解析を読み込みます。
図 2.

車両パラメータの指定

このステップでは、車両のパラメータを指定します。

フィードフォワードコントローラーは車両をモデル化するため、車両パラメータを必要とします。車両パラメータが精確である必要はありません。Altair Driverが必要とする車両パラメータのほとんどは、車両モデルから自動的に計算されます。
車両のパラメータを指定します。

Altair Driver File(ADF)運転イベントの書き出し


フィッシュフックイベント

このイベントを3つの運転操作でモデル化します。

  1. 任意のテキストエディターを開き、以下のテキストをコピーペーストします。重要:
    重要: ファイルを保存する前に、すべての空白行を削除する必要があります。

    ADFに何が書かれているかをより良く理解するために、コメントをよく読んでください。

    $-----------------------------------------------------------------ALTAIR_HEADER
    [ALTAIR_HEADER]
    FILE_TYPE 		= 'ADF'
    FILE_VERSION 	= 1.0
    FILE_FORMAT 	= 'ASCII'
    $--------------------------------------------------------------------------UNITS
    [UNITS]
    (BASE)
    {length  force      angle       mass    time}
    'meter'   'newton'   'radians'   'kg'    'sec'
    $--------------------------------------------------------------VEHICLE_IC
    [VEHICLE_INITIAL_CONDITIONS]
    VX0 	= -17.5
    VY0 	= 0.0
    VZ0 	= 0.0
    $--------------------------------------------------------------STEERING_STANDARD
    [STEER_STANDARD]
    $Upper and lower bounds are kept to match the event requirement of saturating at 
    $270 deg and -540 deg respectively
    MAX_VALUE 	        =  4.712 
    MIN_VALUE 	        =  -9.425
    SMOOTHING_FREQUENCY = 5 
    INITIAL_VALUE       = 0.0
    $--------------------------------------------------------------THROTTLE_STANDARD
    [THROTTLE_STANDARD]
    MAX_VALUE           = 1
    MIN_VALUE           = 0
    SMOOTHING_FREQUENCY = 5
    INITIAL_VALUE       = 0.0
    $---------------------------------------------------------------BRAKING_STANDARD
    [BRAKE_STANDARD]
    MAX_VALUE           = 1
    MIN_VALUE           = 0
    SMOOTHING_FREQUENCY = 5
    INITIAL_VALUE       = 0.0
    $-----------------------------------------------------------------MANEUVERS_LIST
    [MANEUVERS_LIST]
    {name  		simulation_time         h_max   	print_interval}
    'GO_STRAIGHT'        		2.0     		0.01		0.1
    'LEFT_TURN'                 	12.0		0.001		0.1
    'RIGHT_TURN'              	10.0		0.001       	0.1
    [GO_STRAIGHT]
    TASK = 'STANDARD' 
    (CONTROLLERS)
    {DRIVER_SIGNAL  PRIMARY_CONTROLLER	ADDITIONAL_CONTROLLER}
     STEER	OL_CONSTANT_STEER           	NONE
     THROTTLE	FEED_FORWARD_TRACTION       	NONE
     BRAKE	FEED_FORWARD_TRACTION       	NONE
    $---------------------------------------------------------------------MANEUVER_2
    [LEFT_TURN] 
    TASK = 'STANDARD' 
    (CONTROLLERS)
    {DRIVER_SIGNAL  PRIMARY_CONTROLLER	ADDITIONAL_CONTROLLER}
     STEER	OL_LEFT_STEER            		NONE
     THROTTLE	FEED_FORWARD_TRACTION		NONE
     BRAKE	FEED_FORWARD_TRACTION		NONE
    $We want to end the maneuver if the roll rate reaches steady state i.e. d(Roll rate)/dt = 0 
    $(tolerance = 0.005) for 0.5 seconds
    (END_CONDITIONS)
    {SIGNAL                GROUP  ABS  OPERATOR  VALUE  TOLERANCE  WATCH_TIME}
     ROLL_RATE           0	        	Y       SS      	 	0           0.005		0.5
    $---------------------------------------------------------------------MANEUVER_3
    [RIGHT_TURN] 
    TASK = 'STANDARD' 
    (CONTROLLERS)
    {DRIVER_SIGNAL  PRIMARY_CONTROLLER	ADDITIONAL_CONTROLLER}
     STEER	OL_RIGHT_STEER            	NONE
     THROTTLE	FEED_FORWARD_TRACTION	NONE
     BRAKE	FEED_FORWARD_TRACTION	NONE
    $--------------------------------------STEER for Maneuver 1
    [OL_CONSTANT_STEER]
    TAG = 'OPENLOOP'
    TYPE = 'CONSTANT'
    VALUE = 0 
    $--------------------------------------STEER for Maneuver 2
    $Ramp up the steering wheel @ 360 deg per send
    [OL_LEFT_STEER]
    TAG = 'OPENLOOP'
    TYPE = 'EXPRESSION'
    SIGNAL_CHANNEL = 0
    EXPRESSION = '{STEER_0} + {%TIME}*PI*2'
    $--------------------------------------STEER for Maneuver 3
    [OL_RIGHT_STEER]
    TAG = 'OPENLOOP'
    TYPE = 'EXPRESSION'
    SIGNAL_CHANNEL = 0
    EXPRESSION = '{STEER_0} - {%TIME}*PI*2'
    $--------------------------------------THROTTLE and BRAKE controller for entire event
     [FEED_FORWARD_TRACTION]
    TAG             = 'FEEDFORWARD'
    TYPE            = 'FOLLOW_VELOCITY'
    LOOK_AHEAD_TIME = 0.5
    DEMAND_SIGNAL   = 'DEMAND_VEL'
    $----------------Demand Velocity
    [DEMAND_VEL]
    TYPE            = 'CONSTANT'
    VALUE           = 17.5
  2. シミュレーションを実行します。
  3. 結果を検証します。
    運転操作 2は、ロール変化率が0.5秒の間、一貫して0 (表記のトレランスで)であると停止します。
    図 3.