OpenSCENARIO 支持
scenario_runner 提供对 OpenSCENARIO 标准的支持。当前的实现涵盖了对机动动作、条件、故事和故事板的初步支持。如果您想使用场景的评估标准来评估通过/失败结果,可以将这些标准实现为 StopTriggers(见下文)。然而,并非这些元素的所有功能均可用。如果有疑问,请参阅 srunner/tools/openscenario_parser.py 中的模块文档。
此处 提供了基于 OpenSCENARIO 的受支持场景的示例。
此外,建议查看 此处 和 此处 and here 提供的官方文档。
将 OpenSCENARIO 0.9.x 迁移到 1.0
将旧的 OpenSCENARIO 示例转换为官方标准 1.0 的最简单方法是使用 xsltproc 和位于 openscenario 文件夹中的迁移方案。例子:
xsltproc -o newScenario.xosc migration0_9_1to1_0.xslt oldScenario.xosc
支持程度
下面列出了 OpenSCENARIO 属性及其当前支持状态。
常规的 OpenSCENARIO 设置
这涵盖了 OpenSCENARIO Storyboard 外部定义的所有部分
属性 | 支持 | 笔记 |
---|---|---|
FileHeader |
✅ | 在描述的开头使用“CARLA:”即可使用 CARLA 坐标系。 |
CatalogLocations ControllerCatalog |
✅ | 虽然支持目录,但参考/使用可能不起作用。 |
CatalogLocations EnvironmentCatalog |
✅ | |
CatalogLocations ManeuverCatalog |
✅ | |
CatalogLocations MiscObjectCatalog |
✅ | |
CatalogLocations PedestrianCatalog |
✅ | |
CatalogLocations RouteCatalog |
✅ | 虽然支持目录,但参考/使用可能不起作用。 |
CatalogLocations TrajectoryCatalog |
✅ | 虽然支持目录,但参考/使用可能不起作用。 |
CatalogLocations VehicleCatalog |
✅ | |
ParameterDeclarations |
✅ | |
RoadNetwork LogicFile |
✅ | 可以直接使用CARLA级别(例如LogicFile=Town01)。还可以提供任何 OpenDRIVE 路径。 |
RoadNetwork SceneGraphFile |
❌ | 所提供的信息未被使用。 |
RoadNetwork TafficSignals |
❌ | 所提供的信息未被使用。 |
Entities EntitySelection |
❌ | 所提供的信息未被使用。 |
Entities ScenarioObject CatalogReference |
✅ | 所提供的信息未被使用。 |
Entities ScenarioObject MiscObject |
✅ | 该名称应与 CARLA 车辆型号匹配,否则将使用基于vehicleCategory 的默认车辆。 BoundingBox 条目将被忽略。 |
Entities ScenarioObject ObjectController |
❌ | 所提供的信息未被使用。 |
Entities ScenarioObject Pedestrian |
✅ | 该名称应与 CARLA 车辆型号匹配,否则将使用基于vehicleCategory 的默认车辆。 BoundingBox 条目将被忽略。 |
Entities ScenarioObject Vehicle |
✅ | 该名称应与 CARLA 车辆型号匹配,否则将使用基于vehicleCategory 的默认车辆。颜色可以通过属性设置('属性名称=“颜色”值=“0,0,255”')。 Axles、Performance、BoundingBox 条目将被忽略。 |
OpenSCENARIO 故事板
OpenSCENARIO 操作
OpenSCENARIO 操作可用于两个不同的目的。首先,动作可用于定义某些事物(例如交通参与者)的初始行为。因此,Actions 可以在 OpenSCENARIO Init 中使用。此外,OpenSCENARIO 故事中也使用了动作。下面列出了这两个应用领域的支持状态。如果操作包含未列出的子模块,则支持状态适用于所有子模块。
GlobalAction
GlobalAction | 初始化支持 | Story support | 笔记 |
---|---|---|---|
EntityAction |
✅ | ✅ | |
EnvironmentAction |
✅ | ❌ | |
ParameterAction |
✅ | ✅ | |
InfrastructureAction TrafficSignalAction TrafficAction |
❌ | ❌ | |
InfrastructureAction TrafficSignalAction TrafficSignalControllerAction |
❌ | ✅ | |
InfrastructureAction TrafficSignalAction TrafficSignalStateAction |
❌ | ✅ | 由于 CARLA 城镇中的交通信号灯没有唯一 ID,因此必须通过提供其位置来设置它们(示例:TrafficSignalStateAction name="pos=x,y" state="green")。该 ID 也可用于非 CARLA 城镇(示例:TrafficSignalStateAction name="id=n" state="green") |
用户定义的动作
用户定义的动作 | 初始化支持 | Story support | 笔记 |
---|---|---|---|
CustomCommandAction |
❌ | ✅ | 此操作当前用于触发附加脚本的执行。示例:type="python /path/to/script args"。 |
PrivateAction
PrivateAction | 初始化支持 | Story support | 笔记 |
---|---|---|---|
ActivateControllerAction |
❌ | ✅ | 可用于激活/停用 CARLA 自动驾驶仪。 |
ControllerAction |
✅ | ✅ | 支持AssignControllerAction,但必须为控制器实现提供Python 模块,并且在OverrideControllerValueAction 中所有值都需要为False 。 |
LateralAction LaneChangeAction |
❌ | ✅ | 目前所有车道变化都有一个线性的dynamicShape,dynamicDimension被定义为距离并且相对于参与者本身(RelativeTargetLane)。 |
LateralAction LaneOffsetAction |
❌ | ✅ | 目前,所有类型的动态形状都被忽略并取决于控制器。如果偏移量足够高以使车辆退出车道,则此操作可能无法按预期工作。 |
LateralAction LateralDistanceAction |
✅ | ✅ | |
LongitudinalAction LongitudinalDistanceAction |
❌ | ✅ | 不支持timeGap 属性 |
LongitudinalAction SpeedAction |
✅ | ✅ | |
SynchronizeAction |
❌ | ❌ | |
TeleportAction |
✅ | ✅ | |
VisibilityAction |
❌ | ❌ | |
RoutingAction AcquirePositionAction |
❌ | ✅ | |
RoutingAction AssignRouteAction |
❌ | ✅ | 支持路线选项(最短/最快/等)。最短路径表示 A 和 B 之间的直接路径,其他所有路径将使用 A 和 B 之间的路网中的最短路径。 |
RoutingAction FollowTrajectoryAction |
❌ | ✅ | 目前仅支持没有时间约束的折线,轨迹跟随模式由控制器决定。 |
OpenSCENARIO 条件
OpenSCENARIO 中的条件可以定义为 ByEntityCondition 或 ByValueCondition。两者均可用于 StartTrigger 和 StopTrigger 条件。以下两个表列出了每个表的支持状态。
ByEntityCondition
EntityCondition | 支持 | 笔记 |
---|---|---|
AccelerationCondition |
✅ | |
CollisionCondition |
✅ | |
DistanceCondition |
✅ | *freespace* 属性仍然不受支持 |
EndOfRoadCondition |
✅ | |
OffroadCondition |
✅ | |
ReachPositionCondition |
✅ | |
RelativeDistanceCondition |
✅ | |
RelativeSpeedCondition |
✅ | |
SpeedCondition |
✅ | |
StandStillCondition |
✅ | |
TimeHeadwayCondition |
✅ | |
TimeToCollisionCondition |
✅ | |
TraveledDistanceCondition |
✅ |
ByValueCondition
ValueCondition | 支持 | 笔记 |
---|---|---|
ParameterCondition |
✅ | 支持级别取决于参数。如果可能的话,建议使用其他条件。另请考虑下面的注释。 |
SimulationTimeCondition |
✅ | |
StoryboardElementStateCondition |
✅ | 目前支持 startTransition、stopTransition、endTransition 和completeState。 |
TimeOfDayCondition |
✅ | |
TrafficSignalCondition |
✅ | 由于 CARLA 城镇中的交通信号灯没有唯一 ID,因此必须通过提供其位置来设置它们(示例:TrafficSignalCondition name="pos=x,y" state="green")。该 ID 也可用于非 CARLA 城镇(示例:TrafficSignalCondition name="id=n" state="green") |
TrafficSignalControllerCondition |
✅ | |
UserDefinedValueCondition |
❌ |
注意
在 OpenSCENARIO 1.0 标准中,没有定义测试/评估标准的定义。为此,您可以将 StopTrigger 条件与 CARLA 重复使用。通过提供条件的条件名称,通过 ParameterConditions 支持评估条件的以下 StopTrigger 条件:
- criteria_RunningStopTest
- criteria_RunningRedLightTest
- criteria_WrongLaneTest
- criteria_OnSideWalkTest
- criteria_KeepLaneTest
- criteria_CollisionTest
- criteria_DrivenDistanceTest
OpenSCENARIO Positions
在 OpenSCENARIO 中定义位置的方法有多种。下面我们列出了每种定义格式的当前支持状态。
位置 | 支持 | 笔记 |
---|---|---|
LanePosition |
✅ | |
RelativeLanePosition |
✅ | |
RelativeObjectPosition |
✅ | |
RelativeRoadPosition |
✅ | |
RelativeWorldPosition |
✅ | |
RoadPosition |
✅ | |
RoutePosition |
❌ | |
WorldPosition |
✅ |