コンテンツにスキップ

フェーズとイベント — シナリオロジックの構造

画面下部の LOGIC カードがシナリオの動作定義の場です。このページではその各部分と実行順序について説明します。

LOGIC ペイン — フェーズカードとアクター行、イベントカード、+ Event、END CONDITIONS ノード

グラフは最も外側から順に、4 つのものを入れ子にしています。

レベル説明OpenSCENARIO
フェーズ開始条件を持つ名前付きコンテナ。Act
アクター行フェーズに参加するエンティティごとの 1 行。ManeuverGroup (entityRef)
イベント1 つのトリガーと 1 つ以上のアクション。Event
END CONDITIONSグラフの終端にあるノード。実行がいつ停止するかを決定。Storyboard の StopTrigger

+ Phase をクリックしてフェーズを追加します。このボタンはシナリオに少なくとも 1 つのアクターが存在するまで無効です。ボタンのツールチップに「Add an actor first」と表示されます。

新しいフェーズは空では配置されません。1 クリックで Phase 1、エンティティのアクター行、デフォルト Change Speed アクションと Simulation time トリガーを持つ Event_1 が生成されます。同時にイベントエディタが右側に開きます。

インポートされたシナリオは元の act 名を保持するため、フェーズは CutInAndBrakeAct など Phase 1 ではない名前で呼ばれることもあります。

すべてのフェーズは Start 行を持ち、3 つの選択肢があります。

選択肢意味
At scenario startフェーズは実行が開始されるとすぐにアクティブになります。
After a delay…フェーズは実行開始から固定秒数後にアクティブになります。
Custom…任意のトリガー条件 — イベントトリガーに使われるのと同じカタログです。

フェーズの開始条件は、その上に描かれたフェーズから独立しています。At scenario start に設定された 2 つのフェーズはどちらも t=0 でアクティブになります。シーケンス処理は、カード表示上の上下順ではなく、設定した開始条件から生まれます。

フェーズカード上の小さな × ボタンはそのフェーズを削除し、その中のすべてのイベント、アクション、トリガーも削除します — 確認プロンプトはありません。Ctrl+Z またはツールバーの ↶ ボタンで戻すことができます。

フェーズを右クリックすると Add Event (actor)Delete Phase が表示されます。

イベントは動作の単位です。1 つのトリガー、1 つ以上のアクションを、1 つのアクターに適用します。

アクター行内の + Event で追加します。新しいイベントは最初と同じデフォルトで配置されます — Change Speed アクションと 0.00 sSimulation time トリガーです。0.00 s に設定された 2 つのイベントは同時に発火するため、先に進む前にトリガーを設定します。

各カードには 2 行の情報があります。

  • 上部 — イベント名、発火した時刻 (t=2.05s)、完了時の
  • 下部 — アクションの要約。例えば 8.3 m/s · over 2 s1 → · over 30 msame lane as Ego · over 3 sparallel 0 m/s · @-4 m/s²

発火時刻とチェックマークは再生中に入力されるため、グラフは実行ログとしても機能します。

カードを選択すると、右上にエディタが開き、actor › event というヘッダが表示されます。

イベントエディタ — ACTOR、TRIGGER と ALL OF (AND) グループ、ACTION、+ Action、ADVANCED

セクション説明
ACTORイベントが作用するエンティティ。
TRIGGER1 つ以上の条件 (グループ化)。トリガーを参照。
ACTIONトリガーが発火したときに実行される動作。アクションを参照。
+ Action同じイベントに別のアクションを追加します — トリガーが発火すると全て実行されます。
ADVANCED下記の属性。
フィールド選択肢OpenSCENARIO
PROFILELinear / Cubic / Sinusoidal / StepdynamicsShape
PRIORITYAuto / overwrite / parallel / skipEvent@priority
REPEAT (EVENT)イベントの繰り返し回数Event@maximumExecutionCount
REPEAT (GROUP)アクターのグループの繰り返し回数ManeuverGroup@maximumExecutionCount
MANEUVERイベントが属する Maneuver 名Maneuver@name
DELAY AFTER METトリガー条件が満たされた後の秒数Condition@delay

PRIORITY は、このイベントが同じアクター上で実行中の別のイベント中に発火した場合に何が起こるかを決定します。overwrite は実行中のイベントを停止し、parallel は両方続行させ、skip は新しいイベントを破棄します。Auto は drawtonomy に選択させます。

MANEUVER はおもにラウンドトリップのために存在します。drawtonomy は Maneuver や Maneuver Group を独立したボックスとして描きませんが、その名前を保持するため、インポートされたシナリオはその同じ構造でエクスポートされます。

  1. 実行が開始されます。開始条件が既に満たされているすべてのフェーズがアクティブになります。
  2. アクティブなフェーズ内では、各イベントが TRIGGER を毎ステップ評価します。トリガーが満たされ、さらに DELAY AFTER MET が経過すると、イベントのアクションが開始されます。
  3. アクションはその DYNAMICS に従って完了します (時間経過中、距離経過中、またはレート)。
  4. END CONDITIONS ノードが満たされると実行が停止します。Automatic のままなら、「すべてが完了したとき」を意味します。
  5. FAIL CONDITION が任意のポイントでトリガーされた場合、実行は FAIL 結果で終了します。

ステップ 4 と 5 については、終了条件と失敗条件を参照してください。

LOGIC カード上の {x} ボタンは PARAMETERSVARIABLES パネルを開きます — OpenSCENARIO の ParameterDeclarationsVariableDeclarations です。パラメータは実行開始時に固定されます。変数は Set VariableModify Variable アクションで実行中に変更できます。

1 つの注意点があり、パネル自体にも記載されています。パラメータの編集は、インポート時にリテラル値で読み込まれたアクションに対して遡って変更を加えません。パラメータ参照がインポート時に解決されるからです。