跳转到内容

阶段与事件 — 场景逻辑如何组织

屏幕底部的 LOGIC 卡片是场景行为所在的地方。本页面解释其各部分是什么,以及它们运行的顺序。

LOGIC 面板 — 包含角色行的阶段卡片、事件卡片、+ Event 按钮和 END CONDITIONS 节点

该图表嵌套了四个东西,从最外到最内。

层级是什么OpenSCENARIO
阶段一个具有启动条件的命名容器。Act
角色行每个参与该阶段的实体占一行。ManeuverGroup(其 entityRef
事件一个触发条件加一个或多个动作。Event
END CONDITIONS图表末尾的节点。决定何时停止运行。故事板的 StopTrigger

点击 + Phase 添加一个。该按钮在场景至少有一个角色之前是禁用的 — 其提示文本为先添加一个角色

新阶段不会是空的。一次点击会产生 Phase 1、你的实体的一个角色行,以及携带默认改变速度动作和默认模拟时间触发条件的 Event_1。事件编辑器会同时在右侧打开。

导入的场景保留原始阶段名称,所以一个阶段可能被称为 CutInAndBrakeAct 之类的,而不是 Phase 1

每个阶段都有一个启动行,有三个选项:

选项含义
在场景开始时阶段在运行开始时立即变为活跃。
延迟后…阶段在运行开始后的固定秒数后变为活跃。
自定义…任何触发条件 — 与事件触发条件使用相同的目录。

阶段的启动条件独立于在其上方绘制的阶段。两个都设置为在场景开始时的阶段都在 t=0 时变为活跃。 顺序来自你设置的启动条件,而不是卡片的垂直顺序。

阶段卡片上的小 × 删除它,以及其中的每个事件、动作和触发条件 — 不会弹出确认提示。用 Ctrl+Z 或工具栏中的 ↶ 按钮撤销。

右键单击阶段会显示 Add Event (actor)Delete Phase

事件是行为的单位:一个触发条件,一个或多个动作,应用于一个角色

用角色行中的 + Event 添加一个。每个新事件都带有与第一个相同的默认值 — 一个改变速度动作和一个在 0.00 s模拟时间触发条件。两个都在 0.00 s 的事件会同时触发,所以在继续前设置触发条件。

每个卡片有两行:

  • 上一行 — 事件名称、它触发的模拟时间(t=2.05s),以及一次完成后的
  • 下一行 — 动作的摘要,例如 8.3 m/s · 用时 2 s1 → · 用距 30 m同车道 Ego · 用时 3 s、或 平行 0 m/s · @-4 m/s²

触发时间和复选标记在播放期间填入,所以该图表也可作为运行日志。

选择一个卡片会在右上方打开编辑器,标题为角色 › 事件

事件编辑器 — ACTOR、TRIGGER(及其 ALL OF(AND)组)、ACTION、+ Action、ADVANCED

部分包含内容
ACTOR事件作用的实体。
TRIGGER一个或多个条件,分组排列。见触发条件
ACTION触发条件触发时发生什么。见动作
+ Action向同一事件添加另一个动作 — 所有动作在触发条件触发时运行。
ADVANCED下面的属性。
字段选项OpenSCENARIO
PROFILELinear / Cubic / Sinusoidal / StepdynamicsShape
PRIORITYAuto / overwrite / parallel / skipEvent@priority
REPEAT (EVENT)事件重复多少次Event@maximumExecutionCount
REPEAT (GROUP)角色的组重复多少次ManeuverGroup@maximumExecutionCount
MANEUVER事件属于的机动名称Maneuver@name
DELAY AFTER MET触发条件满足后要等待的秒数Condition@delay

PRIORITY 决定当此事件在同一角色上仍在运行另一个事件时触发时会发生什么:overwrite 停止运行的事件,parallel 让两者都继续,skip 丢弃新事件。Auto 让 drawtonomy 决定。

MANEUVER 主要是为了往返。drawtonomy 不将机动或机动组绘制为单独的框,但它保留其名称,以便导入的场景在导出时具有相同的结构。

  1. 运行开始。每个其启动条件已经满足的阶段变为活跃。
  2. 在活跃阶段内,每个事件每步评估其TRIGGER。当触发条件满足时 — 加上任何DELAY AFTER MET — 事件的动作开始。
  3. 动作根据其DYNAMICS(在一段时间内、在一段距离内或以一个速率)运行至完成。
  4. END CONDITIONS 节点满足时,运行停止。如果保留为自动,这意味着”当一切都完成时”。
  5. 如果FAIL CONDITION在任何时刻触发,运行结束时显示 FAIL 判定,而不是成功。

结束和失败条件了解步骤 4 和 5。

LOGIC 卡片上的 {x} 按钮打开 PARAMETERSVARIABLES 面板 — OpenSCENARIO 的 ParameterDeclarationsVariableDeclarations。参数在运行开始时固定;变量可以在运行中用设置变量修改变量动作改变。

一个需要注意的地方,在面板本身中声明:编辑参数不会改变用字面值导入的动作,因为参数引用在导入时解析。