From 9bcee7b4462b16fe07af10cfb94a82d85626ca8a Mon Sep 17 00:00:00 2001 From: Thomas Bleher Date: Thu, 9 Apr 2026 09:49:27 +0200 Subject: [PATCH 1/7] Add AssignRouteAction to TrafficAction This makes it possible to forward OpenSCENARIO XML's AssignRouteAction to a traffic participant. Fixes #896. Signed-off-by: Thomas Bleher --- osi_trafficcommand.proto | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/osi_trafficcommand.proto b/osi_trafficcommand.proto index d8763b430..2a0d90d9d 100644 --- a/osi_trafficcommand.proto +++ b/osi_trafficcommand.proto @@ -4,6 +4,7 @@ option optimize_for = SPEED; import "osi_version.proto"; import "osi_common.proto"; +import "osi_route.proto"; package osi3; @@ -130,6 +131,10 @@ message TrafficAction // optional TeleportAction teleport_action = 12; + // A AssignRouteAction + // + optional AssignRouteAction assign_route_action = 13; + // // \brief The action header // @@ -687,4 +692,24 @@ message TrafficAction // optional Orientation3d orientation = 3; } + + // \brief Assign Route Action + // + // This Action allows to assign a route to a traffic participant. + // + // \note This action is aligned with the AssignRouteAction of OpenSCENARIO + // 1.3, with the assumption that the scenario engine resolves the route + // (e.g. converting a "use shortest route" to a concrete route) before + // passing it to the traffic participant. + // + message AssignRouteAction + { + // The Action Header + // + optional ActionHeader action_header = 1; + + // The route to be assigned to the traffic participant. + // + optional Route route = 2; + } } From 5e46d74794d67824b427852312f7ff90d0ff577e Mon Sep 17 00:00:00 2001 From: Thomas Bleher Date: Fri, 24 Apr 2026 09:48:49 +0200 Subject: [PATCH 2/7] Fix "Issue 1: Grammar error" from code review --- osi_trafficcommand.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osi_trafficcommand.proto b/osi_trafficcommand.proto index 2a0d90d9d..1bb89e9d3 100644 --- a/osi_trafficcommand.proto +++ b/osi_trafficcommand.proto @@ -131,7 +131,7 @@ message TrafficAction // optional TeleportAction teleport_action = 12; - // A AssignRouteAction + // An AssignRouteAction // optional AssignRouteAction assign_route_action = 13; From 924351a284721218ec40a0013ce19f3cca50643c Mon Sep 17 00:00:00 2001 From: Thomas Bleher Date: Fri, 24 Apr 2026 09:50:00 +0200 Subject: [PATCH 3/7] Fix "Issue 2: Version reference inconsistency" from code review --- osi_trafficcommand.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osi_trafficcommand.proto b/osi_trafficcommand.proto index 1bb89e9d3..1fe05b6d5 100644 --- a/osi_trafficcommand.proto +++ b/osi_trafficcommand.proto @@ -698,7 +698,7 @@ message TrafficAction // This Action allows to assign a route to a traffic participant. // // \note This action is aligned with the AssignRouteAction of OpenSCENARIO - // 1.3, with the assumption that the scenario engine resolves the route + // 1.0, with the assumption that the scenario engine resolves the route // (e.g. converting a "use shortest route" to a concrete route) before // passing it to the traffic participant. // From c36fd01cb569231428f40d69f744169538e2ea81 Mon Sep 17 00:00:00 2001 From: Thomas Bleher Date: Fri, 24 Apr 2026 09:51:27 +0200 Subject: [PATCH 4/7] Fix "Issue 3: The "resolving" assumption is under-specified" from code review --- osi_trafficcommand.proto | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/osi_trafficcommand.proto b/osi_trafficcommand.proto index 1fe05b6d5..0c41a04b2 100644 --- a/osi_trafficcommand.proto +++ b/osi_trafficcommand.proto @@ -698,9 +698,15 @@ message TrafficAction // This Action allows to assign a route to a traffic participant. // // \note This action is aligned with the AssignRouteAction of OpenSCENARIO - // 1.0, with the assumption that the scenario engine resolves the route - // (e.g. converting a "use shortest route" to a concrete route) before - // passing it to the traffic participant. + // 1.0, with the assumption that the scenario engine fully resolves the + // route before passing it to the traffic participant. Resolution includes: + // - Converting all OpenSCENARIO Position types to logical lane s-positions + // - Applying the RouteStrategy (e.g., shortest, fastest) to determine the + // concrete path between waypoints + // - Unrolling closed routes into a linear segment sequence + // - Resolving any CatalogReferences + // The resulting OSI Route contains only concrete LogicalLaneSegments; + // the original RouteStrategy values and Position types are not forwarded. // message AssignRouteAction { From ad2b41303e94d3e52899cbcc199d08d05e0a9714 Mon Sep 17 00:00:00 2001 From: Thomas Bleher Date: Fri, 24 Apr 2026 09:52:29 +0200 Subject: [PATCH 5/7] Fix "Issue 4: Missing non-MotionControlAction clarification" from code review --- osi_trafficcommand.proto | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/osi_trafficcommand.proto b/osi_trafficcommand.proto index 0c41a04b2..2e894db16 100644 --- a/osi_trafficcommand.proto +++ b/osi_trafficcommand.proto @@ -707,6 +707,10 @@ message TrafficAction // - Resolving any CatalogReferences // The resulting OSI Route contains only concrete LogicalLaneSegments; // the original RouteStrategy values and Position types are not forwarded. + // \note Unlike FollowTrajectoryAction and FollowPathAction, this action + // does not override lateral or longitudinal motion control. It provides + // routing guidance that coexists with other motion-controlling actions + // (e.g. SpeedAction, LaneChangeAction). // message AssignRouteAction { From 768c5ddb5a352147aef34af9b27b5f39dd57c35a Mon Sep 17 00:00:00 2001 From: Thomas Bleher Date: Fri, 24 Apr 2026 09:55:20 +0200 Subject: [PATCH 6/7] Fix "Issue 5: AcquireGlobalPositionAction documentation now ambiguous" from code review Wording slightly adjusted --- osi_trafficcommand.proto | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/osi_trafficcommand.proto b/osi_trafficcommand.proto index 2e894db16..b2aeefebb 100644 --- a/osi_trafficcommand.proto +++ b/osi_trafficcommand.proto @@ -316,13 +316,10 @@ message TrafficAction // // \brief Acquire global position action. // - // This action assigns a route to a traffic participant. The route - // assigned will be the shortest route (along roads or satisfying any - // other constraints a traffic participant is operating under) between - // the traffic participant's current position and the position specified. - // - // As with all routing actions, the exact way this route is achieved is - // under the control of the traffic participant model. + // This action assigns a target position to a traffic participant. + // The traffic participant is expected to navigate to this position + // autonomously (e.g. via the shortest route). Unlike AssignRouteAction, + // no explicit route is provided — routing is left to the participant. // // \note This action is aligned with the AcquirePositionAction of // OpenSCENARIO 1.0 using a WorldPosition position argument. From 3c0868f60cb66471e6ade37ffd22bd8f5a74cbe9 Mon Sep 17 00:00:00 2001 From: Thomas Bleher Date: Fri, 24 Apr 2026 09:56:32 +0200 Subject: [PATCH 7/7] Fix "Issue 6: Route.route_id must be set" from code review --- osi_trafficcommand.proto | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osi_trafficcommand.proto b/osi_trafficcommand.proto index b2aeefebb..1fa4b2bdf 100644 --- a/osi_trafficcommand.proto +++ b/osi_trafficcommand.proto @@ -708,6 +708,8 @@ message TrafficAction // does not override lateral or longitudinal motion control. It provides // routing guidance that coexists with other motion-controlling actions // (e.g. SpeedAction, LaneChangeAction). + // \note The Route.route_id must be set and unique within all route + // messages exchanged with this traffic participant. // message AssignRouteAction {