Package symbol

autoware_pose_initializer package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_test_manager autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_pose_initializer package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Yamato Ando
  • Takagi, Isamu

autoware_pose_initializer

Purpose

The autoware_pose_initializer is the package to send an initial pose to ekf_localizer. It receives roughly estimated initial pose from GNSS/user. Passing the pose to ndt_scan_matcher, and it gets a calculated ego pose from ndt_scan_matcher via service. Finally, it publishes the initial pose to ekf_localizer. This node depends on the map height fitter library. See here for more details.

Interfaces

Parameters

{{ json_to_markdown(“localization/autoware_pose_initializer/schema/pose_initializer.schema.json”) }}

Services

Name Type Description
/localization/initialize autoware_localization_msgs::srv::InitializeLocalization initial pose from api

Clients

Name Type Description
/localization/pose_estimator/ndt_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped pose estimation service
/localization/pose_estimator/yabloc/initializer/yabloc_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped yabloc pose estimation service

Subscriptions

Name Type Description
/sensing/gnss/pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped pose from gnss
/sensing/vehicle_velocity_converter/twist_with_covariance geometry_msgs::msg::TwistStamped twist for stop check

Publications

Name Type Description
/localization/initialization_state autoware_adapi_v1_msgs::msg::LocalizationInitializationState pose initialization state
/initialpose3d geometry_msgs::msg::PoseWithCovarianceStamped calculated initial ego pose
/diagnostics diagnostic_msgs::msg::DiagnosticArray diagnostics

Diagnostics

pose_initializer_status

If the score of initial pose estimation result is lower than score threshold, ERROR message is output to the /diagnostics topic.

drawing

Connection with Default AD API

This autoware_pose_initializer is used via default AD API. For detailed description of the API description, please refer to the description of autoware_default_adapi.

drawing

Initialize pose via CLI

Using the GNSS estimated position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization

The GNSS estimated position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Using the input position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization "
pose_with_covariance:
  - header:
      frame_id: map
    pose:
      pose:
        position:
          x: 89571.1640625
          y: 42301.1875
          z: -3.1565165519714355
        orientation:
          x: 0.0
          y: 0.0
          z: 0.28072773940524687
          w: 0.9597874433062874
      covariance: [0.25, 0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06853891909122467]
method: 0
"

The input position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Direct initial position set

```bash ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization “ pose_with_covariance:

  • header:

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_pose_initializer

1.10.0 (2026-09-28)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node (#1445)

    • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): use AgnocastOnlyCallbackIsolatedExecutor and drop redundant comments
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): drop the comments that restate the code
    • docs(map_height_fitter, pose_initializer, adapi_adaptors): note what the agnocast_env include provides

    * docs(map_height_fitter, pose_initializer): explain the ENABLE_AGNOCAST test gate ---------

  • fix(autoware_pose_initializer): drop the nested spin from the user defined initial pose (#1423)

    * refactor(autoware_pose_initializer): drop the nested spin from the user defined initial pose [PoseInitializer]{.title-ref} applied [user_defined_initial_pose]{.title-ref} from its constructor, where the executor is not running yet, so [LocalizationTriggerModule::send_request()]{.title-ref} had to spin a throwaway executor over the node to collect the trigger response. The constructor now only validates the parameter and schedules a one-shot timer on [group_srv_]{.title-ref}, so the initialization runs under the node's own executor like every other path. The [need_spin]{.title-ref} flag threaded through [change_node_trigger()]{.title-ref}, [set_user_defined_initial_pose()]{.title-ref} and [send_request()]{.title-ref} goes with it. Adds a fixture for the startup path, which needs the trigger mocks in place before the node is constructed and has to wait for the volatile [pose_reset]{.title-ref} subscription to match before the node starts spinning. It covers the configured pose reaching [pose_reset]{.title-ref}, both localizers being toggled off and back on, the failure path leaving the node uninitialized without letting the exception escape the timer callback, and the two parameter validations.

    * fix(autoware_pose_initializer): claim INITIALIZING before arming the startup timer The UNINITIALIZED published in the constructor otherwise stands until the timer runs, and autoware_automatic_pose_initializer can build an AUTO request from it that lands after the configured pose was applied and replaces it.

    * test(autoware_pose_initializer): assert the startup timer shares the initialize service group Reads the wiring back through for_each_callback_group instead of trying to observe the absence of interleaving at runtime. ---------Co-authored-by: Tran Huu Nhat Huy <<29034232+TranHuuNhatHuy@users.noreply.github.com>>

  • test(autoware_pose_initializer): implement characterization test (#1432)

  • feat(localization): add node designs for the pose/twist estimation nodes (#1409)

    * feat(localization): add node designs for the pose/twist estimation nodes Declare NdtScanMatcher, EkfLocalizer, GyroOdometer, StopFilter and Twist2Accel node designs, with remap_target set to each node's hardcoded topic and service names, and extend PoseInitializer with the map, GNSS, stop-check inputs and the align/trigger/partial-map-load clients that pose_initializer.launch.xml remaps. These let a system designer module compose the localization stack directly from nodes.

    * feat(localization): describe node designs and bump to format 0.4.0 ---------

  • refactor: migrate node design files from autoware_universe (#1381) Node design files for packages that moved to autoware_core, placed at the in-package convention <package>/design/<Name>.node.yaml. Co-authored-by: Claude Fable 5 <<noreply@anthropic.com>>

  • fix(autoware_pose_initializer): remove unnecessary dependency to fmt (#1377)

  • fix(localization): declare the dependencies these packages use (#1369) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>.

File truncated at 100 lines see the full file

Launch files

  • launch/pose_initializer.launch.xml
      • config_file [default: $(find-pkg-share autoware_pose_initializer)/config/pose_initializer.param.yaml]
      • user_defined_initial_pose/enable [default: false]
      • user_defined_initial_pose/pose [default: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]]
      • ndt_enabled [default: true]
      • gnss_enabled [default: true]
      • ekf_enabled [default: true]
      • yabloc_enabled [default: false]
      • stop_check_enabled [default: true]
      • sub_gnss_pose_cov [default: sub_gnss_pose_cov]
      • gnss_initial_pose_auto_fix_target [default: pointcloud_map]
      • stop_check_twist_topic [default: /sensing/vehicle_velocity_converter/twist_with_covariance]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange

Package symbol

autoware_pose_initializer package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_test_manager autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
jazzy

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_pose_initializer package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Yamato Ando
  • Takagi, Isamu

autoware_pose_initializer

Purpose

The autoware_pose_initializer is the package to send an initial pose to ekf_localizer. It receives roughly estimated initial pose from GNSS/user. Passing the pose to ndt_scan_matcher, and it gets a calculated ego pose from ndt_scan_matcher via service. Finally, it publishes the initial pose to ekf_localizer. This node depends on the map height fitter library. See here for more details.

Interfaces

Parameters

{{ json_to_markdown(“localization/autoware_pose_initializer/schema/pose_initializer.schema.json”) }}

Services

Name Type Description
/localization/initialize autoware_localization_msgs::srv::InitializeLocalization initial pose from api

Clients

Name Type Description
/localization/pose_estimator/ndt_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped pose estimation service
/localization/pose_estimator/yabloc/initializer/yabloc_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped yabloc pose estimation service

Subscriptions

Name Type Description
/sensing/gnss/pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped pose from gnss
/sensing/vehicle_velocity_converter/twist_with_covariance geometry_msgs::msg::TwistStamped twist for stop check

Publications

Name Type Description
/localization/initialization_state autoware_adapi_v1_msgs::msg::LocalizationInitializationState pose initialization state
/initialpose3d geometry_msgs::msg::PoseWithCovarianceStamped calculated initial ego pose
/diagnostics diagnostic_msgs::msg::DiagnosticArray diagnostics

Diagnostics

pose_initializer_status

If the score of initial pose estimation result is lower than score threshold, ERROR message is output to the /diagnostics topic.

drawing

Connection with Default AD API

This autoware_pose_initializer is used via default AD API. For detailed description of the API description, please refer to the description of autoware_default_adapi.

drawing

Initialize pose via CLI

Using the GNSS estimated position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization

The GNSS estimated position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Using the input position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization "
pose_with_covariance:
  - header:
      frame_id: map
    pose:
      pose:
        position:
          x: 89571.1640625
          y: 42301.1875
          z: -3.1565165519714355
        orientation:
          x: 0.0
          y: 0.0
          z: 0.28072773940524687
          w: 0.9597874433062874
      covariance: [0.25, 0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06853891909122467]
method: 0
"

The input position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Direct initial position set

```bash ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization “ pose_with_covariance:

  • header:

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_pose_initializer

1.10.0 (2026-09-28)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node (#1445)

    • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): use AgnocastOnlyCallbackIsolatedExecutor and drop redundant comments
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): drop the comments that restate the code
    • docs(map_height_fitter, pose_initializer, adapi_adaptors): note what the agnocast_env include provides

    * docs(map_height_fitter, pose_initializer): explain the ENABLE_AGNOCAST test gate ---------

  • fix(autoware_pose_initializer): drop the nested spin from the user defined initial pose (#1423)

    * refactor(autoware_pose_initializer): drop the nested spin from the user defined initial pose [PoseInitializer]{.title-ref} applied [user_defined_initial_pose]{.title-ref} from its constructor, where the executor is not running yet, so [LocalizationTriggerModule::send_request()]{.title-ref} had to spin a throwaway executor over the node to collect the trigger response. The constructor now only validates the parameter and schedules a one-shot timer on [group_srv_]{.title-ref}, so the initialization runs under the node's own executor like every other path. The [need_spin]{.title-ref} flag threaded through [change_node_trigger()]{.title-ref}, [set_user_defined_initial_pose()]{.title-ref} and [send_request()]{.title-ref} goes with it. Adds a fixture for the startup path, which needs the trigger mocks in place before the node is constructed and has to wait for the volatile [pose_reset]{.title-ref} subscription to match before the node starts spinning. It covers the configured pose reaching [pose_reset]{.title-ref}, both localizers being toggled off and back on, the failure path leaving the node uninitialized without letting the exception escape the timer callback, and the two parameter validations.

    * fix(autoware_pose_initializer): claim INITIALIZING before arming the startup timer The UNINITIALIZED published in the constructor otherwise stands until the timer runs, and autoware_automatic_pose_initializer can build an AUTO request from it that lands after the configured pose was applied and replaces it.

    * test(autoware_pose_initializer): assert the startup timer shares the initialize service group Reads the wiring back through for_each_callback_group instead of trying to observe the absence of interleaving at runtime. ---------Co-authored-by: Tran Huu Nhat Huy <<29034232+TranHuuNhatHuy@users.noreply.github.com>>

  • test(autoware_pose_initializer): implement characterization test (#1432)

  • feat(localization): add node designs for the pose/twist estimation nodes (#1409)

    * feat(localization): add node designs for the pose/twist estimation nodes Declare NdtScanMatcher, EkfLocalizer, GyroOdometer, StopFilter and Twist2Accel node designs, with remap_target set to each node's hardcoded topic and service names, and extend PoseInitializer with the map, GNSS, stop-check inputs and the align/trigger/partial-map-load clients that pose_initializer.launch.xml remaps. These let a system designer module compose the localization stack directly from nodes.

    * feat(localization): describe node designs and bump to format 0.4.0 ---------

  • refactor: migrate node design files from autoware_universe (#1381) Node design files for packages that moved to autoware_core, placed at the in-package convention <package>/design/<Name>.node.yaml. Co-authored-by: Claude Fable 5 <<noreply@anthropic.com>>

  • fix(autoware_pose_initializer): remove unnecessary dependency to fmt (#1377)

  • fix(localization): declare the dependencies these packages use (#1369) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>.

File truncated at 100 lines see the full file

Launch files

  • launch/pose_initializer.launch.xml
      • config_file [default: $(find-pkg-share autoware_pose_initializer)/config/pose_initializer.param.yaml]
      • user_defined_initial_pose/enable [default: false]
      • user_defined_initial_pose/pose [default: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]]
      • ndt_enabled [default: true]
      • gnss_enabled [default: true]
      • ekf_enabled [default: true]
      • yabloc_enabled [default: false]
      • stop_check_enabled [default: true]
      • sub_gnss_pose_cov [default: sub_gnss_pose_cov]
      • gnss_initial_pose_auto_fix_target [default: pointcloud_map]
      • stop_check_twist_topic [default: /sensing/vehicle_velocity_converter/twist_with_covariance]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange

No version for distro kilted showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_pose_initializer package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_test_manager autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_pose_initializer package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Yamato Ando
  • Takagi, Isamu

autoware_pose_initializer

Purpose

The autoware_pose_initializer is the package to send an initial pose to ekf_localizer. It receives roughly estimated initial pose from GNSS/user. Passing the pose to ndt_scan_matcher, and it gets a calculated ego pose from ndt_scan_matcher via service. Finally, it publishes the initial pose to ekf_localizer. This node depends on the map height fitter library. See here for more details.

Interfaces

Parameters

{{ json_to_markdown(“localization/autoware_pose_initializer/schema/pose_initializer.schema.json”) }}

Services

Name Type Description
/localization/initialize autoware_localization_msgs::srv::InitializeLocalization initial pose from api

Clients

Name Type Description
/localization/pose_estimator/ndt_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped pose estimation service
/localization/pose_estimator/yabloc/initializer/yabloc_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped yabloc pose estimation service

Subscriptions

Name Type Description
/sensing/gnss/pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped pose from gnss
/sensing/vehicle_velocity_converter/twist_with_covariance geometry_msgs::msg::TwistStamped twist for stop check

Publications

Name Type Description
/localization/initialization_state autoware_adapi_v1_msgs::msg::LocalizationInitializationState pose initialization state
/initialpose3d geometry_msgs::msg::PoseWithCovarianceStamped calculated initial ego pose
/diagnostics diagnostic_msgs::msg::DiagnosticArray diagnostics

Diagnostics

pose_initializer_status

If the score of initial pose estimation result is lower than score threshold, ERROR message is output to the /diagnostics topic.

drawing

Connection with Default AD API

This autoware_pose_initializer is used via default AD API. For detailed description of the API description, please refer to the description of autoware_default_adapi.

drawing

Initialize pose via CLI

Using the GNSS estimated position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization

The GNSS estimated position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Using the input position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization "
pose_with_covariance:
  - header:
      frame_id: map
    pose:
      pose:
        position:
          x: 89571.1640625
          y: 42301.1875
          z: -3.1565165519714355
        orientation:
          x: 0.0
          y: 0.0
          z: 0.28072773940524687
          w: 0.9597874433062874
      covariance: [0.25, 0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06853891909122467]
method: 0
"

The input position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Direct initial position set

```bash ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization “ pose_with_covariance:

  • header:

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_pose_initializer

1.10.0 (2026-09-28)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node (#1445)

    • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): use AgnocastOnlyCallbackIsolatedExecutor and drop redundant comments
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): drop the comments that restate the code
    • docs(map_height_fitter, pose_initializer, adapi_adaptors): note what the agnocast_env include provides

    * docs(map_height_fitter, pose_initializer): explain the ENABLE_AGNOCAST test gate ---------

  • fix(autoware_pose_initializer): drop the nested spin from the user defined initial pose (#1423)

    * refactor(autoware_pose_initializer): drop the nested spin from the user defined initial pose [PoseInitializer]{.title-ref} applied [user_defined_initial_pose]{.title-ref} from its constructor, where the executor is not running yet, so [LocalizationTriggerModule::send_request()]{.title-ref} had to spin a throwaway executor over the node to collect the trigger response. The constructor now only validates the parameter and schedules a one-shot timer on [group_srv_]{.title-ref}, so the initialization runs under the node's own executor like every other path. The [need_spin]{.title-ref} flag threaded through [change_node_trigger()]{.title-ref}, [set_user_defined_initial_pose()]{.title-ref} and [send_request()]{.title-ref} goes with it. Adds a fixture for the startup path, which needs the trigger mocks in place before the node is constructed and has to wait for the volatile [pose_reset]{.title-ref} subscription to match before the node starts spinning. It covers the configured pose reaching [pose_reset]{.title-ref}, both localizers being toggled off and back on, the failure path leaving the node uninitialized without letting the exception escape the timer callback, and the two parameter validations.

    * fix(autoware_pose_initializer): claim INITIALIZING before arming the startup timer The UNINITIALIZED published in the constructor otherwise stands until the timer runs, and autoware_automatic_pose_initializer can build an AUTO request from it that lands after the configured pose was applied and replaces it.

    * test(autoware_pose_initializer): assert the startup timer shares the initialize service group Reads the wiring back through for_each_callback_group instead of trying to observe the absence of interleaving at runtime. ---------Co-authored-by: Tran Huu Nhat Huy <<29034232+TranHuuNhatHuy@users.noreply.github.com>>

  • test(autoware_pose_initializer): implement characterization test (#1432)

  • feat(localization): add node designs for the pose/twist estimation nodes (#1409)

    * feat(localization): add node designs for the pose/twist estimation nodes Declare NdtScanMatcher, EkfLocalizer, GyroOdometer, StopFilter and Twist2Accel node designs, with remap_target set to each node's hardcoded topic and service names, and extend PoseInitializer with the map, GNSS, stop-check inputs and the align/trigger/partial-map-load clients that pose_initializer.launch.xml remaps. These let a system designer module compose the localization stack directly from nodes.

    * feat(localization): describe node designs and bump to format 0.4.0 ---------

  • refactor: migrate node design files from autoware_universe (#1381) Node design files for packages that moved to autoware_core, placed at the in-package convention <package>/design/<Name>.node.yaml. Co-authored-by: Claude Fable 5 <<noreply@anthropic.com>>

  • fix(autoware_pose_initializer): remove unnecessary dependency to fmt (#1377)

  • fix(localization): declare the dependencies these packages use (#1369) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>.

File truncated at 100 lines see the full file

Launch files

  • launch/pose_initializer.launch.xml
      • config_file [default: $(find-pkg-share autoware_pose_initializer)/config/pose_initializer.param.yaml]
      • user_defined_initial_pose/enable [default: false]
      • user_defined_initial_pose/pose [default: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]]
      • ndt_enabled [default: true]
      • gnss_enabled [default: true]
      • ekf_enabled [default: true]
      • yabloc_enabled [default: false]
      • stop_check_enabled [default: true]
      • sub_gnss_pose_cov [default: sub_gnss_pose_cov]
      • gnss_initial_pose_auto_fix_target [default: pointcloud_map]
      • stop_check_twist_topic [default: /sensing/vehicle_velocity_converter/twist_with_covariance]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange

No version for distro lyrical showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_pose_initializer package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_test_manager autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_pose_initializer package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Yamato Ando
  • Takagi, Isamu

autoware_pose_initializer

Purpose

The autoware_pose_initializer is the package to send an initial pose to ekf_localizer. It receives roughly estimated initial pose from GNSS/user. Passing the pose to ndt_scan_matcher, and it gets a calculated ego pose from ndt_scan_matcher via service. Finally, it publishes the initial pose to ekf_localizer. This node depends on the map height fitter library. See here for more details.

Interfaces

Parameters

{{ json_to_markdown(“localization/autoware_pose_initializer/schema/pose_initializer.schema.json”) }}

Services

Name Type Description
/localization/initialize autoware_localization_msgs::srv::InitializeLocalization initial pose from api

Clients

Name Type Description
/localization/pose_estimator/ndt_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped pose estimation service
/localization/pose_estimator/yabloc/initializer/yabloc_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped yabloc pose estimation service

Subscriptions

Name Type Description
/sensing/gnss/pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped pose from gnss
/sensing/vehicle_velocity_converter/twist_with_covariance geometry_msgs::msg::TwistStamped twist for stop check

Publications

Name Type Description
/localization/initialization_state autoware_adapi_v1_msgs::msg::LocalizationInitializationState pose initialization state
/initialpose3d geometry_msgs::msg::PoseWithCovarianceStamped calculated initial ego pose
/diagnostics diagnostic_msgs::msg::DiagnosticArray diagnostics

Diagnostics

pose_initializer_status

If the score of initial pose estimation result is lower than score threshold, ERROR message is output to the /diagnostics topic.

drawing

Connection with Default AD API

This autoware_pose_initializer is used via default AD API. For detailed description of the API description, please refer to the description of autoware_default_adapi.

drawing

Initialize pose via CLI

Using the GNSS estimated position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization

The GNSS estimated position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Using the input position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization "
pose_with_covariance:
  - header:
      frame_id: map
    pose:
      pose:
        position:
          x: 89571.1640625
          y: 42301.1875
          z: -3.1565165519714355
        orientation:
          x: 0.0
          y: 0.0
          z: 0.28072773940524687
          w: 0.9597874433062874
      covariance: [0.25, 0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06853891909122467]
method: 0
"

The input position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Direct initial position set

```bash ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization “ pose_with_covariance:

  • header:

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_pose_initializer

1.10.0 (2026-09-28)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node (#1445)

    • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): use AgnocastOnlyCallbackIsolatedExecutor and drop redundant comments
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): drop the comments that restate the code
    • docs(map_height_fitter, pose_initializer, adapi_adaptors): note what the agnocast_env include provides

    * docs(map_height_fitter, pose_initializer): explain the ENABLE_AGNOCAST test gate ---------

  • fix(autoware_pose_initializer): drop the nested spin from the user defined initial pose (#1423)

    * refactor(autoware_pose_initializer): drop the nested spin from the user defined initial pose [PoseInitializer]{.title-ref} applied [user_defined_initial_pose]{.title-ref} from its constructor, where the executor is not running yet, so [LocalizationTriggerModule::send_request()]{.title-ref} had to spin a throwaway executor over the node to collect the trigger response. The constructor now only validates the parameter and schedules a one-shot timer on [group_srv_]{.title-ref}, so the initialization runs under the node's own executor like every other path. The [need_spin]{.title-ref} flag threaded through [change_node_trigger()]{.title-ref}, [set_user_defined_initial_pose()]{.title-ref} and [send_request()]{.title-ref} goes with it. Adds a fixture for the startup path, which needs the trigger mocks in place before the node is constructed and has to wait for the volatile [pose_reset]{.title-ref} subscription to match before the node starts spinning. It covers the configured pose reaching [pose_reset]{.title-ref}, both localizers being toggled off and back on, the failure path leaving the node uninitialized without letting the exception escape the timer callback, and the two parameter validations.

    * fix(autoware_pose_initializer): claim INITIALIZING before arming the startup timer The UNINITIALIZED published in the constructor otherwise stands until the timer runs, and autoware_automatic_pose_initializer can build an AUTO request from it that lands after the configured pose was applied and replaces it.

    * test(autoware_pose_initializer): assert the startup timer shares the initialize service group Reads the wiring back through for_each_callback_group instead of trying to observe the absence of interleaving at runtime. ---------Co-authored-by: Tran Huu Nhat Huy <<29034232+TranHuuNhatHuy@users.noreply.github.com>>

  • test(autoware_pose_initializer): implement characterization test (#1432)

  • feat(localization): add node designs for the pose/twist estimation nodes (#1409)

    * feat(localization): add node designs for the pose/twist estimation nodes Declare NdtScanMatcher, EkfLocalizer, GyroOdometer, StopFilter and Twist2Accel node designs, with remap_target set to each node's hardcoded topic and service names, and extend PoseInitializer with the map, GNSS, stop-check inputs and the align/trigger/partial-map-load clients that pose_initializer.launch.xml remaps. These let a system designer module compose the localization stack directly from nodes.

    * feat(localization): describe node designs and bump to format 0.4.0 ---------

  • refactor: migrate node design files from autoware_universe (#1381) Node design files for packages that moved to autoware_core, placed at the in-package convention <package>/design/<Name>.node.yaml. Co-authored-by: Claude Fable 5 <<noreply@anthropic.com>>

  • fix(autoware_pose_initializer): remove unnecessary dependency to fmt (#1377)

  • fix(localization): declare the dependencies these packages use (#1369) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>.

File truncated at 100 lines see the full file

Launch files

  • launch/pose_initializer.launch.xml
      • config_file [default: $(find-pkg-share autoware_pose_initializer)/config/pose_initializer.param.yaml]
      • user_defined_initial_pose/enable [default: false]
      • user_defined_initial_pose/pose [default: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]]
      • ndt_enabled [default: true]
      • gnss_enabled [default: true]
      • ekf_enabled [default: true]
      • yabloc_enabled [default: false]
      • stop_check_enabled [default: true]
      • sub_gnss_pose_cov [default: sub_gnss_pose_cov]
      • gnss_initial_pose_auto_fix_target [default: pointcloud_map]
      • stop_check_twist_topic [default: /sensing/vehicle_velocity_converter/twist_with_covariance]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange

No version for distro rolling showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_pose_initializer package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_test_manager autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_pose_initializer package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Yamato Ando
  • Takagi, Isamu

autoware_pose_initializer

Purpose

The autoware_pose_initializer is the package to send an initial pose to ekf_localizer. It receives roughly estimated initial pose from GNSS/user. Passing the pose to ndt_scan_matcher, and it gets a calculated ego pose from ndt_scan_matcher via service. Finally, it publishes the initial pose to ekf_localizer. This node depends on the map height fitter library. See here for more details.

Interfaces

Parameters

{{ json_to_markdown(“localization/autoware_pose_initializer/schema/pose_initializer.schema.json”) }}

Services

Name Type Description
/localization/initialize autoware_localization_msgs::srv::InitializeLocalization initial pose from api

Clients

Name Type Description
/localization/pose_estimator/ndt_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped pose estimation service
/localization/pose_estimator/yabloc/initializer/yabloc_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped yabloc pose estimation service

Subscriptions

Name Type Description
/sensing/gnss/pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped pose from gnss
/sensing/vehicle_velocity_converter/twist_with_covariance geometry_msgs::msg::TwistStamped twist for stop check

Publications

Name Type Description
/localization/initialization_state autoware_adapi_v1_msgs::msg::LocalizationInitializationState pose initialization state
/initialpose3d geometry_msgs::msg::PoseWithCovarianceStamped calculated initial ego pose
/diagnostics diagnostic_msgs::msg::DiagnosticArray diagnostics

Diagnostics

pose_initializer_status

If the score of initial pose estimation result is lower than score threshold, ERROR message is output to the /diagnostics topic.

drawing

Connection with Default AD API

This autoware_pose_initializer is used via default AD API. For detailed description of the API description, please refer to the description of autoware_default_adapi.

drawing

Initialize pose via CLI

Using the GNSS estimated position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization

The GNSS estimated position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Using the input position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization "
pose_with_covariance:
  - header:
      frame_id: map
    pose:
      pose:
        position:
          x: 89571.1640625
          y: 42301.1875
          z: -3.1565165519714355
        orientation:
          x: 0.0
          y: 0.0
          z: 0.28072773940524687
          w: 0.9597874433062874
      covariance: [0.25, 0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06853891909122467]
method: 0
"

The input position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Direct initial position set

```bash ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization “ pose_with_covariance:

  • header:

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_pose_initializer

1.10.0 (2026-09-28)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node (#1445)

    • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): use AgnocastOnlyCallbackIsolatedExecutor and drop redundant comments
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): drop the comments that restate the code
    • docs(map_height_fitter, pose_initializer, adapi_adaptors): note what the agnocast_env include provides

    * docs(map_height_fitter, pose_initializer): explain the ENABLE_AGNOCAST test gate ---------

  • fix(autoware_pose_initializer): drop the nested spin from the user defined initial pose (#1423)

    * refactor(autoware_pose_initializer): drop the nested spin from the user defined initial pose [PoseInitializer]{.title-ref} applied [user_defined_initial_pose]{.title-ref} from its constructor, where the executor is not running yet, so [LocalizationTriggerModule::send_request()]{.title-ref} had to spin a throwaway executor over the node to collect the trigger response. The constructor now only validates the parameter and schedules a one-shot timer on [group_srv_]{.title-ref}, so the initialization runs under the node's own executor like every other path. The [need_spin]{.title-ref} flag threaded through [change_node_trigger()]{.title-ref}, [set_user_defined_initial_pose()]{.title-ref} and [send_request()]{.title-ref} goes with it. Adds a fixture for the startup path, which needs the trigger mocks in place before the node is constructed and has to wait for the volatile [pose_reset]{.title-ref} subscription to match before the node starts spinning. It covers the configured pose reaching [pose_reset]{.title-ref}, both localizers being toggled off and back on, the failure path leaving the node uninitialized without letting the exception escape the timer callback, and the two parameter validations.

    * fix(autoware_pose_initializer): claim INITIALIZING before arming the startup timer The UNINITIALIZED published in the constructor otherwise stands until the timer runs, and autoware_automatic_pose_initializer can build an AUTO request from it that lands after the configured pose was applied and replaces it.

    * test(autoware_pose_initializer): assert the startup timer shares the initialize service group Reads the wiring back through for_each_callback_group instead of trying to observe the absence of interleaving at runtime. ---------Co-authored-by: Tran Huu Nhat Huy <<29034232+TranHuuNhatHuy@users.noreply.github.com>>

  • test(autoware_pose_initializer): implement characterization test (#1432)

  • feat(localization): add node designs for the pose/twist estimation nodes (#1409)

    * feat(localization): add node designs for the pose/twist estimation nodes Declare NdtScanMatcher, EkfLocalizer, GyroOdometer, StopFilter and Twist2Accel node designs, with remap_target set to each node's hardcoded topic and service names, and extend PoseInitializer with the map, GNSS, stop-check inputs and the align/trigger/partial-map-load clients that pose_initializer.launch.xml remaps. These let a system designer module compose the localization stack directly from nodes.

    * feat(localization): describe node designs and bump to format 0.4.0 ---------

  • refactor: migrate node design files from autoware_universe (#1381) Node design files for packages that moved to autoware_core, placed at the in-package convention <package>/design/<Name>.node.yaml. Co-authored-by: Claude Fable 5 <<noreply@anthropic.com>>

  • fix(autoware_pose_initializer): remove unnecessary dependency to fmt (#1377)

  • fix(localization): declare the dependencies these packages use (#1369) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>.

File truncated at 100 lines see the full file

Launch files

  • launch/pose_initializer.launch.xml
      • config_file [default: $(find-pkg-share autoware_pose_initializer)/config/pose_initializer.param.yaml]
      • user_defined_initial_pose/enable [default: false]
      • user_defined_initial_pose/pose [default: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]]
      • ndt_enabled [default: true]
      • gnss_enabled [default: true]
      • ekf_enabled [default: true]
      • yabloc_enabled [default: false]
      • stop_check_enabled [default: true]
      • sub_gnss_pose_cov [default: sub_gnss_pose_cov]
      • gnss_initial_pose_auto_fix_target [default: pointcloud_map]
      • stop_check_twist_topic [default: /sensing/vehicle_velocity_converter/twist_with_covariance]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange

No version for distro ardent showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_pose_initializer package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_test_manager autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_pose_initializer package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Yamato Ando
  • Takagi, Isamu

autoware_pose_initializer

Purpose

The autoware_pose_initializer is the package to send an initial pose to ekf_localizer. It receives roughly estimated initial pose from GNSS/user. Passing the pose to ndt_scan_matcher, and it gets a calculated ego pose from ndt_scan_matcher via service. Finally, it publishes the initial pose to ekf_localizer. This node depends on the map height fitter library. See here for more details.

Interfaces

Parameters

{{ json_to_markdown(“localization/autoware_pose_initializer/schema/pose_initializer.schema.json”) }}

Services

Name Type Description
/localization/initialize autoware_localization_msgs::srv::InitializeLocalization initial pose from api

Clients

Name Type Description
/localization/pose_estimator/ndt_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped pose estimation service
/localization/pose_estimator/yabloc/initializer/yabloc_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped yabloc pose estimation service

Subscriptions

Name Type Description
/sensing/gnss/pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped pose from gnss
/sensing/vehicle_velocity_converter/twist_with_covariance geometry_msgs::msg::TwistStamped twist for stop check

Publications

Name Type Description
/localization/initialization_state autoware_adapi_v1_msgs::msg::LocalizationInitializationState pose initialization state
/initialpose3d geometry_msgs::msg::PoseWithCovarianceStamped calculated initial ego pose
/diagnostics diagnostic_msgs::msg::DiagnosticArray diagnostics

Diagnostics

pose_initializer_status

If the score of initial pose estimation result is lower than score threshold, ERROR message is output to the /diagnostics topic.

drawing

Connection with Default AD API

This autoware_pose_initializer is used via default AD API. For detailed description of the API description, please refer to the description of autoware_default_adapi.

drawing

Initialize pose via CLI

Using the GNSS estimated position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization

The GNSS estimated position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Using the input position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization "
pose_with_covariance:
  - header:
      frame_id: map
    pose:
      pose:
        position:
          x: 89571.1640625
          y: 42301.1875
          z: -3.1565165519714355
        orientation:
          x: 0.0
          y: 0.0
          z: 0.28072773940524687
          w: 0.9597874433062874
      covariance: [0.25, 0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06853891909122467]
method: 0
"

The input position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Direct initial position set

```bash ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization “ pose_with_covariance:

  • header:

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_pose_initializer

1.10.0 (2026-09-28)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node (#1445)

    • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): use AgnocastOnlyCallbackIsolatedExecutor and drop redundant comments
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): drop the comments that restate the code
    • docs(map_height_fitter, pose_initializer, adapi_adaptors): note what the agnocast_env include provides

    * docs(map_height_fitter, pose_initializer): explain the ENABLE_AGNOCAST test gate ---------

  • fix(autoware_pose_initializer): drop the nested spin from the user defined initial pose (#1423)

    * refactor(autoware_pose_initializer): drop the nested spin from the user defined initial pose [PoseInitializer]{.title-ref} applied [user_defined_initial_pose]{.title-ref} from its constructor, where the executor is not running yet, so [LocalizationTriggerModule::send_request()]{.title-ref} had to spin a throwaway executor over the node to collect the trigger response. The constructor now only validates the parameter and schedules a one-shot timer on [group_srv_]{.title-ref}, so the initialization runs under the node's own executor like every other path. The [need_spin]{.title-ref} flag threaded through [change_node_trigger()]{.title-ref}, [set_user_defined_initial_pose()]{.title-ref} and [send_request()]{.title-ref} goes with it. Adds a fixture for the startup path, which needs the trigger mocks in place before the node is constructed and has to wait for the volatile [pose_reset]{.title-ref} subscription to match before the node starts spinning. It covers the configured pose reaching [pose_reset]{.title-ref}, both localizers being toggled off and back on, the failure path leaving the node uninitialized without letting the exception escape the timer callback, and the two parameter validations.

    * fix(autoware_pose_initializer): claim INITIALIZING before arming the startup timer The UNINITIALIZED published in the constructor otherwise stands until the timer runs, and autoware_automatic_pose_initializer can build an AUTO request from it that lands after the configured pose was applied and replaces it.

    * test(autoware_pose_initializer): assert the startup timer shares the initialize service group Reads the wiring back through for_each_callback_group instead of trying to observe the absence of interleaving at runtime. ---------Co-authored-by: Tran Huu Nhat Huy <<29034232+TranHuuNhatHuy@users.noreply.github.com>>

  • test(autoware_pose_initializer): implement characterization test (#1432)

  • feat(localization): add node designs for the pose/twist estimation nodes (#1409)

    * feat(localization): add node designs for the pose/twist estimation nodes Declare NdtScanMatcher, EkfLocalizer, GyroOdometer, StopFilter and Twist2Accel node designs, with remap_target set to each node's hardcoded topic and service names, and extend PoseInitializer with the map, GNSS, stop-check inputs and the align/trigger/partial-map-load clients that pose_initializer.launch.xml remaps. These let a system designer module compose the localization stack directly from nodes.

    * feat(localization): describe node designs and bump to format 0.4.0 ---------

  • refactor: migrate node design files from autoware_universe (#1381) Node design files for packages that moved to autoware_core, placed at the in-package convention <package>/design/<Name>.node.yaml. Co-authored-by: Claude Fable 5 <<noreply@anthropic.com>>

  • fix(autoware_pose_initializer): remove unnecessary dependency to fmt (#1377)

  • fix(localization): declare the dependencies these packages use (#1369) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>.

File truncated at 100 lines see the full file

Launch files

  • launch/pose_initializer.launch.xml
      • config_file [default: $(find-pkg-share autoware_pose_initializer)/config/pose_initializer.param.yaml]
      • user_defined_initial_pose/enable [default: false]
      • user_defined_initial_pose/pose [default: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]]
      • ndt_enabled [default: true]
      • gnss_enabled [default: true]
      • ekf_enabled [default: true]
      • yabloc_enabled [default: false]
      • stop_check_enabled [default: true]
      • sub_gnss_pose_cov [default: sub_gnss_pose_cov]
      • gnss_initial_pose_auto_fix_target [default: pointcloud_map]
      • stop_check_twist_topic [default: /sensing/vehicle_velocity_converter/twist_with_covariance]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange

No version for distro bouncy showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_pose_initializer package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_test_manager autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_pose_initializer package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Yamato Ando
  • Takagi, Isamu

autoware_pose_initializer

Purpose

The autoware_pose_initializer is the package to send an initial pose to ekf_localizer. It receives roughly estimated initial pose from GNSS/user. Passing the pose to ndt_scan_matcher, and it gets a calculated ego pose from ndt_scan_matcher via service. Finally, it publishes the initial pose to ekf_localizer. This node depends on the map height fitter library. See here for more details.

Interfaces

Parameters

{{ json_to_markdown(“localization/autoware_pose_initializer/schema/pose_initializer.schema.json”) }}

Services

Name Type Description
/localization/initialize autoware_localization_msgs::srv::InitializeLocalization initial pose from api

Clients

Name Type Description
/localization/pose_estimator/ndt_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped pose estimation service
/localization/pose_estimator/yabloc/initializer/yabloc_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped yabloc pose estimation service

Subscriptions

Name Type Description
/sensing/gnss/pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped pose from gnss
/sensing/vehicle_velocity_converter/twist_with_covariance geometry_msgs::msg::TwistStamped twist for stop check

Publications

Name Type Description
/localization/initialization_state autoware_adapi_v1_msgs::msg::LocalizationInitializationState pose initialization state
/initialpose3d geometry_msgs::msg::PoseWithCovarianceStamped calculated initial ego pose
/diagnostics diagnostic_msgs::msg::DiagnosticArray diagnostics

Diagnostics

pose_initializer_status

If the score of initial pose estimation result is lower than score threshold, ERROR message is output to the /diagnostics topic.

drawing

Connection with Default AD API

This autoware_pose_initializer is used via default AD API. For detailed description of the API description, please refer to the description of autoware_default_adapi.

drawing

Initialize pose via CLI

Using the GNSS estimated position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization

The GNSS estimated position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Using the input position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization "
pose_with_covariance:
  - header:
      frame_id: map
    pose:
      pose:
        position:
          x: 89571.1640625
          y: 42301.1875
          z: -3.1565165519714355
        orientation:
          x: 0.0
          y: 0.0
          z: 0.28072773940524687
          w: 0.9597874433062874
      covariance: [0.25, 0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06853891909122467]
method: 0
"

The input position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Direct initial position set

```bash ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization “ pose_with_covariance:

  • header:

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_pose_initializer

1.10.0 (2026-09-28)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node (#1445)

    • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): use AgnocastOnlyCallbackIsolatedExecutor and drop redundant comments
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): drop the comments that restate the code
    • docs(map_height_fitter, pose_initializer, adapi_adaptors): note what the agnocast_env include provides

    * docs(map_height_fitter, pose_initializer): explain the ENABLE_AGNOCAST test gate ---------

  • fix(autoware_pose_initializer): drop the nested spin from the user defined initial pose (#1423)

    * refactor(autoware_pose_initializer): drop the nested spin from the user defined initial pose [PoseInitializer]{.title-ref} applied [user_defined_initial_pose]{.title-ref} from its constructor, where the executor is not running yet, so [LocalizationTriggerModule::send_request()]{.title-ref} had to spin a throwaway executor over the node to collect the trigger response. The constructor now only validates the parameter and schedules a one-shot timer on [group_srv_]{.title-ref}, so the initialization runs under the node's own executor like every other path. The [need_spin]{.title-ref} flag threaded through [change_node_trigger()]{.title-ref}, [set_user_defined_initial_pose()]{.title-ref} and [send_request()]{.title-ref} goes with it. Adds a fixture for the startup path, which needs the trigger mocks in place before the node is constructed and has to wait for the volatile [pose_reset]{.title-ref} subscription to match before the node starts spinning. It covers the configured pose reaching [pose_reset]{.title-ref}, both localizers being toggled off and back on, the failure path leaving the node uninitialized without letting the exception escape the timer callback, and the two parameter validations.

    * fix(autoware_pose_initializer): claim INITIALIZING before arming the startup timer The UNINITIALIZED published in the constructor otherwise stands until the timer runs, and autoware_automatic_pose_initializer can build an AUTO request from it that lands after the configured pose was applied and replaces it.

    * test(autoware_pose_initializer): assert the startup timer shares the initialize service group Reads the wiring back through for_each_callback_group instead of trying to observe the absence of interleaving at runtime. ---------Co-authored-by: Tran Huu Nhat Huy <<29034232+TranHuuNhatHuy@users.noreply.github.com>>

  • test(autoware_pose_initializer): implement characterization test (#1432)

  • feat(localization): add node designs for the pose/twist estimation nodes (#1409)

    * feat(localization): add node designs for the pose/twist estimation nodes Declare NdtScanMatcher, EkfLocalizer, GyroOdometer, StopFilter and Twist2Accel node designs, with remap_target set to each node's hardcoded topic and service names, and extend PoseInitializer with the map, GNSS, stop-check inputs and the align/trigger/partial-map-load clients that pose_initializer.launch.xml remaps. These let a system designer module compose the localization stack directly from nodes.

    * feat(localization): describe node designs and bump to format 0.4.0 ---------

  • refactor: migrate node design files from autoware_universe (#1381) Node design files for packages that moved to autoware_core, placed at the in-package convention <package>/design/<Name>.node.yaml. Co-authored-by: Claude Fable 5 <<noreply@anthropic.com>>

  • fix(autoware_pose_initializer): remove unnecessary dependency to fmt (#1377)

  • fix(localization): declare the dependencies these packages use (#1369) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>.

File truncated at 100 lines see the full file

Launch files

  • launch/pose_initializer.launch.xml
      • config_file [default: $(find-pkg-share autoware_pose_initializer)/config/pose_initializer.param.yaml]
      • user_defined_initial_pose/enable [default: false]
      • user_defined_initial_pose/pose [default: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]]
      • ndt_enabled [default: true]
      • gnss_enabled [default: true]
      • ekf_enabled [default: true]
      • yabloc_enabled [default: false]
      • stop_check_enabled [default: true]
      • sub_gnss_pose_cov [default: sub_gnss_pose_cov]
      • gnss_initial_pose_auto_fix_target [default: pointcloud_map]
      • stop_check_twist_topic [default: /sensing/vehicle_velocity_converter/twist_with_covariance]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange

No version for distro crystal showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_pose_initializer package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_test_manager autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_pose_initializer package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Yamato Ando
  • Takagi, Isamu

autoware_pose_initializer

Purpose

The autoware_pose_initializer is the package to send an initial pose to ekf_localizer. It receives roughly estimated initial pose from GNSS/user. Passing the pose to ndt_scan_matcher, and it gets a calculated ego pose from ndt_scan_matcher via service. Finally, it publishes the initial pose to ekf_localizer. This node depends on the map height fitter library. See here for more details.

Interfaces

Parameters

{{ json_to_markdown(“localization/autoware_pose_initializer/schema/pose_initializer.schema.json”) }}

Services

Name Type Description
/localization/initialize autoware_localization_msgs::srv::InitializeLocalization initial pose from api

Clients

Name Type Description
/localization/pose_estimator/ndt_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped pose estimation service
/localization/pose_estimator/yabloc/initializer/yabloc_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped yabloc pose estimation service

Subscriptions

Name Type Description
/sensing/gnss/pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped pose from gnss
/sensing/vehicle_velocity_converter/twist_with_covariance geometry_msgs::msg::TwistStamped twist for stop check

Publications

Name Type Description
/localization/initialization_state autoware_adapi_v1_msgs::msg::LocalizationInitializationState pose initialization state
/initialpose3d geometry_msgs::msg::PoseWithCovarianceStamped calculated initial ego pose
/diagnostics diagnostic_msgs::msg::DiagnosticArray diagnostics

Diagnostics

pose_initializer_status

If the score of initial pose estimation result is lower than score threshold, ERROR message is output to the /diagnostics topic.

drawing

Connection with Default AD API

This autoware_pose_initializer is used via default AD API. For detailed description of the API description, please refer to the description of autoware_default_adapi.

drawing

Initialize pose via CLI

Using the GNSS estimated position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization

The GNSS estimated position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Using the input position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization "
pose_with_covariance:
  - header:
      frame_id: map
    pose:
      pose:
        position:
          x: 89571.1640625
          y: 42301.1875
          z: -3.1565165519714355
        orientation:
          x: 0.0
          y: 0.0
          z: 0.28072773940524687
          w: 0.9597874433062874
      covariance: [0.25, 0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06853891909122467]
method: 0
"

The input position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Direct initial position set

```bash ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization “ pose_with_covariance:

  • header:

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_pose_initializer

1.10.0 (2026-09-28)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node (#1445)

    • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): use AgnocastOnlyCallbackIsolatedExecutor and drop redundant comments
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): drop the comments that restate the code
    • docs(map_height_fitter, pose_initializer, adapi_adaptors): note what the agnocast_env include provides

    * docs(map_height_fitter, pose_initializer): explain the ENABLE_AGNOCAST test gate ---------

  • fix(autoware_pose_initializer): drop the nested spin from the user defined initial pose (#1423)

    * refactor(autoware_pose_initializer): drop the nested spin from the user defined initial pose [PoseInitializer]{.title-ref} applied [user_defined_initial_pose]{.title-ref} from its constructor, where the executor is not running yet, so [LocalizationTriggerModule::send_request()]{.title-ref} had to spin a throwaway executor over the node to collect the trigger response. The constructor now only validates the parameter and schedules a one-shot timer on [group_srv_]{.title-ref}, so the initialization runs under the node's own executor like every other path. The [need_spin]{.title-ref} flag threaded through [change_node_trigger()]{.title-ref}, [set_user_defined_initial_pose()]{.title-ref} and [send_request()]{.title-ref} goes with it. Adds a fixture for the startup path, which needs the trigger mocks in place before the node is constructed and has to wait for the volatile [pose_reset]{.title-ref} subscription to match before the node starts spinning. It covers the configured pose reaching [pose_reset]{.title-ref}, both localizers being toggled off and back on, the failure path leaving the node uninitialized without letting the exception escape the timer callback, and the two parameter validations.

    * fix(autoware_pose_initializer): claim INITIALIZING before arming the startup timer The UNINITIALIZED published in the constructor otherwise stands until the timer runs, and autoware_automatic_pose_initializer can build an AUTO request from it that lands after the configured pose was applied and replaces it.

    * test(autoware_pose_initializer): assert the startup timer shares the initialize service group Reads the wiring back through for_each_callback_group instead of trying to observe the absence of interleaving at runtime. ---------Co-authored-by: Tran Huu Nhat Huy <<29034232+TranHuuNhatHuy@users.noreply.github.com>>

  • test(autoware_pose_initializer): implement characterization test (#1432)

  • feat(localization): add node designs for the pose/twist estimation nodes (#1409)

    * feat(localization): add node designs for the pose/twist estimation nodes Declare NdtScanMatcher, EkfLocalizer, GyroOdometer, StopFilter and Twist2Accel node designs, with remap_target set to each node's hardcoded topic and service names, and extend PoseInitializer with the map, GNSS, stop-check inputs and the align/trigger/partial-map-load clients that pose_initializer.launch.xml remaps. These let a system designer module compose the localization stack directly from nodes.

    * feat(localization): describe node designs and bump to format 0.4.0 ---------

  • refactor: migrate node design files from autoware_universe (#1381) Node design files for packages that moved to autoware_core, placed at the in-package convention <package>/design/<Name>.node.yaml. Co-authored-by: Claude Fable 5 <<noreply@anthropic.com>>

  • fix(autoware_pose_initializer): remove unnecessary dependency to fmt (#1377)

  • fix(localization): declare the dependencies these packages use (#1369) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>.

File truncated at 100 lines see the full file

Launch files

  • launch/pose_initializer.launch.xml
      • config_file [default: $(find-pkg-share autoware_pose_initializer)/config/pose_initializer.param.yaml]
      • user_defined_initial_pose/enable [default: false]
      • user_defined_initial_pose/pose [default: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]]
      • ndt_enabled [default: true]
      • gnss_enabled [default: true]
      • ekf_enabled [default: true]
      • yabloc_enabled [default: false]
      • stop_check_enabled [default: true]
      • sub_gnss_pose_cov [default: sub_gnss_pose_cov]
      • gnss_initial_pose_auto_fix_target [default: pointcloud_map]
      • stop_check_twist_topic [default: /sensing/vehicle_velocity_converter/twist_with_covariance]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange

No version for distro eloquent showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_pose_initializer package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_test_manager autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_pose_initializer package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Yamato Ando
  • Takagi, Isamu

autoware_pose_initializer

Purpose

The autoware_pose_initializer is the package to send an initial pose to ekf_localizer. It receives roughly estimated initial pose from GNSS/user. Passing the pose to ndt_scan_matcher, and it gets a calculated ego pose from ndt_scan_matcher via service. Finally, it publishes the initial pose to ekf_localizer. This node depends on the map height fitter library. See here for more details.

Interfaces

Parameters

{{ json_to_markdown(“localization/autoware_pose_initializer/schema/pose_initializer.schema.json”) }}

Services

Name Type Description
/localization/initialize autoware_localization_msgs::srv::InitializeLocalization initial pose from api

Clients

Name Type Description
/localization/pose_estimator/ndt_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped pose estimation service
/localization/pose_estimator/yabloc/initializer/yabloc_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped yabloc pose estimation service

Subscriptions

Name Type Description
/sensing/gnss/pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped pose from gnss
/sensing/vehicle_velocity_converter/twist_with_covariance geometry_msgs::msg::TwistStamped twist for stop check

Publications

Name Type Description
/localization/initialization_state autoware_adapi_v1_msgs::msg::LocalizationInitializationState pose initialization state
/initialpose3d geometry_msgs::msg::PoseWithCovarianceStamped calculated initial ego pose
/diagnostics diagnostic_msgs::msg::DiagnosticArray diagnostics

Diagnostics

pose_initializer_status

If the score of initial pose estimation result is lower than score threshold, ERROR message is output to the /diagnostics topic.

drawing

Connection with Default AD API

This autoware_pose_initializer is used via default AD API. For detailed description of the API description, please refer to the description of autoware_default_adapi.

drawing

Initialize pose via CLI

Using the GNSS estimated position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization

The GNSS estimated position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Using the input position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization "
pose_with_covariance:
  - header:
      frame_id: map
    pose:
      pose:
        position:
          x: 89571.1640625
          y: 42301.1875
          z: -3.1565165519714355
        orientation:
          x: 0.0
          y: 0.0
          z: 0.28072773940524687
          w: 0.9597874433062874
      covariance: [0.25, 0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06853891909122467]
method: 0
"

The input position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Direct initial position set

```bash ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization “ pose_with_covariance:

  • header:

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_pose_initializer

1.10.0 (2026-09-28)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node (#1445)

    • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): use AgnocastOnlyCallbackIsolatedExecutor and drop redundant comments
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): drop the comments that restate the code
    • docs(map_height_fitter, pose_initializer, adapi_adaptors): note what the agnocast_env include provides

    * docs(map_height_fitter, pose_initializer): explain the ENABLE_AGNOCAST test gate ---------

  • fix(autoware_pose_initializer): drop the nested spin from the user defined initial pose (#1423)

    * refactor(autoware_pose_initializer): drop the nested spin from the user defined initial pose [PoseInitializer]{.title-ref} applied [user_defined_initial_pose]{.title-ref} from its constructor, where the executor is not running yet, so [LocalizationTriggerModule::send_request()]{.title-ref} had to spin a throwaway executor over the node to collect the trigger response. The constructor now only validates the parameter and schedules a one-shot timer on [group_srv_]{.title-ref}, so the initialization runs under the node's own executor like every other path. The [need_spin]{.title-ref} flag threaded through [change_node_trigger()]{.title-ref}, [set_user_defined_initial_pose()]{.title-ref} and [send_request()]{.title-ref} goes with it. Adds a fixture for the startup path, which needs the trigger mocks in place before the node is constructed and has to wait for the volatile [pose_reset]{.title-ref} subscription to match before the node starts spinning. It covers the configured pose reaching [pose_reset]{.title-ref}, both localizers being toggled off and back on, the failure path leaving the node uninitialized without letting the exception escape the timer callback, and the two parameter validations.

    * fix(autoware_pose_initializer): claim INITIALIZING before arming the startup timer The UNINITIALIZED published in the constructor otherwise stands until the timer runs, and autoware_automatic_pose_initializer can build an AUTO request from it that lands after the configured pose was applied and replaces it.

    * test(autoware_pose_initializer): assert the startup timer shares the initialize service group Reads the wiring back through for_each_callback_group instead of trying to observe the absence of interleaving at runtime. ---------Co-authored-by: Tran Huu Nhat Huy <<29034232+TranHuuNhatHuy@users.noreply.github.com>>

  • test(autoware_pose_initializer): implement characterization test (#1432)

  • feat(localization): add node designs for the pose/twist estimation nodes (#1409)

    * feat(localization): add node designs for the pose/twist estimation nodes Declare NdtScanMatcher, EkfLocalizer, GyroOdometer, StopFilter and Twist2Accel node designs, with remap_target set to each node's hardcoded topic and service names, and extend PoseInitializer with the map, GNSS, stop-check inputs and the align/trigger/partial-map-load clients that pose_initializer.launch.xml remaps. These let a system designer module compose the localization stack directly from nodes.

    * feat(localization): describe node designs and bump to format 0.4.0 ---------

  • refactor: migrate node design files from autoware_universe (#1381) Node design files for packages that moved to autoware_core, placed at the in-package convention <package>/design/<Name>.node.yaml. Co-authored-by: Claude Fable 5 <<noreply@anthropic.com>>

  • fix(autoware_pose_initializer): remove unnecessary dependency to fmt (#1377)

  • fix(localization): declare the dependencies these packages use (#1369) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>.

File truncated at 100 lines see the full file

Launch files

  • launch/pose_initializer.launch.xml
      • config_file [default: $(find-pkg-share autoware_pose_initializer)/config/pose_initializer.param.yaml]
      • user_defined_initial_pose/enable [default: false]
      • user_defined_initial_pose/pose [default: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]]
      • ndt_enabled [default: true]
      • gnss_enabled [default: true]
      • ekf_enabled [default: true]
      • yabloc_enabled [default: false]
      • stop_check_enabled [default: true]
      • sub_gnss_pose_cov [default: sub_gnss_pose_cov]
      • gnss_initial_pose_auto_fix_target [default: pointcloud_map]
      • stop_check_twist_topic [default: /sensing/vehicle_velocity_converter/twist_with_covariance]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange

No version for distro dashing showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_pose_initializer package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_test_manager autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_pose_initializer package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Yamato Ando
  • Takagi, Isamu

autoware_pose_initializer

Purpose

The autoware_pose_initializer is the package to send an initial pose to ekf_localizer. It receives roughly estimated initial pose from GNSS/user. Passing the pose to ndt_scan_matcher, and it gets a calculated ego pose from ndt_scan_matcher via service. Finally, it publishes the initial pose to ekf_localizer. This node depends on the map height fitter library. See here for more details.

Interfaces

Parameters

{{ json_to_markdown(“localization/autoware_pose_initializer/schema/pose_initializer.schema.json”) }}

Services

Name Type Description
/localization/initialize autoware_localization_msgs::srv::InitializeLocalization initial pose from api

Clients

Name Type Description
/localization/pose_estimator/ndt_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped pose estimation service
/localization/pose_estimator/yabloc/initializer/yabloc_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped yabloc pose estimation service

Subscriptions

Name Type Description
/sensing/gnss/pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped pose from gnss
/sensing/vehicle_velocity_converter/twist_with_covariance geometry_msgs::msg::TwistStamped twist for stop check

Publications

Name Type Description
/localization/initialization_state autoware_adapi_v1_msgs::msg::LocalizationInitializationState pose initialization state
/initialpose3d geometry_msgs::msg::PoseWithCovarianceStamped calculated initial ego pose
/diagnostics diagnostic_msgs::msg::DiagnosticArray diagnostics

Diagnostics

pose_initializer_status

If the score of initial pose estimation result is lower than score threshold, ERROR message is output to the /diagnostics topic.

drawing

Connection with Default AD API

This autoware_pose_initializer is used via default AD API. For detailed description of the API description, please refer to the description of autoware_default_adapi.

drawing

Initialize pose via CLI

Using the GNSS estimated position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization

The GNSS estimated position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Using the input position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization "
pose_with_covariance:
  - header:
      frame_id: map
    pose:
      pose:
        position:
          x: 89571.1640625
          y: 42301.1875
          z: -3.1565165519714355
        orientation:
          x: 0.0
          y: 0.0
          z: 0.28072773940524687
          w: 0.9597874433062874
      covariance: [0.25, 0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06853891909122467]
method: 0
"

The input position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Direct initial position set

```bash ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization “ pose_with_covariance:

  • header:

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_pose_initializer

1.10.0 (2026-09-28)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node (#1445)

    • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): use AgnocastOnlyCallbackIsolatedExecutor and drop redundant comments
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): drop the comments that restate the code
    • docs(map_height_fitter, pose_initializer, adapi_adaptors): note what the agnocast_env include provides

    * docs(map_height_fitter, pose_initializer): explain the ENABLE_AGNOCAST test gate ---------

  • fix(autoware_pose_initializer): drop the nested spin from the user defined initial pose (#1423)

    * refactor(autoware_pose_initializer): drop the nested spin from the user defined initial pose [PoseInitializer]{.title-ref} applied [user_defined_initial_pose]{.title-ref} from its constructor, where the executor is not running yet, so [LocalizationTriggerModule::send_request()]{.title-ref} had to spin a throwaway executor over the node to collect the trigger response. The constructor now only validates the parameter and schedules a one-shot timer on [group_srv_]{.title-ref}, so the initialization runs under the node's own executor like every other path. The [need_spin]{.title-ref} flag threaded through [change_node_trigger()]{.title-ref}, [set_user_defined_initial_pose()]{.title-ref} and [send_request()]{.title-ref} goes with it. Adds a fixture for the startup path, which needs the trigger mocks in place before the node is constructed and has to wait for the volatile [pose_reset]{.title-ref} subscription to match before the node starts spinning. It covers the configured pose reaching [pose_reset]{.title-ref}, both localizers being toggled off and back on, the failure path leaving the node uninitialized without letting the exception escape the timer callback, and the two parameter validations.

    * fix(autoware_pose_initializer): claim INITIALIZING before arming the startup timer The UNINITIALIZED published in the constructor otherwise stands until the timer runs, and autoware_automatic_pose_initializer can build an AUTO request from it that lands after the configured pose was applied and replaces it.

    * test(autoware_pose_initializer): assert the startup timer shares the initialize service group Reads the wiring back through for_each_callback_group instead of trying to observe the absence of interleaving at runtime. ---------Co-authored-by: Tran Huu Nhat Huy <<29034232+TranHuuNhatHuy@users.noreply.github.com>>

  • test(autoware_pose_initializer): implement characterization test (#1432)

  • feat(localization): add node designs for the pose/twist estimation nodes (#1409)

    * feat(localization): add node designs for the pose/twist estimation nodes Declare NdtScanMatcher, EkfLocalizer, GyroOdometer, StopFilter and Twist2Accel node designs, with remap_target set to each node's hardcoded topic and service names, and extend PoseInitializer with the map, GNSS, stop-check inputs and the align/trigger/partial-map-load clients that pose_initializer.launch.xml remaps. These let a system designer module compose the localization stack directly from nodes.

    * feat(localization): describe node designs and bump to format 0.4.0 ---------

  • refactor: migrate node design files from autoware_universe (#1381) Node design files for packages that moved to autoware_core, placed at the in-package convention <package>/design/<Name>.node.yaml. Co-authored-by: Claude Fable 5 <<noreply@anthropic.com>>

  • fix(autoware_pose_initializer): remove unnecessary dependency to fmt (#1377)

  • fix(localization): declare the dependencies these packages use (#1369) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>.

File truncated at 100 lines see the full file

Launch files

  • launch/pose_initializer.launch.xml
      • config_file [default: $(find-pkg-share autoware_pose_initializer)/config/pose_initializer.param.yaml]
      • user_defined_initial_pose/enable [default: false]
      • user_defined_initial_pose/pose [default: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]]
      • ndt_enabled [default: true]
      • gnss_enabled [default: true]
      • ekf_enabled [default: true]
      • yabloc_enabled [default: false]
      • stop_check_enabled [default: true]
      • sub_gnss_pose_cov [default: sub_gnss_pose_cov]
      • gnss_initial_pose_auto_fix_target [default: pointcloud_map]
      • stop_check_twist_topic [default: /sensing/vehicle_velocity_converter/twist_with_covariance]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange

No version for distro galactic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_pose_initializer package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_test_manager autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_pose_initializer package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Yamato Ando
  • Takagi, Isamu

autoware_pose_initializer

Purpose

The autoware_pose_initializer is the package to send an initial pose to ekf_localizer. It receives roughly estimated initial pose from GNSS/user. Passing the pose to ndt_scan_matcher, and it gets a calculated ego pose from ndt_scan_matcher via service. Finally, it publishes the initial pose to ekf_localizer. This node depends on the map height fitter library. See here for more details.

Interfaces

Parameters

{{ json_to_markdown(“localization/autoware_pose_initializer/schema/pose_initializer.schema.json”) }}

Services

Name Type Description
/localization/initialize autoware_localization_msgs::srv::InitializeLocalization initial pose from api

Clients

Name Type Description
/localization/pose_estimator/ndt_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped pose estimation service
/localization/pose_estimator/yabloc/initializer/yabloc_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped yabloc pose estimation service

Subscriptions

Name Type Description
/sensing/gnss/pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped pose from gnss
/sensing/vehicle_velocity_converter/twist_with_covariance geometry_msgs::msg::TwistStamped twist for stop check

Publications

Name Type Description
/localization/initialization_state autoware_adapi_v1_msgs::msg::LocalizationInitializationState pose initialization state
/initialpose3d geometry_msgs::msg::PoseWithCovarianceStamped calculated initial ego pose
/diagnostics diagnostic_msgs::msg::DiagnosticArray diagnostics

Diagnostics

pose_initializer_status

If the score of initial pose estimation result is lower than score threshold, ERROR message is output to the /diagnostics topic.

drawing

Connection with Default AD API

This autoware_pose_initializer is used via default AD API. For detailed description of the API description, please refer to the description of autoware_default_adapi.

drawing

Initialize pose via CLI

Using the GNSS estimated position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization

The GNSS estimated position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Using the input position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization "
pose_with_covariance:
  - header:
      frame_id: map
    pose:
      pose:
        position:
          x: 89571.1640625
          y: 42301.1875
          z: -3.1565165519714355
        orientation:
          x: 0.0
          y: 0.0
          z: 0.28072773940524687
          w: 0.9597874433062874
      covariance: [0.25, 0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06853891909122467]
method: 0
"

The input position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Direct initial position set

```bash ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization “ pose_with_covariance:

  • header:

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_pose_initializer

1.10.0 (2026-09-28)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node (#1445)

    • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): use AgnocastOnlyCallbackIsolatedExecutor and drop redundant comments
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): drop the comments that restate the code
    • docs(map_height_fitter, pose_initializer, adapi_adaptors): note what the agnocast_env include provides

    * docs(map_height_fitter, pose_initializer): explain the ENABLE_AGNOCAST test gate ---------

  • fix(autoware_pose_initializer): drop the nested spin from the user defined initial pose (#1423)

    * refactor(autoware_pose_initializer): drop the nested spin from the user defined initial pose [PoseInitializer]{.title-ref} applied [user_defined_initial_pose]{.title-ref} from its constructor, where the executor is not running yet, so [LocalizationTriggerModule::send_request()]{.title-ref} had to spin a throwaway executor over the node to collect the trigger response. The constructor now only validates the parameter and schedules a one-shot timer on [group_srv_]{.title-ref}, so the initialization runs under the node's own executor like every other path. The [need_spin]{.title-ref} flag threaded through [change_node_trigger()]{.title-ref}, [set_user_defined_initial_pose()]{.title-ref} and [send_request()]{.title-ref} goes with it. Adds a fixture for the startup path, which needs the trigger mocks in place before the node is constructed and has to wait for the volatile [pose_reset]{.title-ref} subscription to match before the node starts spinning. It covers the configured pose reaching [pose_reset]{.title-ref}, both localizers being toggled off and back on, the failure path leaving the node uninitialized without letting the exception escape the timer callback, and the two parameter validations.

    * fix(autoware_pose_initializer): claim INITIALIZING before arming the startup timer The UNINITIALIZED published in the constructor otherwise stands until the timer runs, and autoware_automatic_pose_initializer can build an AUTO request from it that lands after the configured pose was applied and replaces it.

    * test(autoware_pose_initializer): assert the startup timer shares the initialize service group Reads the wiring back through for_each_callback_group instead of trying to observe the absence of interleaving at runtime. ---------Co-authored-by: Tran Huu Nhat Huy <<29034232+TranHuuNhatHuy@users.noreply.github.com>>

  • test(autoware_pose_initializer): implement characterization test (#1432)

  • feat(localization): add node designs for the pose/twist estimation nodes (#1409)

    * feat(localization): add node designs for the pose/twist estimation nodes Declare NdtScanMatcher, EkfLocalizer, GyroOdometer, StopFilter and Twist2Accel node designs, with remap_target set to each node's hardcoded topic and service names, and extend PoseInitializer with the map, GNSS, stop-check inputs and the align/trigger/partial-map-load clients that pose_initializer.launch.xml remaps. These let a system designer module compose the localization stack directly from nodes.

    * feat(localization): describe node designs and bump to format 0.4.0 ---------

  • refactor: migrate node design files from autoware_universe (#1381) Node design files for packages that moved to autoware_core, placed at the in-package convention <package>/design/<Name>.node.yaml. Co-authored-by: Claude Fable 5 <<noreply@anthropic.com>>

  • fix(autoware_pose_initializer): remove unnecessary dependency to fmt (#1377)

  • fix(localization): declare the dependencies these packages use (#1369) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>.

File truncated at 100 lines see the full file

Launch files

  • launch/pose_initializer.launch.xml
      • config_file [default: $(find-pkg-share autoware_pose_initializer)/config/pose_initializer.param.yaml]
      • user_defined_initial_pose/enable [default: false]
      • user_defined_initial_pose/pose [default: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]]
      • ndt_enabled [default: true]
      • gnss_enabled [default: true]
      • ekf_enabled [default: true]
      • yabloc_enabled [default: false]
      • stop_check_enabled [default: true]
      • sub_gnss_pose_cov [default: sub_gnss_pose_cov]
      • gnss_initial_pose_auto_fix_target [default: pointcloud_map]
      • stop_check_twist_topic [default: /sensing/vehicle_velocity_converter/twist_with_covariance]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange

No version for distro foxy showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_pose_initializer package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_test_manager autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_pose_initializer package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Yamato Ando
  • Takagi, Isamu

autoware_pose_initializer

Purpose

The autoware_pose_initializer is the package to send an initial pose to ekf_localizer. It receives roughly estimated initial pose from GNSS/user. Passing the pose to ndt_scan_matcher, and it gets a calculated ego pose from ndt_scan_matcher via service. Finally, it publishes the initial pose to ekf_localizer. This node depends on the map height fitter library. See here for more details.

Interfaces

Parameters

{{ json_to_markdown(“localization/autoware_pose_initializer/schema/pose_initializer.schema.json”) }}

Services

Name Type Description
/localization/initialize autoware_localization_msgs::srv::InitializeLocalization initial pose from api

Clients

Name Type Description
/localization/pose_estimator/ndt_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped pose estimation service
/localization/pose_estimator/yabloc/initializer/yabloc_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped yabloc pose estimation service

Subscriptions

Name Type Description
/sensing/gnss/pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped pose from gnss
/sensing/vehicle_velocity_converter/twist_with_covariance geometry_msgs::msg::TwistStamped twist for stop check

Publications

Name Type Description
/localization/initialization_state autoware_adapi_v1_msgs::msg::LocalizationInitializationState pose initialization state
/initialpose3d geometry_msgs::msg::PoseWithCovarianceStamped calculated initial ego pose
/diagnostics diagnostic_msgs::msg::DiagnosticArray diagnostics

Diagnostics

pose_initializer_status

If the score of initial pose estimation result is lower than score threshold, ERROR message is output to the /diagnostics topic.

drawing

Connection with Default AD API

This autoware_pose_initializer is used via default AD API. For detailed description of the API description, please refer to the description of autoware_default_adapi.

drawing

Initialize pose via CLI

Using the GNSS estimated position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization

The GNSS estimated position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Using the input position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization "
pose_with_covariance:
  - header:
      frame_id: map
    pose:
      pose:
        position:
          x: 89571.1640625
          y: 42301.1875
          z: -3.1565165519714355
        orientation:
          x: 0.0
          y: 0.0
          z: 0.28072773940524687
          w: 0.9597874433062874
      covariance: [0.25, 0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06853891909122467]
method: 0
"

The input position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Direct initial position set

```bash ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization “ pose_with_covariance:

  • header:

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_pose_initializer

1.10.0 (2026-09-28)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node (#1445)

    • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): use AgnocastOnlyCallbackIsolatedExecutor and drop redundant comments
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): drop the comments that restate the code
    • docs(map_height_fitter, pose_initializer, adapi_adaptors): note what the agnocast_env include provides

    * docs(map_height_fitter, pose_initializer): explain the ENABLE_AGNOCAST test gate ---------

  • fix(autoware_pose_initializer): drop the nested spin from the user defined initial pose (#1423)

    * refactor(autoware_pose_initializer): drop the nested spin from the user defined initial pose [PoseInitializer]{.title-ref} applied [user_defined_initial_pose]{.title-ref} from its constructor, where the executor is not running yet, so [LocalizationTriggerModule::send_request()]{.title-ref} had to spin a throwaway executor over the node to collect the trigger response. The constructor now only validates the parameter and schedules a one-shot timer on [group_srv_]{.title-ref}, so the initialization runs under the node's own executor like every other path. The [need_spin]{.title-ref} flag threaded through [change_node_trigger()]{.title-ref}, [set_user_defined_initial_pose()]{.title-ref} and [send_request()]{.title-ref} goes with it. Adds a fixture for the startup path, which needs the trigger mocks in place before the node is constructed and has to wait for the volatile [pose_reset]{.title-ref} subscription to match before the node starts spinning. It covers the configured pose reaching [pose_reset]{.title-ref}, both localizers being toggled off and back on, the failure path leaving the node uninitialized without letting the exception escape the timer callback, and the two parameter validations.

    * fix(autoware_pose_initializer): claim INITIALIZING before arming the startup timer The UNINITIALIZED published in the constructor otherwise stands until the timer runs, and autoware_automatic_pose_initializer can build an AUTO request from it that lands after the configured pose was applied and replaces it.

    * test(autoware_pose_initializer): assert the startup timer shares the initialize service group Reads the wiring back through for_each_callback_group instead of trying to observe the absence of interleaving at runtime. ---------Co-authored-by: Tran Huu Nhat Huy <<29034232+TranHuuNhatHuy@users.noreply.github.com>>

  • test(autoware_pose_initializer): implement characterization test (#1432)

  • feat(localization): add node designs for the pose/twist estimation nodes (#1409)

    * feat(localization): add node designs for the pose/twist estimation nodes Declare NdtScanMatcher, EkfLocalizer, GyroOdometer, StopFilter and Twist2Accel node designs, with remap_target set to each node's hardcoded topic and service names, and extend PoseInitializer with the map, GNSS, stop-check inputs and the align/trigger/partial-map-load clients that pose_initializer.launch.xml remaps. These let a system designer module compose the localization stack directly from nodes.

    * feat(localization): describe node designs and bump to format 0.4.0 ---------

  • refactor: migrate node design files from autoware_universe (#1381) Node design files for packages that moved to autoware_core, placed at the in-package convention <package>/design/<Name>.node.yaml. Co-authored-by: Claude Fable 5 <<noreply@anthropic.com>>

  • fix(autoware_pose_initializer): remove unnecessary dependency to fmt (#1377)

  • fix(localization): declare the dependencies these packages use (#1369) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>.

File truncated at 100 lines see the full file

Launch files

  • launch/pose_initializer.launch.xml
      • config_file [default: $(find-pkg-share autoware_pose_initializer)/config/pose_initializer.param.yaml]
      • user_defined_initial_pose/enable [default: false]
      • user_defined_initial_pose/pose [default: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]]
      • ndt_enabled [default: true]
      • gnss_enabled [default: true]
      • ekf_enabled [default: true]
      • yabloc_enabled [default: false]
      • stop_check_enabled [default: true]
      • sub_gnss_pose_cov [default: sub_gnss_pose_cov]
      • gnss_initial_pose_auto_fix_target [default: pointcloud_map]
      • stop_check_twist_topic [default: /sensing/vehicle_velocity_converter/twist_with_covariance]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange

No version for distro iron showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_pose_initializer package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_test_manager autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_pose_initializer package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Yamato Ando
  • Takagi, Isamu

autoware_pose_initializer

Purpose

The autoware_pose_initializer is the package to send an initial pose to ekf_localizer. It receives roughly estimated initial pose from GNSS/user. Passing the pose to ndt_scan_matcher, and it gets a calculated ego pose from ndt_scan_matcher via service. Finally, it publishes the initial pose to ekf_localizer. This node depends on the map height fitter library. See here for more details.

Interfaces

Parameters

{{ json_to_markdown(“localization/autoware_pose_initializer/schema/pose_initializer.schema.json”) }}

Services

Name Type Description
/localization/initialize autoware_localization_msgs::srv::InitializeLocalization initial pose from api

Clients

Name Type Description
/localization/pose_estimator/ndt_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped pose estimation service
/localization/pose_estimator/yabloc/initializer/yabloc_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped yabloc pose estimation service

Subscriptions

Name Type Description
/sensing/gnss/pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped pose from gnss
/sensing/vehicle_velocity_converter/twist_with_covariance geometry_msgs::msg::TwistStamped twist for stop check

Publications

Name Type Description
/localization/initialization_state autoware_adapi_v1_msgs::msg::LocalizationInitializationState pose initialization state
/initialpose3d geometry_msgs::msg::PoseWithCovarianceStamped calculated initial ego pose
/diagnostics diagnostic_msgs::msg::DiagnosticArray diagnostics

Diagnostics

pose_initializer_status

If the score of initial pose estimation result is lower than score threshold, ERROR message is output to the /diagnostics topic.

drawing

Connection with Default AD API

This autoware_pose_initializer is used via default AD API. For detailed description of the API description, please refer to the description of autoware_default_adapi.

drawing

Initialize pose via CLI

Using the GNSS estimated position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization

The GNSS estimated position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Using the input position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization "
pose_with_covariance:
  - header:
      frame_id: map
    pose:
      pose:
        position:
          x: 89571.1640625
          y: 42301.1875
          z: -3.1565165519714355
        orientation:
          x: 0.0
          y: 0.0
          z: 0.28072773940524687
          w: 0.9597874433062874
      covariance: [0.25, 0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06853891909122467]
method: 0
"

The input position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Direct initial position set

```bash ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization “ pose_with_covariance:

  • header:

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_pose_initializer

1.10.0 (2026-09-28)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node (#1445)

    • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): use AgnocastOnlyCallbackIsolatedExecutor and drop redundant comments
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): drop the comments that restate the code
    • docs(map_height_fitter, pose_initializer, adapi_adaptors): note what the agnocast_env include provides

    * docs(map_height_fitter, pose_initializer): explain the ENABLE_AGNOCAST test gate ---------

  • fix(autoware_pose_initializer): drop the nested spin from the user defined initial pose (#1423)

    * refactor(autoware_pose_initializer): drop the nested spin from the user defined initial pose [PoseInitializer]{.title-ref} applied [user_defined_initial_pose]{.title-ref} from its constructor, where the executor is not running yet, so [LocalizationTriggerModule::send_request()]{.title-ref} had to spin a throwaway executor over the node to collect the trigger response. The constructor now only validates the parameter and schedules a one-shot timer on [group_srv_]{.title-ref}, so the initialization runs under the node's own executor like every other path. The [need_spin]{.title-ref} flag threaded through [change_node_trigger()]{.title-ref}, [set_user_defined_initial_pose()]{.title-ref} and [send_request()]{.title-ref} goes with it. Adds a fixture for the startup path, which needs the trigger mocks in place before the node is constructed and has to wait for the volatile [pose_reset]{.title-ref} subscription to match before the node starts spinning. It covers the configured pose reaching [pose_reset]{.title-ref}, both localizers being toggled off and back on, the failure path leaving the node uninitialized without letting the exception escape the timer callback, and the two parameter validations.

    * fix(autoware_pose_initializer): claim INITIALIZING before arming the startup timer The UNINITIALIZED published in the constructor otherwise stands until the timer runs, and autoware_automatic_pose_initializer can build an AUTO request from it that lands after the configured pose was applied and replaces it.

    * test(autoware_pose_initializer): assert the startup timer shares the initialize service group Reads the wiring back through for_each_callback_group instead of trying to observe the absence of interleaving at runtime. ---------Co-authored-by: Tran Huu Nhat Huy <<29034232+TranHuuNhatHuy@users.noreply.github.com>>

  • test(autoware_pose_initializer): implement characterization test (#1432)

  • feat(localization): add node designs for the pose/twist estimation nodes (#1409)

    * feat(localization): add node designs for the pose/twist estimation nodes Declare NdtScanMatcher, EkfLocalizer, GyroOdometer, StopFilter and Twist2Accel node designs, with remap_target set to each node's hardcoded topic and service names, and extend PoseInitializer with the map, GNSS, stop-check inputs and the align/trigger/partial-map-load clients that pose_initializer.launch.xml remaps. These let a system designer module compose the localization stack directly from nodes.

    * feat(localization): describe node designs and bump to format 0.4.0 ---------

  • refactor: migrate node design files from autoware_universe (#1381) Node design files for packages that moved to autoware_core, placed at the in-package convention <package>/design/<Name>.node.yaml. Co-authored-by: Claude Fable 5 <<noreply@anthropic.com>>

  • fix(autoware_pose_initializer): remove unnecessary dependency to fmt (#1377)

  • fix(localization): declare the dependencies these packages use (#1369) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>.

File truncated at 100 lines see the full file

Launch files

  • launch/pose_initializer.launch.xml
      • config_file [default: $(find-pkg-share autoware_pose_initializer)/config/pose_initializer.param.yaml]
      • user_defined_initial_pose/enable [default: false]
      • user_defined_initial_pose/pose [default: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]]
      • ndt_enabled [default: true]
      • gnss_enabled [default: true]
      • ekf_enabled [default: true]
      • yabloc_enabled [default: false]
      • stop_check_enabled [default: true]
      • sub_gnss_pose_cov [default: sub_gnss_pose_cov]
      • gnss_initial_pose_auto_fix_target [default: pointcloud_map]
      • stop_check_twist_topic [default: /sensing/vehicle_velocity_converter/twist_with_covariance]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange

No version for distro lunar showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_pose_initializer package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_test_manager autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_pose_initializer package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Yamato Ando
  • Takagi, Isamu

autoware_pose_initializer

Purpose

The autoware_pose_initializer is the package to send an initial pose to ekf_localizer. It receives roughly estimated initial pose from GNSS/user. Passing the pose to ndt_scan_matcher, and it gets a calculated ego pose from ndt_scan_matcher via service. Finally, it publishes the initial pose to ekf_localizer. This node depends on the map height fitter library. See here for more details.

Interfaces

Parameters

{{ json_to_markdown(“localization/autoware_pose_initializer/schema/pose_initializer.schema.json”) }}

Services

Name Type Description
/localization/initialize autoware_localization_msgs::srv::InitializeLocalization initial pose from api

Clients

Name Type Description
/localization/pose_estimator/ndt_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped pose estimation service
/localization/pose_estimator/yabloc/initializer/yabloc_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped yabloc pose estimation service

Subscriptions

Name Type Description
/sensing/gnss/pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped pose from gnss
/sensing/vehicle_velocity_converter/twist_with_covariance geometry_msgs::msg::TwistStamped twist for stop check

Publications

Name Type Description
/localization/initialization_state autoware_adapi_v1_msgs::msg::LocalizationInitializationState pose initialization state
/initialpose3d geometry_msgs::msg::PoseWithCovarianceStamped calculated initial ego pose
/diagnostics diagnostic_msgs::msg::DiagnosticArray diagnostics

Diagnostics

pose_initializer_status

If the score of initial pose estimation result is lower than score threshold, ERROR message is output to the /diagnostics topic.

drawing

Connection with Default AD API

This autoware_pose_initializer is used via default AD API. For detailed description of the API description, please refer to the description of autoware_default_adapi.

drawing

Initialize pose via CLI

Using the GNSS estimated position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization

The GNSS estimated position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Using the input position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization "
pose_with_covariance:
  - header:
      frame_id: map
    pose:
      pose:
        position:
          x: 89571.1640625
          y: 42301.1875
          z: -3.1565165519714355
        orientation:
          x: 0.0
          y: 0.0
          z: 0.28072773940524687
          w: 0.9597874433062874
      covariance: [0.25, 0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06853891909122467]
method: 0
"

The input position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Direct initial position set

```bash ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization “ pose_with_covariance:

  • header:

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_pose_initializer

1.10.0 (2026-09-28)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node (#1445)

    • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): use AgnocastOnlyCallbackIsolatedExecutor and drop redundant comments
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): drop the comments that restate the code
    • docs(map_height_fitter, pose_initializer, adapi_adaptors): note what the agnocast_env include provides

    * docs(map_height_fitter, pose_initializer): explain the ENABLE_AGNOCAST test gate ---------

  • fix(autoware_pose_initializer): drop the nested spin from the user defined initial pose (#1423)

    * refactor(autoware_pose_initializer): drop the nested spin from the user defined initial pose [PoseInitializer]{.title-ref} applied [user_defined_initial_pose]{.title-ref} from its constructor, where the executor is not running yet, so [LocalizationTriggerModule::send_request()]{.title-ref} had to spin a throwaway executor over the node to collect the trigger response. The constructor now only validates the parameter and schedules a one-shot timer on [group_srv_]{.title-ref}, so the initialization runs under the node's own executor like every other path. The [need_spin]{.title-ref} flag threaded through [change_node_trigger()]{.title-ref}, [set_user_defined_initial_pose()]{.title-ref} and [send_request()]{.title-ref} goes with it. Adds a fixture for the startup path, which needs the trigger mocks in place before the node is constructed and has to wait for the volatile [pose_reset]{.title-ref} subscription to match before the node starts spinning. It covers the configured pose reaching [pose_reset]{.title-ref}, both localizers being toggled off and back on, the failure path leaving the node uninitialized without letting the exception escape the timer callback, and the two parameter validations.

    * fix(autoware_pose_initializer): claim INITIALIZING before arming the startup timer The UNINITIALIZED published in the constructor otherwise stands until the timer runs, and autoware_automatic_pose_initializer can build an AUTO request from it that lands after the configured pose was applied and replaces it.

    * test(autoware_pose_initializer): assert the startup timer shares the initialize service group Reads the wiring back through for_each_callback_group instead of trying to observe the absence of interleaving at runtime. ---------Co-authored-by: Tran Huu Nhat Huy <<29034232+TranHuuNhatHuy@users.noreply.github.com>>

  • test(autoware_pose_initializer): implement characterization test (#1432)

  • feat(localization): add node designs for the pose/twist estimation nodes (#1409)

    * feat(localization): add node designs for the pose/twist estimation nodes Declare NdtScanMatcher, EkfLocalizer, GyroOdometer, StopFilter and Twist2Accel node designs, with remap_target set to each node's hardcoded topic and service names, and extend PoseInitializer with the map, GNSS, stop-check inputs and the align/trigger/partial-map-load clients that pose_initializer.launch.xml remaps. These let a system designer module compose the localization stack directly from nodes.

    * feat(localization): describe node designs and bump to format 0.4.0 ---------

  • refactor: migrate node design files from autoware_universe (#1381) Node design files for packages that moved to autoware_core, placed at the in-package convention <package>/design/<Name>.node.yaml. Co-authored-by: Claude Fable 5 <<noreply@anthropic.com>>

  • fix(autoware_pose_initializer): remove unnecessary dependency to fmt (#1377)

  • fix(localization): declare the dependencies these packages use (#1369) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>.

File truncated at 100 lines see the full file

Launch files

  • launch/pose_initializer.launch.xml
      • config_file [default: $(find-pkg-share autoware_pose_initializer)/config/pose_initializer.param.yaml]
      • user_defined_initial_pose/enable [default: false]
      • user_defined_initial_pose/pose [default: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]]
      • ndt_enabled [default: true]
      • gnss_enabled [default: true]
      • ekf_enabled [default: true]
      • yabloc_enabled [default: false]
      • stop_check_enabled [default: true]
      • sub_gnss_pose_cov [default: sub_gnss_pose_cov]
      • gnss_initial_pose_auto_fix_target [default: pointcloud_map]
      • stop_check_twist_topic [default: /sensing/vehicle_velocity_converter/twist_with_covariance]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange

No version for distro jade showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_pose_initializer package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_test_manager autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_pose_initializer package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Yamato Ando
  • Takagi, Isamu

autoware_pose_initializer

Purpose

The autoware_pose_initializer is the package to send an initial pose to ekf_localizer. It receives roughly estimated initial pose from GNSS/user. Passing the pose to ndt_scan_matcher, and it gets a calculated ego pose from ndt_scan_matcher via service. Finally, it publishes the initial pose to ekf_localizer. This node depends on the map height fitter library. See here for more details.

Interfaces

Parameters

{{ json_to_markdown(“localization/autoware_pose_initializer/schema/pose_initializer.schema.json”) }}

Services

Name Type Description
/localization/initialize autoware_localization_msgs::srv::InitializeLocalization initial pose from api

Clients

Name Type Description
/localization/pose_estimator/ndt_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped pose estimation service
/localization/pose_estimator/yabloc/initializer/yabloc_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped yabloc pose estimation service

Subscriptions

Name Type Description
/sensing/gnss/pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped pose from gnss
/sensing/vehicle_velocity_converter/twist_with_covariance geometry_msgs::msg::TwistStamped twist for stop check

Publications

Name Type Description
/localization/initialization_state autoware_adapi_v1_msgs::msg::LocalizationInitializationState pose initialization state
/initialpose3d geometry_msgs::msg::PoseWithCovarianceStamped calculated initial ego pose
/diagnostics diagnostic_msgs::msg::DiagnosticArray diagnostics

Diagnostics

pose_initializer_status

If the score of initial pose estimation result is lower than score threshold, ERROR message is output to the /diagnostics topic.

drawing

Connection with Default AD API

This autoware_pose_initializer is used via default AD API. For detailed description of the API description, please refer to the description of autoware_default_adapi.

drawing

Initialize pose via CLI

Using the GNSS estimated position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization

The GNSS estimated position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Using the input position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization "
pose_with_covariance:
  - header:
      frame_id: map
    pose:
      pose:
        position:
          x: 89571.1640625
          y: 42301.1875
          z: -3.1565165519714355
        orientation:
          x: 0.0
          y: 0.0
          z: 0.28072773940524687
          w: 0.9597874433062874
      covariance: [0.25, 0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06853891909122467]
method: 0
"

The input position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Direct initial position set

```bash ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization “ pose_with_covariance:

  • header:

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_pose_initializer

1.10.0 (2026-09-28)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node (#1445)

    • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): use AgnocastOnlyCallbackIsolatedExecutor and drop redundant comments
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): drop the comments that restate the code
    • docs(map_height_fitter, pose_initializer, adapi_adaptors): note what the agnocast_env include provides

    * docs(map_height_fitter, pose_initializer): explain the ENABLE_AGNOCAST test gate ---------

  • fix(autoware_pose_initializer): drop the nested spin from the user defined initial pose (#1423)

    * refactor(autoware_pose_initializer): drop the nested spin from the user defined initial pose [PoseInitializer]{.title-ref} applied [user_defined_initial_pose]{.title-ref} from its constructor, where the executor is not running yet, so [LocalizationTriggerModule::send_request()]{.title-ref} had to spin a throwaway executor over the node to collect the trigger response. The constructor now only validates the parameter and schedules a one-shot timer on [group_srv_]{.title-ref}, so the initialization runs under the node's own executor like every other path. The [need_spin]{.title-ref} flag threaded through [change_node_trigger()]{.title-ref}, [set_user_defined_initial_pose()]{.title-ref} and [send_request()]{.title-ref} goes with it. Adds a fixture for the startup path, which needs the trigger mocks in place before the node is constructed and has to wait for the volatile [pose_reset]{.title-ref} subscription to match before the node starts spinning. It covers the configured pose reaching [pose_reset]{.title-ref}, both localizers being toggled off and back on, the failure path leaving the node uninitialized without letting the exception escape the timer callback, and the two parameter validations.

    * fix(autoware_pose_initializer): claim INITIALIZING before arming the startup timer The UNINITIALIZED published in the constructor otherwise stands until the timer runs, and autoware_automatic_pose_initializer can build an AUTO request from it that lands after the configured pose was applied and replaces it.

    * test(autoware_pose_initializer): assert the startup timer shares the initialize service group Reads the wiring back through for_each_callback_group instead of trying to observe the absence of interleaving at runtime. ---------Co-authored-by: Tran Huu Nhat Huy <<29034232+TranHuuNhatHuy@users.noreply.github.com>>

  • test(autoware_pose_initializer): implement characterization test (#1432)

  • feat(localization): add node designs for the pose/twist estimation nodes (#1409)

    * feat(localization): add node designs for the pose/twist estimation nodes Declare NdtScanMatcher, EkfLocalizer, GyroOdometer, StopFilter and Twist2Accel node designs, with remap_target set to each node's hardcoded topic and service names, and extend PoseInitializer with the map, GNSS, stop-check inputs and the align/trigger/partial-map-load clients that pose_initializer.launch.xml remaps. These let a system designer module compose the localization stack directly from nodes.

    * feat(localization): describe node designs and bump to format 0.4.0 ---------

  • refactor: migrate node design files from autoware_universe (#1381) Node design files for packages that moved to autoware_core, placed at the in-package convention <package>/design/<Name>.node.yaml. Co-authored-by: Claude Fable 5 <<noreply@anthropic.com>>

  • fix(autoware_pose_initializer): remove unnecessary dependency to fmt (#1377)

  • fix(localization): declare the dependencies these packages use (#1369) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>.

File truncated at 100 lines see the full file

Launch files

  • launch/pose_initializer.launch.xml
      • config_file [default: $(find-pkg-share autoware_pose_initializer)/config/pose_initializer.param.yaml]
      • user_defined_initial_pose/enable [default: false]
      • user_defined_initial_pose/pose [default: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]]
      • ndt_enabled [default: true]
      • gnss_enabled [default: true]
      • ekf_enabled [default: true]
      • yabloc_enabled [default: false]
      • stop_check_enabled [default: true]
      • sub_gnss_pose_cov [default: sub_gnss_pose_cov]
      • gnss_initial_pose_auto_fix_target [default: pointcloud_map]
      • stop_check_twist_topic [default: /sensing/vehicle_velocity_converter/twist_with_covariance]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange

No version for distro indigo showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_pose_initializer package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_test_manager autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_pose_initializer package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Yamato Ando
  • Takagi, Isamu

autoware_pose_initializer

Purpose

The autoware_pose_initializer is the package to send an initial pose to ekf_localizer. It receives roughly estimated initial pose from GNSS/user. Passing the pose to ndt_scan_matcher, and it gets a calculated ego pose from ndt_scan_matcher via service. Finally, it publishes the initial pose to ekf_localizer. This node depends on the map height fitter library. See here for more details.

Interfaces

Parameters

{{ json_to_markdown(“localization/autoware_pose_initializer/schema/pose_initializer.schema.json”) }}

Services

Name Type Description
/localization/initialize autoware_localization_msgs::srv::InitializeLocalization initial pose from api

Clients

Name Type Description
/localization/pose_estimator/ndt_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped pose estimation service
/localization/pose_estimator/yabloc/initializer/yabloc_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped yabloc pose estimation service

Subscriptions

Name Type Description
/sensing/gnss/pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped pose from gnss
/sensing/vehicle_velocity_converter/twist_with_covariance geometry_msgs::msg::TwistStamped twist for stop check

Publications

Name Type Description
/localization/initialization_state autoware_adapi_v1_msgs::msg::LocalizationInitializationState pose initialization state
/initialpose3d geometry_msgs::msg::PoseWithCovarianceStamped calculated initial ego pose
/diagnostics diagnostic_msgs::msg::DiagnosticArray diagnostics

Diagnostics

pose_initializer_status

If the score of initial pose estimation result is lower than score threshold, ERROR message is output to the /diagnostics topic.

drawing

Connection with Default AD API

This autoware_pose_initializer is used via default AD API. For detailed description of the API description, please refer to the description of autoware_default_adapi.

drawing

Initialize pose via CLI

Using the GNSS estimated position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization

The GNSS estimated position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Using the input position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization "
pose_with_covariance:
  - header:
      frame_id: map
    pose:
      pose:
        position:
          x: 89571.1640625
          y: 42301.1875
          z: -3.1565165519714355
        orientation:
          x: 0.0
          y: 0.0
          z: 0.28072773940524687
          w: 0.9597874433062874
      covariance: [0.25, 0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06853891909122467]
method: 0
"

The input position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Direct initial position set

```bash ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization “ pose_with_covariance:

  • header:

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_pose_initializer

1.10.0 (2026-09-28)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node (#1445)

    • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): use AgnocastOnlyCallbackIsolatedExecutor and drop redundant comments
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): drop the comments that restate the code
    • docs(map_height_fitter, pose_initializer, adapi_adaptors): note what the agnocast_env include provides

    * docs(map_height_fitter, pose_initializer): explain the ENABLE_AGNOCAST test gate ---------

  • fix(autoware_pose_initializer): drop the nested spin from the user defined initial pose (#1423)

    * refactor(autoware_pose_initializer): drop the nested spin from the user defined initial pose [PoseInitializer]{.title-ref} applied [user_defined_initial_pose]{.title-ref} from its constructor, where the executor is not running yet, so [LocalizationTriggerModule::send_request()]{.title-ref} had to spin a throwaway executor over the node to collect the trigger response. The constructor now only validates the parameter and schedules a one-shot timer on [group_srv_]{.title-ref}, so the initialization runs under the node's own executor like every other path. The [need_spin]{.title-ref} flag threaded through [change_node_trigger()]{.title-ref}, [set_user_defined_initial_pose()]{.title-ref} and [send_request()]{.title-ref} goes with it. Adds a fixture for the startup path, which needs the trigger mocks in place before the node is constructed and has to wait for the volatile [pose_reset]{.title-ref} subscription to match before the node starts spinning. It covers the configured pose reaching [pose_reset]{.title-ref}, both localizers being toggled off and back on, the failure path leaving the node uninitialized without letting the exception escape the timer callback, and the two parameter validations.

    * fix(autoware_pose_initializer): claim INITIALIZING before arming the startup timer The UNINITIALIZED published in the constructor otherwise stands until the timer runs, and autoware_automatic_pose_initializer can build an AUTO request from it that lands after the configured pose was applied and replaces it.

    * test(autoware_pose_initializer): assert the startup timer shares the initialize service group Reads the wiring back through for_each_callback_group instead of trying to observe the absence of interleaving at runtime. ---------Co-authored-by: Tran Huu Nhat Huy <<29034232+TranHuuNhatHuy@users.noreply.github.com>>

  • test(autoware_pose_initializer): implement characterization test (#1432)

  • feat(localization): add node designs for the pose/twist estimation nodes (#1409)

    * feat(localization): add node designs for the pose/twist estimation nodes Declare NdtScanMatcher, EkfLocalizer, GyroOdometer, StopFilter and Twist2Accel node designs, with remap_target set to each node's hardcoded topic and service names, and extend PoseInitializer with the map, GNSS, stop-check inputs and the align/trigger/partial-map-load clients that pose_initializer.launch.xml remaps. These let a system designer module compose the localization stack directly from nodes.

    * feat(localization): describe node designs and bump to format 0.4.0 ---------

  • refactor: migrate node design files from autoware_universe (#1381) Node design files for packages that moved to autoware_core, placed at the in-package convention <package>/design/<Name>.node.yaml. Co-authored-by: Claude Fable 5 <<noreply@anthropic.com>>

  • fix(autoware_pose_initializer): remove unnecessary dependency to fmt (#1377)

  • fix(localization): declare the dependencies these packages use (#1369) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>.

File truncated at 100 lines see the full file

Launch files

  • launch/pose_initializer.launch.xml
      • config_file [default: $(find-pkg-share autoware_pose_initializer)/config/pose_initializer.param.yaml]
      • user_defined_initial_pose/enable [default: false]
      • user_defined_initial_pose/pose [default: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]]
      • ndt_enabled [default: true]
      • gnss_enabled [default: true]
      • ekf_enabled [default: true]
      • yabloc_enabled [default: false]
      • stop_check_enabled [default: true]
      • sub_gnss_pose_cov [default: sub_gnss_pose_cov]
      • gnss_initial_pose_auto_fix_target [default: pointcloud_map]
      • stop_check_twist_topic [default: /sensing/vehicle_velocity_converter/twist_with_covariance]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange

No version for distro hydro showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_pose_initializer package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_test_manager autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_pose_initializer package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Yamato Ando
  • Takagi, Isamu

autoware_pose_initializer

Purpose

The autoware_pose_initializer is the package to send an initial pose to ekf_localizer. It receives roughly estimated initial pose from GNSS/user. Passing the pose to ndt_scan_matcher, and it gets a calculated ego pose from ndt_scan_matcher via service. Finally, it publishes the initial pose to ekf_localizer. This node depends on the map height fitter library. See here for more details.

Interfaces

Parameters

{{ json_to_markdown(“localization/autoware_pose_initializer/schema/pose_initializer.schema.json”) }}

Services

Name Type Description
/localization/initialize autoware_localization_msgs::srv::InitializeLocalization initial pose from api

Clients

Name Type Description
/localization/pose_estimator/ndt_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped pose estimation service
/localization/pose_estimator/yabloc/initializer/yabloc_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped yabloc pose estimation service

Subscriptions

Name Type Description
/sensing/gnss/pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped pose from gnss
/sensing/vehicle_velocity_converter/twist_with_covariance geometry_msgs::msg::TwistStamped twist for stop check

Publications

Name Type Description
/localization/initialization_state autoware_adapi_v1_msgs::msg::LocalizationInitializationState pose initialization state
/initialpose3d geometry_msgs::msg::PoseWithCovarianceStamped calculated initial ego pose
/diagnostics diagnostic_msgs::msg::DiagnosticArray diagnostics

Diagnostics

pose_initializer_status

If the score of initial pose estimation result is lower than score threshold, ERROR message is output to the /diagnostics topic.

drawing

Connection with Default AD API

This autoware_pose_initializer is used via default AD API. For detailed description of the API description, please refer to the description of autoware_default_adapi.

drawing

Initialize pose via CLI

Using the GNSS estimated position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization

The GNSS estimated position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Using the input position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization "
pose_with_covariance:
  - header:
      frame_id: map
    pose:
      pose:
        position:
          x: 89571.1640625
          y: 42301.1875
          z: -3.1565165519714355
        orientation:
          x: 0.0
          y: 0.0
          z: 0.28072773940524687
          w: 0.9597874433062874
      covariance: [0.25, 0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06853891909122467]
method: 0
"

The input position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Direct initial position set

```bash ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization “ pose_with_covariance:

  • header:

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_pose_initializer

1.10.0 (2026-09-28)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node (#1445)

    • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): use AgnocastOnlyCallbackIsolatedExecutor and drop redundant comments
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): drop the comments that restate the code
    • docs(map_height_fitter, pose_initializer, adapi_adaptors): note what the agnocast_env include provides

    * docs(map_height_fitter, pose_initializer): explain the ENABLE_AGNOCAST test gate ---------

  • fix(autoware_pose_initializer): drop the nested spin from the user defined initial pose (#1423)

    * refactor(autoware_pose_initializer): drop the nested spin from the user defined initial pose [PoseInitializer]{.title-ref} applied [user_defined_initial_pose]{.title-ref} from its constructor, where the executor is not running yet, so [LocalizationTriggerModule::send_request()]{.title-ref} had to spin a throwaway executor over the node to collect the trigger response. The constructor now only validates the parameter and schedules a one-shot timer on [group_srv_]{.title-ref}, so the initialization runs under the node's own executor like every other path. The [need_spin]{.title-ref} flag threaded through [change_node_trigger()]{.title-ref}, [set_user_defined_initial_pose()]{.title-ref} and [send_request()]{.title-ref} goes with it. Adds a fixture for the startup path, which needs the trigger mocks in place before the node is constructed and has to wait for the volatile [pose_reset]{.title-ref} subscription to match before the node starts spinning. It covers the configured pose reaching [pose_reset]{.title-ref}, both localizers being toggled off and back on, the failure path leaving the node uninitialized without letting the exception escape the timer callback, and the two parameter validations.

    * fix(autoware_pose_initializer): claim INITIALIZING before arming the startup timer The UNINITIALIZED published in the constructor otherwise stands until the timer runs, and autoware_automatic_pose_initializer can build an AUTO request from it that lands after the configured pose was applied and replaces it.

    * test(autoware_pose_initializer): assert the startup timer shares the initialize service group Reads the wiring back through for_each_callback_group instead of trying to observe the absence of interleaving at runtime. ---------Co-authored-by: Tran Huu Nhat Huy <<29034232+TranHuuNhatHuy@users.noreply.github.com>>

  • test(autoware_pose_initializer): implement characterization test (#1432)

  • feat(localization): add node designs for the pose/twist estimation nodes (#1409)

    * feat(localization): add node designs for the pose/twist estimation nodes Declare NdtScanMatcher, EkfLocalizer, GyroOdometer, StopFilter and Twist2Accel node designs, with remap_target set to each node's hardcoded topic and service names, and extend PoseInitializer with the map, GNSS, stop-check inputs and the align/trigger/partial-map-load clients that pose_initializer.launch.xml remaps. These let a system designer module compose the localization stack directly from nodes.

    * feat(localization): describe node designs and bump to format 0.4.0 ---------

  • refactor: migrate node design files from autoware_universe (#1381) Node design files for packages that moved to autoware_core, placed at the in-package convention <package>/design/<Name>.node.yaml. Co-authored-by: Claude Fable 5 <<noreply@anthropic.com>>

  • fix(autoware_pose_initializer): remove unnecessary dependency to fmt (#1377)

  • fix(localization): declare the dependencies these packages use (#1369) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>.

File truncated at 100 lines see the full file

Launch files

  • launch/pose_initializer.launch.xml
      • config_file [default: $(find-pkg-share autoware_pose_initializer)/config/pose_initializer.param.yaml]
      • user_defined_initial_pose/enable [default: false]
      • user_defined_initial_pose/pose [default: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]]
      • ndt_enabled [default: true]
      • gnss_enabled [default: true]
      • ekf_enabled [default: true]
      • yabloc_enabled [default: false]
      • stop_check_enabled [default: true]
      • sub_gnss_pose_cov [default: sub_gnss_pose_cov]
      • gnss_initial_pose_auto_fix_target [default: pointcloud_map]
      • stop_check_twist_topic [default: /sensing/vehicle_velocity_converter/twist_with_covariance]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange

No version for distro kinetic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_pose_initializer package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_test_manager autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_pose_initializer package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Yamato Ando
  • Takagi, Isamu

autoware_pose_initializer

Purpose

The autoware_pose_initializer is the package to send an initial pose to ekf_localizer. It receives roughly estimated initial pose from GNSS/user. Passing the pose to ndt_scan_matcher, and it gets a calculated ego pose from ndt_scan_matcher via service. Finally, it publishes the initial pose to ekf_localizer. This node depends on the map height fitter library. See here for more details.

Interfaces

Parameters

{{ json_to_markdown(“localization/autoware_pose_initializer/schema/pose_initializer.schema.json”) }}

Services

Name Type Description
/localization/initialize autoware_localization_msgs::srv::InitializeLocalization initial pose from api

Clients

Name Type Description
/localization/pose_estimator/ndt_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped pose estimation service
/localization/pose_estimator/yabloc/initializer/yabloc_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped yabloc pose estimation service

Subscriptions

Name Type Description
/sensing/gnss/pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped pose from gnss
/sensing/vehicle_velocity_converter/twist_with_covariance geometry_msgs::msg::TwistStamped twist for stop check

Publications

Name Type Description
/localization/initialization_state autoware_adapi_v1_msgs::msg::LocalizationInitializationState pose initialization state
/initialpose3d geometry_msgs::msg::PoseWithCovarianceStamped calculated initial ego pose
/diagnostics diagnostic_msgs::msg::DiagnosticArray diagnostics

Diagnostics

pose_initializer_status

If the score of initial pose estimation result is lower than score threshold, ERROR message is output to the /diagnostics topic.

drawing

Connection with Default AD API

This autoware_pose_initializer is used via default AD API. For detailed description of the API description, please refer to the description of autoware_default_adapi.

drawing

Initialize pose via CLI

Using the GNSS estimated position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization

The GNSS estimated position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Using the input position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization "
pose_with_covariance:
  - header:
      frame_id: map
    pose:
      pose:
        position:
          x: 89571.1640625
          y: 42301.1875
          z: -3.1565165519714355
        orientation:
          x: 0.0
          y: 0.0
          z: 0.28072773940524687
          w: 0.9597874433062874
      covariance: [0.25, 0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06853891909122467]
method: 0
"

The input position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Direct initial position set

```bash ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization “ pose_with_covariance:

  • header:

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_pose_initializer

1.10.0 (2026-09-28)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node (#1445)

    • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): use AgnocastOnlyCallbackIsolatedExecutor and drop redundant comments
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): drop the comments that restate the code
    • docs(map_height_fitter, pose_initializer, adapi_adaptors): note what the agnocast_env include provides

    * docs(map_height_fitter, pose_initializer): explain the ENABLE_AGNOCAST test gate ---------

  • fix(autoware_pose_initializer): drop the nested spin from the user defined initial pose (#1423)

    * refactor(autoware_pose_initializer): drop the nested spin from the user defined initial pose [PoseInitializer]{.title-ref} applied [user_defined_initial_pose]{.title-ref} from its constructor, where the executor is not running yet, so [LocalizationTriggerModule::send_request()]{.title-ref} had to spin a throwaway executor over the node to collect the trigger response. The constructor now only validates the parameter and schedules a one-shot timer on [group_srv_]{.title-ref}, so the initialization runs under the node's own executor like every other path. The [need_spin]{.title-ref} flag threaded through [change_node_trigger()]{.title-ref}, [set_user_defined_initial_pose()]{.title-ref} and [send_request()]{.title-ref} goes with it. Adds a fixture for the startup path, which needs the trigger mocks in place before the node is constructed and has to wait for the volatile [pose_reset]{.title-ref} subscription to match before the node starts spinning. It covers the configured pose reaching [pose_reset]{.title-ref}, both localizers being toggled off and back on, the failure path leaving the node uninitialized without letting the exception escape the timer callback, and the two parameter validations.

    * fix(autoware_pose_initializer): claim INITIALIZING before arming the startup timer The UNINITIALIZED published in the constructor otherwise stands until the timer runs, and autoware_automatic_pose_initializer can build an AUTO request from it that lands after the configured pose was applied and replaces it.

    * test(autoware_pose_initializer): assert the startup timer shares the initialize service group Reads the wiring back through for_each_callback_group instead of trying to observe the absence of interleaving at runtime. ---------Co-authored-by: Tran Huu Nhat Huy <<29034232+TranHuuNhatHuy@users.noreply.github.com>>

  • test(autoware_pose_initializer): implement characterization test (#1432)

  • feat(localization): add node designs for the pose/twist estimation nodes (#1409)

    * feat(localization): add node designs for the pose/twist estimation nodes Declare NdtScanMatcher, EkfLocalizer, GyroOdometer, StopFilter and Twist2Accel node designs, with remap_target set to each node's hardcoded topic and service names, and extend PoseInitializer with the map, GNSS, stop-check inputs and the align/trigger/partial-map-load clients that pose_initializer.launch.xml remaps. These let a system designer module compose the localization stack directly from nodes.

    * feat(localization): describe node designs and bump to format 0.4.0 ---------

  • refactor: migrate node design files from autoware_universe (#1381) Node design files for packages that moved to autoware_core, placed at the in-package convention <package>/design/<Name>.node.yaml. Co-authored-by: Claude Fable 5 <<noreply@anthropic.com>>

  • fix(autoware_pose_initializer): remove unnecessary dependency to fmt (#1377)

  • fix(localization): declare the dependencies these packages use (#1369) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>.

File truncated at 100 lines see the full file

Launch files

  • launch/pose_initializer.launch.xml
      • config_file [default: $(find-pkg-share autoware_pose_initializer)/config/pose_initializer.param.yaml]
      • user_defined_initial_pose/enable [default: false]
      • user_defined_initial_pose/pose [default: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]]
      • ndt_enabled [default: true]
      • gnss_enabled [default: true]
      • ekf_enabled [default: true]
      • yabloc_enabled [default: false]
      • stop_check_enabled [default: true]
      • sub_gnss_pose_cov [default: sub_gnss_pose_cov]
      • gnss_initial_pose_auto_fix_target [default: pointcloud_map]
      • stop_check_twist_topic [default: /sensing/vehicle_velocity_converter/twist_with_covariance]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange

No version for distro melodic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_pose_initializer package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_test_manager autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_pose_initializer package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Yamato Ando
  • Takagi, Isamu

autoware_pose_initializer

Purpose

The autoware_pose_initializer is the package to send an initial pose to ekf_localizer. It receives roughly estimated initial pose from GNSS/user. Passing the pose to ndt_scan_matcher, and it gets a calculated ego pose from ndt_scan_matcher via service. Finally, it publishes the initial pose to ekf_localizer. This node depends on the map height fitter library. See here for more details.

Interfaces

Parameters

{{ json_to_markdown(“localization/autoware_pose_initializer/schema/pose_initializer.schema.json”) }}

Services

Name Type Description
/localization/initialize autoware_localization_msgs::srv::InitializeLocalization initial pose from api

Clients

Name Type Description
/localization/pose_estimator/ndt_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped pose estimation service
/localization/pose_estimator/yabloc/initializer/yabloc_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped yabloc pose estimation service

Subscriptions

Name Type Description
/sensing/gnss/pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped pose from gnss
/sensing/vehicle_velocity_converter/twist_with_covariance geometry_msgs::msg::TwistStamped twist for stop check

Publications

Name Type Description
/localization/initialization_state autoware_adapi_v1_msgs::msg::LocalizationInitializationState pose initialization state
/initialpose3d geometry_msgs::msg::PoseWithCovarianceStamped calculated initial ego pose
/diagnostics diagnostic_msgs::msg::DiagnosticArray diagnostics

Diagnostics

pose_initializer_status

If the score of initial pose estimation result is lower than score threshold, ERROR message is output to the /diagnostics topic.

drawing

Connection with Default AD API

This autoware_pose_initializer is used via default AD API. For detailed description of the API description, please refer to the description of autoware_default_adapi.

drawing

Initialize pose via CLI

Using the GNSS estimated position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization

The GNSS estimated position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Using the input position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization "
pose_with_covariance:
  - header:
      frame_id: map
    pose:
      pose:
        position:
          x: 89571.1640625
          y: 42301.1875
          z: -3.1565165519714355
        orientation:
          x: 0.0
          y: 0.0
          z: 0.28072773940524687
          w: 0.9597874433062874
      covariance: [0.25, 0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06853891909122467]
method: 0
"

The input position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Direct initial position set

```bash ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization “ pose_with_covariance:

  • header:

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_pose_initializer

1.10.0 (2026-09-28)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node (#1445)

    • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): use AgnocastOnlyCallbackIsolatedExecutor and drop redundant comments
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): drop the comments that restate the code
    • docs(map_height_fitter, pose_initializer, adapi_adaptors): note what the agnocast_env include provides

    * docs(map_height_fitter, pose_initializer): explain the ENABLE_AGNOCAST test gate ---------

  • fix(autoware_pose_initializer): drop the nested spin from the user defined initial pose (#1423)

    * refactor(autoware_pose_initializer): drop the nested spin from the user defined initial pose [PoseInitializer]{.title-ref} applied [user_defined_initial_pose]{.title-ref} from its constructor, where the executor is not running yet, so [LocalizationTriggerModule::send_request()]{.title-ref} had to spin a throwaway executor over the node to collect the trigger response. The constructor now only validates the parameter and schedules a one-shot timer on [group_srv_]{.title-ref}, so the initialization runs under the node's own executor like every other path. The [need_spin]{.title-ref} flag threaded through [change_node_trigger()]{.title-ref}, [set_user_defined_initial_pose()]{.title-ref} and [send_request()]{.title-ref} goes with it. Adds a fixture for the startup path, which needs the trigger mocks in place before the node is constructed and has to wait for the volatile [pose_reset]{.title-ref} subscription to match before the node starts spinning. It covers the configured pose reaching [pose_reset]{.title-ref}, both localizers being toggled off and back on, the failure path leaving the node uninitialized without letting the exception escape the timer callback, and the two parameter validations.

    * fix(autoware_pose_initializer): claim INITIALIZING before arming the startup timer The UNINITIALIZED published in the constructor otherwise stands until the timer runs, and autoware_automatic_pose_initializer can build an AUTO request from it that lands after the configured pose was applied and replaces it.

    * test(autoware_pose_initializer): assert the startup timer shares the initialize service group Reads the wiring back through for_each_callback_group instead of trying to observe the absence of interleaving at runtime. ---------Co-authored-by: Tran Huu Nhat Huy <<29034232+TranHuuNhatHuy@users.noreply.github.com>>

  • test(autoware_pose_initializer): implement characterization test (#1432)

  • feat(localization): add node designs for the pose/twist estimation nodes (#1409)

    * feat(localization): add node designs for the pose/twist estimation nodes Declare NdtScanMatcher, EkfLocalizer, GyroOdometer, StopFilter and Twist2Accel node designs, with remap_target set to each node's hardcoded topic and service names, and extend PoseInitializer with the map, GNSS, stop-check inputs and the align/trigger/partial-map-load clients that pose_initializer.launch.xml remaps. These let a system designer module compose the localization stack directly from nodes.

    * feat(localization): describe node designs and bump to format 0.4.0 ---------

  • refactor: migrate node design files from autoware_universe (#1381) Node design files for packages that moved to autoware_core, placed at the in-package convention <package>/design/<Name>.node.yaml. Co-authored-by: Claude Fable 5 <<noreply@anthropic.com>>

  • fix(autoware_pose_initializer): remove unnecessary dependency to fmt (#1377)

  • fix(localization): declare the dependencies these packages use (#1369) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>.

File truncated at 100 lines see the full file

Launch files

  • launch/pose_initializer.launch.xml
      • config_file [default: $(find-pkg-share autoware_pose_initializer)/config/pose_initializer.param.yaml]
      • user_defined_initial_pose/enable [default: false]
      • user_defined_initial_pose/pose [default: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]]
      • ndt_enabled [default: true]
      • gnss_enabled [default: true]
      • ekf_enabled [default: true]
      • yabloc_enabled [default: false]
      • stop_check_enabled [default: true]
      • sub_gnss_pose_cov [default: sub_gnss_pose_cov]
      • gnss_initial_pose_auto_fix_target [default: pointcloud_map]
      • stop_check_twist_topic [default: /sensing/vehicle_velocity_converter/twist_with_covariance]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange

No version for distro noetic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

autoware_pose_initializer package from autoware_core repo

autoware_adapi_adaptors autoware_adapi_specs autoware_core_api autoware_default_adapi autoware_core autoware_agnocast_wrapper autoware_component_interface_admission autoware_component_interface_specs autoware_component_interface_utils autoware_geography_utils autoware_global_parameter_loader autoware_interface_spec_lint autoware_interpolation autoware_kalman_filter autoware_lanelet2_utils autoware_marker_utils autoware_motion_utils autoware_node autoware_object_recognition_utils autoware_osqp_interface autoware_point_types autoware_qos_utils autoware_qp_interface autoware_signal_processing autoware_trajectory autoware_vehicle_info_utils autoware_command_gate autoware_core_control autoware_simple_pure_pursuit autoware_awsim_sensor_kit_description autoware_sample_sensor_kit_description autoware_sample_vehicle_description autoware_core_localization autoware_ekf_localizer autoware_gyro_odometer autoware_localization_util autoware_ndt_scan_matcher autoware_pose_initializer autoware_stop_filter autoware_twist2accel autoware_core_map autoware_lanelet2_map_visualizer autoware_map_height_fitter autoware_map_loader autoware_map_projection_loader autoware_core_perception autoware_euclidean_cluster_object_detector autoware_ground_filter autoware_perception_objects_converter autoware_core_planning autoware_mission_planner autoware_objects_of_interest_marker_interface autoware_path_generator autoware_planning_factor_interface autoware_planning_test_manager autoware_planning_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/autowarefoundation/autoware_core.git
VCS Type git
VCS Version main
Last Updated 2026-10-07
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The autoware_pose_initializer package

Maintainers

  • Yamato Ando
  • Masahiro Sakamoto
  • NGUYEN Viet Anh
  • Taiki Yamada

Authors

  • Yamato Ando
  • Takagi, Isamu

autoware_pose_initializer

Purpose

The autoware_pose_initializer is the package to send an initial pose to ekf_localizer. It receives roughly estimated initial pose from GNSS/user. Passing the pose to ndt_scan_matcher, and it gets a calculated ego pose from ndt_scan_matcher via service. Finally, it publishes the initial pose to ekf_localizer. This node depends on the map height fitter library. See here for more details.

Interfaces

Parameters

{{ json_to_markdown(“localization/autoware_pose_initializer/schema/pose_initializer.schema.json”) }}

Services

Name Type Description
/localization/initialize autoware_localization_msgs::srv::InitializeLocalization initial pose from api

Clients

Name Type Description
/localization/pose_estimator/ndt_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped pose estimation service
/localization/pose_estimator/yabloc/initializer/yabloc_align_srv autoware_internal_localization_msgs::srv::PoseWithCovarianceStamped yabloc pose estimation service

Subscriptions

Name Type Description
/sensing/gnss/pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped pose from gnss
/sensing/vehicle_velocity_converter/twist_with_covariance geometry_msgs::msg::TwistStamped twist for stop check

Publications

Name Type Description
/localization/initialization_state autoware_adapi_v1_msgs::msg::LocalizationInitializationState pose initialization state
/initialpose3d geometry_msgs::msg::PoseWithCovarianceStamped calculated initial ego pose
/diagnostics diagnostic_msgs::msg::DiagnosticArray diagnostics

Diagnostics

pose_initializer_status

If the score of initial pose estimation result is lower than score threshold, ERROR message is output to the /diagnostics topic.

drawing

Connection with Default AD API

This autoware_pose_initializer is used via default AD API. For detailed description of the API description, please refer to the description of autoware_default_adapi.

drawing

Initialize pose via CLI

Using the GNSS estimated position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization

The GNSS estimated position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Using the input position

ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization "
pose_with_covariance:
  - header:
      frame_id: map
    pose:
      pose:
        position:
          x: 89571.1640625
          y: 42301.1875
          z: -3.1565165519714355
        orientation:
          x: 0.0
          y: 0.0
          z: 0.28072773940524687
          w: 0.9597874433062874
      covariance: [0.25, 0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06853891909122467]
method: 0
"

The input position is used as the initial guess, and the localization algorithm automatically estimates a more accurate position.

Direct initial position set

```bash ros2 service call /localization/initialize autoware_localization_msgs/srv/InitializeLocalization “ pose_with_covariance:

  • header:

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_pose_initializer

1.10.0 (2026-09-28)

  • Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base

  • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node (#1445)

    • feat(map_height_fitter, pose_initializer, adapi_adaptors): move the nodes to agnocast_wrapper::Node
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): use AgnocastOnlyCallbackIsolatedExecutor and drop redundant comments
    • refactor(map_height_fitter, pose_initializer, adapi_adaptors): drop the comments that restate the code
    • docs(map_height_fitter, pose_initializer, adapi_adaptors): note what the agnocast_env include provides

    * docs(map_height_fitter, pose_initializer): explain the ENABLE_AGNOCAST test gate ---------

  • fix(autoware_pose_initializer): drop the nested spin from the user defined initial pose (#1423)

    * refactor(autoware_pose_initializer): drop the nested spin from the user defined initial pose [PoseInitializer]{.title-ref} applied [user_defined_initial_pose]{.title-ref} from its constructor, where the executor is not running yet, so [LocalizationTriggerModule::send_request()]{.title-ref} had to spin a throwaway executor over the node to collect the trigger response. The constructor now only validates the parameter and schedules a one-shot timer on [group_srv_]{.title-ref}, so the initialization runs under the node's own executor like every other path. The [need_spin]{.title-ref} flag threaded through [change_node_trigger()]{.title-ref}, [set_user_defined_initial_pose()]{.title-ref} and [send_request()]{.title-ref} goes with it. Adds a fixture for the startup path, which needs the trigger mocks in place before the node is constructed and has to wait for the volatile [pose_reset]{.title-ref} subscription to match before the node starts spinning. It covers the configured pose reaching [pose_reset]{.title-ref}, both localizers being toggled off and back on, the failure path leaving the node uninitialized without letting the exception escape the timer callback, and the two parameter validations.

    * fix(autoware_pose_initializer): claim INITIALIZING before arming the startup timer The UNINITIALIZED published in the constructor otherwise stands until the timer runs, and autoware_automatic_pose_initializer can build an AUTO request from it that lands after the configured pose was applied and replaces it.

    * test(autoware_pose_initializer): assert the startup timer shares the initialize service group Reads the wiring back through for_each_callback_group instead of trying to observe the absence of interleaving at runtime. ---------Co-authored-by: Tran Huu Nhat Huy <<29034232+TranHuuNhatHuy@users.noreply.github.com>>

  • test(autoware_pose_initializer): implement characterization test (#1432)

  • feat(localization): add node designs for the pose/twist estimation nodes (#1409)

    * feat(localization): add node designs for the pose/twist estimation nodes Declare NdtScanMatcher, EkfLocalizer, GyroOdometer, StopFilter and Twist2Accel node designs, with remap_target set to each node's hardcoded topic and service names, and extend PoseInitializer with the map, GNSS, stop-check inputs and the align/trigger/partial-map-load clients that pose_initializer.launch.xml remaps. These let a system designer module compose the localization stack directly from nodes.

    * feat(localization): describe node designs and bump to format 0.4.0 ---------

  • refactor: migrate node design files from autoware_universe (#1381) Node design files for packages that moved to autoware_core, placed at the in-package convention <package>/design/<Name>.node.yaml. Co-authored-by: Claude Fable 5 <<noreply@anthropic.com>>

  • fix(autoware_pose_initializer): remove unnecessary dependency to fmt (#1377)

  • fix(localization): declare the dependencies these packages use (#1369) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>.

File truncated at 100 lines see the full file

Launch files

  • launch/pose_initializer.launch.xml
      • config_file [default: $(find-pkg-share autoware_pose_initializer)/config/pose_initializer.param.yaml]
      • user_defined_initial_pose/enable [default: false]
      • user_defined_initial_pose/pose [default: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]]
      • ndt_enabled [default: true]
      • gnss_enabled [default: true]
      • ekf_enabled [default: true]
      • yabloc_enabled [default: false]
      • stop_check_enabled [default: true]
      • sub_gnss_pose_cov [default: sub_gnss_pose_cov]
      • gnss_initial_pose_auto_fix_target [default: pointcloud_map]
      • stop_check_twist_topic [default: /sensing/vehicle_velocity_converter/twist_with_covariance]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange