Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-27 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takagi, Isamu
- Kosuke Takeuchi
- Ryohsuke Mitsudome
- Takamasa Horibe
- Takayuki Murooka
- Mamoru Sobue
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
Mission Planner
Purpose
Mission Planner calculates a route that navigates from the current ego pose to the goal pose following the given check points.
The route is made of a sequence of lanes on a static map.
Dynamic objects (e.g. pedestrians and other vehicles) and dynamic map information (e.g. road construction which blocks some lanes) are not considered during route planning.
Therefore, the output topic is only published when the goal pose or check points are given and will be latched until the new goal pose or check points are given.
The core implementation does not depend on a map format. Any planning algorithms can be added as plugin modules. In current Autoware Universe, only the plugin for Lanelet2 map format is supported.
This package also manages routes for MRM. The route_selector node duplicates the mission_planner interface and provides it for normal and MRM respectively.
It distributes route requests and planning results according to current MRM operation state.
Interfaces
Parameters
| Name | Type | Description |
|---|---|---|
map_frame |
string | The frame name for map |
arrival_check_angle_deg |
double | Angle threshold for goal check |
arrival_check_lateral_distance |
double | Lateral distance threshold for goal check |
arrival_check_longitudinal_undershoot_distance |
double | Longitudinal distance threshold for goal check when the vehicle has not yet reached the goal |
arrival_check_longitudinal_overshoot_distance |
double | Longitudinal distance threshold for goal check when the vehicle has passed the goal |
arrival_check_duration |
double | Duration threshold for goal check |
goal_angle_threshold |
double | Max goal pose angle for goal approve |
enable_correct_goal_pose |
bool | Enabling correction of goal pose according to the closest lanelet orientation |
reroute_time_threshold |
double | If the time to the rerouting point at the current velocity is greater than this threshold, rerouting is possible |
minimum_reroute_length |
double | Minimum Length for publishing a new route |
consider_no_drivable_lanes |
bool | This flag is for considering no_drivable_lanes in planning or not. |
allow_reroute_in_autonomous_mode |
bool | This is a flag to allow reroute in autonomous driving mode. If false, reroute fails. If true, only safe reroute is allowed |
Services
| Name | Type | Description |
|---|---|---|
/planning/mission_planning/mission_planner/clear_route |
tier4_planning_msgs/srv/ClearRoute | route clear request |
/planning/mission_planning/mission_planner/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | route request with lanelet waypoints. |
/planning/mission_planning/mission_planner/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | route request with pose waypoints. |
/planning/mission_planning/mission_planner/set_preferred_primitive |
tier4_planning_msgs/srv/SetPreferredPrimitive | preferred-lane change request |
/planning/mission_planning/route_selector/main/clear_route |
tier4_planning_msgs/srv/ClearRoute | main route clear request |
/planning/mission_planning/route_selector/main/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | main route request with lanelet waypoints. |
/planning/mission_planning/route_selector/main/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | main route request with pose waypoints. |
/planning/mission_planning/route_selector/mrm/clear_route |
tier4_planning_msgs/srv/ClearRoute | mrm route clear request |
/planning/mission_planning/route_selector/mrm/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | mrm route request with lanelet waypoints. |
/planning/mission_planning/route_selector/mrm/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | mrm route request with pose waypoints. |
Subscriptions
| Name | Type | Description |
|---|---|---|
input/vector_map |
autoware_map_msgs/msg/LaneletMapBin | vector map of Lanelet2 |
input/modified_goal |
geometry_msgs/PoseWithUuidStamped | modified goal pose |
input/operation_mode_state |
autoware_adapi_v1_msgs/OperationModeState | operation mode state |
input/odometry |
nav_msgs/msg/Odometry | vehicle odometry |
Publications
| Name | Type | Description |
|---|---|---|
/planning/mission_planning/state |
tier4_planning_msgs/msg/RouteState | route state |
/planning/mission_planning/route |
autoware_planning_msgs/LaneletRoute | route |
/planning/mission_planning/route_selector/main/state |
tier4_planning_msgs/msg/RouteState | main route state |
/planning/mission_planning/route_selector/main/route |
autoware_planning_msgs/LaneletRoute | main route |
/planning/mission_planning/route_selector/mrm/state |
tier4_planning_msgs/msg/RouteState | mrm route state |
/planning/mission_planning/route_selector/mrm/route |
autoware_planning_msgs/LaneletRoute | mrm route |
~/debug/route_marker |
visualization_msgs/msg/MarkerArray | route marker for debug |
~/debug/goal_footprint |
visualization_msgs/msg/MarkerArray | goal footprint for debug |
Route section
Route section, whose type is autoware_planning_msgs/LaneletSegment, is a “slice” of a road that bundles lane changeable lanes.
Note that the most atomic unit of route is autoware_planning_msgs/LaneletPrimitive, which has the unique id of a lane in a vector map and its type.
Therefore, route message does not contain geometric information about the lane since we did not want to have planning module’s message to have dependency on map data structure.
The ROS message of route section contains following three elements for each route section.
-
preferred_primitive: Preferred lane to follow towards the goal. -
primitives: All neighbor lanes in the same direction including the preferred lane.
Goal Validation
The mission planner has control mechanism to validate the given goal pose and create a route. If goal pose angle between goal pose lanelet and goal pose’ yaw is greater than goal_angle_threshold parameter, the goal is rejected.
Another control mechanism is the creation of a footprint of the goal pose according to the dimensions of the vehicle and checking whether this footprint is within the lanelets. If goal footprint exceeds lanelets, then the goal is rejected.
At the image below, there are sample goal pose validation cases.
Implementation
Mission Planner
Two callbacks (goal and check points) are a trigger for route planning.
File truncated at 100 lines see the full file
Changelog for package autoware_mission_planner_universe
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(mission_planner): guard against empty planned path to prevent SIGSEGV (#13396)
* test(mission_planner): add regression test for empty-path route planning DefaultPlanner::plan() can build an empty planned path (fewer than two checkpoints, or planPathLaneletsBetweenCheckpoints reporting success while yielding no lanelets). That empty path is passed straight into route_handler (createMapSegments -> getMainLanelets, and refine_goal_height), both of which index the path/route with back() and dereference an invalid lanelet, causing a SIGSEGV that kills the mission_planner node. This commit adds only the regression test (planning a degenerate single-point route). It is intentionally pushed ahead of the fix so CI demonstrates the failure first; the following commit adds the guard that turns it green. Co-Authored-By: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>>
* fix(mission_planner): guard against empty planned path to prevent SIGSEGV When the planned path is empty (fewer than two check points, or planPathLaneletsBetweenCheckpoints reporting success while yielding no lanelets), plan() passed it into route_handler's createMapSegments -> getMainLanelets and refine_goal_height, both of which call back() on the empty path/route and dereference an invalid lanelet, segfaulting the node. Return a normal "failed to plan" result as soon as the path is empty, mirroring the existing early-return on planPathLaneletsBetweenCheckpoints failure. This turns the regression test added in the previous commit green. Co-Authored-By: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>>
* style(pre-commit): autofix ---------Co-authored-by: Masaya Kataoka <<cld-masaya.kataoka@tier4.jp>> Co-authored-by: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(mission_planner_universe): apply [agnocast_wrapper::Node]{.title-ref} to [route_selector]{.title-ref} & [goal_pose_visualizer]{.title-ref} (#12987)
- apply agnocast_wrapper::Node
- fix(mission_planner_universe): use AgnocastOnlyCallbackIsolatedExecutor for route_selector
- fix(mission_planner_universe): adapt service client to wrapper Client API
* refactor(mission_planner_universe): remove the now-empty mission_planner_container Both nodes that lived in mission_planner_container now run standalone with their own agnocast-aware executor: mission_planner in #13057 and route_selector in this PR. The container has no composable node left, so drop it and launch mission_planner as a standalone node. This assumes #13057 is merged first.
* refactor(autoware_mission_planner_universe): drop the unused qos_utils dependency and include the wrapper macros directly ---------Co-authored-by: kobayu858 <<yutaro.kobayashi.2@tier4.jp>>
-
feat(autoware_mission_planner_universe): apply agnocast_wrapper::Node to MissionPlanner (#13317)
-
refactor(autoware_mission_planner_universe): decouple DefaultPlanner from rclcpp::Node (#13283)
- refactor(autoware_mission_planner_universe): decouple DefaultPlanner from rclcpp::Node
- refactor(autoware_mission_planner_universe): align DefaultPlanner details with autoware_core
- refactor(autoware_mission_planner_universe): isolate the pluginlib registration and drop the relocated route log
- refactor(autoware_mission_planner_universe): keep ready() answerable before initialize() and drop the area marker stamp
- fix(autoware_mission_planner_universe): drop the trailing blank line left by removing the pluginlib export
* refactor(autoware_mission_planner_universe): remove pluginlib as autoware_core did ---------
-
refactor(planning): move node design files into each package (#13102) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/goal_pose_visualizer.launch.xml
-
- route_topic_name [default: /planning/mission_planning/route]
- echo_back_goal_pose_topic_name [default: /planning/mission_planning/echo_back_goal_pose]
- launch/mission_planner.launch.xml
-
- modified_goal_topic_name [default: /planning/scenario_planning/modified_goal]
- map_topic_name [default: /map/vector_map]
- route_topic_name [default: /planning/route]
- route_state_topic_name [default: /planning/route_state]
- clear_route_service_name [default: /planning/clear_route]
- set_lanelet_route_service_name [default: /planning/set_lanelet_route]
- set_waypoint_route_service_name [default: /planning/set_waypoint_route]
- visualization_topic_name [default: /planning/mission_planning/route_marker]
- mission_planner_param_path [default: $(find-pkg-share autoware_mission_planner_universe)/config/mission_planner.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_mission_planner_universe at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-27 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takagi, Isamu
- Kosuke Takeuchi
- Ryohsuke Mitsudome
- Takamasa Horibe
- Takayuki Murooka
- Mamoru Sobue
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
Mission Planner
Purpose
Mission Planner calculates a route that navigates from the current ego pose to the goal pose following the given check points.
The route is made of a sequence of lanes on a static map.
Dynamic objects (e.g. pedestrians and other vehicles) and dynamic map information (e.g. road construction which blocks some lanes) are not considered during route planning.
Therefore, the output topic is only published when the goal pose or check points are given and will be latched until the new goal pose or check points are given.
The core implementation does not depend on a map format. Any planning algorithms can be added as plugin modules. In current Autoware Universe, only the plugin for Lanelet2 map format is supported.
This package also manages routes for MRM. The route_selector node duplicates the mission_planner interface and provides it for normal and MRM respectively.
It distributes route requests and planning results according to current MRM operation state.
Interfaces
Parameters
| Name | Type | Description |
|---|---|---|
map_frame |
string | The frame name for map |
arrival_check_angle_deg |
double | Angle threshold for goal check |
arrival_check_lateral_distance |
double | Lateral distance threshold for goal check |
arrival_check_longitudinal_undershoot_distance |
double | Longitudinal distance threshold for goal check when the vehicle has not yet reached the goal |
arrival_check_longitudinal_overshoot_distance |
double | Longitudinal distance threshold for goal check when the vehicle has passed the goal |
arrival_check_duration |
double | Duration threshold for goal check |
goal_angle_threshold |
double | Max goal pose angle for goal approve |
enable_correct_goal_pose |
bool | Enabling correction of goal pose according to the closest lanelet orientation |
reroute_time_threshold |
double | If the time to the rerouting point at the current velocity is greater than this threshold, rerouting is possible |
minimum_reroute_length |
double | Minimum Length for publishing a new route |
consider_no_drivable_lanes |
bool | This flag is for considering no_drivable_lanes in planning or not. |
allow_reroute_in_autonomous_mode |
bool | This is a flag to allow reroute in autonomous driving mode. If false, reroute fails. If true, only safe reroute is allowed |
Services
| Name | Type | Description |
|---|---|---|
/planning/mission_planning/mission_planner/clear_route |
tier4_planning_msgs/srv/ClearRoute | route clear request |
/planning/mission_planning/mission_planner/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | route request with lanelet waypoints. |
/planning/mission_planning/mission_planner/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | route request with pose waypoints. |
/planning/mission_planning/mission_planner/set_preferred_primitive |
tier4_planning_msgs/srv/SetPreferredPrimitive | preferred-lane change request |
/planning/mission_planning/route_selector/main/clear_route |
tier4_planning_msgs/srv/ClearRoute | main route clear request |
/planning/mission_planning/route_selector/main/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | main route request with lanelet waypoints. |
/planning/mission_planning/route_selector/main/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | main route request with pose waypoints. |
/planning/mission_planning/route_selector/mrm/clear_route |
tier4_planning_msgs/srv/ClearRoute | mrm route clear request |
/planning/mission_planning/route_selector/mrm/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | mrm route request with lanelet waypoints. |
/planning/mission_planning/route_selector/mrm/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | mrm route request with pose waypoints. |
Subscriptions
| Name | Type | Description |
|---|---|---|
input/vector_map |
autoware_map_msgs/msg/LaneletMapBin | vector map of Lanelet2 |
input/modified_goal |
geometry_msgs/PoseWithUuidStamped | modified goal pose |
input/operation_mode_state |
autoware_adapi_v1_msgs/OperationModeState | operation mode state |
input/odometry |
nav_msgs/msg/Odometry | vehicle odometry |
Publications
| Name | Type | Description |
|---|---|---|
/planning/mission_planning/state |
tier4_planning_msgs/msg/RouteState | route state |
/planning/mission_planning/route |
autoware_planning_msgs/LaneletRoute | route |
/planning/mission_planning/route_selector/main/state |
tier4_planning_msgs/msg/RouteState | main route state |
/planning/mission_planning/route_selector/main/route |
autoware_planning_msgs/LaneletRoute | main route |
/planning/mission_planning/route_selector/mrm/state |
tier4_planning_msgs/msg/RouteState | mrm route state |
/planning/mission_planning/route_selector/mrm/route |
autoware_planning_msgs/LaneletRoute | mrm route |
~/debug/route_marker |
visualization_msgs/msg/MarkerArray | route marker for debug |
~/debug/goal_footprint |
visualization_msgs/msg/MarkerArray | goal footprint for debug |
Route section
Route section, whose type is autoware_planning_msgs/LaneletSegment, is a “slice” of a road that bundles lane changeable lanes.
Note that the most atomic unit of route is autoware_planning_msgs/LaneletPrimitive, which has the unique id of a lane in a vector map and its type.
Therefore, route message does not contain geometric information about the lane since we did not want to have planning module’s message to have dependency on map data structure.
The ROS message of route section contains following three elements for each route section.
-
preferred_primitive: Preferred lane to follow towards the goal. -
primitives: All neighbor lanes in the same direction including the preferred lane.
Goal Validation
The mission planner has control mechanism to validate the given goal pose and create a route. If goal pose angle between goal pose lanelet and goal pose’ yaw is greater than goal_angle_threshold parameter, the goal is rejected.
Another control mechanism is the creation of a footprint of the goal pose according to the dimensions of the vehicle and checking whether this footprint is within the lanelets. If goal footprint exceeds lanelets, then the goal is rejected.
At the image below, there are sample goal pose validation cases.
Implementation
Mission Planner
Two callbacks (goal and check points) are a trigger for route planning.
File truncated at 100 lines see the full file
Changelog for package autoware_mission_planner_universe
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(mission_planner): guard against empty planned path to prevent SIGSEGV (#13396)
* test(mission_planner): add regression test for empty-path route planning DefaultPlanner::plan() can build an empty planned path (fewer than two checkpoints, or planPathLaneletsBetweenCheckpoints reporting success while yielding no lanelets). That empty path is passed straight into route_handler (createMapSegments -> getMainLanelets, and refine_goal_height), both of which index the path/route with back() and dereference an invalid lanelet, causing a SIGSEGV that kills the mission_planner node. This commit adds only the regression test (planning a degenerate single-point route). It is intentionally pushed ahead of the fix so CI demonstrates the failure first; the following commit adds the guard that turns it green. Co-Authored-By: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>>
* fix(mission_planner): guard against empty planned path to prevent SIGSEGV When the planned path is empty (fewer than two check points, or planPathLaneletsBetweenCheckpoints reporting success while yielding no lanelets), plan() passed it into route_handler's createMapSegments -> getMainLanelets and refine_goal_height, both of which call back() on the empty path/route and dereference an invalid lanelet, segfaulting the node. Return a normal "failed to plan" result as soon as the path is empty, mirroring the existing early-return on planPathLaneletsBetweenCheckpoints failure. This turns the regression test added in the previous commit green. Co-Authored-By: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>>
* style(pre-commit): autofix ---------Co-authored-by: Masaya Kataoka <<cld-masaya.kataoka@tier4.jp>> Co-authored-by: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(mission_planner_universe): apply [agnocast_wrapper::Node]{.title-ref} to [route_selector]{.title-ref} & [goal_pose_visualizer]{.title-ref} (#12987)
- apply agnocast_wrapper::Node
- fix(mission_planner_universe): use AgnocastOnlyCallbackIsolatedExecutor for route_selector
- fix(mission_planner_universe): adapt service client to wrapper Client API
* refactor(mission_planner_universe): remove the now-empty mission_planner_container Both nodes that lived in mission_planner_container now run standalone with their own agnocast-aware executor: mission_planner in #13057 and route_selector in this PR. The container has no composable node left, so drop it and launch mission_planner as a standalone node. This assumes #13057 is merged first.
* refactor(autoware_mission_planner_universe): drop the unused qos_utils dependency and include the wrapper macros directly ---------Co-authored-by: kobayu858 <<yutaro.kobayashi.2@tier4.jp>>
-
feat(autoware_mission_planner_universe): apply agnocast_wrapper::Node to MissionPlanner (#13317)
-
refactor(autoware_mission_planner_universe): decouple DefaultPlanner from rclcpp::Node (#13283)
- refactor(autoware_mission_planner_universe): decouple DefaultPlanner from rclcpp::Node
- refactor(autoware_mission_planner_universe): align DefaultPlanner details with autoware_core
- refactor(autoware_mission_planner_universe): isolate the pluginlib registration and drop the relocated route log
- refactor(autoware_mission_planner_universe): keep ready() answerable before initialize() and drop the area marker stamp
- fix(autoware_mission_planner_universe): drop the trailing blank line left by removing the pluginlib export
* refactor(autoware_mission_planner_universe): remove pluginlib as autoware_core did ---------
-
refactor(planning): move node design files into each package (#13102) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/goal_pose_visualizer.launch.xml
-
- route_topic_name [default: /planning/mission_planning/route]
- echo_back_goal_pose_topic_name [default: /planning/mission_planning/echo_back_goal_pose]
- launch/mission_planner.launch.xml
-
- modified_goal_topic_name [default: /planning/scenario_planning/modified_goal]
- map_topic_name [default: /map/vector_map]
- route_topic_name [default: /planning/route]
- route_state_topic_name [default: /planning/route_state]
- clear_route_service_name [default: /planning/clear_route]
- set_lanelet_route_service_name [default: /planning/set_lanelet_route]
- set_waypoint_route_service_name [default: /planning/set_waypoint_route]
- visualization_topic_name [default: /planning/mission_planning/route_marker]
- mission_planner_param_path [default: $(find-pkg-share autoware_mission_planner_universe)/config/mission_planner.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_mission_planner_universe at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-27 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takagi, Isamu
- Kosuke Takeuchi
- Ryohsuke Mitsudome
- Takamasa Horibe
- Takayuki Murooka
- Mamoru Sobue
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
Mission Planner
Purpose
Mission Planner calculates a route that navigates from the current ego pose to the goal pose following the given check points.
The route is made of a sequence of lanes on a static map.
Dynamic objects (e.g. pedestrians and other vehicles) and dynamic map information (e.g. road construction which blocks some lanes) are not considered during route planning.
Therefore, the output topic is only published when the goal pose or check points are given and will be latched until the new goal pose or check points are given.
The core implementation does not depend on a map format. Any planning algorithms can be added as plugin modules. In current Autoware Universe, only the plugin for Lanelet2 map format is supported.
This package also manages routes for MRM. The route_selector node duplicates the mission_planner interface and provides it for normal and MRM respectively.
It distributes route requests and planning results according to current MRM operation state.
Interfaces
Parameters
| Name | Type | Description |
|---|---|---|
map_frame |
string | The frame name for map |
arrival_check_angle_deg |
double | Angle threshold for goal check |
arrival_check_lateral_distance |
double | Lateral distance threshold for goal check |
arrival_check_longitudinal_undershoot_distance |
double | Longitudinal distance threshold for goal check when the vehicle has not yet reached the goal |
arrival_check_longitudinal_overshoot_distance |
double | Longitudinal distance threshold for goal check when the vehicle has passed the goal |
arrival_check_duration |
double | Duration threshold for goal check |
goal_angle_threshold |
double | Max goal pose angle for goal approve |
enable_correct_goal_pose |
bool | Enabling correction of goal pose according to the closest lanelet orientation |
reroute_time_threshold |
double | If the time to the rerouting point at the current velocity is greater than this threshold, rerouting is possible |
minimum_reroute_length |
double | Minimum Length for publishing a new route |
consider_no_drivable_lanes |
bool | This flag is for considering no_drivable_lanes in planning or not. |
allow_reroute_in_autonomous_mode |
bool | This is a flag to allow reroute in autonomous driving mode. If false, reroute fails. If true, only safe reroute is allowed |
Services
| Name | Type | Description |
|---|---|---|
/planning/mission_planning/mission_planner/clear_route |
tier4_planning_msgs/srv/ClearRoute | route clear request |
/planning/mission_planning/mission_planner/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | route request with lanelet waypoints. |
/planning/mission_planning/mission_planner/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | route request with pose waypoints. |
/planning/mission_planning/mission_planner/set_preferred_primitive |
tier4_planning_msgs/srv/SetPreferredPrimitive | preferred-lane change request |
/planning/mission_planning/route_selector/main/clear_route |
tier4_planning_msgs/srv/ClearRoute | main route clear request |
/planning/mission_planning/route_selector/main/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | main route request with lanelet waypoints. |
/planning/mission_planning/route_selector/main/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | main route request with pose waypoints. |
/planning/mission_planning/route_selector/mrm/clear_route |
tier4_planning_msgs/srv/ClearRoute | mrm route clear request |
/planning/mission_planning/route_selector/mrm/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | mrm route request with lanelet waypoints. |
/planning/mission_planning/route_selector/mrm/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | mrm route request with pose waypoints. |
Subscriptions
| Name | Type | Description |
|---|---|---|
input/vector_map |
autoware_map_msgs/msg/LaneletMapBin | vector map of Lanelet2 |
input/modified_goal |
geometry_msgs/PoseWithUuidStamped | modified goal pose |
input/operation_mode_state |
autoware_adapi_v1_msgs/OperationModeState | operation mode state |
input/odometry |
nav_msgs/msg/Odometry | vehicle odometry |
Publications
| Name | Type | Description |
|---|---|---|
/planning/mission_planning/state |
tier4_planning_msgs/msg/RouteState | route state |
/planning/mission_planning/route |
autoware_planning_msgs/LaneletRoute | route |
/planning/mission_planning/route_selector/main/state |
tier4_planning_msgs/msg/RouteState | main route state |
/planning/mission_planning/route_selector/main/route |
autoware_planning_msgs/LaneletRoute | main route |
/planning/mission_planning/route_selector/mrm/state |
tier4_planning_msgs/msg/RouteState | mrm route state |
/planning/mission_planning/route_selector/mrm/route |
autoware_planning_msgs/LaneletRoute | mrm route |
~/debug/route_marker |
visualization_msgs/msg/MarkerArray | route marker for debug |
~/debug/goal_footprint |
visualization_msgs/msg/MarkerArray | goal footprint for debug |
Route section
Route section, whose type is autoware_planning_msgs/LaneletSegment, is a “slice” of a road that bundles lane changeable lanes.
Note that the most atomic unit of route is autoware_planning_msgs/LaneletPrimitive, which has the unique id of a lane in a vector map and its type.
Therefore, route message does not contain geometric information about the lane since we did not want to have planning module’s message to have dependency on map data structure.
The ROS message of route section contains following three elements for each route section.
-
preferred_primitive: Preferred lane to follow towards the goal. -
primitives: All neighbor lanes in the same direction including the preferred lane.
Goal Validation
The mission planner has control mechanism to validate the given goal pose and create a route. If goal pose angle between goal pose lanelet and goal pose’ yaw is greater than goal_angle_threshold parameter, the goal is rejected.
Another control mechanism is the creation of a footprint of the goal pose according to the dimensions of the vehicle and checking whether this footprint is within the lanelets. If goal footprint exceeds lanelets, then the goal is rejected.
At the image below, there are sample goal pose validation cases.
Implementation
Mission Planner
Two callbacks (goal and check points) are a trigger for route planning.
File truncated at 100 lines see the full file
Changelog for package autoware_mission_planner_universe
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(mission_planner): guard against empty planned path to prevent SIGSEGV (#13396)
* test(mission_planner): add regression test for empty-path route planning DefaultPlanner::plan() can build an empty planned path (fewer than two checkpoints, or planPathLaneletsBetweenCheckpoints reporting success while yielding no lanelets). That empty path is passed straight into route_handler (createMapSegments -> getMainLanelets, and refine_goal_height), both of which index the path/route with back() and dereference an invalid lanelet, causing a SIGSEGV that kills the mission_planner node. This commit adds only the regression test (planning a degenerate single-point route). It is intentionally pushed ahead of the fix so CI demonstrates the failure first; the following commit adds the guard that turns it green. Co-Authored-By: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>>
* fix(mission_planner): guard against empty planned path to prevent SIGSEGV When the planned path is empty (fewer than two check points, or planPathLaneletsBetweenCheckpoints reporting success while yielding no lanelets), plan() passed it into route_handler's createMapSegments -> getMainLanelets and refine_goal_height, both of which call back() on the empty path/route and dereference an invalid lanelet, segfaulting the node. Return a normal "failed to plan" result as soon as the path is empty, mirroring the existing early-return on planPathLaneletsBetweenCheckpoints failure. This turns the regression test added in the previous commit green. Co-Authored-By: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>>
* style(pre-commit): autofix ---------Co-authored-by: Masaya Kataoka <<cld-masaya.kataoka@tier4.jp>> Co-authored-by: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(mission_planner_universe): apply [agnocast_wrapper::Node]{.title-ref} to [route_selector]{.title-ref} & [goal_pose_visualizer]{.title-ref} (#12987)
- apply agnocast_wrapper::Node
- fix(mission_planner_universe): use AgnocastOnlyCallbackIsolatedExecutor for route_selector
- fix(mission_planner_universe): adapt service client to wrapper Client API
* refactor(mission_planner_universe): remove the now-empty mission_planner_container Both nodes that lived in mission_planner_container now run standalone with their own agnocast-aware executor: mission_planner in #13057 and route_selector in this PR. The container has no composable node left, so drop it and launch mission_planner as a standalone node. This assumes #13057 is merged first.
* refactor(autoware_mission_planner_universe): drop the unused qos_utils dependency and include the wrapper macros directly ---------Co-authored-by: kobayu858 <<yutaro.kobayashi.2@tier4.jp>>
-
feat(autoware_mission_planner_universe): apply agnocast_wrapper::Node to MissionPlanner (#13317)
-
refactor(autoware_mission_planner_universe): decouple DefaultPlanner from rclcpp::Node (#13283)
- refactor(autoware_mission_planner_universe): decouple DefaultPlanner from rclcpp::Node
- refactor(autoware_mission_planner_universe): align DefaultPlanner details with autoware_core
- refactor(autoware_mission_planner_universe): isolate the pluginlib registration and drop the relocated route log
- refactor(autoware_mission_planner_universe): keep ready() answerable before initialize() and drop the area marker stamp
- fix(autoware_mission_planner_universe): drop the trailing blank line left by removing the pluginlib export
* refactor(autoware_mission_planner_universe): remove pluginlib as autoware_core did ---------
-
refactor(planning): move node design files into each package (#13102) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/goal_pose_visualizer.launch.xml
-
- route_topic_name [default: /planning/mission_planning/route]
- echo_back_goal_pose_topic_name [default: /planning/mission_planning/echo_back_goal_pose]
- launch/mission_planner.launch.xml
-
- modified_goal_topic_name [default: /planning/scenario_planning/modified_goal]
- map_topic_name [default: /map/vector_map]
- route_topic_name [default: /planning/route]
- route_state_topic_name [default: /planning/route_state]
- clear_route_service_name [default: /planning/clear_route]
- set_lanelet_route_service_name [default: /planning/set_lanelet_route]
- set_waypoint_route_service_name [default: /planning/set_waypoint_route]
- visualization_topic_name [default: /planning/mission_planning/route_marker]
- mission_planner_param_path [default: $(find-pkg-share autoware_mission_planner_universe)/config/mission_planner.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_mission_planner_universe at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-27 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takagi, Isamu
- Kosuke Takeuchi
- Ryohsuke Mitsudome
- Takamasa Horibe
- Takayuki Murooka
- Mamoru Sobue
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
Mission Planner
Purpose
Mission Planner calculates a route that navigates from the current ego pose to the goal pose following the given check points.
The route is made of a sequence of lanes on a static map.
Dynamic objects (e.g. pedestrians and other vehicles) and dynamic map information (e.g. road construction which blocks some lanes) are not considered during route planning.
Therefore, the output topic is only published when the goal pose or check points are given and will be latched until the new goal pose or check points are given.
The core implementation does not depend on a map format. Any planning algorithms can be added as plugin modules. In current Autoware Universe, only the plugin for Lanelet2 map format is supported.
This package also manages routes for MRM. The route_selector node duplicates the mission_planner interface and provides it for normal and MRM respectively.
It distributes route requests and planning results according to current MRM operation state.
Interfaces
Parameters
| Name | Type | Description |
|---|---|---|
map_frame |
string | The frame name for map |
arrival_check_angle_deg |
double | Angle threshold for goal check |
arrival_check_lateral_distance |
double | Lateral distance threshold for goal check |
arrival_check_longitudinal_undershoot_distance |
double | Longitudinal distance threshold for goal check when the vehicle has not yet reached the goal |
arrival_check_longitudinal_overshoot_distance |
double | Longitudinal distance threshold for goal check when the vehicle has passed the goal |
arrival_check_duration |
double | Duration threshold for goal check |
goal_angle_threshold |
double | Max goal pose angle for goal approve |
enable_correct_goal_pose |
bool | Enabling correction of goal pose according to the closest lanelet orientation |
reroute_time_threshold |
double | If the time to the rerouting point at the current velocity is greater than this threshold, rerouting is possible |
minimum_reroute_length |
double | Minimum Length for publishing a new route |
consider_no_drivable_lanes |
bool | This flag is for considering no_drivable_lanes in planning or not. |
allow_reroute_in_autonomous_mode |
bool | This is a flag to allow reroute in autonomous driving mode. If false, reroute fails. If true, only safe reroute is allowed |
Services
| Name | Type | Description |
|---|---|---|
/planning/mission_planning/mission_planner/clear_route |
tier4_planning_msgs/srv/ClearRoute | route clear request |
/planning/mission_planning/mission_planner/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | route request with lanelet waypoints. |
/planning/mission_planning/mission_planner/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | route request with pose waypoints. |
/planning/mission_planning/mission_planner/set_preferred_primitive |
tier4_planning_msgs/srv/SetPreferredPrimitive | preferred-lane change request |
/planning/mission_planning/route_selector/main/clear_route |
tier4_planning_msgs/srv/ClearRoute | main route clear request |
/planning/mission_planning/route_selector/main/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | main route request with lanelet waypoints. |
/planning/mission_planning/route_selector/main/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | main route request with pose waypoints. |
/planning/mission_planning/route_selector/mrm/clear_route |
tier4_planning_msgs/srv/ClearRoute | mrm route clear request |
/planning/mission_planning/route_selector/mrm/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | mrm route request with lanelet waypoints. |
/planning/mission_planning/route_selector/mrm/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | mrm route request with pose waypoints. |
Subscriptions
| Name | Type | Description |
|---|---|---|
input/vector_map |
autoware_map_msgs/msg/LaneletMapBin | vector map of Lanelet2 |
input/modified_goal |
geometry_msgs/PoseWithUuidStamped | modified goal pose |
input/operation_mode_state |
autoware_adapi_v1_msgs/OperationModeState | operation mode state |
input/odometry |
nav_msgs/msg/Odometry | vehicle odometry |
Publications
| Name | Type | Description |
|---|---|---|
/planning/mission_planning/state |
tier4_planning_msgs/msg/RouteState | route state |
/planning/mission_planning/route |
autoware_planning_msgs/LaneletRoute | route |
/planning/mission_planning/route_selector/main/state |
tier4_planning_msgs/msg/RouteState | main route state |
/planning/mission_planning/route_selector/main/route |
autoware_planning_msgs/LaneletRoute | main route |
/planning/mission_planning/route_selector/mrm/state |
tier4_planning_msgs/msg/RouteState | mrm route state |
/planning/mission_planning/route_selector/mrm/route |
autoware_planning_msgs/LaneletRoute | mrm route |
~/debug/route_marker |
visualization_msgs/msg/MarkerArray | route marker for debug |
~/debug/goal_footprint |
visualization_msgs/msg/MarkerArray | goal footprint for debug |
Route section
Route section, whose type is autoware_planning_msgs/LaneletSegment, is a “slice” of a road that bundles lane changeable lanes.
Note that the most atomic unit of route is autoware_planning_msgs/LaneletPrimitive, which has the unique id of a lane in a vector map and its type.
Therefore, route message does not contain geometric information about the lane since we did not want to have planning module’s message to have dependency on map data structure.
The ROS message of route section contains following three elements for each route section.
-
preferred_primitive: Preferred lane to follow towards the goal. -
primitives: All neighbor lanes in the same direction including the preferred lane.
Goal Validation
The mission planner has control mechanism to validate the given goal pose and create a route. If goal pose angle between goal pose lanelet and goal pose’ yaw is greater than goal_angle_threshold parameter, the goal is rejected.
Another control mechanism is the creation of a footprint of the goal pose according to the dimensions of the vehicle and checking whether this footprint is within the lanelets. If goal footprint exceeds lanelets, then the goal is rejected.
At the image below, there are sample goal pose validation cases.
Implementation
Mission Planner
Two callbacks (goal and check points) are a trigger for route planning.
File truncated at 100 lines see the full file
Changelog for package autoware_mission_planner_universe
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(mission_planner): guard against empty planned path to prevent SIGSEGV (#13396)
* test(mission_planner): add regression test for empty-path route planning DefaultPlanner::plan() can build an empty planned path (fewer than two checkpoints, or planPathLaneletsBetweenCheckpoints reporting success while yielding no lanelets). That empty path is passed straight into route_handler (createMapSegments -> getMainLanelets, and refine_goal_height), both of which index the path/route with back() and dereference an invalid lanelet, causing a SIGSEGV that kills the mission_planner node. This commit adds only the regression test (planning a degenerate single-point route). It is intentionally pushed ahead of the fix so CI demonstrates the failure first; the following commit adds the guard that turns it green. Co-Authored-By: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>>
* fix(mission_planner): guard against empty planned path to prevent SIGSEGV When the planned path is empty (fewer than two check points, or planPathLaneletsBetweenCheckpoints reporting success while yielding no lanelets), plan() passed it into route_handler's createMapSegments -> getMainLanelets and refine_goal_height, both of which call back() on the empty path/route and dereference an invalid lanelet, segfaulting the node. Return a normal "failed to plan" result as soon as the path is empty, mirroring the existing early-return on planPathLaneletsBetweenCheckpoints failure. This turns the regression test added in the previous commit green. Co-Authored-By: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>>
* style(pre-commit): autofix ---------Co-authored-by: Masaya Kataoka <<cld-masaya.kataoka@tier4.jp>> Co-authored-by: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(mission_planner_universe): apply [agnocast_wrapper::Node]{.title-ref} to [route_selector]{.title-ref} & [goal_pose_visualizer]{.title-ref} (#12987)
- apply agnocast_wrapper::Node
- fix(mission_planner_universe): use AgnocastOnlyCallbackIsolatedExecutor for route_selector
- fix(mission_planner_universe): adapt service client to wrapper Client API
* refactor(mission_planner_universe): remove the now-empty mission_planner_container Both nodes that lived in mission_planner_container now run standalone with their own agnocast-aware executor: mission_planner in #13057 and route_selector in this PR. The container has no composable node left, so drop it and launch mission_planner as a standalone node. This assumes #13057 is merged first.
* refactor(autoware_mission_planner_universe): drop the unused qos_utils dependency and include the wrapper macros directly ---------Co-authored-by: kobayu858 <<yutaro.kobayashi.2@tier4.jp>>
-
feat(autoware_mission_planner_universe): apply agnocast_wrapper::Node to MissionPlanner (#13317)
-
refactor(autoware_mission_planner_universe): decouple DefaultPlanner from rclcpp::Node (#13283)
- refactor(autoware_mission_planner_universe): decouple DefaultPlanner from rclcpp::Node
- refactor(autoware_mission_planner_universe): align DefaultPlanner details with autoware_core
- refactor(autoware_mission_planner_universe): isolate the pluginlib registration and drop the relocated route log
- refactor(autoware_mission_planner_universe): keep ready() answerable before initialize() and drop the area marker stamp
- fix(autoware_mission_planner_universe): drop the trailing blank line left by removing the pluginlib export
* refactor(autoware_mission_planner_universe): remove pluginlib as autoware_core did ---------
-
refactor(planning): move node design files into each package (#13102) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/goal_pose_visualizer.launch.xml
-
- route_topic_name [default: /planning/mission_planning/route]
- echo_back_goal_pose_topic_name [default: /planning/mission_planning/echo_back_goal_pose]
- launch/mission_planner.launch.xml
-
- modified_goal_topic_name [default: /planning/scenario_planning/modified_goal]
- map_topic_name [default: /map/vector_map]
- route_topic_name [default: /planning/route]
- route_state_topic_name [default: /planning/route_state]
- clear_route_service_name [default: /planning/clear_route]
- set_lanelet_route_service_name [default: /planning/set_lanelet_route]
- set_waypoint_route_service_name [default: /planning/set_waypoint_route]
- visualization_topic_name [default: /planning/mission_planning/route_marker]
- mission_planner_param_path [default: $(find-pkg-share autoware_mission_planner_universe)/config/mission_planner.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_mission_planner_universe at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-27 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takagi, Isamu
- Kosuke Takeuchi
- Ryohsuke Mitsudome
- Takamasa Horibe
- Takayuki Murooka
- Mamoru Sobue
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
Mission Planner
Purpose
Mission Planner calculates a route that navigates from the current ego pose to the goal pose following the given check points.
The route is made of a sequence of lanes on a static map.
Dynamic objects (e.g. pedestrians and other vehicles) and dynamic map information (e.g. road construction which blocks some lanes) are not considered during route planning.
Therefore, the output topic is only published when the goal pose or check points are given and will be latched until the new goal pose or check points are given.
The core implementation does not depend on a map format. Any planning algorithms can be added as plugin modules. In current Autoware Universe, only the plugin for Lanelet2 map format is supported.
This package also manages routes for MRM. The route_selector node duplicates the mission_planner interface and provides it for normal and MRM respectively.
It distributes route requests and planning results according to current MRM operation state.
Interfaces
Parameters
| Name | Type | Description |
|---|---|---|
map_frame |
string | The frame name for map |
arrival_check_angle_deg |
double | Angle threshold for goal check |
arrival_check_lateral_distance |
double | Lateral distance threshold for goal check |
arrival_check_longitudinal_undershoot_distance |
double | Longitudinal distance threshold for goal check when the vehicle has not yet reached the goal |
arrival_check_longitudinal_overshoot_distance |
double | Longitudinal distance threshold for goal check when the vehicle has passed the goal |
arrival_check_duration |
double | Duration threshold for goal check |
goal_angle_threshold |
double | Max goal pose angle for goal approve |
enable_correct_goal_pose |
bool | Enabling correction of goal pose according to the closest lanelet orientation |
reroute_time_threshold |
double | If the time to the rerouting point at the current velocity is greater than this threshold, rerouting is possible |
minimum_reroute_length |
double | Minimum Length for publishing a new route |
consider_no_drivable_lanes |
bool | This flag is for considering no_drivable_lanes in planning or not. |
allow_reroute_in_autonomous_mode |
bool | This is a flag to allow reroute in autonomous driving mode. If false, reroute fails. If true, only safe reroute is allowed |
Services
| Name | Type | Description |
|---|---|---|
/planning/mission_planning/mission_planner/clear_route |
tier4_planning_msgs/srv/ClearRoute | route clear request |
/planning/mission_planning/mission_planner/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | route request with lanelet waypoints. |
/planning/mission_planning/mission_planner/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | route request with pose waypoints. |
/planning/mission_planning/mission_planner/set_preferred_primitive |
tier4_planning_msgs/srv/SetPreferredPrimitive | preferred-lane change request |
/planning/mission_planning/route_selector/main/clear_route |
tier4_planning_msgs/srv/ClearRoute | main route clear request |
/planning/mission_planning/route_selector/main/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | main route request with lanelet waypoints. |
/planning/mission_planning/route_selector/main/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | main route request with pose waypoints. |
/planning/mission_planning/route_selector/mrm/clear_route |
tier4_planning_msgs/srv/ClearRoute | mrm route clear request |
/planning/mission_planning/route_selector/mrm/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | mrm route request with lanelet waypoints. |
/planning/mission_planning/route_selector/mrm/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | mrm route request with pose waypoints. |
Subscriptions
| Name | Type | Description |
|---|---|---|
input/vector_map |
autoware_map_msgs/msg/LaneletMapBin | vector map of Lanelet2 |
input/modified_goal |
geometry_msgs/PoseWithUuidStamped | modified goal pose |
input/operation_mode_state |
autoware_adapi_v1_msgs/OperationModeState | operation mode state |
input/odometry |
nav_msgs/msg/Odometry | vehicle odometry |
Publications
| Name | Type | Description |
|---|---|---|
/planning/mission_planning/state |
tier4_planning_msgs/msg/RouteState | route state |
/planning/mission_planning/route |
autoware_planning_msgs/LaneletRoute | route |
/planning/mission_planning/route_selector/main/state |
tier4_planning_msgs/msg/RouteState | main route state |
/planning/mission_planning/route_selector/main/route |
autoware_planning_msgs/LaneletRoute | main route |
/planning/mission_planning/route_selector/mrm/state |
tier4_planning_msgs/msg/RouteState | mrm route state |
/planning/mission_planning/route_selector/mrm/route |
autoware_planning_msgs/LaneletRoute | mrm route |
~/debug/route_marker |
visualization_msgs/msg/MarkerArray | route marker for debug |
~/debug/goal_footprint |
visualization_msgs/msg/MarkerArray | goal footprint for debug |
Route section
Route section, whose type is autoware_planning_msgs/LaneletSegment, is a “slice” of a road that bundles lane changeable lanes.
Note that the most atomic unit of route is autoware_planning_msgs/LaneletPrimitive, which has the unique id of a lane in a vector map and its type.
Therefore, route message does not contain geometric information about the lane since we did not want to have planning module’s message to have dependency on map data structure.
The ROS message of route section contains following three elements for each route section.
-
preferred_primitive: Preferred lane to follow towards the goal. -
primitives: All neighbor lanes in the same direction including the preferred lane.
Goal Validation
The mission planner has control mechanism to validate the given goal pose and create a route. If goal pose angle between goal pose lanelet and goal pose’ yaw is greater than goal_angle_threshold parameter, the goal is rejected.
Another control mechanism is the creation of a footprint of the goal pose according to the dimensions of the vehicle and checking whether this footprint is within the lanelets. If goal footprint exceeds lanelets, then the goal is rejected.
At the image below, there are sample goal pose validation cases.
Implementation
Mission Planner
Two callbacks (goal and check points) are a trigger for route planning.
File truncated at 100 lines see the full file
Changelog for package autoware_mission_planner_universe
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(mission_planner): guard against empty planned path to prevent SIGSEGV (#13396)
* test(mission_planner): add regression test for empty-path route planning DefaultPlanner::plan() can build an empty planned path (fewer than two checkpoints, or planPathLaneletsBetweenCheckpoints reporting success while yielding no lanelets). That empty path is passed straight into route_handler (createMapSegments -> getMainLanelets, and refine_goal_height), both of which index the path/route with back() and dereference an invalid lanelet, causing a SIGSEGV that kills the mission_planner node. This commit adds only the regression test (planning a degenerate single-point route). It is intentionally pushed ahead of the fix so CI demonstrates the failure first; the following commit adds the guard that turns it green. Co-Authored-By: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>>
* fix(mission_planner): guard against empty planned path to prevent SIGSEGV When the planned path is empty (fewer than two check points, or planPathLaneletsBetweenCheckpoints reporting success while yielding no lanelets), plan() passed it into route_handler's createMapSegments -> getMainLanelets and refine_goal_height, both of which call back() on the empty path/route and dereference an invalid lanelet, segfaulting the node. Return a normal "failed to plan" result as soon as the path is empty, mirroring the existing early-return on planPathLaneletsBetweenCheckpoints failure. This turns the regression test added in the previous commit green. Co-Authored-By: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>>
* style(pre-commit): autofix ---------Co-authored-by: Masaya Kataoka <<cld-masaya.kataoka@tier4.jp>> Co-authored-by: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(mission_planner_universe): apply [agnocast_wrapper::Node]{.title-ref} to [route_selector]{.title-ref} & [goal_pose_visualizer]{.title-ref} (#12987)
- apply agnocast_wrapper::Node
- fix(mission_planner_universe): use AgnocastOnlyCallbackIsolatedExecutor for route_selector
- fix(mission_planner_universe): adapt service client to wrapper Client API
* refactor(mission_planner_universe): remove the now-empty mission_planner_container Both nodes that lived in mission_planner_container now run standalone with their own agnocast-aware executor: mission_planner in #13057 and route_selector in this PR. The container has no composable node left, so drop it and launch mission_planner as a standalone node. This assumes #13057 is merged first.
* refactor(autoware_mission_planner_universe): drop the unused qos_utils dependency and include the wrapper macros directly ---------Co-authored-by: kobayu858 <<yutaro.kobayashi.2@tier4.jp>>
-
feat(autoware_mission_planner_universe): apply agnocast_wrapper::Node to MissionPlanner (#13317)
-
refactor(autoware_mission_planner_universe): decouple DefaultPlanner from rclcpp::Node (#13283)
- refactor(autoware_mission_planner_universe): decouple DefaultPlanner from rclcpp::Node
- refactor(autoware_mission_planner_universe): align DefaultPlanner details with autoware_core
- refactor(autoware_mission_planner_universe): isolate the pluginlib registration and drop the relocated route log
- refactor(autoware_mission_planner_universe): keep ready() answerable before initialize() and drop the area marker stamp
- fix(autoware_mission_planner_universe): drop the trailing blank line left by removing the pluginlib export
* refactor(autoware_mission_planner_universe): remove pluginlib as autoware_core did ---------
-
refactor(planning): move node design files into each package (#13102) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/goal_pose_visualizer.launch.xml
-
- route_topic_name [default: /planning/mission_planning/route]
- echo_back_goal_pose_topic_name [default: /planning/mission_planning/echo_back_goal_pose]
- launch/mission_planner.launch.xml
-
- modified_goal_topic_name [default: /planning/scenario_planning/modified_goal]
- map_topic_name [default: /map/vector_map]
- route_topic_name [default: /planning/route]
- route_state_topic_name [default: /planning/route_state]
- clear_route_service_name [default: /planning/clear_route]
- set_lanelet_route_service_name [default: /planning/set_lanelet_route]
- set_waypoint_route_service_name [default: /planning/set_waypoint_route]
- visualization_topic_name [default: /planning/mission_planning/route_marker]
- mission_planner_param_path [default: $(find-pkg-share autoware_mission_planner_universe)/config/mission_planner.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_mission_planner_universe at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-27 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takagi, Isamu
- Kosuke Takeuchi
- Ryohsuke Mitsudome
- Takamasa Horibe
- Takayuki Murooka
- Mamoru Sobue
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
Mission Planner
Purpose
Mission Planner calculates a route that navigates from the current ego pose to the goal pose following the given check points.
The route is made of a sequence of lanes on a static map.
Dynamic objects (e.g. pedestrians and other vehicles) and dynamic map information (e.g. road construction which blocks some lanes) are not considered during route planning.
Therefore, the output topic is only published when the goal pose or check points are given and will be latched until the new goal pose or check points are given.
The core implementation does not depend on a map format. Any planning algorithms can be added as plugin modules. In current Autoware Universe, only the plugin for Lanelet2 map format is supported.
This package also manages routes for MRM. The route_selector node duplicates the mission_planner interface and provides it for normal and MRM respectively.
It distributes route requests and planning results according to current MRM operation state.
Interfaces
Parameters
| Name | Type | Description |
|---|---|---|
map_frame |
string | The frame name for map |
arrival_check_angle_deg |
double | Angle threshold for goal check |
arrival_check_lateral_distance |
double | Lateral distance threshold for goal check |
arrival_check_longitudinal_undershoot_distance |
double | Longitudinal distance threshold for goal check when the vehicle has not yet reached the goal |
arrival_check_longitudinal_overshoot_distance |
double | Longitudinal distance threshold for goal check when the vehicle has passed the goal |
arrival_check_duration |
double | Duration threshold for goal check |
goal_angle_threshold |
double | Max goal pose angle for goal approve |
enable_correct_goal_pose |
bool | Enabling correction of goal pose according to the closest lanelet orientation |
reroute_time_threshold |
double | If the time to the rerouting point at the current velocity is greater than this threshold, rerouting is possible |
minimum_reroute_length |
double | Minimum Length for publishing a new route |
consider_no_drivable_lanes |
bool | This flag is for considering no_drivable_lanes in planning or not. |
allow_reroute_in_autonomous_mode |
bool | This is a flag to allow reroute in autonomous driving mode. If false, reroute fails. If true, only safe reroute is allowed |
Services
| Name | Type | Description |
|---|---|---|
/planning/mission_planning/mission_planner/clear_route |
tier4_planning_msgs/srv/ClearRoute | route clear request |
/planning/mission_planning/mission_planner/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | route request with lanelet waypoints. |
/planning/mission_planning/mission_planner/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | route request with pose waypoints. |
/planning/mission_planning/mission_planner/set_preferred_primitive |
tier4_planning_msgs/srv/SetPreferredPrimitive | preferred-lane change request |
/planning/mission_planning/route_selector/main/clear_route |
tier4_planning_msgs/srv/ClearRoute | main route clear request |
/planning/mission_planning/route_selector/main/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | main route request with lanelet waypoints. |
/planning/mission_planning/route_selector/main/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | main route request with pose waypoints. |
/planning/mission_planning/route_selector/mrm/clear_route |
tier4_planning_msgs/srv/ClearRoute | mrm route clear request |
/planning/mission_planning/route_selector/mrm/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | mrm route request with lanelet waypoints. |
/planning/mission_planning/route_selector/mrm/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | mrm route request with pose waypoints. |
Subscriptions
| Name | Type | Description |
|---|---|---|
input/vector_map |
autoware_map_msgs/msg/LaneletMapBin | vector map of Lanelet2 |
input/modified_goal |
geometry_msgs/PoseWithUuidStamped | modified goal pose |
input/operation_mode_state |
autoware_adapi_v1_msgs/OperationModeState | operation mode state |
input/odometry |
nav_msgs/msg/Odometry | vehicle odometry |
Publications
| Name | Type | Description |
|---|---|---|
/planning/mission_planning/state |
tier4_planning_msgs/msg/RouteState | route state |
/planning/mission_planning/route |
autoware_planning_msgs/LaneletRoute | route |
/planning/mission_planning/route_selector/main/state |
tier4_planning_msgs/msg/RouteState | main route state |
/planning/mission_planning/route_selector/main/route |
autoware_planning_msgs/LaneletRoute | main route |
/planning/mission_planning/route_selector/mrm/state |
tier4_planning_msgs/msg/RouteState | mrm route state |
/planning/mission_planning/route_selector/mrm/route |
autoware_planning_msgs/LaneletRoute | mrm route |
~/debug/route_marker |
visualization_msgs/msg/MarkerArray | route marker for debug |
~/debug/goal_footprint |
visualization_msgs/msg/MarkerArray | goal footprint for debug |
Route section
Route section, whose type is autoware_planning_msgs/LaneletSegment, is a “slice” of a road that bundles lane changeable lanes.
Note that the most atomic unit of route is autoware_planning_msgs/LaneletPrimitive, which has the unique id of a lane in a vector map and its type.
Therefore, route message does not contain geometric information about the lane since we did not want to have planning module’s message to have dependency on map data structure.
The ROS message of route section contains following three elements for each route section.
-
preferred_primitive: Preferred lane to follow towards the goal. -
primitives: All neighbor lanes in the same direction including the preferred lane.
Goal Validation
The mission planner has control mechanism to validate the given goal pose and create a route. If goal pose angle between goal pose lanelet and goal pose’ yaw is greater than goal_angle_threshold parameter, the goal is rejected.
Another control mechanism is the creation of a footprint of the goal pose according to the dimensions of the vehicle and checking whether this footprint is within the lanelets. If goal footprint exceeds lanelets, then the goal is rejected.
At the image below, there are sample goal pose validation cases.
Implementation
Mission Planner
Two callbacks (goal and check points) are a trigger for route planning.
File truncated at 100 lines see the full file
Changelog for package autoware_mission_planner_universe
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(mission_planner): guard against empty planned path to prevent SIGSEGV (#13396)
* test(mission_planner): add regression test for empty-path route planning DefaultPlanner::plan() can build an empty planned path (fewer than two checkpoints, or planPathLaneletsBetweenCheckpoints reporting success while yielding no lanelets). That empty path is passed straight into route_handler (createMapSegments -> getMainLanelets, and refine_goal_height), both of which index the path/route with back() and dereference an invalid lanelet, causing a SIGSEGV that kills the mission_planner node. This commit adds only the regression test (planning a degenerate single-point route). It is intentionally pushed ahead of the fix so CI demonstrates the failure first; the following commit adds the guard that turns it green. Co-Authored-By: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>>
* fix(mission_planner): guard against empty planned path to prevent SIGSEGV When the planned path is empty (fewer than two check points, or planPathLaneletsBetweenCheckpoints reporting success while yielding no lanelets), plan() passed it into route_handler's createMapSegments -> getMainLanelets and refine_goal_height, both of which call back() on the empty path/route and dereference an invalid lanelet, segfaulting the node. Return a normal "failed to plan" result as soon as the path is empty, mirroring the existing early-return on planPathLaneletsBetweenCheckpoints failure. This turns the regression test added in the previous commit green. Co-Authored-By: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>>
* style(pre-commit): autofix ---------Co-authored-by: Masaya Kataoka <<cld-masaya.kataoka@tier4.jp>> Co-authored-by: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(mission_planner_universe): apply [agnocast_wrapper::Node]{.title-ref} to [route_selector]{.title-ref} & [goal_pose_visualizer]{.title-ref} (#12987)
- apply agnocast_wrapper::Node
- fix(mission_planner_universe): use AgnocastOnlyCallbackIsolatedExecutor for route_selector
- fix(mission_planner_universe): adapt service client to wrapper Client API
* refactor(mission_planner_universe): remove the now-empty mission_planner_container Both nodes that lived in mission_planner_container now run standalone with their own agnocast-aware executor: mission_planner in #13057 and route_selector in this PR. The container has no composable node left, so drop it and launch mission_planner as a standalone node. This assumes #13057 is merged first.
* refactor(autoware_mission_planner_universe): drop the unused qos_utils dependency and include the wrapper macros directly ---------Co-authored-by: kobayu858 <<yutaro.kobayashi.2@tier4.jp>>
-
feat(autoware_mission_planner_universe): apply agnocast_wrapper::Node to MissionPlanner (#13317)
-
refactor(autoware_mission_planner_universe): decouple DefaultPlanner from rclcpp::Node (#13283)
- refactor(autoware_mission_planner_universe): decouple DefaultPlanner from rclcpp::Node
- refactor(autoware_mission_planner_universe): align DefaultPlanner details with autoware_core
- refactor(autoware_mission_planner_universe): isolate the pluginlib registration and drop the relocated route log
- refactor(autoware_mission_planner_universe): keep ready() answerable before initialize() and drop the area marker stamp
- fix(autoware_mission_planner_universe): drop the trailing blank line left by removing the pluginlib export
* refactor(autoware_mission_planner_universe): remove pluginlib as autoware_core did ---------
-
refactor(planning): move node design files into each package (#13102) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/goal_pose_visualizer.launch.xml
-
- route_topic_name [default: /planning/mission_planning/route]
- echo_back_goal_pose_topic_name [default: /planning/mission_planning/echo_back_goal_pose]
- launch/mission_planner.launch.xml
-
- modified_goal_topic_name [default: /planning/scenario_planning/modified_goal]
- map_topic_name [default: /map/vector_map]
- route_topic_name [default: /planning/route]
- route_state_topic_name [default: /planning/route_state]
- clear_route_service_name [default: /planning/clear_route]
- set_lanelet_route_service_name [default: /planning/set_lanelet_route]
- set_waypoint_route_service_name [default: /planning/set_waypoint_route]
- visualization_topic_name [default: /planning/mission_planning/route_marker]
- mission_planner_param_path [default: $(find-pkg-share autoware_mission_planner_universe)/config/mission_planner.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_mission_planner_universe at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-27 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takagi, Isamu
- Kosuke Takeuchi
- Ryohsuke Mitsudome
- Takamasa Horibe
- Takayuki Murooka
- Mamoru Sobue
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
Mission Planner
Purpose
Mission Planner calculates a route that navigates from the current ego pose to the goal pose following the given check points.
The route is made of a sequence of lanes on a static map.
Dynamic objects (e.g. pedestrians and other vehicles) and dynamic map information (e.g. road construction which blocks some lanes) are not considered during route planning.
Therefore, the output topic is only published when the goal pose or check points are given and will be latched until the new goal pose or check points are given.
The core implementation does not depend on a map format. Any planning algorithms can be added as plugin modules. In current Autoware Universe, only the plugin for Lanelet2 map format is supported.
This package also manages routes for MRM. The route_selector node duplicates the mission_planner interface and provides it for normal and MRM respectively.
It distributes route requests and planning results according to current MRM operation state.
Interfaces
Parameters
| Name | Type | Description |
|---|---|---|
map_frame |
string | The frame name for map |
arrival_check_angle_deg |
double | Angle threshold for goal check |
arrival_check_lateral_distance |
double | Lateral distance threshold for goal check |
arrival_check_longitudinal_undershoot_distance |
double | Longitudinal distance threshold for goal check when the vehicle has not yet reached the goal |
arrival_check_longitudinal_overshoot_distance |
double | Longitudinal distance threshold for goal check when the vehicle has passed the goal |
arrival_check_duration |
double | Duration threshold for goal check |
goal_angle_threshold |
double | Max goal pose angle for goal approve |
enable_correct_goal_pose |
bool | Enabling correction of goal pose according to the closest lanelet orientation |
reroute_time_threshold |
double | If the time to the rerouting point at the current velocity is greater than this threshold, rerouting is possible |
minimum_reroute_length |
double | Minimum Length for publishing a new route |
consider_no_drivable_lanes |
bool | This flag is for considering no_drivable_lanes in planning or not. |
allow_reroute_in_autonomous_mode |
bool | This is a flag to allow reroute in autonomous driving mode. If false, reroute fails. If true, only safe reroute is allowed |
Services
| Name | Type | Description |
|---|---|---|
/planning/mission_planning/mission_planner/clear_route |
tier4_planning_msgs/srv/ClearRoute | route clear request |
/planning/mission_planning/mission_planner/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | route request with lanelet waypoints. |
/planning/mission_planning/mission_planner/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | route request with pose waypoints. |
/planning/mission_planning/mission_planner/set_preferred_primitive |
tier4_planning_msgs/srv/SetPreferredPrimitive | preferred-lane change request |
/planning/mission_planning/route_selector/main/clear_route |
tier4_planning_msgs/srv/ClearRoute | main route clear request |
/planning/mission_planning/route_selector/main/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | main route request with lanelet waypoints. |
/planning/mission_planning/route_selector/main/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | main route request with pose waypoints. |
/planning/mission_planning/route_selector/mrm/clear_route |
tier4_planning_msgs/srv/ClearRoute | mrm route clear request |
/planning/mission_planning/route_selector/mrm/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | mrm route request with lanelet waypoints. |
/planning/mission_planning/route_selector/mrm/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | mrm route request with pose waypoints. |
Subscriptions
| Name | Type | Description |
|---|---|---|
input/vector_map |
autoware_map_msgs/msg/LaneletMapBin | vector map of Lanelet2 |
input/modified_goal |
geometry_msgs/PoseWithUuidStamped | modified goal pose |
input/operation_mode_state |
autoware_adapi_v1_msgs/OperationModeState | operation mode state |
input/odometry |
nav_msgs/msg/Odometry | vehicle odometry |
Publications
| Name | Type | Description |
|---|---|---|
/planning/mission_planning/state |
tier4_planning_msgs/msg/RouteState | route state |
/planning/mission_planning/route |
autoware_planning_msgs/LaneletRoute | route |
/planning/mission_planning/route_selector/main/state |
tier4_planning_msgs/msg/RouteState | main route state |
/planning/mission_planning/route_selector/main/route |
autoware_planning_msgs/LaneletRoute | main route |
/planning/mission_planning/route_selector/mrm/state |
tier4_planning_msgs/msg/RouteState | mrm route state |
/planning/mission_planning/route_selector/mrm/route |
autoware_planning_msgs/LaneletRoute | mrm route |
~/debug/route_marker |
visualization_msgs/msg/MarkerArray | route marker for debug |
~/debug/goal_footprint |
visualization_msgs/msg/MarkerArray | goal footprint for debug |
Route section
Route section, whose type is autoware_planning_msgs/LaneletSegment, is a “slice” of a road that bundles lane changeable lanes.
Note that the most atomic unit of route is autoware_planning_msgs/LaneletPrimitive, which has the unique id of a lane in a vector map and its type.
Therefore, route message does not contain geometric information about the lane since we did not want to have planning module’s message to have dependency on map data structure.
The ROS message of route section contains following three elements for each route section.
-
preferred_primitive: Preferred lane to follow towards the goal. -
primitives: All neighbor lanes in the same direction including the preferred lane.
Goal Validation
The mission planner has control mechanism to validate the given goal pose and create a route. If goal pose angle between goal pose lanelet and goal pose’ yaw is greater than goal_angle_threshold parameter, the goal is rejected.
Another control mechanism is the creation of a footprint of the goal pose according to the dimensions of the vehicle and checking whether this footprint is within the lanelets. If goal footprint exceeds lanelets, then the goal is rejected.
At the image below, there are sample goal pose validation cases.
Implementation
Mission Planner
Two callbacks (goal and check points) are a trigger for route planning.
File truncated at 100 lines see the full file
Changelog for package autoware_mission_planner_universe
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(mission_planner): guard against empty planned path to prevent SIGSEGV (#13396)
* test(mission_planner): add regression test for empty-path route planning DefaultPlanner::plan() can build an empty planned path (fewer than two checkpoints, or planPathLaneletsBetweenCheckpoints reporting success while yielding no lanelets). That empty path is passed straight into route_handler (createMapSegments -> getMainLanelets, and refine_goal_height), both of which index the path/route with back() and dereference an invalid lanelet, causing a SIGSEGV that kills the mission_planner node. This commit adds only the regression test (planning a degenerate single-point route). It is intentionally pushed ahead of the fix so CI demonstrates the failure first; the following commit adds the guard that turns it green. Co-Authored-By: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>>
* fix(mission_planner): guard against empty planned path to prevent SIGSEGV When the planned path is empty (fewer than two check points, or planPathLaneletsBetweenCheckpoints reporting success while yielding no lanelets), plan() passed it into route_handler's createMapSegments -> getMainLanelets and refine_goal_height, both of which call back() on the empty path/route and dereference an invalid lanelet, segfaulting the node. Return a normal "failed to plan" result as soon as the path is empty, mirroring the existing early-return on planPathLaneletsBetweenCheckpoints failure. This turns the regression test added in the previous commit green. Co-Authored-By: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>>
* style(pre-commit): autofix ---------Co-authored-by: Masaya Kataoka <<cld-masaya.kataoka@tier4.jp>> Co-authored-by: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(mission_planner_universe): apply [agnocast_wrapper::Node]{.title-ref} to [route_selector]{.title-ref} & [goal_pose_visualizer]{.title-ref} (#12987)
- apply agnocast_wrapper::Node
- fix(mission_planner_universe): use AgnocastOnlyCallbackIsolatedExecutor for route_selector
- fix(mission_planner_universe): adapt service client to wrapper Client API
* refactor(mission_planner_universe): remove the now-empty mission_planner_container Both nodes that lived in mission_planner_container now run standalone with their own agnocast-aware executor: mission_planner in #13057 and route_selector in this PR. The container has no composable node left, so drop it and launch mission_planner as a standalone node. This assumes #13057 is merged first.
* refactor(autoware_mission_planner_universe): drop the unused qos_utils dependency and include the wrapper macros directly ---------Co-authored-by: kobayu858 <<yutaro.kobayashi.2@tier4.jp>>
-
feat(autoware_mission_planner_universe): apply agnocast_wrapper::Node to MissionPlanner (#13317)
-
refactor(autoware_mission_planner_universe): decouple DefaultPlanner from rclcpp::Node (#13283)
- refactor(autoware_mission_planner_universe): decouple DefaultPlanner from rclcpp::Node
- refactor(autoware_mission_planner_universe): align DefaultPlanner details with autoware_core
- refactor(autoware_mission_planner_universe): isolate the pluginlib registration and drop the relocated route log
- refactor(autoware_mission_planner_universe): keep ready() answerable before initialize() and drop the area marker stamp
- fix(autoware_mission_planner_universe): drop the trailing blank line left by removing the pluginlib export
* refactor(autoware_mission_planner_universe): remove pluginlib as autoware_core did ---------
-
refactor(planning): move node design files into each package (#13102) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/goal_pose_visualizer.launch.xml
-
- route_topic_name [default: /planning/mission_planning/route]
- echo_back_goal_pose_topic_name [default: /planning/mission_planning/echo_back_goal_pose]
- launch/mission_planner.launch.xml
-
- modified_goal_topic_name [default: /planning/scenario_planning/modified_goal]
- map_topic_name [default: /map/vector_map]
- route_topic_name [default: /planning/route]
- route_state_topic_name [default: /planning/route_state]
- clear_route_service_name [default: /planning/clear_route]
- set_lanelet_route_service_name [default: /planning/set_lanelet_route]
- set_waypoint_route_service_name [default: /planning/set_waypoint_route]
- visualization_topic_name [default: /planning/mission_planning/route_marker]
- mission_planner_param_path [default: $(find-pkg-share autoware_mission_planner_universe)/config/mission_planner.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_mission_planner_universe at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-27 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takagi, Isamu
- Kosuke Takeuchi
- Ryohsuke Mitsudome
- Takamasa Horibe
- Takayuki Murooka
- Mamoru Sobue
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
Mission Planner
Purpose
Mission Planner calculates a route that navigates from the current ego pose to the goal pose following the given check points.
The route is made of a sequence of lanes on a static map.
Dynamic objects (e.g. pedestrians and other vehicles) and dynamic map information (e.g. road construction which blocks some lanes) are not considered during route planning.
Therefore, the output topic is only published when the goal pose or check points are given and will be latched until the new goal pose or check points are given.
The core implementation does not depend on a map format. Any planning algorithms can be added as plugin modules. In current Autoware Universe, only the plugin for Lanelet2 map format is supported.
This package also manages routes for MRM. The route_selector node duplicates the mission_planner interface and provides it for normal and MRM respectively.
It distributes route requests and planning results according to current MRM operation state.
Interfaces
Parameters
| Name | Type | Description |
|---|---|---|
map_frame |
string | The frame name for map |
arrival_check_angle_deg |
double | Angle threshold for goal check |
arrival_check_lateral_distance |
double | Lateral distance threshold for goal check |
arrival_check_longitudinal_undershoot_distance |
double | Longitudinal distance threshold for goal check when the vehicle has not yet reached the goal |
arrival_check_longitudinal_overshoot_distance |
double | Longitudinal distance threshold for goal check when the vehicle has passed the goal |
arrival_check_duration |
double | Duration threshold for goal check |
goal_angle_threshold |
double | Max goal pose angle for goal approve |
enable_correct_goal_pose |
bool | Enabling correction of goal pose according to the closest lanelet orientation |
reroute_time_threshold |
double | If the time to the rerouting point at the current velocity is greater than this threshold, rerouting is possible |
minimum_reroute_length |
double | Minimum Length for publishing a new route |
consider_no_drivable_lanes |
bool | This flag is for considering no_drivable_lanes in planning or not. |
allow_reroute_in_autonomous_mode |
bool | This is a flag to allow reroute in autonomous driving mode. If false, reroute fails. If true, only safe reroute is allowed |
Services
| Name | Type | Description |
|---|---|---|
/planning/mission_planning/mission_planner/clear_route |
tier4_planning_msgs/srv/ClearRoute | route clear request |
/planning/mission_planning/mission_planner/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | route request with lanelet waypoints. |
/planning/mission_planning/mission_planner/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | route request with pose waypoints. |
/planning/mission_planning/mission_planner/set_preferred_primitive |
tier4_planning_msgs/srv/SetPreferredPrimitive | preferred-lane change request |
/planning/mission_planning/route_selector/main/clear_route |
tier4_planning_msgs/srv/ClearRoute | main route clear request |
/planning/mission_planning/route_selector/main/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | main route request with lanelet waypoints. |
/planning/mission_planning/route_selector/main/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | main route request with pose waypoints. |
/planning/mission_planning/route_selector/mrm/clear_route |
tier4_planning_msgs/srv/ClearRoute | mrm route clear request |
/planning/mission_planning/route_selector/mrm/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | mrm route request with lanelet waypoints. |
/planning/mission_planning/route_selector/mrm/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | mrm route request with pose waypoints. |
Subscriptions
| Name | Type | Description |
|---|---|---|
input/vector_map |
autoware_map_msgs/msg/LaneletMapBin | vector map of Lanelet2 |
input/modified_goal |
geometry_msgs/PoseWithUuidStamped | modified goal pose |
input/operation_mode_state |
autoware_adapi_v1_msgs/OperationModeState | operation mode state |
input/odometry |
nav_msgs/msg/Odometry | vehicle odometry |
Publications
| Name | Type | Description |
|---|---|---|
/planning/mission_planning/state |
tier4_planning_msgs/msg/RouteState | route state |
/planning/mission_planning/route |
autoware_planning_msgs/LaneletRoute | route |
/planning/mission_planning/route_selector/main/state |
tier4_planning_msgs/msg/RouteState | main route state |
/planning/mission_planning/route_selector/main/route |
autoware_planning_msgs/LaneletRoute | main route |
/planning/mission_planning/route_selector/mrm/state |
tier4_planning_msgs/msg/RouteState | mrm route state |
/planning/mission_planning/route_selector/mrm/route |
autoware_planning_msgs/LaneletRoute | mrm route |
~/debug/route_marker |
visualization_msgs/msg/MarkerArray | route marker for debug |
~/debug/goal_footprint |
visualization_msgs/msg/MarkerArray | goal footprint for debug |
Route section
Route section, whose type is autoware_planning_msgs/LaneletSegment, is a “slice” of a road that bundles lane changeable lanes.
Note that the most atomic unit of route is autoware_planning_msgs/LaneletPrimitive, which has the unique id of a lane in a vector map and its type.
Therefore, route message does not contain geometric information about the lane since we did not want to have planning module’s message to have dependency on map data structure.
The ROS message of route section contains following three elements for each route section.
-
preferred_primitive: Preferred lane to follow towards the goal. -
primitives: All neighbor lanes in the same direction including the preferred lane.
Goal Validation
The mission planner has control mechanism to validate the given goal pose and create a route. If goal pose angle between goal pose lanelet and goal pose’ yaw is greater than goal_angle_threshold parameter, the goal is rejected.
Another control mechanism is the creation of a footprint of the goal pose according to the dimensions of the vehicle and checking whether this footprint is within the lanelets. If goal footprint exceeds lanelets, then the goal is rejected.
At the image below, there are sample goal pose validation cases.
Implementation
Mission Planner
Two callbacks (goal and check points) are a trigger for route planning.
File truncated at 100 lines see the full file
Changelog for package autoware_mission_planner_universe
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(mission_planner): guard against empty planned path to prevent SIGSEGV (#13396)
* test(mission_planner): add regression test for empty-path route planning DefaultPlanner::plan() can build an empty planned path (fewer than two checkpoints, or planPathLaneletsBetweenCheckpoints reporting success while yielding no lanelets). That empty path is passed straight into route_handler (createMapSegments -> getMainLanelets, and refine_goal_height), both of which index the path/route with back() and dereference an invalid lanelet, causing a SIGSEGV that kills the mission_planner node. This commit adds only the regression test (planning a degenerate single-point route). It is intentionally pushed ahead of the fix so CI demonstrates the failure first; the following commit adds the guard that turns it green. Co-Authored-By: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>>
* fix(mission_planner): guard against empty planned path to prevent SIGSEGV When the planned path is empty (fewer than two check points, or planPathLaneletsBetweenCheckpoints reporting success while yielding no lanelets), plan() passed it into route_handler's createMapSegments -> getMainLanelets and refine_goal_height, both of which call back() on the empty path/route and dereference an invalid lanelet, segfaulting the node. Return a normal "failed to plan" result as soon as the path is empty, mirroring the existing early-return on planPathLaneletsBetweenCheckpoints failure. This turns the regression test added in the previous commit green. Co-Authored-By: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>>
* style(pre-commit): autofix ---------Co-authored-by: Masaya Kataoka <<cld-masaya.kataoka@tier4.jp>> Co-authored-by: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(mission_planner_universe): apply [agnocast_wrapper::Node]{.title-ref} to [route_selector]{.title-ref} & [goal_pose_visualizer]{.title-ref} (#12987)
- apply agnocast_wrapper::Node
- fix(mission_planner_universe): use AgnocastOnlyCallbackIsolatedExecutor for route_selector
- fix(mission_planner_universe): adapt service client to wrapper Client API
* refactor(mission_planner_universe): remove the now-empty mission_planner_container Both nodes that lived in mission_planner_container now run standalone with their own agnocast-aware executor: mission_planner in #13057 and route_selector in this PR. The container has no composable node left, so drop it and launch mission_planner as a standalone node. This assumes #13057 is merged first.
* refactor(autoware_mission_planner_universe): drop the unused qos_utils dependency and include the wrapper macros directly ---------Co-authored-by: kobayu858 <<yutaro.kobayashi.2@tier4.jp>>
-
feat(autoware_mission_planner_universe): apply agnocast_wrapper::Node to MissionPlanner (#13317)
-
refactor(autoware_mission_planner_universe): decouple DefaultPlanner from rclcpp::Node (#13283)
- refactor(autoware_mission_planner_universe): decouple DefaultPlanner from rclcpp::Node
- refactor(autoware_mission_planner_universe): align DefaultPlanner details with autoware_core
- refactor(autoware_mission_planner_universe): isolate the pluginlib registration and drop the relocated route log
- refactor(autoware_mission_planner_universe): keep ready() answerable before initialize() and drop the area marker stamp
- fix(autoware_mission_planner_universe): drop the trailing blank line left by removing the pluginlib export
* refactor(autoware_mission_planner_universe): remove pluginlib as autoware_core did ---------
-
refactor(planning): move node design files into each package (#13102) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/goal_pose_visualizer.launch.xml
-
- route_topic_name [default: /planning/mission_planning/route]
- echo_back_goal_pose_topic_name [default: /planning/mission_planning/echo_back_goal_pose]
- launch/mission_planner.launch.xml
-
- modified_goal_topic_name [default: /planning/scenario_planning/modified_goal]
- map_topic_name [default: /map/vector_map]
- route_topic_name [default: /planning/route]
- route_state_topic_name [default: /planning/route_state]
- clear_route_service_name [default: /planning/clear_route]
- set_lanelet_route_service_name [default: /planning/set_lanelet_route]
- set_waypoint_route_service_name [default: /planning/set_waypoint_route]
- visualization_topic_name [default: /planning/mission_planning/route_marker]
- mission_planner_param_path [default: $(find-pkg-share autoware_mission_planner_universe)/config/mission_planner.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_mission_planner_universe at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-27 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takagi, Isamu
- Kosuke Takeuchi
- Ryohsuke Mitsudome
- Takamasa Horibe
- Takayuki Murooka
- Mamoru Sobue
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
Mission Planner
Purpose
Mission Planner calculates a route that navigates from the current ego pose to the goal pose following the given check points.
The route is made of a sequence of lanes on a static map.
Dynamic objects (e.g. pedestrians and other vehicles) and dynamic map information (e.g. road construction which blocks some lanes) are not considered during route planning.
Therefore, the output topic is only published when the goal pose or check points are given and will be latched until the new goal pose or check points are given.
The core implementation does not depend on a map format. Any planning algorithms can be added as plugin modules. In current Autoware Universe, only the plugin for Lanelet2 map format is supported.
This package also manages routes for MRM. The route_selector node duplicates the mission_planner interface and provides it for normal and MRM respectively.
It distributes route requests and planning results according to current MRM operation state.
Interfaces
Parameters
| Name | Type | Description |
|---|---|---|
map_frame |
string | The frame name for map |
arrival_check_angle_deg |
double | Angle threshold for goal check |
arrival_check_lateral_distance |
double | Lateral distance threshold for goal check |
arrival_check_longitudinal_undershoot_distance |
double | Longitudinal distance threshold for goal check when the vehicle has not yet reached the goal |
arrival_check_longitudinal_overshoot_distance |
double | Longitudinal distance threshold for goal check when the vehicle has passed the goal |
arrival_check_duration |
double | Duration threshold for goal check |
goal_angle_threshold |
double | Max goal pose angle for goal approve |
enable_correct_goal_pose |
bool | Enabling correction of goal pose according to the closest lanelet orientation |
reroute_time_threshold |
double | If the time to the rerouting point at the current velocity is greater than this threshold, rerouting is possible |
minimum_reroute_length |
double | Minimum Length for publishing a new route |
consider_no_drivable_lanes |
bool | This flag is for considering no_drivable_lanes in planning or not. |
allow_reroute_in_autonomous_mode |
bool | This is a flag to allow reroute in autonomous driving mode. If false, reroute fails. If true, only safe reroute is allowed |
Services
| Name | Type | Description |
|---|---|---|
/planning/mission_planning/mission_planner/clear_route |
tier4_planning_msgs/srv/ClearRoute | route clear request |
/planning/mission_planning/mission_planner/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | route request with lanelet waypoints. |
/planning/mission_planning/mission_planner/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | route request with pose waypoints. |
/planning/mission_planning/mission_planner/set_preferred_primitive |
tier4_planning_msgs/srv/SetPreferredPrimitive | preferred-lane change request |
/planning/mission_planning/route_selector/main/clear_route |
tier4_planning_msgs/srv/ClearRoute | main route clear request |
/planning/mission_planning/route_selector/main/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | main route request with lanelet waypoints. |
/planning/mission_planning/route_selector/main/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | main route request with pose waypoints. |
/planning/mission_planning/route_selector/mrm/clear_route |
tier4_planning_msgs/srv/ClearRoute | mrm route clear request |
/planning/mission_planning/route_selector/mrm/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | mrm route request with lanelet waypoints. |
/planning/mission_planning/route_selector/mrm/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | mrm route request with pose waypoints. |
Subscriptions
| Name | Type | Description |
|---|---|---|
input/vector_map |
autoware_map_msgs/msg/LaneletMapBin | vector map of Lanelet2 |
input/modified_goal |
geometry_msgs/PoseWithUuidStamped | modified goal pose |
input/operation_mode_state |
autoware_adapi_v1_msgs/OperationModeState | operation mode state |
input/odometry |
nav_msgs/msg/Odometry | vehicle odometry |
Publications
| Name | Type | Description |
|---|---|---|
/planning/mission_planning/state |
tier4_planning_msgs/msg/RouteState | route state |
/planning/mission_planning/route |
autoware_planning_msgs/LaneletRoute | route |
/planning/mission_planning/route_selector/main/state |
tier4_planning_msgs/msg/RouteState | main route state |
/planning/mission_planning/route_selector/main/route |
autoware_planning_msgs/LaneletRoute | main route |
/planning/mission_planning/route_selector/mrm/state |
tier4_planning_msgs/msg/RouteState | mrm route state |
/planning/mission_planning/route_selector/mrm/route |
autoware_planning_msgs/LaneletRoute | mrm route |
~/debug/route_marker |
visualization_msgs/msg/MarkerArray | route marker for debug |
~/debug/goal_footprint |
visualization_msgs/msg/MarkerArray | goal footprint for debug |
Route section
Route section, whose type is autoware_planning_msgs/LaneletSegment, is a “slice” of a road that bundles lane changeable lanes.
Note that the most atomic unit of route is autoware_planning_msgs/LaneletPrimitive, which has the unique id of a lane in a vector map and its type.
Therefore, route message does not contain geometric information about the lane since we did not want to have planning module’s message to have dependency on map data structure.
The ROS message of route section contains following three elements for each route section.
-
preferred_primitive: Preferred lane to follow towards the goal. -
primitives: All neighbor lanes in the same direction including the preferred lane.
Goal Validation
The mission planner has control mechanism to validate the given goal pose and create a route. If goal pose angle between goal pose lanelet and goal pose’ yaw is greater than goal_angle_threshold parameter, the goal is rejected.
Another control mechanism is the creation of a footprint of the goal pose according to the dimensions of the vehicle and checking whether this footprint is within the lanelets. If goal footprint exceeds lanelets, then the goal is rejected.
At the image below, there are sample goal pose validation cases.
Implementation
Mission Planner
Two callbacks (goal and check points) are a trigger for route planning.
File truncated at 100 lines see the full file
Changelog for package autoware_mission_planner_universe
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(mission_planner): guard against empty planned path to prevent SIGSEGV (#13396)
* test(mission_planner): add regression test for empty-path route planning DefaultPlanner::plan() can build an empty planned path (fewer than two checkpoints, or planPathLaneletsBetweenCheckpoints reporting success while yielding no lanelets). That empty path is passed straight into route_handler (createMapSegments -> getMainLanelets, and refine_goal_height), both of which index the path/route with back() and dereference an invalid lanelet, causing a SIGSEGV that kills the mission_planner node. This commit adds only the regression test (planning a degenerate single-point route). It is intentionally pushed ahead of the fix so CI demonstrates the failure first; the following commit adds the guard that turns it green. Co-Authored-By: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>>
* fix(mission_planner): guard against empty planned path to prevent SIGSEGV When the planned path is empty (fewer than two check points, or planPathLaneletsBetweenCheckpoints reporting success while yielding no lanelets), plan() passed it into route_handler's createMapSegments -> getMainLanelets and refine_goal_height, both of which call back() on the empty path/route and dereference an invalid lanelet, segfaulting the node. Return a normal "failed to plan" result as soon as the path is empty, mirroring the existing early-return on planPathLaneletsBetweenCheckpoints failure. This turns the regression test added in the previous commit green. Co-Authored-By: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>>
* style(pre-commit): autofix ---------Co-authored-by: Masaya Kataoka <<cld-masaya.kataoka@tier4.jp>> Co-authored-by: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(mission_planner_universe): apply [agnocast_wrapper::Node]{.title-ref} to [route_selector]{.title-ref} & [goal_pose_visualizer]{.title-ref} (#12987)
- apply agnocast_wrapper::Node
- fix(mission_planner_universe): use AgnocastOnlyCallbackIsolatedExecutor for route_selector
- fix(mission_planner_universe): adapt service client to wrapper Client API
* refactor(mission_planner_universe): remove the now-empty mission_planner_container Both nodes that lived in mission_planner_container now run standalone with their own agnocast-aware executor: mission_planner in #13057 and route_selector in this PR. The container has no composable node left, so drop it and launch mission_planner as a standalone node. This assumes #13057 is merged first.
* refactor(autoware_mission_planner_universe): drop the unused qos_utils dependency and include the wrapper macros directly ---------Co-authored-by: kobayu858 <<yutaro.kobayashi.2@tier4.jp>>
-
feat(autoware_mission_planner_universe): apply agnocast_wrapper::Node to MissionPlanner (#13317)
-
refactor(autoware_mission_planner_universe): decouple DefaultPlanner from rclcpp::Node (#13283)
- refactor(autoware_mission_planner_universe): decouple DefaultPlanner from rclcpp::Node
- refactor(autoware_mission_planner_universe): align DefaultPlanner details with autoware_core
- refactor(autoware_mission_planner_universe): isolate the pluginlib registration and drop the relocated route log
- refactor(autoware_mission_planner_universe): keep ready() answerable before initialize() and drop the area marker stamp
- fix(autoware_mission_planner_universe): drop the trailing blank line left by removing the pluginlib export
* refactor(autoware_mission_planner_universe): remove pluginlib as autoware_core did ---------
-
refactor(planning): move node design files into each package (#13102) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/goal_pose_visualizer.launch.xml
-
- route_topic_name [default: /planning/mission_planning/route]
- echo_back_goal_pose_topic_name [default: /planning/mission_planning/echo_back_goal_pose]
- launch/mission_planner.launch.xml
-
- modified_goal_topic_name [default: /planning/scenario_planning/modified_goal]
- map_topic_name [default: /map/vector_map]
- route_topic_name [default: /planning/route]
- route_state_topic_name [default: /planning/route_state]
- clear_route_service_name [default: /planning/clear_route]
- set_lanelet_route_service_name [default: /planning/set_lanelet_route]
- set_waypoint_route_service_name [default: /planning/set_waypoint_route]
- visualization_topic_name [default: /planning/mission_planning/route_marker]
- mission_planner_param_path [default: $(find-pkg-share autoware_mission_planner_universe)/config/mission_planner.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_mission_planner_universe at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-27 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takagi, Isamu
- Kosuke Takeuchi
- Ryohsuke Mitsudome
- Takamasa Horibe
- Takayuki Murooka
- Mamoru Sobue
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
Mission Planner
Purpose
Mission Planner calculates a route that navigates from the current ego pose to the goal pose following the given check points.
The route is made of a sequence of lanes on a static map.
Dynamic objects (e.g. pedestrians and other vehicles) and dynamic map information (e.g. road construction which blocks some lanes) are not considered during route planning.
Therefore, the output topic is only published when the goal pose or check points are given and will be latched until the new goal pose or check points are given.
The core implementation does not depend on a map format. Any planning algorithms can be added as plugin modules. In current Autoware Universe, only the plugin for Lanelet2 map format is supported.
This package also manages routes for MRM. The route_selector node duplicates the mission_planner interface and provides it for normal and MRM respectively.
It distributes route requests and planning results according to current MRM operation state.
Interfaces
Parameters
| Name | Type | Description |
|---|---|---|
map_frame |
string | The frame name for map |
arrival_check_angle_deg |
double | Angle threshold for goal check |
arrival_check_lateral_distance |
double | Lateral distance threshold for goal check |
arrival_check_longitudinal_undershoot_distance |
double | Longitudinal distance threshold for goal check when the vehicle has not yet reached the goal |
arrival_check_longitudinal_overshoot_distance |
double | Longitudinal distance threshold for goal check when the vehicle has passed the goal |
arrival_check_duration |
double | Duration threshold for goal check |
goal_angle_threshold |
double | Max goal pose angle for goal approve |
enable_correct_goal_pose |
bool | Enabling correction of goal pose according to the closest lanelet orientation |
reroute_time_threshold |
double | If the time to the rerouting point at the current velocity is greater than this threshold, rerouting is possible |
minimum_reroute_length |
double | Minimum Length for publishing a new route |
consider_no_drivable_lanes |
bool | This flag is for considering no_drivable_lanes in planning or not. |
allow_reroute_in_autonomous_mode |
bool | This is a flag to allow reroute in autonomous driving mode. If false, reroute fails. If true, only safe reroute is allowed |
Services
| Name | Type | Description |
|---|---|---|
/planning/mission_planning/mission_planner/clear_route |
tier4_planning_msgs/srv/ClearRoute | route clear request |
/planning/mission_planning/mission_planner/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | route request with lanelet waypoints. |
/planning/mission_planning/mission_planner/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | route request with pose waypoints. |
/planning/mission_planning/mission_planner/set_preferred_primitive |
tier4_planning_msgs/srv/SetPreferredPrimitive | preferred-lane change request |
/planning/mission_planning/route_selector/main/clear_route |
tier4_planning_msgs/srv/ClearRoute | main route clear request |
/planning/mission_planning/route_selector/main/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | main route request with lanelet waypoints. |
/planning/mission_planning/route_selector/main/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | main route request with pose waypoints. |
/planning/mission_planning/route_selector/mrm/clear_route |
tier4_planning_msgs/srv/ClearRoute | mrm route clear request |
/planning/mission_planning/route_selector/mrm/set_waypoint_route |
tier4_planning_msgs/srv/SetWaypointRoute | mrm route request with lanelet waypoints. |
/planning/mission_planning/route_selector/mrm/set_lanelet_route |
tier4_planning_msgs/srv/SetLaneletRoute | mrm route request with pose waypoints. |
Subscriptions
| Name | Type | Description |
|---|---|---|
input/vector_map |
autoware_map_msgs/msg/LaneletMapBin | vector map of Lanelet2 |
input/modified_goal |
geometry_msgs/PoseWithUuidStamped | modified goal pose |
input/operation_mode_state |
autoware_adapi_v1_msgs/OperationModeState | operation mode state |
input/odometry |
nav_msgs/msg/Odometry | vehicle odometry |
Publications
| Name | Type | Description |
|---|---|---|
/planning/mission_planning/state |
tier4_planning_msgs/msg/RouteState | route state |
/planning/mission_planning/route |
autoware_planning_msgs/LaneletRoute | route |
/planning/mission_planning/route_selector/main/state |
tier4_planning_msgs/msg/RouteState | main route state |
/planning/mission_planning/route_selector/main/route |
autoware_planning_msgs/LaneletRoute | main route |
/planning/mission_planning/route_selector/mrm/state |
tier4_planning_msgs/msg/RouteState | mrm route state |
/planning/mission_planning/route_selector/mrm/route |
autoware_planning_msgs/LaneletRoute | mrm route |
~/debug/route_marker |
visualization_msgs/msg/MarkerArray | route marker for debug |
~/debug/goal_footprint |
visualization_msgs/msg/MarkerArray | goal footprint for debug |
Route section
Route section, whose type is autoware_planning_msgs/LaneletSegment, is a “slice” of a road that bundles lane changeable lanes.
Note that the most atomic unit of route is autoware_planning_msgs/LaneletPrimitive, which has the unique id of a lane in a vector map and its type.
Therefore, route message does not contain geometric information about the lane since we did not want to have planning module’s message to have dependency on map data structure.
The ROS message of route section contains following three elements for each route section.
-
preferred_primitive: Preferred lane to follow towards the goal. -
primitives: All neighbor lanes in the same direction including the preferred lane.
Goal Validation
The mission planner has control mechanism to validate the given goal pose and create a route. If goal pose angle between goal pose lanelet and goal pose’ yaw is greater than goal_angle_threshold parameter, the goal is rejected.
Another control mechanism is the creation of a footprint of the goal pose according to the dimensions of the vehicle and checking whether this footprint is within the lanelets. If goal footprint exceeds lanelets, then the goal is rejected.
At the image below, there are sample goal pose validation cases.
Implementation
Mission Planner
Two callbacks (goal and check points) are a trigger for route planning.
File truncated at 100 lines see the full file
Changelog for package autoware_mission_planner_universe
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
fix(mission_planner): guard against empty planned path to prevent SIGSEGV (#13396)
* test(mission_planner): add regression test for empty-path route planning DefaultPlanner::plan() can build an empty planned path (fewer than two checkpoints, or planPathLaneletsBetweenCheckpoints reporting success while yielding no lanelets). That empty path is passed straight into route_handler (createMapSegments -> getMainLanelets, and refine_goal_height), both of which index the path/route with back() and dereference an invalid lanelet, causing a SIGSEGV that kills the mission_planner node. This commit adds only the regression test (planning a degenerate single-point route). It is intentionally pushed ahead of the fix so CI demonstrates the failure first; the following commit adds the guard that turns it green. Co-Authored-By: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>>
* fix(mission_planner): guard against empty planned path to prevent SIGSEGV When the planned path is empty (fewer than two check points, or planPathLaneletsBetweenCheckpoints reporting success while yielding no lanelets), plan() passed it into route_handler's createMapSegments -> getMainLanelets and refine_goal_height, both of which call back() on the empty path/route and dereference an invalid lanelet, segfaulting the node. Return a normal "failed to plan" result as soon as the path is empty, mirroring the existing early-return on planPathLaneletsBetweenCheckpoints failure. This turns the regression test added in the previous commit green. Co-Authored-By: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>>
* style(pre-commit): autofix ---------Co-authored-by: Masaya Kataoka <<cld-masaya.kataoka@tier4.jp>> Co-authored-by: Claude Opus 4.8 (1M context) <<noreply@anthropic.com>> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
feat(mission_planner_universe): apply [agnocast_wrapper::Node]{.title-ref} to [route_selector]{.title-ref} & [goal_pose_visualizer]{.title-ref} (#12987)
- apply agnocast_wrapper::Node
- fix(mission_planner_universe): use AgnocastOnlyCallbackIsolatedExecutor for route_selector
- fix(mission_planner_universe): adapt service client to wrapper Client API
* refactor(mission_planner_universe): remove the now-empty mission_planner_container Both nodes that lived in mission_planner_container now run standalone with their own agnocast-aware executor: mission_planner in #13057 and route_selector in this PR. The container has no composable node left, so drop it and launch mission_planner as a standalone node. This assumes #13057 is merged first.
* refactor(autoware_mission_planner_universe): drop the unused qos_utils dependency and include the wrapper macros directly ---------Co-authored-by: kobayu858 <<yutaro.kobayashi.2@tier4.jp>>
-
feat(autoware_mission_planner_universe): apply agnocast_wrapper::Node to MissionPlanner (#13317)
-
refactor(autoware_mission_planner_universe): decouple DefaultPlanner from rclcpp::Node (#13283)
- refactor(autoware_mission_planner_universe): decouple DefaultPlanner from rclcpp::Node
- refactor(autoware_mission_planner_universe): align DefaultPlanner details with autoware_core
- refactor(autoware_mission_planner_universe): isolate the pluginlib registration and drop the relocated route log
- refactor(autoware_mission_planner_universe): keep ready() answerable before initialize() and drop the area marker stamp
- fix(autoware_mission_planner_universe): drop the trailing blank line left by removing the pluginlib export
* refactor(autoware_mission_planner_universe): remove pluginlib as autoware_core did ---------
-
refactor(planning): move node design files into each package (#13102) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
chore(pre-commit): update clang-format to v22.1.5 (#13126)
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/goal_pose_visualizer.launch.xml
-
- route_topic_name [default: /planning/mission_planning/route]
- echo_back_goal_pose_topic_name [default: /planning/mission_planning/echo_back_goal_pose]
- launch/mission_planner.launch.xml
-
- modified_goal_topic_name [default: /planning/scenario_planning/modified_goal]
- map_topic_name [default: /map/vector_map]
- route_topic_name [default: /planning/route]
- route_state_topic_name [default: /planning/route_state]
- clear_route_service_name [default: /planning/clear_route]
- set_lanelet_route_service_name [default: /planning/set_lanelet_route]
- set_waypoint_route_service_name [default: /planning/set_waypoint_route]
- visualization_topic_name [default: /planning/mission_planning/route_marker]
- mission_planner_param_path [default: $(find-pkg-share autoware_mission_planner_universe)/config/mission_planner.param.yaml]