Skip to content

17.2.0

Choose a tag to compare

@github-actions github-actions released this 02 Sep 01:24

Abstract

Add an optional per-entity lateral collision threshold (meters) that scenario authors can specify via OpenSCENARIO Controller Properties.
When set, this margin overrides the current default threshold (half of the reference entity width) used in lateral collision checks, enabling tighter validation rules without false failures.

Background

There was a request from scenario authors to set collision thresholds per entity for NPC trajectories.
In some scenarios, the pass/fail rule declares a failure if the ego and an NPC come within 0.2 m. With the current behavior—where the lateral collision “tolerance” effectively equals half the vehicle width—the scenario can fail even when authors intend to allow a small but explicit threshold. Providing a per-entity override solves this mismatch and keeps scenarios expressive and reproducible.

Details

  • New property (OpenSCENARIO Controller → Properties):
    lateralCollisionThreshold (unit: meters, optional).
    If omitted, legacy behavior is preserved (uses half of the reference entity width).

  • Usage (example):

        - ObjectController:
            Controller:
              Properties:
                Property:
                  - name: lateralCollisionThreshold
                    value: 0.62
              name: ''
  • Interpreter & Wiring

    • The OpenSCENARIO interpreter reads lateralCollisionThreshold from Controller Properties and forwards it to the entity. If the setter is unsupported by the entity type, it is ignored gracefully.
    • Behavior Tree (BT) plumbing adds an input port lateral_collision_threshold and stores it as std::optional<double>.
    • BehaviorPluginBase, VehicleBehaviorTree (and prepared hooks for pedestrian and do-nothing plugins) expose getter/setter for lateralCollisionThreshold.
    • VehicleEntity implements setLateralCollisionThreshold and passes the value to its behavior plugin.
  • Collision logic

    • In lateral collision distance evaluation, the threshold becomes:
      threshold = lateral_collision_margin.value_or(width * 0.5)
      where width is the reference entity’s bounding-box Y dimension.
    • This keeps the default unchanged while allowing per-entity tightening (e.g., 0.2).

References

N/A

Destructive Changes

N/A

Known Limitations

N/A

Related Issues