Package symbol

autoware_ekf_localizer package from autoware_core repo

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

ROS Distro
humble

Package Summary

Tags No category tags.
Version 1.1.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 2025-06-12
Dev Status DEVELOPED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The autoware_ekf_localizer package

Additional Links

No additional links.

Maintainers

  • Takamasa Horibe
  • Yamato Ando
  • Takeshi Ishita
  • Masahiro Sakamoto
  • Kento Yabuuchi
  • NGUYEN Viet Anh
  • Taiki Yamada
  • Shintaro Sakoda
  • Ryu Yamamoto

Authors

  • Takamasa Horibe

Overview

The Extend Kalman Filter Localizer estimates robust and less noisy robot pose and twist by integrating the 2D vehicle dynamics model with input ego-pose and ego-twist messages. The algorithm is designed especially for fast-moving robots such as autonomous driving systems.

Flowchart

The overall flowchart of the autoware_ekf_localizer is described below.

Features

This package includes the following features:

  • Time delay compensation for input messages, which enables proper integration of input information with varying time delays. This is important especially for high-speed moving robots, such as autonomous driving vehicles. (see the following figure).
  • Automatic estimation of yaw bias prevents modeling errors caused by sensor mounting angle errors, which can improve estimation accuracy.
  • Mahalanobis distance gate enables probabilistic outlier detection to determine which inputs should be used or ignored.
  • Smooth update, the Kalman Filter measurement update is typically performed when a measurement is obtained, but it can cause large changes in the estimated value, especially for low-frequency measurements. Since the algorithm can consider the measurement time, the measurement data can be divided into multiple pieces and integrated smoothly while maintaining consistency (see the following figure).
  • Calculation of vertical correction amount from pitch mitigates localization instability on slopes. For example, when going uphill, it behaves as if it is buried in the ground (see the left side of the “Calculate delta from pitch” figure) because EKF only considers 3DoF(x,y,yaw). Therefore, EKF corrects the z-coordinate according to the formula (see the right side of the “Calculate delta from pitch” figure).

Node

Subscribed Topics

Name Type Description
measured_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Input pose source with the measurement covariance matrix.
measured_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped Input twist source with the measurement covariance matrix.
initialpose geometry_msgs::msg::PoseWithCovarianceStamped Initial pose for EKF. The estimated pose is initialized with zeros at the start. It is initialized with this message whenever published.

Published Topics

Name Type Description
ekf_odom nav_msgs::msg::Odometry Estimated odometry.
ekf_pose geometry_msgs::msg::PoseStamped Estimated pose.
ekf_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance.
ekf_biased_pose geometry_msgs::msg::PoseStamped Estimated pose including the yaw bias
ekf_biased_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance including the yaw bias
ekf_twist geometry_msgs::msg::TwistStamped Estimated twist.
ekf_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped The estimated twist with covariance.
diagnostics diagnostics_msgs::msg::DiagnosticArray The diagnostic information.
debug/processing_time_ms autoware_internal_debug_msgs::msg::Float64Stamped The processing time [ms].

Published TF

  • base_link TF from map coordinate to estimated pose.

Functions

Predict

The current robot state is predicted from previously estimated data using a given prediction model. This calculation is called at a constant interval (predict_frequency [Hz]). The prediction equation is described at the end of this page.

Measurement Update

Before the update, the Mahalanobis distance is calculated between the measured input and the predicted state, the measurement update is not performed for inputs where the Mahalanobis distance exceeds the given threshold.

The predicted state is updated with the latest measured inputs, measured_pose, and measured_twist. The updates are performed with the same frequency as prediction, usually at a high frequency, in order to enable smooth state estimation.

Parameter description

The parameters are set in launch/ekf_localizer.launch .

For Node

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/node.sub_schema.json”) }}

For pose measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/pose_measurement.sub_schema.json”) }}

For twist measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/twist_measurement.sub_schema.json”) }}

For process noise

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/process_noise.sub_schema.json”) }}

note: process noise for positions x & y are calculated automatically from nonlinear dynamics.

Simple 1D Filter Parameters

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/simple_1d_filter_parameters.sub_schema.json”) }}

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_ekf_localizer

1.1.0 (2025-05-01)

1.0.0 (2025-03-31)

0.3.0 (2025-03-21)

  • chore: fix versions in package.xml
  • chore(ekf_localizer): increase z_filter_proc_dev for large gradient road (#211) increase z_filter_proc_dev Co-authored-by: SakodaShintaro <<shintaro.sakoda@tier4.jp>>
  • feat(autoware_ekf_localizer)!: porting from universe to core 2nd (#180)
  • Contributors: Kento Yabuuchi, Motz, mitsudome-r

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/ekf_localizer.launch.xml
      • param_file [default: $(find-pkg-share autoware_ekf_localizer)/config/ekf_localizer.param.yaml]
      • input_initial_pose_name [default: initialpose3d]
      • input_trigger_node_service_name [default: trigger_node]
      • input_pose_with_cov_name [default: in_pose_with_covariance]
      • input_twist_with_cov_name [default: in_twist_with_covariance]
      • output_odom_name [default: ekf_odom]
      • output_pose_name [default: ekf_pose]
      • output_pose_with_covariance_name [default: ekf_pose_with_covariance]
      • output_biased_pose_name [default: ekf_biased_pose]
      • output_biased_pose_with_covariance_name [default: ekf_biased_pose_with_covariance]
      • output_twist_name [default: ekf_twist]
      • output_twist_with_covariance_name [default: ekf_twist_with_covariance]
      • output_processing_time_ms [default: debug/processing_time_ms]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_ekf_localizer at Robotics Stack Exchange

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

autoware_ekf_localizer package from autoware_core repo

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

ROS Distro
humble

Package Summary

Tags No category tags.
Version 1.1.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 2025-06-12
Dev Status DEVELOPED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The autoware_ekf_localizer package

Additional Links

No additional links.

Maintainers

  • Takamasa Horibe
  • Yamato Ando
  • Takeshi Ishita
  • Masahiro Sakamoto
  • Kento Yabuuchi
  • NGUYEN Viet Anh
  • Taiki Yamada
  • Shintaro Sakoda
  • Ryu Yamamoto

Authors

  • Takamasa Horibe

Overview

The Extend Kalman Filter Localizer estimates robust and less noisy robot pose and twist by integrating the 2D vehicle dynamics model with input ego-pose and ego-twist messages. The algorithm is designed especially for fast-moving robots such as autonomous driving systems.

Flowchart

The overall flowchart of the autoware_ekf_localizer is described below.

Features

This package includes the following features:

  • Time delay compensation for input messages, which enables proper integration of input information with varying time delays. This is important especially for high-speed moving robots, such as autonomous driving vehicles. (see the following figure).
  • Automatic estimation of yaw bias prevents modeling errors caused by sensor mounting angle errors, which can improve estimation accuracy.
  • Mahalanobis distance gate enables probabilistic outlier detection to determine which inputs should be used or ignored.
  • Smooth update, the Kalman Filter measurement update is typically performed when a measurement is obtained, but it can cause large changes in the estimated value, especially for low-frequency measurements. Since the algorithm can consider the measurement time, the measurement data can be divided into multiple pieces and integrated smoothly while maintaining consistency (see the following figure).
  • Calculation of vertical correction amount from pitch mitigates localization instability on slopes. For example, when going uphill, it behaves as if it is buried in the ground (see the left side of the “Calculate delta from pitch” figure) because EKF only considers 3DoF(x,y,yaw). Therefore, EKF corrects the z-coordinate according to the formula (see the right side of the “Calculate delta from pitch” figure).

Node

Subscribed Topics

Name Type Description
measured_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Input pose source with the measurement covariance matrix.
measured_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped Input twist source with the measurement covariance matrix.
initialpose geometry_msgs::msg::PoseWithCovarianceStamped Initial pose for EKF. The estimated pose is initialized with zeros at the start. It is initialized with this message whenever published.

Published Topics

Name Type Description
ekf_odom nav_msgs::msg::Odometry Estimated odometry.
ekf_pose geometry_msgs::msg::PoseStamped Estimated pose.
ekf_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance.
ekf_biased_pose geometry_msgs::msg::PoseStamped Estimated pose including the yaw bias
ekf_biased_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance including the yaw bias
ekf_twist geometry_msgs::msg::TwistStamped Estimated twist.
ekf_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped The estimated twist with covariance.
diagnostics diagnostics_msgs::msg::DiagnosticArray The diagnostic information.
debug/processing_time_ms autoware_internal_debug_msgs::msg::Float64Stamped The processing time [ms].

Published TF

  • base_link TF from map coordinate to estimated pose.

Functions

Predict

The current robot state is predicted from previously estimated data using a given prediction model. This calculation is called at a constant interval (predict_frequency [Hz]). The prediction equation is described at the end of this page.

Measurement Update

Before the update, the Mahalanobis distance is calculated between the measured input and the predicted state, the measurement update is not performed for inputs where the Mahalanobis distance exceeds the given threshold.

The predicted state is updated with the latest measured inputs, measured_pose, and measured_twist. The updates are performed with the same frequency as prediction, usually at a high frequency, in order to enable smooth state estimation.

Parameter description

The parameters are set in launch/ekf_localizer.launch .

For Node

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/node.sub_schema.json”) }}

For pose measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/pose_measurement.sub_schema.json”) }}

For twist measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/twist_measurement.sub_schema.json”) }}

For process noise

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/process_noise.sub_schema.json”) }}

note: process noise for positions x & y are calculated automatically from nonlinear dynamics.

Simple 1D Filter Parameters

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/simple_1d_filter_parameters.sub_schema.json”) }}

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_ekf_localizer

1.1.0 (2025-05-01)

1.0.0 (2025-03-31)

0.3.0 (2025-03-21)

  • chore: fix versions in package.xml
  • chore(ekf_localizer): increase z_filter_proc_dev for large gradient road (#211) increase z_filter_proc_dev Co-authored-by: SakodaShintaro <<shintaro.sakoda@tier4.jp>>
  • feat(autoware_ekf_localizer)!: porting from universe to core 2nd (#180)
  • Contributors: Kento Yabuuchi, Motz, mitsudome-r

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/ekf_localizer.launch.xml
      • param_file [default: $(find-pkg-share autoware_ekf_localizer)/config/ekf_localizer.param.yaml]
      • input_initial_pose_name [default: initialpose3d]
      • input_trigger_node_service_name [default: trigger_node]
      • input_pose_with_cov_name [default: in_pose_with_covariance]
      • input_twist_with_cov_name [default: in_twist_with_covariance]
      • output_odom_name [default: ekf_odom]
      • output_pose_name [default: ekf_pose]
      • output_pose_with_covariance_name [default: ekf_pose_with_covariance]
      • output_biased_pose_name [default: ekf_biased_pose]
      • output_biased_pose_with_covariance_name [default: ekf_biased_pose_with_covariance]
      • output_twist_name [default: ekf_twist]
      • output_twist_with_covariance_name [default: ekf_twist_with_covariance]
      • output_processing_time_ms [default: debug/processing_time_ms]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_ekf_localizer at Robotics Stack Exchange

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

autoware_ekf_localizer package from autoware_core repo

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

ROS Distro
humble

Package Summary

Tags No category tags.
Version 1.1.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 2025-06-12
Dev Status DEVELOPED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The autoware_ekf_localizer package

Additional Links

No additional links.

Maintainers

  • Takamasa Horibe
  • Yamato Ando
  • Takeshi Ishita
  • Masahiro Sakamoto
  • Kento Yabuuchi
  • NGUYEN Viet Anh
  • Taiki Yamada
  • Shintaro Sakoda
  • Ryu Yamamoto

Authors

  • Takamasa Horibe

Overview

The Extend Kalman Filter Localizer estimates robust and less noisy robot pose and twist by integrating the 2D vehicle dynamics model with input ego-pose and ego-twist messages. The algorithm is designed especially for fast-moving robots such as autonomous driving systems.

Flowchart

The overall flowchart of the autoware_ekf_localizer is described below.

Features

This package includes the following features:

  • Time delay compensation for input messages, which enables proper integration of input information with varying time delays. This is important especially for high-speed moving robots, such as autonomous driving vehicles. (see the following figure).
  • Automatic estimation of yaw bias prevents modeling errors caused by sensor mounting angle errors, which can improve estimation accuracy.
  • Mahalanobis distance gate enables probabilistic outlier detection to determine which inputs should be used or ignored.
  • Smooth update, the Kalman Filter measurement update is typically performed when a measurement is obtained, but it can cause large changes in the estimated value, especially for low-frequency measurements. Since the algorithm can consider the measurement time, the measurement data can be divided into multiple pieces and integrated smoothly while maintaining consistency (see the following figure).
  • Calculation of vertical correction amount from pitch mitigates localization instability on slopes. For example, when going uphill, it behaves as if it is buried in the ground (see the left side of the “Calculate delta from pitch” figure) because EKF only considers 3DoF(x,y,yaw). Therefore, EKF corrects the z-coordinate according to the formula (see the right side of the “Calculate delta from pitch” figure).

Node

Subscribed Topics

Name Type Description
measured_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Input pose source with the measurement covariance matrix.
measured_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped Input twist source with the measurement covariance matrix.
initialpose geometry_msgs::msg::PoseWithCovarianceStamped Initial pose for EKF. The estimated pose is initialized with zeros at the start. It is initialized with this message whenever published.

Published Topics

Name Type Description
ekf_odom nav_msgs::msg::Odometry Estimated odometry.
ekf_pose geometry_msgs::msg::PoseStamped Estimated pose.
ekf_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance.
ekf_biased_pose geometry_msgs::msg::PoseStamped Estimated pose including the yaw bias
ekf_biased_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance including the yaw bias
ekf_twist geometry_msgs::msg::TwistStamped Estimated twist.
ekf_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped The estimated twist with covariance.
diagnostics diagnostics_msgs::msg::DiagnosticArray The diagnostic information.
debug/processing_time_ms autoware_internal_debug_msgs::msg::Float64Stamped The processing time [ms].

Published TF

  • base_link TF from map coordinate to estimated pose.

Functions

Predict

The current robot state is predicted from previously estimated data using a given prediction model. This calculation is called at a constant interval (predict_frequency [Hz]). The prediction equation is described at the end of this page.

Measurement Update

Before the update, the Mahalanobis distance is calculated between the measured input and the predicted state, the measurement update is not performed for inputs where the Mahalanobis distance exceeds the given threshold.

The predicted state is updated with the latest measured inputs, measured_pose, and measured_twist. The updates are performed with the same frequency as prediction, usually at a high frequency, in order to enable smooth state estimation.

Parameter description

The parameters are set in launch/ekf_localizer.launch .

For Node

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/node.sub_schema.json”) }}

For pose measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/pose_measurement.sub_schema.json”) }}

For twist measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/twist_measurement.sub_schema.json”) }}

For process noise

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/process_noise.sub_schema.json”) }}

note: process noise for positions x & y are calculated automatically from nonlinear dynamics.

Simple 1D Filter Parameters

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/simple_1d_filter_parameters.sub_schema.json”) }}

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_ekf_localizer

1.1.0 (2025-05-01)

1.0.0 (2025-03-31)

0.3.0 (2025-03-21)

  • chore: fix versions in package.xml
  • chore(ekf_localizer): increase z_filter_proc_dev for large gradient road (#211) increase z_filter_proc_dev Co-authored-by: SakodaShintaro <<shintaro.sakoda@tier4.jp>>
  • feat(autoware_ekf_localizer)!: porting from universe to core 2nd (#180)
  • Contributors: Kento Yabuuchi, Motz, mitsudome-r

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/ekf_localizer.launch.xml
      • param_file [default: $(find-pkg-share autoware_ekf_localizer)/config/ekf_localizer.param.yaml]
      • input_initial_pose_name [default: initialpose3d]
      • input_trigger_node_service_name [default: trigger_node]
      • input_pose_with_cov_name [default: in_pose_with_covariance]
      • input_twist_with_cov_name [default: in_twist_with_covariance]
      • output_odom_name [default: ekf_odom]
      • output_pose_name [default: ekf_pose]
      • output_pose_with_covariance_name [default: ekf_pose_with_covariance]
      • output_biased_pose_name [default: ekf_biased_pose]
      • output_biased_pose_with_covariance_name [default: ekf_biased_pose_with_covariance]
      • output_twist_name [default: ekf_twist]
      • output_twist_with_covariance_name [default: ekf_twist_with_covariance]
      • output_processing_time_ms [default: debug/processing_time_ms]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_ekf_localizer at Robotics Stack Exchange

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

autoware_ekf_localizer package from autoware_core repo

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

ROS Distro
humble

Package Summary

Tags No category tags.
Version 1.1.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 2025-06-12
Dev Status DEVELOPED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The autoware_ekf_localizer package

Additional Links

No additional links.

Maintainers

  • Takamasa Horibe
  • Yamato Ando
  • Takeshi Ishita
  • Masahiro Sakamoto
  • Kento Yabuuchi
  • NGUYEN Viet Anh
  • Taiki Yamada
  • Shintaro Sakoda
  • Ryu Yamamoto

Authors

  • Takamasa Horibe

Overview

The Extend Kalman Filter Localizer estimates robust and less noisy robot pose and twist by integrating the 2D vehicle dynamics model with input ego-pose and ego-twist messages. The algorithm is designed especially for fast-moving robots such as autonomous driving systems.

Flowchart

The overall flowchart of the autoware_ekf_localizer is described below.

Features

This package includes the following features:

  • Time delay compensation for input messages, which enables proper integration of input information with varying time delays. This is important especially for high-speed moving robots, such as autonomous driving vehicles. (see the following figure).
  • Automatic estimation of yaw bias prevents modeling errors caused by sensor mounting angle errors, which can improve estimation accuracy.
  • Mahalanobis distance gate enables probabilistic outlier detection to determine which inputs should be used or ignored.
  • Smooth update, the Kalman Filter measurement update is typically performed when a measurement is obtained, but it can cause large changes in the estimated value, especially for low-frequency measurements. Since the algorithm can consider the measurement time, the measurement data can be divided into multiple pieces and integrated smoothly while maintaining consistency (see the following figure).
  • Calculation of vertical correction amount from pitch mitigates localization instability on slopes. For example, when going uphill, it behaves as if it is buried in the ground (see the left side of the “Calculate delta from pitch” figure) because EKF only considers 3DoF(x,y,yaw). Therefore, EKF corrects the z-coordinate according to the formula (see the right side of the “Calculate delta from pitch” figure).

Node

Subscribed Topics

Name Type Description
measured_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Input pose source with the measurement covariance matrix.
measured_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped Input twist source with the measurement covariance matrix.
initialpose geometry_msgs::msg::PoseWithCovarianceStamped Initial pose for EKF. The estimated pose is initialized with zeros at the start. It is initialized with this message whenever published.

Published Topics

Name Type Description
ekf_odom nav_msgs::msg::Odometry Estimated odometry.
ekf_pose geometry_msgs::msg::PoseStamped Estimated pose.
ekf_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance.
ekf_biased_pose geometry_msgs::msg::PoseStamped Estimated pose including the yaw bias
ekf_biased_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance including the yaw bias
ekf_twist geometry_msgs::msg::TwistStamped Estimated twist.
ekf_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped The estimated twist with covariance.
diagnostics diagnostics_msgs::msg::DiagnosticArray The diagnostic information.
debug/processing_time_ms autoware_internal_debug_msgs::msg::Float64Stamped The processing time [ms].

Published TF

  • base_link TF from map coordinate to estimated pose.

Functions

Predict

The current robot state is predicted from previously estimated data using a given prediction model. This calculation is called at a constant interval (predict_frequency [Hz]). The prediction equation is described at the end of this page.

Measurement Update

Before the update, the Mahalanobis distance is calculated between the measured input and the predicted state, the measurement update is not performed for inputs where the Mahalanobis distance exceeds the given threshold.

The predicted state is updated with the latest measured inputs, measured_pose, and measured_twist. The updates are performed with the same frequency as prediction, usually at a high frequency, in order to enable smooth state estimation.

Parameter description

The parameters are set in launch/ekf_localizer.launch .

For Node

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/node.sub_schema.json”) }}

For pose measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/pose_measurement.sub_schema.json”) }}

For twist measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/twist_measurement.sub_schema.json”) }}

For process noise

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/process_noise.sub_schema.json”) }}

note: process noise for positions x & y are calculated automatically from nonlinear dynamics.

Simple 1D Filter Parameters

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/simple_1d_filter_parameters.sub_schema.json”) }}

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_ekf_localizer

1.1.0 (2025-05-01)

1.0.0 (2025-03-31)

0.3.0 (2025-03-21)

  • chore: fix versions in package.xml
  • chore(ekf_localizer): increase z_filter_proc_dev for large gradient road (#211) increase z_filter_proc_dev Co-authored-by: SakodaShintaro <<shintaro.sakoda@tier4.jp>>
  • feat(autoware_ekf_localizer)!: porting from universe to core 2nd (#180)
  • Contributors: Kento Yabuuchi, Motz, mitsudome-r

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/ekf_localizer.launch.xml
      • param_file [default: $(find-pkg-share autoware_ekf_localizer)/config/ekf_localizer.param.yaml]
      • input_initial_pose_name [default: initialpose3d]
      • input_trigger_node_service_name [default: trigger_node]
      • input_pose_with_cov_name [default: in_pose_with_covariance]
      • input_twist_with_cov_name [default: in_twist_with_covariance]
      • output_odom_name [default: ekf_odom]
      • output_pose_name [default: ekf_pose]
      • output_pose_with_covariance_name [default: ekf_pose_with_covariance]
      • output_biased_pose_name [default: ekf_biased_pose]
      • output_biased_pose_with_covariance_name [default: ekf_biased_pose_with_covariance]
      • output_twist_name [default: ekf_twist]
      • output_twist_with_covariance_name [default: ekf_twist_with_covariance]
      • output_processing_time_ms [default: debug/processing_time_ms]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_ekf_localizer at Robotics Stack Exchange

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

autoware_ekf_localizer package from autoware_core repo

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

ROS Distro
humble

Package Summary

Tags No category tags.
Version 1.1.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 2025-06-12
Dev Status DEVELOPED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The autoware_ekf_localizer package

Additional Links

No additional links.

Maintainers

  • Takamasa Horibe
  • Yamato Ando
  • Takeshi Ishita
  • Masahiro Sakamoto
  • Kento Yabuuchi
  • NGUYEN Viet Anh
  • Taiki Yamada
  • Shintaro Sakoda
  • Ryu Yamamoto

Authors

  • Takamasa Horibe

Overview

The Extend Kalman Filter Localizer estimates robust and less noisy robot pose and twist by integrating the 2D vehicle dynamics model with input ego-pose and ego-twist messages. The algorithm is designed especially for fast-moving robots such as autonomous driving systems.

Flowchart

The overall flowchart of the autoware_ekf_localizer is described below.

Features

This package includes the following features:

  • Time delay compensation for input messages, which enables proper integration of input information with varying time delays. This is important especially for high-speed moving robots, such as autonomous driving vehicles. (see the following figure).
  • Automatic estimation of yaw bias prevents modeling errors caused by sensor mounting angle errors, which can improve estimation accuracy.
  • Mahalanobis distance gate enables probabilistic outlier detection to determine which inputs should be used or ignored.
  • Smooth update, the Kalman Filter measurement update is typically performed when a measurement is obtained, but it can cause large changes in the estimated value, especially for low-frequency measurements. Since the algorithm can consider the measurement time, the measurement data can be divided into multiple pieces and integrated smoothly while maintaining consistency (see the following figure).
  • Calculation of vertical correction amount from pitch mitigates localization instability on slopes. For example, when going uphill, it behaves as if it is buried in the ground (see the left side of the “Calculate delta from pitch” figure) because EKF only considers 3DoF(x,y,yaw). Therefore, EKF corrects the z-coordinate according to the formula (see the right side of the “Calculate delta from pitch” figure).

Node

Subscribed Topics

Name Type Description
measured_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Input pose source with the measurement covariance matrix.
measured_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped Input twist source with the measurement covariance matrix.
initialpose geometry_msgs::msg::PoseWithCovarianceStamped Initial pose for EKF. The estimated pose is initialized with zeros at the start. It is initialized with this message whenever published.

Published Topics

Name Type Description
ekf_odom nav_msgs::msg::Odometry Estimated odometry.
ekf_pose geometry_msgs::msg::PoseStamped Estimated pose.
ekf_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance.
ekf_biased_pose geometry_msgs::msg::PoseStamped Estimated pose including the yaw bias
ekf_biased_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance including the yaw bias
ekf_twist geometry_msgs::msg::TwistStamped Estimated twist.
ekf_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped The estimated twist with covariance.
diagnostics diagnostics_msgs::msg::DiagnosticArray The diagnostic information.
debug/processing_time_ms autoware_internal_debug_msgs::msg::Float64Stamped The processing time [ms].

Published TF

  • base_link TF from map coordinate to estimated pose.

Functions

Predict

The current robot state is predicted from previously estimated data using a given prediction model. This calculation is called at a constant interval (predict_frequency [Hz]). The prediction equation is described at the end of this page.

Measurement Update

Before the update, the Mahalanobis distance is calculated between the measured input and the predicted state, the measurement update is not performed for inputs where the Mahalanobis distance exceeds the given threshold.

The predicted state is updated with the latest measured inputs, measured_pose, and measured_twist. The updates are performed with the same frequency as prediction, usually at a high frequency, in order to enable smooth state estimation.

Parameter description

The parameters are set in launch/ekf_localizer.launch .

For Node

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/node.sub_schema.json”) }}

For pose measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/pose_measurement.sub_schema.json”) }}

For twist measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/twist_measurement.sub_schema.json”) }}

For process noise

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/process_noise.sub_schema.json”) }}

note: process noise for positions x & y are calculated automatically from nonlinear dynamics.

Simple 1D Filter Parameters

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/simple_1d_filter_parameters.sub_schema.json”) }}

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_ekf_localizer

1.1.0 (2025-05-01)

1.0.0 (2025-03-31)

0.3.0 (2025-03-21)

  • chore: fix versions in package.xml
  • chore(ekf_localizer): increase z_filter_proc_dev for large gradient road (#211) increase z_filter_proc_dev Co-authored-by: SakodaShintaro <<shintaro.sakoda@tier4.jp>>
  • feat(autoware_ekf_localizer)!: porting from universe to core 2nd (#180)
  • Contributors: Kento Yabuuchi, Motz, mitsudome-r

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/ekf_localizer.launch.xml
      • param_file [default: $(find-pkg-share autoware_ekf_localizer)/config/ekf_localizer.param.yaml]
      • input_initial_pose_name [default: initialpose3d]
      • input_trigger_node_service_name [default: trigger_node]
      • input_pose_with_cov_name [default: in_pose_with_covariance]
      • input_twist_with_cov_name [default: in_twist_with_covariance]
      • output_odom_name [default: ekf_odom]
      • output_pose_name [default: ekf_pose]
      • output_pose_with_covariance_name [default: ekf_pose_with_covariance]
      • output_biased_pose_name [default: ekf_biased_pose]
      • output_biased_pose_with_covariance_name [default: ekf_biased_pose_with_covariance]
      • output_twist_name [default: ekf_twist]
      • output_twist_with_covariance_name [default: ekf_twist_with_covariance]
      • output_processing_time_ms [default: debug/processing_time_ms]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_ekf_localizer at Robotics Stack Exchange

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

autoware_ekf_localizer package from autoware_core repo

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

ROS Distro
humble

Package Summary

Tags No category tags.
Version 1.1.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 2025-06-12
Dev Status DEVELOPED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The autoware_ekf_localizer package

Additional Links

No additional links.

Maintainers

  • Takamasa Horibe
  • Yamato Ando
  • Takeshi Ishita
  • Masahiro Sakamoto
  • Kento Yabuuchi
  • NGUYEN Viet Anh
  • Taiki Yamada
  • Shintaro Sakoda
  • Ryu Yamamoto

Authors

  • Takamasa Horibe

Overview

The Extend Kalman Filter Localizer estimates robust and less noisy robot pose and twist by integrating the 2D vehicle dynamics model with input ego-pose and ego-twist messages. The algorithm is designed especially for fast-moving robots such as autonomous driving systems.

Flowchart

The overall flowchart of the autoware_ekf_localizer is described below.

Features

This package includes the following features:

  • Time delay compensation for input messages, which enables proper integration of input information with varying time delays. This is important especially for high-speed moving robots, such as autonomous driving vehicles. (see the following figure).
  • Automatic estimation of yaw bias prevents modeling errors caused by sensor mounting angle errors, which can improve estimation accuracy.
  • Mahalanobis distance gate enables probabilistic outlier detection to determine which inputs should be used or ignored.
  • Smooth update, the Kalman Filter measurement update is typically performed when a measurement is obtained, but it can cause large changes in the estimated value, especially for low-frequency measurements. Since the algorithm can consider the measurement time, the measurement data can be divided into multiple pieces and integrated smoothly while maintaining consistency (see the following figure).
  • Calculation of vertical correction amount from pitch mitigates localization instability on slopes. For example, when going uphill, it behaves as if it is buried in the ground (see the left side of the “Calculate delta from pitch” figure) because EKF only considers 3DoF(x,y,yaw). Therefore, EKF corrects the z-coordinate according to the formula (see the right side of the “Calculate delta from pitch” figure).

Node

Subscribed Topics

Name Type Description
measured_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Input pose source with the measurement covariance matrix.
measured_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped Input twist source with the measurement covariance matrix.
initialpose geometry_msgs::msg::PoseWithCovarianceStamped Initial pose for EKF. The estimated pose is initialized with zeros at the start. It is initialized with this message whenever published.

Published Topics

Name Type Description
ekf_odom nav_msgs::msg::Odometry Estimated odometry.
ekf_pose geometry_msgs::msg::PoseStamped Estimated pose.
ekf_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance.
ekf_biased_pose geometry_msgs::msg::PoseStamped Estimated pose including the yaw bias
ekf_biased_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance including the yaw bias
ekf_twist geometry_msgs::msg::TwistStamped Estimated twist.
ekf_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped The estimated twist with covariance.
diagnostics diagnostics_msgs::msg::DiagnosticArray The diagnostic information.
debug/processing_time_ms autoware_internal_debug_msgs::msg::Float64Stamped The processing time [ms].

Published TF

  • base_link TF from map coordinate to estimated pose.

Functions

Predict

The current robot state is predicted from previously estimated data using a given prediction model. This calculation is called at a constant interval (predict_frequency [Hz]). The prediction equation is described at the end of this page.

Measurement Update

Before the update, the Mahalanobis distance is calculated between the measured input and the predicted state, the measurement update is not performed for inputs where the Mahalanobis distance exceeds the given threshold.

The predicted state is updated with the latest measured inputs, measured_pose, and measured_twist. The updates are performed with the same frequency as prediction, usually at a high frequency, in order to enable smooth state estimation.

Parameter description

The parameters are set in launch/ekf_localizer.launch .

For Node

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/node.sub_schema.json”) }}

For pose measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/pose_measurement.sub_schema.json”) }}

For twist measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/twist_measurement.sub_schema.json”) }}

For process noise

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/process_noise.sub_schema.json”) }}

note: process noise for positions x & y are calculated automatically from nonlinear dynamics.

Simple 1D Filter Parameters

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/simple_1d_filter_parameters.sub_schema.json”) }}

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_ekf_localizer

1.1.0 (2025-05-01)

1.0.0 (2025-03-31)

0.3.0 (2025-03-21)

  • chore: fix versions in package.xml
  • chore(ekf_localizer): increase z_filter_proc_dev for large gradient road (#211) increase z_filter_proc_dev Co-authored-by: SakodaShintaro <<shintaro.sakoda@tier4.jp>>
  • feat(autoware_ekf_localizer)!: porting from universe to core 2nd (#180)
  • Contributors: Kento Yabuuchi, Motz, mitsudome-r

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/ekf_localizer.launch.xml
      • param_file [default: $(find-pkg-share autoware_ekf_localizer)/config/ekf_localizer.param.yaml]
      • input_initial_pose_name [default: initialpose3d]
      • input_trigger_node_service_name [default: trigger_node]
      • input_pose_with_cov_name [default: in_pose_with_covariance]
      • input_twist_with_cov_name [default: in_twist_with_covariance]
      • output_odom_name [default: ekf_odom]
      • output_pose_name [default: ekf_pose]
      • output_pose_with_covariance_name [default: ekf_pose_with_covariance]
      • output_biased_pose_name [default: ekf_biased_pose]
      • output_biased_pose_with_covariance_name [default: ekf_biased_pose_with_covariance]
      • output_twist_name [default: ekf_twist]
      • output_twist_with_covariance_name [default: ekf_twist_with_covariance]
      • output_processing_time_ms [default: debug/processing_time_ms]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_ekf_localizer at Robotics Stack Exchange

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

autoware_ekf_localizer package from autoware_core repo

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

ROS Distro
humble

Package Summary

Tags No category tags.
Version 1.1.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 2025-06-12
Dev Status DEVELOPED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The autoware_ekf_localizer package

Additional Links

No additional links.

Maintainers

  • Takamasa Horibe
  • Yamato Ando
  • Takeshi Ishita
  • Masahiro Sakamoto
  • Kento Yabuuchi
  • NGUYEN Viet Anh
  • Taiki Yamada
  • Shintaro Sakoda
  • Ryu Yamamoto

Authors

  • Takamasa Horibe

Overview

The Extend Kalman Filter Localizer estimates robust and less noisy robot pose and twist by integrating the 2D vehicle dynamics model with input ego-pose and ego-twist messages. The algorithm is designed especially for fast-moving robots such as autonomous driving systems.

Flowchart

The overall flowchart of the autoware_ekf_localizer is described below.

Features

This package includes the following features:

  • Time delay compensation for input messages, which enables proper integration of input information with varying time delays. This is important especially for high-speed moving robots, such as autonomous driving vehicles. (see the following figure).
  • Automatic estimation of yaw bias prevents modeling errors caused by sensor mounting angle errors, which can improve estimation accuracy.
  • Mahalanobis distance gate enables probabilistic outlier detection to determine which inputs should be used or ignored.
  • Smooth update, the Kalman Filter measurement update is typically performed when a measurement is obtained, but it can cause large changes in the estimated value, especially for low-frequency measurements. Since the algorithm can consider the measurement time, the measurement data can be divided into multiple pieces and integrated smoothly while maintaining consistency (see the following figure).
  • Calculation of vertical correction amount from pitch mitigates localization instability on slopes. For example, when going uphill, it behaves as if it is buried in the ground (see the left side of the “Calculate delta from pitch” figure) because EKF only considers 3DoF(x,y,yaw). Therefore, EKF corrects the z-coordinate according to the formula (see the right side of the “Calculate delta from pitch” figure).

Node

Subscribed Topics

Name Type Description
measured_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Input pose source with the measurement covariance matrix.
measured_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped Input twist source with the measurement covariance matrix.
initialpose geometry_msgs::msg::PoseWithCovarianceStamped Initial pose for EKF. The estimated pose is initialized with zeros at the start. It is initialized with this message whenever published.

Published Topics

Name Type Description
ekf_odom nav_msgs::msg::Odometry Estimated odometry.
ekf_pose geometry_msgs::msg::PoseStamped Estimated pose.
ekf_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance.
ekf_biased_pose geometry_msgs::msg::PoseStamped Estimated pose including the yaw bias
ekf_biased_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance including the yaw bias
ekf_twist geometry_msgs::msg::TwistStamped Estimated twist.
ekf_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped The estimated twist with covariance.
diagnostics diagnostics_msgs::msg::DiagnosticArray The diagnostic information.
debug/processing_time_ms autoware_internal_debug_msgs::msg::Float64Stamped The processing time [ms].

Published TF

  • base_link TF from map coordinate to estimated pose.

Functions

Predict

The current robot state is predicted from previously estimated data using a given prediction model. This calculation is called at a constant interval (predict_frequency [Hz]). The prediction equation is described at the end of this page.

Measurement Update

Before the update, the Mahalanobis distance is calculated between the measured input and the predicted state, the measurement update is not performed for inputs where the Mahalanobis distance exceeds the given threshold.

The predicted state is updated with the latest measured inputs, measured_pose, and measured_twist. The updates are performed with the same frequency as prediction, usually at a high frequency, in order to enable smooth state estimation.

Parameter description

The parameters are set in launch/ekf_localizer.launch .

For Node

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/node.sub_schema.json”) }}

For pose measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/pose_measurement.sub_schema.json”) }}

For twist measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/twist_measurement.sub_schema.json”) }}

For process noise

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/process_noise.sub_schema.json”) }}

note: process noise for positions x & y are calculated automatically from nonlinear dynamics.

Simple 1D Filter Parameters

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/simple_1d_filter_parameters.sub_schema.json”) }}

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_ekf_localizer

1.1.0 (2025-05-01)

1.0.0 (2025-03-31)

0.3.0 (2025-03-21)

  • chore: fix versions in package.xml
  • chore(ekf_localizer): increase z_filter_proc_dev for large gradient road (#211) increase z_filter_proc_dev Co-authored-by: SakodaShintaro <<shintaro.sakoda@tier4.jp>>
  • feat(autoware_ekf_localizer)!: porting from universe to core 2nd (#180)
  • Contributors: Kento Yabuuchi, Motz, mitsudome-r

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/ekf_localizer.launch.xml
      • param_file [default: $(find-pkg-share autoware_ekf_localizer)/config/ekf_localizer.param.yaml]
      • input_initial_pose_name [default: initialpose3d]
      • input_trigger_node_service_name [default: trigger_node]
      • input_pose_with_cov_name [default: in_pose_with_covariance]
      • input_twist_with_cov_name [default: in_twist_with_covariance]
      • output_odom_name [default: ekf_odom]
      • output_pose_name [default: ekf_pose]
      • output_pose_with_covariance_name [default: ekf_pose_with_covariance]
      • output_biased_pose_name [default: ekf_biased_pose]
      • output_biased_pose_with_covariance_name [default: ekf_biased_pose_with_covariance]
      • output_twist_name [default: ekf_twist]
      • output_twist_with_covariance_name [default: ekf_twist_with_covariance]
      • output_processing_time_ms [default: debug/processing_time_ms]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_ekf_localizer at Robotics Stack Exchange

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

autoware_ekf_localizer package from autoware_core repo

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

ROS Distro
humble

Package Summary

Tags No category tags.
Version 1.1.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 2025-06-12
Dev Status DEVELOPED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The autoware_ekf_localizer package

Additional Links

No additional links.

Maintainers

  • Takamasa Horibe
  • Yamato Ando
  • Takeshi Ishita
  • Masahiro Sakamoto
  • Kento Yabuuchi
  • NGUYEN Viet Anh
  • Taiki Yamada
  • Shintaro Sakoda
  • Ryu Yamamoto

Authors

  • Takamasa Horibe

Overview

The Extend Kalman Filter Localizer estimates robust and less noisy robot pose and twist by integrating the 2D vehicle dynamics model with input ego-pose and ego-twist messages. The algorithm is designed especially for fast-moving robots such as autonomous driving systems.

Flowchart

The overall flowchart of the autoware_ekf_localizer is described below.

Features

This package includes the following features:

  • Time delay compensation for input messages, which enables proper integration of input information with varying time delays. This is important especially for high-speed moving robots, such as autonomous driving vehicles. (see the following figure).
  • Automatic estimation of yaw bias prevents modeling errors caused by sensor mounting angle errors, which can improve estimation accuracy.
  • Mahalanobis distance gate enables probabilistic outlier detection to determine which inputs should be used or ignored.
  • Smooth update, the Kalman Filter measurement update is typically performed when a measurement is obtained, but it can cause large changes in the estimated value, especially for low-frequency measurements. Since the algorithm can consider the measurement time, the measurement data can be divided into multiple pieces and integrated smoothly while maintaining consistency (see the following figure).
  • Calculation of vertical correction amount from pitch mitigates localization instability on slopes. For example, when going uphill, it behaves as if it is buried in the ground (see the left side of the “Calculate delta from pitch” figure) because EKF only considers 3DoF(x,y,yaw). Therefore, EKF corrects the z-coordinate according to the formula (see the right side of the “Calculate delta from pitch” figure).

Node

Subscribed Topics

Name Type Description
measured_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Input pose source with the measurement covariance matrix.
measured_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped Input twist source with the measurement covariance matrix.
initialpose geometry_msgs::msg::PoseWithCovarianceStamped Initial pose for EKF. The estimated pose is initialized with zeros at the start. It is initialized with this message whenever published.

Published Topics

Name Type Description
ekf_odom nav_msgs::msg::Odometry Estimated odometry.
ekf_pose geometry_msgs::msg::PoseStamped Estimated pose.
ekf_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance.
ekf_biased_pose geometry_msgs::msg::PoseStamped Estimated pose including the yaw bias
ekf_biased_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance including the yaw bias
ekf_twist geometry_msgs::msg::TwistStamped Estimated twist.
ekf_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped The estimated twist with covariance.
diagnostics diagnostics_msgs::msg::DiagnosticArray The diagnostic information.
debug/processing_time_ms autoware_internal_debug_msgs::msg::Float64Stamped The processing time [ms].

Published TF

  • base_link TF from map coordinate to estimated pose.

Functions

Predict

The current robot state is predicted from previously estimated data using a given prediction model. This calculation is called at a constant interval (predict_frequency [Hz]). The prediction equation is described at the end of this page.

Measurement Update

Before the update, the Mahalanobis distance is calculated between the measured input and the predicted state, the measurement update is not performed for inputs where the Mahalanobis distance exceeds the given threshold.

The predicted state is updated with the latest measured inputs, measured_pose, and measured_twist. The updates are performed with the same frequency as prediction, usually at a high frequency, in order to enable smooth state estimation.

Parameter description

The parameters are set in launch/ekf_localizer.launch .

For Node

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/node.sub_schema.json”) }}

For pose measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/pose_measurement.sub_schema.json”) }}

For twist measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/twist_measurement.sub_schema.json”) }}

For process noise

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/process_noise.sub_schema.json”) }}

note: process noise for positions x & y are calculated automatically from nonlinear dynamics.

Simple 1D Filter Parameters

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/simple_1d_filter_parameters.sub_schema.json”) }}

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_ekf_localizer

1.1.0 (2025-05-01)

1.0.0 (2025-03-31)

0.3.0 (2025-03-21)

  • chore: fix versions in package.xml
  • chore(ekf_localizer): increase z_filter_proc_dev for large gradient road (#211) increase z_filter_proc_dev Co-authored-by: SakodaShintaro <<shintaro.sakoda@tier4.jp>>
  • feat(autoware_ekf_localizer)!: porting from universe to core 2nd (#180)
  • Contributors: Kento Yabuuchi, Motz, mitsudome-r

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/ekf_localizer.launch.xml
      • param_file [default: $(find-pkg-share autoware_ekf_localizer)/config/ekf_localizer.param.yaml]
      • input_initial_pose_name [default: initialpose3d]
      • input_trigger_node_service_name [default: trigger_node]
      • input_pose_with_cov_name [default: in_pose_with_covariance]
      • input_twist_with_cov_name [default: in_twist_with_covariance]
      • output_odom_name [default: ekf_odom]
      • output_pose_name [default: ekf_pose]
      • output_pose_with_covariance_name [default: ekf_pose_with_covariance]
      • output_biased_pose_name [default: ekf_biased_pose]
      • output_biased_pose_with_covariance_name [default: ekf_biased_pose_with_covariance]
      • output_twist_name [default: ekf_twist]
      • output_twist_with_covariance_name [default: ekf_twist_with_covariance]
      • output_processing_time_ms [default: debug/processing_time_ms]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_ekf_localizer at Robotics Stack Exchange

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

autoware_ekf_localizer package from autoware_core repo

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

ROS Distro
humble

Package Summary

Tags No category tags.
Version 1.1.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 2025-06-12
Dev Status DEVELOPED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The autoware_ekf_localizer package

Additional Links

No additional links.

Maintainers

  • Takamasa Horibe
  • Yamato Ando
  • Takeshi Ishita
  • Masahiro Sakamoto
  • Kento Yabuuchi
  • NGUYEN Viet Anh
  • Taiki Yamada
  • Shintaro Sakoda
  • Ryu Yamamoto

Authors

  • Takamasa Horibe

Overview

The Extend Kalman Filter Localizer estimates robust and less noisy robot pose and twist by integrating the 2D vehicle dynamics model with input ego-pose and ego-twist messages. The algorithm is designed especially for fast-moving robots such as autonomous driving systems.

Flowchart

The overall flowchart of the autoware_ekf_localizer is described below.

Features

This package includes the following features:

  • Time delay compensation for input messages, which enables proper integration of input information with varying time delays. This is important especially for high-speed moving robots, such as autonomous driving vehicles. (see the following figure).
  • Automatic estimation of yaw bias prevents modeling errors caused by sensor mounting angle errors, which can improve estimation accuracy.
  • Mahalanobis distance gate enables probabilistic outlier detection to determine which inputs should be used or ignored.
  • Smooth update, the Kalman Filter measurement update is typically performed when a measurement is obtained, but it can cause large changes in the estimated value, especially for low-frequency measurements. Since the algorithm can consider the measurement time, the measurement data can be divided into multiple pieces and integrated smoothly while maintaining consistency (see the following figure).
  • Calculation of vertical correction amount from pitch mitigates localization instability on slopes. For example, when going uphill, it behaves as if it is buried in the ground (see the left side of the “Calculate delta from pitch” figure) because EKF only considers 3DoF(x,y,yaw). Therefore, EKF corrects the z-coordinate according to the formula (see the right side of the “Calculate delta from pitch” figure).

Node

Subscribed Topics

Name Type Description
measured_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Input pose source with the measurement covariance matrix.
measured_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped Input twist source with the measurement covariance matrix.
initialpose geometry_msgs::msg::PoseWithCovarianceStamped Initial pose for EKF. The estimated pose is initialized with zeros at the start. It is initialized with this message whenever published.

Published Topics

Name Type Description
ekf_odom nav_msgs::msg::Odometry Estimated odometry.
ekf_pose geometry_msgs::msg::PoseStamped Estimated pose.
ekf_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance.
ekf_biased_pose geometry_msgs::msg::PoseStamped Estimated pose including the yaw bias
ekf_biased_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance including the yaw bias
ekf_twist geometry_msgs::msg::TwistStamped Estimated twist.
ekf_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped The estimated twist with covariance.
diagnostics diagnostics_msgs::msg::DiagnosticArray The diagnostic information.
debug/processing_time_ms autoware_internal_debug_msgs::msg::Float64Stamped The processing time [ms].

Published TF

  • base_link TF from map coordinate to estimated pose.

Functions

Predict

The current robot state is predicted from previously estimated data using a given prediction model. This calculation is called at a constant interval (predict_frequency [Hz]). The prediction equation is described at the end of this page.

Measurement Update

Before the update, the Mahalanobis distance is calculated between the measured input and the predicted state, the measurement update is not performed for inputs where the Mahalanobis distance exceeds the given threshold.

The predicted state is updated with the latest measured inputs, measured_pose, and measured_twist. The updates are performed with the same frequency as prediction, usually at a high frequency, in order to enable smooth state estimation.

Parameter description

The parameters are set in launch/ekf_localizer.launch .

For Node

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/node.sub_schema.json”) }}

For pose measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/pose_measurement.sub_schema.json”) }}

For twist measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/twist_measurement.sub_schema.json”) }}

For process noise

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/process_noise.sub_schema.json”) }}

note: process noise for positions x & y are calculated automatically from nonlinear dynamics.

Simple 1D Filter Parameters

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/simple_1d_filter_parameters.sub_schema.json”) }}

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_ekf_localizer

1.1.0 (2025-05-01)

1.0.0 (2025-03-31)

0.3.0 (2025-03-21)

  • chore: fix versions in package.xml
  • chore(ekf_localizer): increase z_filter_proc_dev for large gradient road (#211) increase z_filter_proc_dev Co-authored-by: SakodaShintaro <<shintaro.sakoda@tier4.jp>>
  • feat(autoware_ekf_localizer)!: porting from universe to core 2nd (#180)
  • Contributors: Kento Yabuuchi, Motz, mitsudome-r

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/ekf_localizer.launch.xml
      • param_file [default: $(find-pkg-share autoware_ekf_localizer)/config/ekf_localizer.param.yaml]
      • input_initial_pose_name [default: initialpose3d]
      • input_trigger_node_service_name [default: trigger_node]
      • input_pose_with_cov_name [default: in_pose_with_covariance]
      • input_twist_with_cov_name [default: in_twist_with_covariance]
      • output_odom_name [default: ekf_odom]
      • output_pose_name [default: ekf_pose]
      • output_pose_with_covariance_name [default: ekf_pose_with_covariance]
      • output_biased_pose_name [default: ekf_biased_pose]
      • output_biased_pose_with_covariance_name [default: ekf_biased_pose_with_covariance]
      • output_twist_name [default: ekf_twist]
      • output_twist_with_covariance_name [default: ekf_twist_with_covariance]
      • output_processing_time_ms [default: debug/processing_time_ms]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_ekf_localizer at Robotics Stack Exchange

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

autoware_ekf_localizer package from autoware_core repo

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

ROS Distro
humble

Package Summary

Tags No category tags.
Version 1.1.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 2025-06-12
Dev Status DEVELOPED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The autoware_ekf_localizer package

Additional Links

No additional links.

Maintainers

  • Takamasa Horibe
  • Yamato Ando
  • Takeshi Ishita
  • Masahiro Sakamoto
  • Kento Yabuuchi
  • NGUYEN Viet Anh
  • Taiki Yamada
  • Shintaro Sakoda
  • Ryu Yamamoto

Authors

  • Takamasa Horibe

Overview

The Extend Kalman Filter Localizer estimates robust and less noisy robot pose and twist by integrating the 2D vehicle dynamics model with input ego-pose and ego-twist messages. The algorithm is designed especially for fast-moving robots such as autonomous driving systems.

Flowchart

The overall flowchart of the autoware_ekf_localizer is described below.

Features

This package includes the following features:

  • Time delay compensation for input messages, which enables proper integration of input information with varying time delays. This is important especially for high-speed moving robots, such as autonomous driving vehicles. (see the following figure).
  • Automatic estimation of yaw bias prevents modeling errors caused by sensor mounting angle errors, which can improve estimation accuracy.
  • Mahalanobis distance gate enables probabilistic outlier detection to determine which inputs should be used or ignored.
  • Smooth update, the Kalman Filter measurement update is typically performed when a measurement is obtained, but it can cause large changes in the estimated value, especially for low-frequency measurements. Since the algorithm can consider the measurement time, the measurement data can be divided into multiple pieces and integrated smoothly while maintaining consistency (see the following figure).
  • Calculation of vertical correction amount from pitch mitigates localization instability on slopes. For example, when going uphill, it behaves as if it is buried in the ground (see the left side of the “Calculate delta from pitch” figure) because EKF only considers 3DoF(x,y,yaw). Therefore, EKF corrects the z-coordinate according to the formula (see the right side of the “Calculate delta from pitch” figure).

Node

Subscribed Topics

Name Type Description
measured_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Input pose source with the measurement covariance matrix.
measured_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped Input twist source with the measurement covariance matrix.
initialpose geometry_msgs::msg::PoseWithCovarianceStamped Initial pose for EKF. The estimated pose is initialized with zeros at the start. It is initialized with this message whenever published.

Published Topics

Name Type Description
ekf_odom nav_msgs::msg::Odometry Estimated odometry.
ekf_pose geometry_msgs::msg::PoseStamped Estimated pose.
ekf_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance.
ekf_biased_pose geometry_msgs::msg::PoseStamped Estimated pose including the yaw bias
ekf_biased_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance including the yaw bias
ekf_twist geometry_msgs::msg::TwistStamped Estimated twist.
ekf_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped The estimated twist with covariance.
diagnostics diagnostics_msgs::msg::DiagnosticArray The diagnostic information.
debug/processing_time_ms autoware_internal_debug_msgs::msg::Float64Stamped The processing time [ms].

Published TF

  • base_link TF from map coordinate to estimated pose.

Functions

Predict

The current robot state is predicted from previously estimated data using a given prediction model. This calculation is called at a constant interval (predict_frequency [Hz]). The prediction equation is described at the end of this page.

Measurement Update

Before the update, the Mahalanobis distance is calculated between the measured input and the predicted state, the measurement update is not performed for inputs where the Mahalanobis distance exceeds the given threshold.

The predicted state is updated with the latest measured inputs, measured_pose, and measured_twist. The updates are performed with the same frequency as prediction, usually at a high frequency, in order to enable smooth state estimation.

Parameter description

The parameters are set in launch/ekf_localizer.launch .

For Node

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/node.sub_schema.json”) }}

For pose measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/pose_measurement.sub_schema.json”) }}

For twist measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/twist_measurement.sub_schema.json”) }}

For process noise

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/process_noise.sub_schema.json”) }}

note: process noise for positions x & y are calculated automatically from nonlinear dynamics.

Simple 1D Filter Parameters

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/simple_1d_filter_parameters.sub_schema.json”) }}

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_ekf_localizer

1.1.0 (2025-05-01)

1.0.0 (2025-03-31)

0.3.0 (2025-03-21)

  • chore: fix versions in package.xml
  • chore(ekf_localizer): increase z_filter_proc_dev for large gradient road (#211) increase z_filter_proc_dev Co-authored-by: SakodaShintaro <<shintaro.sakoda@tier4.jp>>
  • feat(autoware_ekf_localizer)!: porting from universe to core 2nd (#180)
  • Contributors: Kento Yabuuchi, Motz, mitsudome-r

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/ekf_localizer.launch.xml
      • param_file [default: $(find-pkg-share autoware_ekf_localizer)/config/ekf_localizer.param.yaml]
      • input_initial_pose_name [default: initialpose3d]
      • input_trigger_node_service_name [default: trigger_node]
      • input_pose_with_cov_name [default: in_pose_with_covariance]
      • input_twist_with_cov_name [default: in_twist_with_covariance]
      • output_odom_name [default: ekf_odom]
      • output_pose_name [default: ekf_pose]
      • output_pose_with_covariance_name [default: ekf_pose_with_covariance]
      • output_biased_pose_name [default: ekf_biased_pose]
      • output_biased_pose_with_covariance_name [default: ekf_biased_pose_with_covariance]
      • output_twist_name [default: ekf_twist]
      • output_twist_with_covariance_name [default: ekf_twist_with_covariance]
      • output_processing_time_ms [default: debug/processing_time_ms]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_ekf_localizer at Robotics Stack Exchange

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

autoware_ekf_localizer package from autoware_core repo

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

ROS Distro
humble

Package Summary

Tags No category tags.
Version 1.1.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 2025-06-12
Dev Status DEVELOPED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The autoware_ekf_localizer package

Additional Links

No additional links.

Maintainers

  • Takamasa Horibe
  • Yamato Ando
  • Takeshi Ishita
  • Masahiro Sakamoto
  • Kento Yabuuchi
  • NGUYEN Viet Anh
  • Taiki Yamada
  • Shintaro Sakoda
  • Ryu Yamamoto

Authors

  • Takamasa Horibe

Overview

The Extend Kalman Filter Localizer estimates robust and less noisy robot pose and twist by integrating the 2D vehicle dynamics model with input ego-pose and ego-twist messages. The algorithm is designed especially for fast-moving robots such as autonomous driving systems.

Flowchart

The overall flowchart of the autoware_ekf_localizer is described below.

Features

This package includes the following features:

  • Time delay compensation for input messages, which enables proper integration of input information with varying time delays. This is important especially for high-speed moving robots, such as autonomous driving vehicles. (see the following figure).
  • Automatic estimation of yaw bias prevents modeling errors caused by sensor mounting angle errors, which can improve estimation accuracy.
  • Mahalanobis distance gate enables probabilistic outlier detection to determine which inputs should be used or ignored.
  • Smooth update, the Kalman Filter measurement update is typically performed when a measurement is obtained, but it can cause large changes in the estimated value, especially for low-frequency measurements. Since the algorithm can consider the measurement time, the measurement data can be divided into multiple pieces and integrated smoothly while maintaining consistency (see the following figure).
  • Calculation of vertical correction amount from pitch mitigates localization instability on slopes. For example, when going uphill, it behaves as if it is buried in the ground (see the left side of the “Calculate delta from pitch” figure) because EKF only considers 3DoF(x,y,yaw). Therefore, EKF corrects the z-coordinate according to the formula (see the right side of the “Calculate delta from pitch” figure).

Node

Subscribed Topics

Name Type Description
measured_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Input pose source with the measurement covariance matrix.
measured_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped Input twist source with the measurement covariance matrix.
initialpose geometry_msgs::msg::PoseWithCovarianceStamped Initial pose for EKF. The estimated pose is initialized with zeros at the start. It is initialized with this message whenever published.

Published Topics

Name Type Description
ekf_odom nav_msgs::msg::Odometry Estimated odometry.
ekf_pose geometry_msgs::msg::PoseStamped Estimated pose.
ekf_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance.
ekf_biased_pose geometry_msgs::msg::PoseStamped Estimated pose including the yaw bias
ekf_biased_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance including the yaw bias
ekf_twist geometry_msgs::msg::TwistStamped Estimated twist.
ekf_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped The estimated twist with covariance.
diagnostics diagnostics_msgs::msg::DiagnosticArray The diagnostic information.
debug/processing_time_ms autoware_internal_debug_msgs::msg::Float64Stamped The processing time [ms].

Published TF

  • base_link TF from map coordinate to estimated pose.

Functions

Predict

The current robot state is predicted from previously estimated data using a given prediction model. This calculation is called at a constant interval (predict_frequency [Hz]). The prediction equation is described at the end of this page.

Measurement Update

Before the update, the Mahalanobis distance is calculated between the measured input and the predicted state, the measurement update is not performed for inputs where the Mahalanobis distance exceeds the given threshold.

The predicted state is updated with the latest measured inputs, measured_pose, and measured_twist. The updates are performed with the same frequency as prediction, usually at a high frequency, in order to enable smooth state estimation.

Parameter description

The parameters are set in launch/ekf_localizer.launch .

For Node

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/node.sub_schema.json”) }}

For pose measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/pose_measurement.sub_schema.json”) }}

For twist measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/twist_measurement.sub_schema.json”) }}

For process noise

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/process_noise.sub_schema.json”) }}

note: process noise for positions x & y are calculated automatically from nonlinear dynamics.

Simple 1D Filter Parameters

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/simple_1d_filter_parameters.sub_schema.json”) }}

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_ekf_localizer

1.1.0 (2025-05-01)

1.0.0 (2025-03-31)

0.3.0 (2025-03-21)

  • chore: fix versions in package.xml
  • chore(ekf_localizer): increase z_filter_proc_dev for large gradient road (#211) increase z_filter_proc_dev Co-authored-by: SakodaShintaro <<shintaro.sakoda@tier4.jp>>
  • feat(autoware_ekf_localizer)!: porting from universe to core 2nd (#180)
  • Contributors: Kento Yabuuchi, Motz, mitsudome-r

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/ekf_localizer.launch.xml
      • param_file [default: $(find-pkg-share autoware_ekf_localizer)/config/ekf_localizer.param.yaml]
      • input_initial_pose_name [default: initialpose3d]
      • input_trigger_node_service_name [default: trigger_node]
      • input_pose_with_cov_name [default: in_pose_with_covariance]
      • input_twist_with_cov_name [default: in_twist_with_covariance]
      • output_odom_name [default: ekf_odom]
      • output_pose_name [default: ekf_pose]
      • output_pose_with_covariance_name [default: ekf_pose_with_covariance]
      • output_biased_pose_name [default: ekf_biased_pose]
      • output_biased_pose_with_covariance_name [default: ekf_biased_pose_with_covariance]
      • output_twist_name [default: ekf_twist]
      • output_twist_with_covariance_name [default: ekf_twist_with_covariance]
      • output_processing_time_ms [default: debug/processing_time_ms]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_ekf_localizer at Robotics Stack Exchange

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

autoware_ekf_localizer package from autoware_core repo

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

ROS Distro
humble

Package Summary

Tags No category tags.
Version 1.1.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 2025-06-12
Dev Status DEVELOPED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The autoware_ekf_localizer package

Additional Links

No additional links.

Maintainers

  • Takamasa Horibe
  • Yamato Ando
  • Takeshi Ishita
  • Masahiro Sakamoto
  • Kento Yabuuchi
  • NGUYEN Viet Anh
  • Taiki Yamada
  • Shintaro Sakoda
  • Ryu Yamamoto

Authors

  • Takamasa Horibe

Overview

The Extend Kalman Filter Localizer estimates robust and less noisy robot pose and twist by integrating the 2D vehicle dynamics model with input ego-pose and ego-twist messages. The algorithm is designed especially for fast-moving robots such as autonomous driving systems.

Flowchart

The overall flowchart of the autoware_ekf_localizer is described below.

Features

This package includes the following features:

  • Time delay compensation for input messages, which enables proper integration of input information with varying time delays. This is important especially for high-speed moving robots, such as autonomous driving vehicles. (see the following figure).
  • Automatic estimation of yaw bias prevents modeling errors caused by sensor mounting angle errors, which can improve estimation accuracy.
  • Mahalanobis distance gate enables probabilistic outlier detection to determine which inputs should be used or ignored.
  • Smooth update, the Kalman Filter measurement update is typically performed when a measurement is obtained, but it can cause large changes in the estimated value, especially for low-frequency measurements. Since the algorithm can consider the measurement time, the measurement data can be divided into multiple pieces and integrated smoothly while maintaining consistency (see the following figure).
  • Calculation of vertical correction amount from pitch mitigates localization instability on slopes. For example, when going uphill, it behaves as if it is buried in the ground (see the left side of the “Calculate delta from pitch” figure) because EKF only considers 3DoF(x,y,yaw). Therefore, EKF corrects the z-coordinate according to the formula (see the right side of the “Calculate delta from pitch” figure).

Node

Subscribed Topics

Name Type Description
measured_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Input pose source with the measurement covariance matrix.
measured_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped Input twist source with the measurement covariance matrix.
initialpose geometry_msgs::msg::PoseWithCovarianceStamped Initial pose for EKF. The estimated pose is initialized with zeros at the start. It is initialized with this message whenever published.

Published Topics

Name Type Description
ekf_odom nav_msgs::msg::Odometry Estimated odometry.
ekf_pose geometry_msgs::msg::PoseStamped Estimated pose.
ekf_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance.
ekf_biased_pose geometry_msgs::msg::PoseStamped Estimated pose including the yaw bias
ekf_biased_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance including the yaw bias
ekf_twist geometry_msgs::msg::TwistStamped Estimated twist.
ekf_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped The estimated twist with covariance.
diagnostics diagnostics_msgs::msg::DiagnosticArray The diagnostic information.
debug/processing_time_ms autoware_internal_debug_msgs::msg::Float64Stamped The processing time [ms].

Published TF

  • base_link TF from map coordinate to estimated pose.

Functions

Predict

The current robot state is predicted from previously estimated data using a given prediction model. This calculation is called at a constant interval (predict_frequency [Hz]). The prediction equation is described at the end of this page.

Measurement Update

Before the update, the Mahalanobis distance is calculated between the measured input and the predicted state, the measurement update is not performed for inputs where the Mahalanobis distance exceeds the given threshold.

The predicted state is updated with the latest measured inputs, measured_pose, and measured_twist. The updates are performed with the same frequency as prediction, usually at a high frequency, in order to enable smooth state estimation.

Parameter description

The parameters are set in launch/ekf_localizer.launch .

For Node

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/node.sub_schema.json”) }}

For pose measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/pose_measurement.sub_schema.json”) }}

For twist measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/twist_measurement.sub_schema.json”) }}

For process noise

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/process_noise.sub_schema.json”) }}

note: process noise for positions x & y are calculated automatically from nonlinear dynamics.

Simple 1D Filter Parameters

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/simple_1d_filter_parameters.sub_schema.json”) }}

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_ekf_localizer

1.1.0 (2025-05-01)

1.0.0 (2025-03-31)

0.3.0 (2025-03-21)

  • chore: fix versions in package.xml
  • chore(ekf_localizer): increase z_filter_proc_dev for large gradient road (#211) increase z_filter_proc_dev Co-authored-by: SakodaShintaro <<shintaro.sakoda@tier4.jp>>
  • feat(autoware_ekf_localizer)!: porting from universe to core 2nd (#180)
  • Contributors: Kento Yabuuchi, Motz, mitsudome-r

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/ekf_localizer.launch.xml
      • param_file [default: $(find-pkg-share autoware_ekf_localizer)/config/ekf_localizer.param.yaml]
      • input_initial_pose_name [default: initialpose3d]
      • input_trigger_node_service_name [default: trigger_node]
      • input_pose_with_cov_name [default: in_pose_with_covariance]
      • input_twist_with_cov_name [default: in_twist_with_covariance]
      • output_odom_name [default: ekf_odom]
      • output_pose_name [default: ekf_pose]
      • output_pose_with_covariance_name [default: ekf_pose_with_covariance]
      • output_biased_pose_name [default: ekf_biased_pose]
      • output_biased_pose_with_covariance_name [default: ekf_biased_pose_with_covariance]
      • output_twist_name [default: ekf_twist]
      • output_twist_with_covariance_name [default: ekf_twist_with_covariance]
      • output_processing_time_ms [default: debug/processing_time_ms]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_ekf_localizer at Robotics Stack Exchange

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

autoware_ekf_localizer package from autoware_core repo

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

ROS Distro
humble

Package Summary

Tags No category tags.
Version 1.1.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 2025-06-12
Dev Status DEVELOPED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The autoware_ekf_localizer package

Additional Links

No additional links.

Maintainers

  • Takamasa Horibe
  • Yamato Ando
  • Takeshi Ishita
  • Masahiro Sakamoto
  • Kento Yabuuchi
  • NGUYEN Viet Anh
  • Taiki Yamada
  • Shintaro Sakoda
  • Ryu Yamamoto

Authors

  • Takamasa Horibe

Overview

The Extend Kalman Filter Localizer estimates robust and less noisy robot pose and twist by integrating the 2D vehicle dynamics model with input ego-pose and ego-twist messages. The algorithm is designed especially for fast-moving robots such as autonomous driving systems.

Flowchart

The overall flowchart of the autoware_ekf_localizer is described below.

Features

This package includes the following features:

  • Time delay compensation for input messages, which enables proper integration of input information with varying time delays. This is important especially for high-speed moving robots, such as autonomous driving vehicles. (see the following figure).
  • Automatic estimation of yaw bias prevents modeling errors caused by sensor mounting angle errors, which can improve estimation accuracy.
  • Mahalanobis distance gate enables probabilistic outlier detection to determine which inputs should be used or ignored.
  • Smooth update, the Kalman Filter measurement update is typically performed when a measurement is obtained, but it can cause large changes in the estimated value, especially for low-frequency measurements. Since the algorithm can consider the measurement time, the measurement data can be divided into multiple pieces and integrated smoothly while maintaining consistency (see the following figure).
  • Calculation of vertical correction amount from pitch mitigates localization instability on slopes. For example, when going uphill, it behaves as if it is buried in the ground (see the left side of the “Calculate delta from pitch” figure) because EKF only considers 3DoF(x,y,yaw). Therefore, EKF corrects the z-coordinate according to the formula (see the right side of the “Calculate delta from pitch” figure).

Node

Subscribed Topics

Name Type Description
measured_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Input pose source with the measurement covariance matrix.
measured_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped Input twist source with the measurement covariance matrix.
initialpose geometry_msgs::msg::PoseWithCovarianceStamped Initial pose for EKF. The estimated pose is initialized with zeros at the start. It is initialized with this message whenever published.

Published Topics

Name Type Description
ekf_odom nav_msgs::msg::Odometry Estimated odometry.
ekf_pose geometry_msgs::msg::PoseStamped Estimated pose.
ekf_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance.
ekf_biased_pose geometry_msgs::msg::PoseStamped Estimated pose including the yaw bias
ekf_biased_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance including the yaw bias
ekf_twist geometry_msgs::msg::TwistStamped Estimated twist.
ekf_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped The estimated twist with covariance.
diagnostics diagnostics_msgs::msg::DiagnosticArray The diagnostic information.
debug/processing_time_ms autoware_internal_debug_msgs::msg::Float64Stamped The processing time [ms].

Published TF

  • base_link TF from map coordinate to estimated pose.

Functions

Predict

The current robot state is predicted from previously estimated data using a given prediction model. This calculation is called at a constant interval (predict_frequency [Hz]). The prediction equation is described at the end of this page.

Measurement Update

Before the update, the Mahalanobis distance is calculated between the measured input and the predicted state, the measurement update is not performed for inputs where the Mahalanobis distance exceeds the given threshold.

The predicted state is updated with the latest measured inputs, measured_pose, and measured_twist. The updates are performed with the same frequency as prediction, usually at a high frequency, in order to enable smooth state estimation.

Parameter description

The parameters are set in launch/ekf_localizer.launch .

For Node

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/node.sub_schema.json”) }}

For pose measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/pose_measurement.sub_schema.json”) }}

For twist measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/twist_measurement.sub_schema.json”) }}

For process noise

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/process_noise.sub_schema.json”) }}

note: process noise for positions x & y are calculated automatically from nonlinear dynamics.

Simple 1D Filter Parameters

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/simple_1d_filter_parameters.sub_schema.json”) }}

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_ekf_localizer

1.1.0 (2025-05-01)

1.0.0 (2025-03-31)

0.3.0 (2025-03-21)

  • chore: fix versions in package.xml
  • chore(ekf_localizer): increase z_filter_proc_dev for large gradient road (#211) increase z_filter_proc_dev Co-authored-by: SakodaShintaro <<shintaro.sakoda@tier4.jp>>
  • feat(autoware_ekf_localizer)!: porting from universe to core 2nd (#180)
  • Contributors: Kento Yabuuchi, Motz, mitsudome-r

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/ekf_localizer.launch.xml
      • param_file [default: $(find-pkg-share autoware_ekf_localizer)/config/ekf_localizer.param.yaml]
      • input_initial_pose_name [default: initialpose3d]
      • input_trigger_node_service_name [default: trigger_node]
      • input_pose_with_cov_name [default: in_pose_with_covariance]
      • input_twist_with_cov_name [default: in_twist_with_covariance]
      • output_odom_name [default: ekf_odom]
      • output_pose_name [default: ekf_pose]
      • output_pose_with_covariance_name [default: ekf_pose_with_covariance]
      • output_biased_pose_name [default: ekf_biased_pose]
      • output_biased_pose_with_covariance_name [default: ekf_biased_pose_with_covariance]
      • output_twist_name [default: ekf_twist]
      • output_twist_with_covariance_name [default: ekf_twist_with_covariance]
      • output_processing_time_ms [default: debug/processing_time_ms]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_ekf_localizer at Robotics Stack Exchange

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

autoware_ekf_localizer package from autoware_core repo

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

ROS Distro
humble

Package Summary

Tags No category tags.
Version 1.1.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 2025-06-12
Dev Status DEVELOPED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The autoware_ekf_localizer package

Additional Links

No additional links.

Maintainers

  • Takamasa Horibe
  • Yamato Ando
  • Takeshi Ishita
  • Masahiro Sakamoto
  • Kento Yabuuchi
  • NGUYEN Viet Anh
  • Taiki Yamada
  • Shintaro Sakoda
  • Ryu Yamamoto

Authors

  • Takamasa Horibe

Overview

The Extend Kalman Filter Localizer estimates robust and less noisy robot pose and twist by integrating the 2D vehicle dynamics model with input ego-pose and ego-twist messages. The algorithm is designed especially for fast-moving robots such as autonomous driving systems.

Flowchart

The overall flowchart of the autoware_ekf_localizer is described below.

Features

This package includes the following features:

  • Time delay compensation for input messages, which enables proper integration of input information with varying time delays. This is important especially for high-speed moving robots, such as autonomous driving vehicles. (see the following figure).
  • Automatic estimation of yaw bias prevents modeling errors caused by sensor mounting angle errors, which can improve estimation accuracy.
  • Mahalanobis distance gate enables probabilistic outlier detection to determine which inputs should be used or ignored.
  • Smooth update, the Kalman Filter measurement update is typically performed when a measurement is obtained, but it can cause large changes in the estimated value, especially for low-frequency measurements. Since the algorithm can consider the measurement time, the measurement data can be divided into multiple pieces and integrated smoothly while maintaining consistency (see the following figure).
  • Calculation of vertical correction amount from pitch mitigates localization instability on slopes. For example, when going uphill, it behaves as if it is buried in the ground (see the left side of the “Calculate delta from pitch” figure) because EKF only considers 3DoF(x,y,yaw). Therefore, EKF corrects the z-coordinate according to the formula (see the right side of the “Calculate delta from pitch” figure).

Node

Subscribed Topics

Name Type Description
measured_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Input pose source with the measurement covariance matrix.
measured_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped Input twist source with the measurement covariance matrix.
initialpose geometry_msgs::msg::PoseWithCovarianceStamped Initial pose for EKF. The estimated pose is initialized with zeros at the start. It is initialized with this message whenever published.

Published Topics

Name Type Description
ekf_odom nav_msgs::msg::Odometry Estimated odometry.
ekf_pose geometry_msgs::msg::PoseStamped Estimated pose.
ekf_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance.
ekf_biased_pose geometry_msgs::msg::PoseStamped Estimated pose including the yaw bias
ekf_biased_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance including the yaw bias
ekf_twist geometry_msgs::msg::TwistStamped Estimated twist.
ekf_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped The estimated twist with covariance.
diagnostics diagnostics_msgs::msg::DiagnosticArray The diagnostic information.
debug/processing_time_ms autoware_internal_debug_msgs::msg::Float64Stamped The processing time [ms].

Published TF

  • base_link TF from map coordinate to estimated pose.

Functions

Predict

The current robot state is predicted from previously estimated data using a given prediction model. This calculation is called at a constant interval (predict_frequency [Hz]). The prediction equation is described at the end of this page.

Measurement Update

Before the update, the Mahalanobis distance is calculated between the measured input and the predicted state, the measurement update is not performed for inputs where the Mahalanobis distance exceeds the given threshold.

The predicted state is updated with the latest measured inputs, measured_pose, and measured_twist. The updates are performed with the same frequency as prediction, usually at a high frequency, in order to enable smooth state estimation.

Parameter description

The parameters are set in launch/ekf_localizer.launch .

For Node

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/node.sub_schema.json”) }}

For pose measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/pose_measurement.sub_schema.json”) }}

For twist measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/twist_measurement.sub_schema.json”) }}

For process noise

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/process_noise.sub_schema.json”) }}

note: process noise for positions x & y are calculated automatically from nonlinear dynamics.

Simple 1D Filter Parameters

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/simple_1d_filter_parameters.sub_schema.json”) }}

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_ekf_localizer

1.1.0 (2025-05-01)

1.0.0 (2025-03-31)

0.3.0 (2025-03-21)

  • chore: fix versions in package.xml
  • chore(ekf_localizer): increase z_filter_proc_dev for large gradient road (#211) increase z_filter_proc_dev Co-authored-by: SakodaShintaro <<shintaro.sakoda@tier4.jp>>
  • feat(autoware_ekf_localizer)!: porting from universe to core 2nd (#180)
  • Contributors: Kento Yabuuchi, Motz, mitsudome-r

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/ekf_localizer.launch.xml
      • param_file [default: $(find-pkg-share autoware_ekf_localizer)/config/ekf_localizer.param.yaml]
      • input_initial_pose_name [default: initialpose3d]
      • input_trigger_node_service_name [default: trigger_node]
      • input_pose_with_cov_name [default: in_pose_with_covariance]
      • input_twist_with_cov_name [default: in_twist_with_covariance]
      • output_odom_name [default: ekf_odom]
      • output_pose_name [default: ekf_pose]
      • output_pose_with_covariance_name [default: ekf_pose_with_covariance]
      • output_biased_pose_name [default: ekf_biased_pose]
      • output_biased_pose_with_covariance_name [default: ekf_biased_pose_with_covariance]
      • output_twist_name [default: ekf_twist]
      • output_twist_with_covariance_name [default: ekf_twist_with_covariance]
      • output_processing_time_ms [default: debug/processing_time_ms]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_ekf_localizer at Robotics Stack Exchange

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

autoware_ekf_localizer package from autoware_core repo

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

ROS Distro
humble

Package Summary

Tags No category tags.
Version 1.1.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 2025-06-12
Dev Status DEVELOPED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The autoware_ekf_localizer package

Additional Links

No additional links.

Maintainers

  • Takamasa Horibe
  • Yamato Ando
  • Takeshi Ishita
  • Masahiro Sakamoto
  • Kento Yabuuchi
  • NGUYEN Viet Anh
  • Taiki Yamada
  • Shintaro Sakoda
  • Ryu Yamamoto

Authors

  • Takamasa Horibe

Overview

The Extend Kalman Filter Localizer estimates robust and less noisy robot pose and twist by integrating the 2D vehicle dynamics model with input ego-pose and ego-twist messages. The algorithm is designed especially for fast-moving robots such as autonomous driving systems.

Flowchart

The overall flowchart of the autoware_ekf_localizer is described below.

Features

This package includes the following features:

  • Time delay compensation for input messages, which enables proper integration of input information with varying time delays. This is important especially for high-speed moving robots, such as autonomous driving vehicles. (see the following figure).
  • Automatic estimation of yaw bias prevents modeling errors caused by sensor mounting angle errors, which can improve estimation accuracy.
  • Mahalanobis distance gate enables probabilistic outlier detection to determine which inputs should be used or ignored.
  • Smooth update, the Kalman Filter measurement update is typically performed when a measurement is obtained, but it can cause large changes in the estimated value, especially for low-frequency measurements. Since the algorithm can consider the measurement time, the measurement data can be divided into multiple pieces and integrated smoothly while maintaining consistency (see the following figure).
  • Calculation of vertical correction amount from pitch mitigates localization instability on slopes. For example, when going uphill, it behaves as if it is buried in the ground (see the left side of the “Calculate delta from pitch” figure) because EKF only considers 3DoF(x,y,yaw). Therefore, EKF corrects the z-coordinate according to the formula (see the right side of the “Calculate delta from pitch” figure).

Node

Subscribed Topics

Name Type Description
measured_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Input pose source with the measurement covariance matrix.
measured_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped Input twist source with the measurement covariance matrix.
initialpose geometry_msgs::msg::PoseWithCovarianceStamped Initial pose for EKF. The estimated pose is initialized with zeros at the start. It is initialized with this message whenever published.

Published Topics

Name Type Description
ekf_odom nav_msgs::msg::Odometry Estimated odometry.
ekf_pose geometry_msgs::msg::PoseStamped Estimated pose.
ekf_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance.
ekf_biased_pose geometry_msgs::msg::PoseStamped Estimated pose including the yaw bias
ekf_biased_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance including the yaw bias
ekf_twist geometry_msgs::msg::TwistStamped Estimated twist.
ekf_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped The estimated twist with covariance.
diagnostics diagnostics_msgs::msg::DiagnosticArray The diagnostic information.
debug/processing_time_ms autoware_internal_debug_msgs::msg::Float64Stamped The processing time [ms].

Published TF

  • base_link TF from map coordinate to estimated pose.

Functions

Predict

The current robot state is predicted from previously estimated data using a given prediction model. This calculation is called at a constant interval (predict_frequency [Hz]). The prediction equation is described at the end of this page.

Measurement Update

Before the update, the Mahalanobis distance is calculated between the measured input and the predicted state, the measurement update is not performed for inputs where the Mahalanobis distance exceeds the given threshold.

The predicted state is updated with the latest measured inputs, measured_pose, and measured_twist. The updates are performed with the same frequency as prediction, usually at a high frequency, in order to enable smooth state estimation.

Parameter description

The parameters are set in launch/ekf_localizer.launch .

For Node

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/node.sub_schema.json”) }}

For pose measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/pose_measurement.sub_schema.json”) }}

For twist measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/twist_measurement.sub_schema.json”) }}

For process noise

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/process_noise.sub_schema.json”) }}

note: process noise for positions x & y are calculated automatically from nonlinear dynamics.

Simple 1D Filter Parameters

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/simple_1d_filter_parameters.sub_schema.json”) }}

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_ekf_localizer

1.1.0 (2025-05-01)

1.0.0 (2025-03-31)

0.3.0 (2025-03-21)

  • chore: fix versions in package.xml
  • chore(ekf_localizer): increase z_filter_proc_dev for large gradient road (#211) increase z_filter_proc_dev Co-authored-by: SakodaShintaro <<shintaro.sakoda@tier4.jp>>
  • feat(autoware_ekf_localizer)!: porting from universe to core 2nd (#180)
  • Contributors: Kento Yabuuchi, Motz, mitsudome-r

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/ekf_localizer.launch.xml
      • param_file [default: $(find-pkg-share autoware_ekf_localizer)/config/ekf_localizer.param.yaml]
      • input_initial_pose_name [default: initialpose3d]
      • input_trigger_node_service_name [default: trigger_node]
      • input_pose_with_cov_name [default: in_pose_with_covariance]
      • input_twist_with_cov_name [default: in_twist_with_covariance]
      • output_odom_name [default: ekf_odom]
      • output_pose_name [default: ekf_pose]
      • output_pose_with_covariance_name [default: ekf_pose_with_covariance]
      • output_biased_pose_name [default: ekf_biased_pose]
      • output_biased_pose_with_covariance_name [default: ekf_biased_pose_with_covariance]
      • output_twist_name [default: ekf_twist]
      • output_twist_with_covariance_name [default: ekf_twist_with_covariance]
      • output_processing_time_ms [default: debug/processing_time_ms]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_ekf_localizer at Robotics Stack Exchange

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

autoware_ekf_localizer package from autoware_core repo

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

ROS Distro
humble

Package Summary

Tags No category tags.
Version 1.1.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 2025-06-12
Dev Status DEVELOPED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The autoware_ekf_localizer package

Additional Links

No additional links.

Maintainers

  • Takamasa Horibe
  • Yamato Ando
  • Takeshi Ishita
  • Masahiro Sakamoto
  • Kento Yabuuchi
  • NGUYEN Viet Anh
  • Taiki Yamada
  • Shintaro Sakoda
  • Ryu Yamamoto

Authors

  • Takamasa Horibe

Overview

The Extend Kalman Filter Localizer estimates robust and less noisy robot pose and twist by integrating the 2D vehicle dynamics model with input ego-pose and ego-twist messages. The algorithm is designed especially for fast-moving robots such as autonomous driving systems.

Flowchart

The overall flowchart of the autoware_ekf_localizer is described below.

Features

This package includes the following features:

  • Time delay compensation for input messages, which enables proper integration of input information with varying time delays. This is important especially for high-speed moving robots, such as autonomous driving vehicles. (see the following figure).
  • Automatic estimation of yaw bias prevents modeling errors caused by sensor mounting angle errors, which can improve estimation accuracy.
  • Mahalanobis distance gate enables probabilistic outlier detection to determine which inputs should be used or ignored.
  • Smooth update, the Kalman Filter measurement update is typically performed when a measurement is obtained, but it can cause large changes in the estimated value, especially for low-frequency measurements. Since the algorithm can consider the measurement time, the measurement data can be divided into multiple pieces and integrated smoothly while maintaining consistency (see the following figure).
  • Calculation of vertical correction amount from pitch mitigates localization instability on slopes. For example, when going uphill, it behaves as if it is buried in the ground (see the left side of the “Calculate delta from pitch” figure) because EKF only considers 3DoF(x,y,yaw). Therefore, EKF corrects the z-coordinate according to the formula (see the right side of the “Calculate delta from pitch” figure).

Node

Subscribed Topics

Name Type Description
measured_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Input pose source with the measurement covariance matrix.
measured_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped Input twist source with the measurement covariance matrix.
initialpose geometry_msgs::msg::PoseWithCovarianceStamped Initial pose for EKF. The estimated pose is initialized with zeros at the start. It is initialized with this message whenever published.

Published Topics

Name Type Description
ekf_odom nav_msgs::msg::Odometry Estimated odometry.
ekf_pose geometry_msgs::msg::PoseStamped Estimated pose.
ekf_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance.
ekf_biased_pose geometry_msgs::msg::PoseStamped Estimated pose including the yaw bias
ekf_biased_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance including the yaw bias
ekf_twist geometry_msgs::msg::TwistStamped Estimated twist.
ekf_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped The estimated twist with covariance.
diagnostics diagnostics_msgs::msg::DiagnosticArray The diagnostic information.
debug/processing_time_ms autoware_internal_debug_msgs::msg::Float64Stamped The processing time [ms].

Published TF

  • base_link TF from map coordinate to estimated pose.

Functions

Predict

The current robot state is predicted from previously estimated data using a given prediction model. This calculation is called at a constant interval (predict_frequency [Hz]). The prediction equation is described at the end of this page.

Measurement Update

Before the update, the Mahalanobis distance is calculated between the measured input and the predicted state, the measurement update is not performed for inputs where the Mahalanobis distance exceeds the given threshold.

The predicted state is updated with the latest measured inputs, measured_pose, and measured_twist. The updates are performed with the same frequency as prediction, usually at a high frequency, in order to enable smooth state estimation.

Parameter description

The parameters are set in launch/ekf_localizer.launch .

For Node

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/node.sub_schema.json”) }}

For pose measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/pose_measurement.sub_schema.json”) }}

For twist measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/twist_measurement.sub_schema.json”) }}

For process noise

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/process_noise.sub_schema.json”) }}

note: process noise for positions x & y are calculated automatically from nonlinear dynamics.

Simple 1D Filter Parameters

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/simple_1d_filter_parameters.sub_schema.json”) }}

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_ekf_localizer

1.1.0 (2025-05-01)

1.0.0 (2025-03-31)

0.3.0 (2025-03-21)

  • chore: fix versions in package.xml
  • chore(ekf_localizer): increase z_filter_proc_dev for large gradient road (#211) increase z_filter_proc_dev Co-authored-by: SakodaShintaro <<shintaro.sakoda@tier4.jp>>
  • feat(autoware_ekf_localizer)!: porting from universe to core 2nd (#180)
  • Contributors: Kento Yabuuchi, Motz, mitsudome-r

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/ekf_localizer.launch.xml
      • param_file [default: $(find-pkg-share autoware_ekf_localizer)/config/ekf_localizer.param.yaml]
      • input_initial_pose_name [default: initialpose3d]
      • input_trigger_node_service_name [default: trigger_node]
      • input_pose_with_cov_name [default: in_pose_with_covariance]
      • input_twist_with_cov_name [default: in_twist_with_covariance]
      • output_odom_name [default: ekf_odom]
      • output_pose_name [default: ekf_pose]
      • output_pose_with_covariance_name [default: ekf_pose_with_covariance]
      • output_biased_pose_name [default: ekf_biased_pose]
      • output_biased_pose_with_covariance_name [default: ekf_biased_pose_with_covariance]
      • output_twist_name [default: ekf_twist]
      • output_twist_with_covariance_name [default: ekf_twist_with_covariance]
      • output_processing_time_ms [default: debug/processing_time_ms]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_ekf_localizer at Robotics Stack Exchange

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

autoware_ekf_localizer package from autoware_core repo

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

ROS Distro
humble

Package Summary

Tags No category tags.
Version 1.1.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 2025-06-12
Dev Status DEVELOPED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The autoware_ekf_localizer package

Additional Links

No additional links.

Maintainers

  • Takamasa Horibe
  • Yamato Ando
  • Takeshi Ishita
  • Masahiro Sakamoto
  • Kento Yabuuchi
  • NGUYEN Viet Anh
  • Taiki Yamada
  • Shintaro Sakoda
  • Ryu Yamamoto

Authors

  • Takamasa Horibe

Overview

The Extend Kalman Filter Localizer estimates robust and less noisy robot pose and twist by integrating the 2D vehicle dynamics model with input ego-pose and ego-twist messages. The algorithm is designed especially for fast-moving robots such as autonomous driving systems.

Flowchart

The overall flowchart of the autoware_ekf_localizer is described below.

Features

This package includes the following features:

  • Time delay compensation for input messages, which enables proper integration of input information with varying time delays. This is important especially for high-speed moving robots, such as autonomous driving vehicles. (see the following figure).
  • Automatic estimation of yaw bias prevents modeling errors caused by sensor mounting angle errors, which can improve estimation accuracy.
  • Mahalanobis distance gate enables probabilistic outlier detection to determine which inputs should be used or ignored.
  • Smooth update, the Kalman Filter measurement update is typically performed when a measurement is obtained, but it can cause large changes in the estimated value, especially for low-frequency measurements. Since the algorithm can consider the measurement time, the measurement data can be divided into multiple pieces and integrated smoothly while maintaining consistency (see the following figure).
  • Calculation of vertical correction amount from pitch mitigates localization instability on slopes. For example, when going uphill, it behaves as if it is buried in the ground (see the left side of the “Calculate delta from pitch” figure) because EKF only considers 3DoF(x,y,yaw). Therefore, EKF corrects the z-coordinate according to the formula (see the right side of the “Calculate delta from pitch” figure).

Node

Subscribed Topics

Name Type Description
measured_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Input pose source with the measurement covariance matrix.
measured_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped Input twist source with the measurement covariance matrix.
initialpose geometry_msgs::msg::PoseWithCovarianceStamped Initial pose for EKF. The estimated pose is initialized with zeros at the start. It is initialized with this message whenever published.

Published Topics

Name Type Description
ekf_odom nav_msgs::msg::Odometry Estimated odometry.
ekf_pose geometry_msgs::msg::PoseStamped Estimated pose.
ekf_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance.
ekf_biased_pose geometry_msgs::msg::PoseStamped Estimated pose including the yaw bias
ekf_biased_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance including the yaw bias
ekf_twist geometry_msgs::msg::TwistStamped Estimated twist.
ekf_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped The estimated twist with covariance.
diagnostics diagnostics_msgs::msg::DiagnosticArray The diagnostic information.
debug/processing_time_ms autoware_internal_debug_msgs::msg::Float64Stamped The processing time [ms].

Published TF

  • base_link TF from map coordinate to estimated pose.

Functions

Predict

The current robot state is predicted from previously estimated data using a given prediction model. This calculation is called at a constant interval (predict_frequency [Hz]). The prediction equation is described at the end of this page.

Measurement Update

Before the update, the Mahalanobis distance is calculated between the measured input and the predicted state, the measurement update is not performed for inputs where the Mahalanobis distance exceeds the given threshold.

The predicted state is updated with the latest measured inputs, measured_pose, and measured_twist. The updates are performed with the same frequency as prediction, usually at a high frequency, in order to enable smooth state estimation.

Parameter description

The parameters are set in launch/ekf_localizer.launch .

For Node

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/node.sub_schema.json”) }}

For pose measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/pose_measurement.sub_schema.json”) }}

For twist measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/twist_measurement.sub_schema.json”) }}

For process noise

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/process_noise.sub_schema.json”) }}

note: process noise for positions x & y are calculated automatically from nonlinear dynamics.

Simple 1D Filter Parameters

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/simple_1d_filter_parameters.sub_schema.json”) }}

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_ekf_localizer

1.1.0 (2025-05-01)

1.0.0 (2025-03-31)

0.3.0 (2025-03-21)

  • chore: fix versions in package.xml
  • chore(ekf_localizer): increase z_filter_proc_dev for large gradient road (#211) increase z_filter_proc_dev Co-authored-by: SakodaShintaro <<shintaro.sakoda@tier4.jp>>
  • feat(autoware_ekf_localizer)!: porting from universe to core 2nd (#180)
  • Contributors: Kento Yabuuchi, Motz, mitsudome-r

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/ekf_localizer.launch.xml
      • param_file [default: $(find-pkg-share autoware_ekf_localizer)/config/ekf_localizer.param.yaml]
      • input_initial_pose_name [default: initialpose3d]
      • input_trigger_node_service_name [default: trigger_node]
      • input_pose_with_cov_name [default: in_pose_with_covariance]
      • input_twist_with_cov_name [default: in_twist_with_covariance]
      • output_odom_name [default: ekf_odom]
      • output_pose_name [default: ekf_pose]
      • output_pose_with_covariance_name [default: ekf_pose_with_covariance]
      • output_biased_pose_name [default: ekf_biased_pose]
      • output_biased_pose_with_covariance_name [default: ekf_biased_pose_with_covariance]
      • output_twist_name [default: ekf_twist]
      • output_twist_with_covariance_name [default: ekf_twist_with_covariance]
      • output_processing_time_ms [default: debug/processing_time_ms]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_ekf_localizer at Robotics Stack Exchange

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

autoware_ekf_localizer package from autoware_core repo

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

ROS Distro
humble

Package Summary

Tags No category tags.
Version 1.1.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 2025-06-12
Dev Status DEVELOPED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The autoware_ekf_localizer package

Additional Links

No additional links.

Maintainers

  • Takamasa Horibe
  • Yamato Ando
  • Takeshi Ishita
  • Masahiro Sakamoto
  • Kento Yabuuchi
  • NGUYEN Viet Anh
  • Taiki Yamada
  • Shintaro Sakoda
  • Ryu Yamamoto

Authors

  • Takamasa Horibe

Overview

The Extend Kalman Filter Localizer estimates robust and less noisy robot pose and twist by integrating the 2D vehicle dynamics model with input ego-pose and ego-twist messages. The algorithm is designed especially for fast-moving robots such as autonomous driving systems.

Flowchart

The overall flowchart of the autoware_ekf_localizer is described below.

Features

This package includes the following features:

  • Time delay compensation for input messages, which enables proper integration of input information with varying time delays. This is important especially for high-speed moving robots, such as autonomous driving vehicles. (see the following figure).
  • Automatic estimation of yaw bias prevents modeling errors caused by sensor mounting angle errors, which can improve estimation accuracy.
  • Mahalanobis distance gate enables probabilistic outlier detection to determine which inputs should be used or ignored.
  • Smooth update, the Kalman Filter measurement update is typically performed when a measurement is obtained, but it can cause large changes in the estimated value, especially for low-frequency measurements. Since the algorithm can consider the measurement time, the measurement data can be divided into multiple pieces and integrated smoothly while maintaining consistency (see the following figure).
  • Calculation of vertical correction amount from pitch mitigates localization instability on slopes. For example, when going uphill, it behaves as if it is buried in the ground (see the left side of the “Calculate delta from pitch” figure) because EKF only considers 3DoF(x,y,yaw). Therefore, EKF corrects the z-coordinate according to the formula (see the right side of the “Calculate delta from pitch” figure).

Node

Subscribed Topics

Name Type Description
measured_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Input pose source with the measurement covariance matrix.
measured_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped Input twist source with the measurement covariance matrix.
initialpose geometry_msgs::msg::PoseWithCovarianceStamped Initial pose for EKF. The estimated pose is initialized with zeros at the start. It is initialized with this message whenever published.

Published Topics

Name Type Description
ekf_odom nav_msgs::msg::Odometry Estimated odometry.
ekf_pose geometry_msgs::msg::PoseStamped Estimated pose.
ekf_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance.
ekf_biased_pose geometry_msgs::msg::PoseStamped Estimated pose including the yaw bias
ekf_biased_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance including the yaw bias
ekf_twist geometry_msgs::msg::TwistStamped Estimated twist.
ekf_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped The estimated twist with covariance.
diagnostics diagnostics_msgs::msg::DiagnosticArray The diagnostic information.
debug/processing_time_ms autoware_internal_debug_msgs::msg::Float64Stamped The processing time [ms].

Published TF

  • base_link TF from map coordinate to estimated pose.

Functions

Predict

The current robot state is predicted from previously estimated data using a given prediction model. This calculation is called at a constant interval (predict_frequency [Hz]). The prediction equation is described at the end of this page.

Measurement Update

Before the update, the Mahalanobis distance is calculated between the measured input and the predicted state, the measurement update is not performed for inputs where the Mahalanobis distance exceeds the given threshold.

The predicted state is updated with the latest measured inputs, measured_pose, and measured_twist. The updates are performed with the same frequency as prediction, usually at a high frequency, in order to enable smooth state estimation.

Parameter description

The parameters are set in launch/ekf_localizer.launch .

For Node

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/node.sub_schema.json”) }}

For pose measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/pose_measurement.sub_schema.json”) }}

For twist measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/twist_measurement.sub_schema.json”) }}

For process noise

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/process_noise.sub_schema.json”) }}

note: process noise for positions x & y are calculated automatically from nonlinear dynamics.

Simple 1D Filter Parameters

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/simple_1d_filter_parameters.sub_schema.json”) }}

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_ekf_localizer

1.1.0 (2025-05-01)

1.0.0 (2025-03-31)

0.3.0 (2025-03-21)

  • chore: fix versions in package.xml
  • chore(ekf_localizer): increase z_filter_proc_dev for large gradient road (#211) increase z_filter_proc_dev Co-authored-by: SakodaShintaro <<shintaro.sakoda@tier4.jp>>
  • feat(autoware_ekf_localizer)!: porting from universe to core 2nd (#180)
  • Contributors: Kento Yabuuchi, Motz, mitsudome-r

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/ekf_localizer.launch.xml
      • param_file [default: $(find-pkg-share autoware_ekf_localizer)/config/ekf_localizer.param.yaml]
      • input_initial_pose_name [default: initialpose3d]
      • input_trigger_node_service_name [default: trigger_node]
      • input_pose_with_cov_name [default: in_pose_with_covariance]
      • input_twist_with_cov_name [default: in_twist_with_covariance]
      • output_odom_name [default: ekf_odom]
      • output_pose_name [default: ekf_pose]
      • output_pose_with_covariance_name [default: ekf_pose_with_covariance]
      • output_biased_pose_name [default: ekf_biased_pose]
      • output_biased_pose_with_covariance_name [default: ekf_biased_pose_with_covariance]
      • output_twist_name [default: ekf_twist]
      • output_twist_with_covariance_name [default: ekf_twist_with_covariance]
      • output_processing_time_ms [default: debug/processing_time_ms]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_ekf_localizer at Robotics Stack Exchange

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

autoware_ekf_localizer package from autoware_core repo

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

ROS Distro
humble

Package Summary

Tags No category tags.
Version 1.1.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 2025-06-12
Dev Status DEVELOPED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The autoware_ekf_localizer package

Additional Links

No additional links.

Maintainers

  • Takamasa Horibe
  • Yamato Ando
  • Takeshi Ishita
  • Masahiro Sakamoto
  • Kento Yabuuchi
  • NGUYEN Viet Anh
  • Taiki Yamada
  • Shintaro Sakoda
  • Ryu Yamamoto

Authors

  • Takamasa Horibe

Overview

The Extend Kalman Filter Localizer estimates robust and less noisy robot pose and twist by integrating the 2D vehicle dynamics model with input ego-pose and ego-twist messages. The algorithm is designed especially for fast-moving robots such as autonomous driving systems.

Flowchart

The overall flowchart of the autoware_ekf_localizer is described below.

Features

This package includes the following features:

  • Time delay compensation for input messages, which enables proper integration of input information with varying time delays. This is important especially for high-speed moving robots, such as autonomous driving vehicles. (see the following figure).
  • Automatic estimation of yaw bias prevents modeling errors caused by sensor mounting angle errors, which can improve estimation accuracy.
  • Mahalanobis distance gate enables probabilistic outlier detection to determine which inputs should be used or ignored.
  • Smooth update, the Kalman Filter measurement update is typically performed when a measurement is obtained, but it can cause large changes in the estimated value, especially for low-frequency measurements. Since the algorithm can consider the measurement time, the measurement data can be divided into multiple pieces and integrated smoothly while maintaining consistency (see the following figure).
  • Calculation of vertical correction amount from pitch mitigates localization instability on slopes. For example, when going uphill, it behaves as if it is buried in the ground (see the left side of the “Calculate delta from pitch” figure) because EKF only considers 3DoF(x,y,yaw). Therefore, EKF corrects the z-coordinate according to the formula (see the right side of the “Calculate delta from pitch” figure).

Node

Subscribed Topics

Name Type Description
measured_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Input pose source with the measurement covariance matrix.
measured_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped Input twist source with the measurement covariance matrix.
initialpose geometry_msgs::msg::PoseWithCovarianceStamped Initial pose for EKF. The estimated pose is initialized with zeros at the start. It is initialized with this message whenever published.

Published Topics

Name Type Description
ekf_odom nav_msgs::msg::Odometry Estimated odometry.
ekf_pose geometry_msgs::msg::PoseStamped Estimated pose.
ekf_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance.
ekf_biased_pose geometry_msgs::msg::PoseStamped Estimated pose including the yaw bias
ekf_biased_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped Estimated pose with covariance including the yaw bias
ekf_twist geometry_msgs::msg::TwistStamped Estimated twist.
ekf_twist_with_covariance geometry_msgs::msg::TwistWithCovarianceStamped The estimated twist with covariance.
diagnostics diagnostics_msgs::msg::DiagnosticArray The diagnostic information.
debug/processing_time_ms autoware_internal_debug_msgs::msg::Float64Stamped The processing time [ms].

Published TF

  • base_link TF from map coordinate to estimated pose.

Functions

Predict

The current robot state is predicted from previously estimated data using a given prediction model. This calculation is called at a constant interval (predict_frequency [Hz]). The prediction equation is described at the end of this page.

Measurement Update

Before the update, the Mahalanobis distance is calculated between the measured input and the predicted state, the measurement update is not performed for inputs where the Mahalanobis distance exceeds the given threshold.

The predicted state is updated with the latest measured inputs, measured_pose, and measured_twist. The updates are performed with the same frequency as prediction, usually at a high frequency, in order to enable smooth state estimation.

Parameter description

The parameters are set in launch/ekf_localizer.launch .

For Node

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/node.sub_schema.json”) }}

For pose measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/pose_measurement.sub_schema.json”) }}

For twist measurement

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/twist_measurement.sub_schema.json”) }}

For process noise

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/process_noise.sub_schema.json”) }}

note: process noise for positions x & y are calculated automatically from nonlinear dynamics.

Simple 1D Filter Parameters

{{ json_to_markdown(“localization/autoware_ekf_localizer/schema/sub/simple_1d_filter_parameters.sub_schema.json”) }}

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package autoware_ekf_localizer

1.1.0 (2025-05-01)

1.0.0 (2025-03-31)

0.3.0 (2025-03-21)

  • chore: fix versions in package.xml
  • chore(ekf_localizer): increase z_filter_proc_dev for large gradient road (#211) increase z_filter_proc_dev Co-authored-by: SakodaShintaro <<shintaro.sakoda@tier4.jp>>
  • feat(autoware_ekf_localizer)!: porting from universe to core 2nd (#180)
  • Contributors: Kento Yabuuchi, Motz, mitsudome-r

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/ekf_localizer.launch.xml
      • param_file [default: $(find-pkg-share autoware_ekf_localizer)/config/ekf_localizer.param.yaml]
      • input_initial_pose_name [default: initialpose3d]
      • input_trigger_node_service_name [default: trigger_node]
      • input_pose_with_cov_name [default: in_pose_with_covariance]
      • input_twist_with_cov_name [default: in_twist_with_covariance]
      • output_odom_name [default: ekf_odom]
      • output_pose_name [default: ekf_pose]
      • output_pose_with_covariance_name [default: ekf_pose_with_covariance]
      • output_biased_pose_name [default: ekf_biased_pose]
      • output_biased_pose_with_covariance_name [default: ekf_biased_pose_with_covariance]
      • output_twist_name [default: ekf_twist]
      • output_twist_with_covariance_name [default: ekf_twist_with_covariance]
      • output_processing_time_ms [default: debug/processing_time_ms]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_ekf_localizer at Robotics Stack Exchange