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
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.

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.
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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
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
Services
Plugins
Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange
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
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.

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.
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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
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
Services
Plugins
Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange
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
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.

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.
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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
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
Services
Plugins
Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange
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
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.

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.
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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
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
Services
Plugins
Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange
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
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.

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.
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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
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
Services
Plugins
Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange
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
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.

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.
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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
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
Services
Plugins
Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange
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
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.

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.
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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
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
Services
Plugins
Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange
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
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.

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.
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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
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
Services
Plugins
Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange
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
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.

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.
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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
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
Services
Plugins
Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange
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
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.

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.
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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
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
Services
Plugins
Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange
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
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.

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.
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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
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
Services
Plugins
Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange
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
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.

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.
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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
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
Services
Plugins
Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange
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
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.

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.
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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
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
Services
Plugins
Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange
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
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.

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.
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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
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
Services
Plugins
Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange
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
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.

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.
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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
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
Services
Plugins
Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange
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
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.

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.
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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
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
Services
Plugins
Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange
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
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.

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.
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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
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
Services
Plugins
Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange
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
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.

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.
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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
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
Services
Plugins
Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange
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
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.

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.
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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
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
Services
Plugins
Recent questions tagged autoware_pose_initializer at Robotics Stack Exchange
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
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.

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.
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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| autoware_core_localization |
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]