Add AssignRouteAction to TrafficAction#898
Add AssignRouteAction to TrafficAction#898tbleher wants to merge 7 commits intoOpenSimulationInterface:masterfrom
Conversation
This makes it possible to forward OpenSCENARIO XML's AssignRouteAction to a traffic participant. Fixes OpenSimulationInterface#896. Signed-off-by: Thomas Bleher <thomas.tb.bleher@bmw.de>
PR #898: AssignRouteAction — Comprehensive Review & Analysis
1. Concepts: Trajectory, Path and RouteThree related but fundamentally different concepts exist in the OSI/OpenSCENARIO ecosystem 1.1 Comparison Table
1.2 Key structural insight: OSC has no separate "FollowPathAction"OpenSCENARIO uses a single
OSI splits this into two separate protobuf messages for clarity:
Implication for documentation: The existing OSI comments on both actions cite 1.3 Key behavioral insight: AssignRouteAction does NOT control motionPer This means:
2. OpenSCENARIO Route Model: Waypoints and RouteStrategy2.1 StructureAn OpenSCENARIO Each 2.2 RouteStrategy semantics: "from this waypoint to the next"The spec describes Consequence: The 2.3 Why 2 waypoints minimum?A route by definition connects points in the road network. With 1 waypoint, there is no However, this raises a design question: does the first waypoint represent the entity's
2.4 Route (abstract) vs Concrete Route (resolved)This distinction is central to the PR's resolving assumption:
Resolution is the process of converting abstract → concrete. It requires:
3. The OSC → OSI Boundary: What Gets ResolvedThe PR's
3.1 Resolution table
3.2 Architectural consequences
4. OSI RoutingAction Landscape After PR #898After merging, OSI will have three routing-related actions in
Critical distinction: AcquireGlobalPositionAction vs AssignRouteActionBoth involve "assigning a route," but at fundamentally different levels:
5. Review of PR #898: Issues and Recommendations5.1 What the PR adds (diff summary)// In osi_trafficcommand.proto:
import "osi_route.proto"; // new import
// In message TrafficAction:
optional AssignRouteAction assign_route_action = 13; // new field
// New nested message:
message AssignRouteAction
{
optional ActionHeader action_header = 1;
optional Route route = 2;
}5.2 Positive aspects
5.3 Issues and improvement recommendationsEach item below includes the current text, the problem, and a recommended fix Issue 1: Grammar errorCurrent text: Problem: English grammar requires "An" before vowel sounds. Recommended fix: Issue 2: Version reference inconsistencyCurrent text: Problem: All 12 existing OSI actions reference "OpenSCENARIO 1.0" (e.g., Recommended fix — option A (align): Recommended fix — option B (explain): Issue 3: The "resolving" assumption is under-specifiedCurrent text: Problem: The note correctly states that resolution is required but does not
Recommended fix: Issue 4: Missing non-MotionControlAction clarificationProblem: OpenSCENARIO explicitly states that Recommended addition: Issue 5: AcquireGlobalPositionAction documentation now ambiguousProblem: The existing
With the addition of an explicit
Recommended clarification (in existing Issue 6: Route.route_id must be setProblem: The OSI Recommended addition (in 6. Summary: Making Comments Precise and Avoiding MisapplicationThe core challenge is that the PR's current
Guiding principles for precise OSI documentation
|
…" from code review Wording slightly adjusted
|
Thanks @jdsika for the detailed review. I have applied all 6 suggestions to the branch (copied verbatim, except for issue 5, where I removed one additional sentence from the original description, which I think did not make sense anymore). A few notes on this: On the Version reference inconsistency: I checked OpenSCENARIO 1.0, and since the wording apparently hasn't changed, I switched to referencing version 1.0 of OpenSCENARIO XML. However, I wonder if we could not just reference the current standard in all places? The old versions are not free on the ASAM website (so to check them I have to be an ASAM member and download them). And hopefully someone implementing a new OSI standard will also update the OpenSCENARIO XML support. My question therefore is: Would it not make more sense to update the external standards references on each OSI release, to make sure they match the current standard of OpenSCENARIO XML? On The "resolving" assumption is under-specified: I added this, but note that this is still incomplete: the I have the same question about 'Route.route_id must be set' - this is clearly spelled out in the I have thought a bit more about
This is a good insight. Let's think through the alternative - passing the OpenSCENARIO XML Thanks again for the detailed review! |
This makes it possible to forward OpenSCENARIO XML's AssignRouteAction to a traffic participant.
Fixes #896.