Package symbol

autoware_gnss_poser package from autoware_core repo

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

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

The ROS 2 autoware_gnss_poser package

Maintainers

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

Authors

  • Ryo Watanabe

gnss_poser

Overview

The gnss_poser is a node that subscribes gnss sensing messages and calculates vehicle pose with covariance.

Design

This node subscribes to NavSatFix to publish the pose of base_link. The data in NavSatFix represents the antenna’s position. Therefore, it performs a coordinate transformation using the tf from base_link to the antenna’s position. The frame_id of the antenna’s position refers to NavSatFix’s header.frame_id. (Note that header.frame_id in NavSatFix indicates the antenna’s frame_id, not the Earth or reference ellipsoid. See also NavSatFix definition.)

If the transformation from base_link to the antenna cannot be obtained, it outputs the pose of the antenna position without performing coordinate transformation.

Inputs / Outputs

Input

Name Type Description
/map/map_projector_info autoware_map_msgs::msg::MapProjectorInfo map projection info
~/input/fix sensor_msgs::msg::NavSatFix gnss status message
~/input/autoware_orientation autoware_sensing_msgs::msg::GnssInsOrientationStamped orientation click here for more details

Output

Name Type Description
~/output/pose geometry_msgs::msg::PoseStamped vehicle pose calculated from gnss sensing data
~/output/gnss_pose_cov geometry_msgs::msg::PoseWithCovarianceStamped vehicle pose with covariance calculated from gnss sensing data
~/output/gnss_fixed autoware_internal_debug_msgs::msg::BoolStamped gnss fix status

Parameters

Parameters in below table

Name Type Default Description
base_frame string base_link frame id for base_frame
gnss_base_frame string gnss_base_link frame id for gnss_base_frame
map_frame string map frame id for map_frame
use_gnss_ins_orientation boolean true use Gnss-Ins orientation
gnss_pose_pub_method integer 0 0: Instant Value 1: Average Value 2: Median Value. Any other value is rejected at startup.
buff_epoch integer 1 Number of positions the average / median is taken over (ignored for method 0). Range: 1~inf; smaller values are rejected at startup.

All above parameters can be changed in config file gnss_poser.param.yaml .

CHANGELOG

Changelog for package autoware_gnss_poser

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • fix(autoware_gnss_poser): stamp gnss_fixed with the fixed header stamp (#1459) fix(autoware_gnss_poser): stamp gnss_fixed with the fix header stamp gnss_fixed was the only output stamped with the node clock; gnss_pose, gnss_pose_cov and the TF broadcast all carry the header stamp of the fix they were computed from. It now carries that stamp too, so the status can be matched to the fix and to the pose it belongs to. It comes before the logic is separated out because it decides what the pose computation answers with: once the outputs are built there, every one of them is stamped with the fix, and this is the only one that was not. The characterization case GnssFixed_StampIsNodeClockNotFixHeaderStamp pinned the old behavior and is rewritten as GnssFixed_StampIsFixHeaderStamp; built against this change with the old assertions, exactly that case fails and the other 30 pass. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • fix(autoware_gnss_poser): reject invalid gnss_pose_pub_method and buff_epoch at startup (#1458) gnss_pose_pub_method is now an enum (Instant / Average / Median). A value outside 0..2 used to be accepted silently: every non-zero value enabled buffering and every value other than 1 selected the median. buff_epoch must now be at least 1: a zero-capacity buffer counted as "full", so the average published NaN coordinates on every output and the median threw std::out_of_range inside the fix callback. Both are rejected with std::invalid_argument while the node is constructed, so a misconfiguration fails at launch instead of at runtime. The schema already documented 0..2 for the method; buff_epoch's minimum moves from 0 to 1 and the README no longer claims that buff_epoch = 0 disables the method (it never did). Characterization tests rewritten on purpose: MethodUnknown_BehavesLikeMedian, MethodAverage_BuffEpochZero_PublishesNaNPosition and MethodInstant_BuffEpochZero_IsHarmless (all three fail against this change with the old assertions) are replaced by Construct_UnknownPubMethod_FailsToStart and Construct_BuffEpochBelowOne_FailsToStart. The other 29 cases are unchanged. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance (#1448)

    * test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance Third PR of the series, stacked on the position branch. Ten cases on the orientation sources (INS message vs. heading from displacement), the antenna -> base_link TF lookup and composition including the fallback to identity, the lookup time and the interpolation of a changing relation, the map -> gnss_base_link broadcast, and the covariance layout of gnss_pose_cov. No production code changes. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): use one tolerance for positions and one for angles The file compared positions with 1e-9, 1e-6 and 1e-4 m depending on the case, with no principle behind the difference: the tighter values were meant to show "the same library call", which is more than a characterization test needs. Computed positions now share [position_tolerance]{.title-ref} (1e-4 m) and headings [angle_tolerance]{.title-ref} (1e-6 rad), each with its rationale next to the definition; [expect_same_rotation]{.title-ref} compares the rotation angle between the orientations so the same constant applies. Values the node copies keep exact equality, and the geoid-height check keeps its own 1 cm bound. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): explain the covariance constants in the assertions Review of #1448: the orientation and covariance cases assert squared rmse values and two hard-coded fallbacks without saying where they come from. Each of them now carries the arithmetic (0.1\^2 = 0.01 and so on), the origin of the 1.0 placeholder and of the 10.0 substitute, and the input covariance names the diagonal it expects to survive. Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> ---------Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize the position pipeline and buffering (#1437)

    * test(autoware_gnss_poser): characterize the position pipeline and buffering Second PR of the series, stacked on the harness branch. Twelve cases on how a fixed NavSatFix becomes a position: projection through autoware_geography_utils, height datum conversion, the instantaneous method, and the average / median buffering with its full-buffer gate, sliding window, independence from gated and

File truncated at 100 lines see the full file

Launch files

  • launch/gnss_poser.launch.xml
      • param_file [default: $(find-pkg-share autoware_gnss_poser)/config/gnss_poser.param.yaml]
      • input_topic_fix [default: /fix]
      • input_topic_orientation [default: /autoware_orientation]
      • output_topic_gnss_pose [default: gnss_pose]
      • output_topic_gnss_pose_cov [default: gnss_pose_cov]
      • output_topic_gnss_fixed [default: gnss_fixed]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_gnss_poser at Robotics Stack Exchange

Package symbol

autoware_gnss_poser package from autoware_core repo

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

ROS Distro
jazzy

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

The ROS 2 autoware_gnss_poser package

Maintainers

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

Authors

  • Ryo Watanabe

gnss_poser

Overview

The gnss_poser is a node that subscribes gnss sensing messages and calculates vehicle pose with covariance.

Design

This node subscribes to NavSatFix to publish the pose of base_link. The data in NavSatFix represents the antenna’s position. Therefore, it performs a coordinate transformation using the tf from base_link to the antenna’s position. The frame_id of the antenna’s position refers to NavSatFix’s header.frame_id. (Note that header.frame_id in NavSatFix indicates the antenna’s frame_id, not the Earth or reference ellipsoid. See also NavSatFix definition.)

If the transformation from base_link to the antenna cannot be obtained, it outputs the pose of the antenna position without performing coordinate transformation.

Inputs / Outputs

Input

Name Type Description
/map/map_projector_info autoware_map_msgs::msg::MapProjectorInfo map projection info
~/input/fix sensor_msgs::msg::NavSatFix gnss status message
~/input/autoware_orientation autoware_sensing_msgs::msg::GnssInsOrientationStamped orientation click here for more details

Output

Name Type Description
~/output/pose geometry_msgs::msg::PoseStamped vehicle pose calculated from gnss sensing data
~/output/gnss_pose_cov geometry_msgs::msg::PoseWithCovarianceStamped vehicle pose with covariance calculated from gnss sensing data
~/output/gnss_fixed autoware_internal_debug_msgs::msg::BoolStamped gnss fix status

Parameters

Parameters in below table

Name Type Default Description
base_frame string base_link frame id for base_frame
gnss_base_frame string gnss_base_link frame id for gnss_base_frame
map_frame string map frame id for map_frame
use_gnss_ins_orientation boolean true use Gnss-Ins orientation
gnss_pose_pub_method integer 0 0: Instant Value 1: Average Value 2: Median Value. Any other value is rejected at startup.
buff_epoch integer 1 Number of positions the average / median is taken over (ignored for method 0). Range: 1~inf; smaller values are rejected at startup.

All above parameters can be changed in config file gnss_poser.param.yaml .

CHANGELOG

Changelog for package autoware_gnss_poser

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • fix(autoware_gnss_poser): stamp gnss_fixed with the fixed header stamp (#1459) fix(autoware_gnss_poser): stamp gnss_fixed with the fix header stamp gnss_fixed was the only output stamped with the node clock; gnss_pose, gnss_pose_cov and the TF broadcast all carry the header stamp of the fix they were computed from. It now carries that stamp too, so the status can be matched to the fix and to the pose it belongs to. It comes before the logic is separated out because it decides what the pose computation answers with: once the outputs are built there, every one of them is stamped with the fix, and this is the only one that was not. The characterization case GnssFixed_StampIsNodeClockNotFixHeaderStamp pinned the old behavior and is rewritten as GnssFixed_StampIsFixHeaderStamp; built against this change with the old assertions, exactly that case fails and the other 30 pass. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • fix(autoware_gnss_poser): reject invalid gnss_pose_pub_method and buff_epoch at startup (#1458) gnss_pose_pub_method is now an enum (Instant / Average / Median). A value outside 0..2 used to be accepted silently: every non-zero value enabled buffering and every value other than 1 selected the median. buff_epoch must now be at least 1: a zero-capacity buffer counted as "full", so the average published NaN coordinates on every output and the median threw std::out_of_range inside the fix callback. Both are rejected with std::invalid_argument while the node is constructed, so a misconfiguration fails at launch instead of at runtime. The schema already documented 0..2 for the method; buff_epoch's minimum moves from 0 to 1 and the README no longer claims that buff_epoch = 0 disables the method (it never did). Characterization tests rewritten on purpose: MethodUnknown_BehavesLikeMedian, MethodAverage_BuffEpochZero_PublishesNaNPosition and MethodInstant_BuffEpochZero_IsHarmless (all three fail against this change with the old assertions) are replaced by Construct_UnknownPubMethod_FailsToStart and Construct_BuffEpochBelowOne_FailsToStart. The other 29 cases are unchanged. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance (#1448)

    * test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance Third PR of the series, stacked on the position branch. Ten cases on the orientation sources (INS message vs. heading from displacement), the antenna -> base_link TF lookup and composition including the fallback to identity, the lookup time and the interpolation of a changing relation, the map -> gnss_base_link broadcast, and the covariance layout of gnss_pose_cov. No production code changes. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): use one tolerance for positions and one for angles The file compared positions with 1e-9, 1e-6 and 1e-4 m depending on the case, with no principle behind the difference: the tighter values were meant to show "the same library call", which is more than a characterization test needs. Computed positions now share [position_tolerance]{.title-ref} (1e-4 m) and headings [angle_tolerance]{.title-ref} (1e-6 rad), each with its rationale next to the definition; [expect_same_rotation]{.title-ref} compares the rotation angle between the orientations so the same constant applies. Values the node copies keep exact equality, and the geoid-height check keeps its own 1 cm bound. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): explain the covariance constants in the assertions Review of #1448: the orientation and covariance cases assert squared rmse values and two hard-coded fallbacks without saying where they come from. Each of them now carries the arithmetic (0.1\^2 = 0.01 and so on), the origin of the 1.0 placeholder and of the 10.0 substitute, and the input covariance names the diagonal it expects to survive. Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> ---------Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize the position pipeline and buffering (#1437)

    * test(autoware_gnss_poser): characterize the position pipeline and buffering Second PR of the series, stacked on the harness branch. Twelve cases on how a fixed NavSatFix becomes a position: projection through autoware_geography_utils, height datum conversion, the instantaneous method, and the average / median buffering with its full-buffer gate, sliding window, independence from gated and

File truncated at 100 lines see the full file

Launch files

  • launch/gnss_poser.launch.xml
      • param_file [default: $(find-pkg-share autoware_gnss_poser)/config/gnss_poser.param.yaml]
      • input_topic_fix [default: /fix]
      • input_topic_orientation [default: /autoware_orientation]
      • output_topic_gnss_pose [default: gnss_pose]
      • output_topic_gnss_pose_cov [default: gnss_pose_cov]
      • output_topic_gnss_fixed [default: gnss_fixed]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_gnss_poser at Robotics Stack Exchange

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

autoware_gnss_poser package from autoware_core repo

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

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

The ROS 2 autoware_gnss_poser package

Maintainers

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

Authors

  • Ryo Watanabe

gnss_poser

Overview

The gnss_poser is a node that subscribes gnss sensing messages and calculates vehicle pose with covariance.

Design

This node subscribes to NavSatFix to publish the pose of base_link. The data in NavSatFix represents the antenna’s position. Therefore, it performs a coordinate transformation using the tf from base_link to the antenna’s position. The frame_id of the antenna’s position refers to NavSatFix’s header.frame_id. (Note that header.frame_id in NavSatFix indicates the antenna’s frame_id, not the Earth or reference ellipsoid. See also NavSatFix definition.)

If the transformation from base_link to the antenna cannot be obtained, it outputs the pose of the antenna position without performing coordinate transformation.

Inputs / Outputs

Input

Name Type Description
/map/map_projector_info autoware_map_msgs::msg::MapProjectorInfo map projection info
~/input/fix sensor_msgs::msg::NavSatFix gnss status message
~/input/autoware_orientation autoware_sensing_msgs::msg::GnssInsOrientationStamped orientation click here for more details

Output

Name Type Description
~/output/pose geometry_msgs::msg::PoseStamped vehicle pose calculated from gnss sensing data
~/output/gnss_pose_cov geometry_msgs::msg::PoseWithCovarianceStamped vehicle pose with covariance calculated from gnss sensing data
~/output/gnss_fixed autoware_internal_debug_msgs::msg::BoolStamped gnss fix status

Parameters

Parameters in below table

Name Type Default Description
base_frame string base_link frame id for base_frame
gnss_base_frame string gnss_base_link frame id for gnss_base_frame
map_frame string map frame id for map_frame
use_gnss_ins_orientation boolean true use Gnss-Ins orientation
gnss_pose_pub_method integer 0 0: Instant Value 1: Average Value 2: Median Value. Any other value is rejected at startup.
buff_epoch integer 1 Number of positions the average / median is taken over (ignored for method 0). Range: 1~inf; smaller values are rejected at startup.

All above parameters can be changed in config file gnss_poser.param.yaml .

CHANGELOG

Changelog for package autoware_gnss_poser

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • fix(autoware_gnss_poser): stamp gnss_fixed with the fixed header stamp (#1459) fix(autoware_gnss_poser): stamp gnss_fixed with the fix header stamp gnss_fixed was the only output stamped with the node clock; gnss_pose, gnss_pose_cov and the TF broadcast all carry the header stamp of the fix they were computed from. It now carries that stamp too, so the status can be matched to the fix and to the pose it belongs to. It comes before the logic is separated out because it decides what the pose computation answers with: once the outputs are built there, every one of them is stamped with the fix, and this is the only one that was not. The characterization case GnssFixed_StampIsNodeClockNotFixHeaderStamp pinned the old behavior and is rewritten as GnssFixed_StampIsFixHeaderStamp; built against this change with the old assertions, exactly that case fails and the other 30 pass. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • fix(autoware_gnss_poser): reject invalid gnss_pose_pub_method and buff_epoch at startup (#1458) gnss_pose_pub_method is now an enum (Instant / Average / Median). A value outside 0..2 used to be accepted silently: every non-zero value enabled buffering and every value other than 1 selected the median. buff_epoch must now be at least 1: a zero-capacity buffer counted as "full", so the average published NaN coordinates on every output and the median threw std::out_of_range inside the fix callback. Both are rejected with std::invalid_argument while the node is constructed, so a misconfiguration fails at launch instead of at runtime. The schema already documented 0..2 for the method; buff_epoch's minimum moves from 0 to 1 and the README no longer claims that buff_epoch = 0 disables the method (it never did). Characterization tests rewritten on purpose: MethodUnknown_BehavesLikeMedian, MethodAverage_BuffEpochZero_PublishesNaNPosition and MethodInstant_BuffEpochZero_IsHarmless (all three fail against this change with the old assertions) are replaced by Construct_UnknownPubMethod_FailsToStart and Construct_BuffEpochBelowOne_FailsToStart. The other 29 cases are unchanged. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance (#1448)

    * test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance Third PR of the series, stacked on the position branch. Ten cases on the orientation sources (INS message vs. heading from displacement), the antenna -> base_link TF lookup and composition including the fallback to identity, the lookup time and the interpolation of a changing relation, the map -> gnss_base_link broadcast, and the covariance layout of gnss_pose_cov. No production code changes. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): use one tolerance for positions and one for angles The file compared positions with 1e-9, 1e-6 and 1e-4 m depending on the case, with no principle behind the difference: the tighter values were meant to show "the same library call", which is more than a characterization test needs. Computed positions now share [position_tolerance]{.title-ref} (1e-4 m) and headings [angle_tolerance]{.title-ref} (1e-6 rad), each with its rationale next to the definition; [expect_same_rotation]{.title-ref} compares the rotation angle between the orientations so the same constant applies. Values the node copies keep exact equality, and the geoid-height check keeps its own 1 cm bound. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): explain the covariance constants in the assertions Review of #1448: the orientation and covariance cases assert squared rmse values and two hard-coded fallbacks without saying where they come from. Each of them now carries the arithmetic (0.1\^2 = 0.01 and so on), the origin of the 1.0 placeholder and of the 10.0 substitute, and the input covariance names the diagonal it expects to survive. Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> ---------Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize the position pipeline and buffering (#1437)

    * test(autoware_gnss_poser): characterize the position pipeline and buffering Second PR of the series, stacked on the harness branch. Twelve cases on how a fixed NavSatFix becomes a position: projection through autoware_geography_utils, height datum conversion, the instantaneous method, and the average / median buffering with its full-buffer gate, sliding window, independence from gated and

File truncated at 100 lines see the full file

Launch files

  • launch/gnss_poser.launch.xml
      • param_file [default: $(find-pkg-share autoware_gnss_poser)/config/gnss_poser.param.yaml]
      • input_topic_fix [default: /fix]
      • input_topic_orientation [default: /autoware_orientation]
      • output_topic_gnss_pose [default: gnss_pose]
      • output_topic_gnss_pose_cov [default: gnss_pose_cov]
      • output_topic_gnss_fixed [default: gnss_fixed]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_gnss_poser at Robotics Stack Exchange

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

autoware_gnss_poser package from autoware_core repo

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

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

The ROS 2 autoware_gnss_poser package

Maintainers

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

Authors

  • Ryo Watanabe

gnss_poser

Overview

The gnss_poser is a node that subscribes gnss sensing messages and calculates vehicle pose with covariance.

Design

This node subscribes to NavSatFix to publish the pose of base_link. The data in NavSatFix represents the antenna’s position. Therefore, it performs a coordinate transformation using the tf from base_link to the antenna’s position. The frame_id of the antenna’s position refers to NavSatFix’s header.frame_id. (Note that header.frame_id in NavSatFix indicates the antenna’s frame_id, not the Earth or reference ellipsoid. See also NavSatFix definition.)

If the transformation from base_link to the antenna cannot be obtained, it outputs the pose of the antenna position without performing coordinate transformation.

Inputs / Outputs

Input

Name Type Description
/map/map_projector_info autoware_map_msgs::msg::MapProjectorInfo map projection info
~/input/fix sensor_msgs::msg::NavSatFix gnss status message
~/input/autoware_orientation autoware_sensing_msgs::msg::GnssInsOrientationStamped orientation click here for more details

Output

Name Type Description
~/output/pose geometry_msgs::msg::PoseStamped vehicle pose calculated from gnss sensing data
~/output/gnss_pose_cov geometry_msgs::msg::PoseWithCovarianceStamped vehicle pose with covariance calculated from gnss sensing data
~/output/gnss_fixed autoware_internal_debug_msgs::msg::BoolStamped gnss fix status

Parameters

Parameters in below table

Name Type Default Description
base_frame string base_link frame id for base_frame
gnss_base_frame string gnss_base_link frame id for gnss_base_frame
map_frame string map frame id for map_frame
use_gnss_ins_orientation boolean true use Gnss-Ins orientation
gnss_pose_pub_method integer 0 0: Instant Value 1: Average Value 2: Median Value. Any other value is rejected at startup.
buff_epoch integer 1 Number of positions the average / median is taken over (ignored for method 0). Range: 1~inf; smaller values are rejected at startup.

All above parameters can be changed in config file gnss_poser.param.yaml .

CHANGELOG

Changelog for package autoware_gnss_poser

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • fix(autoware_gnss_poser): stamp gnss_fixed with the fixed header stamp (#1459) fix(autoware_gnss_poser): stamp gnss_fixed with the fix header stamp gnss_fixed was the only output stamped with the node clock; gnss_pose, gnss_pose_cov and the TF broadcast all carry the header stamp of the fix they were computed from. It now carries that stamp too, so the status can be matched to the fix and to the pose it belongs to. It comes before the logic is separated out because it decides what the pose computation answers with: once the outputs are built there, every one of them is stamped with the fix, and this is the only one that was not. The characterization case GnssFixed_StampIsNodeClockNotFixHeaderStamp pinned the old behavior and is rewritten as GnssFixed_StampIsFixHeaderStamp; built against this change with the old assertions, exactly that case fails and the other 30 pass. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • fix(autoware_gnss_poser): reject invalid gnss_pose_pub_method and buff_epoch at startup (#1458) gnss_pose_pub_method is now an enum (Instant / Average / Median). A value outside 0..2 used to be accepted silently: every non-zero value enabled buffering and every value other than 1 selected the median. buff_epoch must now be at least 1: a zero-capacity buffer counted as "full", so the average published NaN coordinates on every output and the median threw std::out_of_range inside the fix callback. Both are rejected with std::invalid_argument while the node is constructed, so a misconfiguration fails at launch instead of at runtime. The schema already documented 0..2 for the method; buff_epoch's minimum moves from 0 to 1 and the README no longer claims that buff_epoch = 0 disables the method (it never did). Characterization tests rewritten on purpose: MethodUnknown_BehavesLikeMedian, MethodAverage_BuffEpochZero_PublishesNaNPosition and MethodInstant_BuffEpochZero_IsHarmless (all three fail against this change with the old assertions) are replaced by Construct_UnknownPubMethod_FailsToStart and Construct_BuffEpochBelowOne_FailsToStart. The other 29 cases are unchanged. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance (#1448)

    * test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance Third PR of the series, stacked on the position branch. Ten cases on the orientation sources (INS message vs. heading from displacement), the antenna -> base_link TF lookup and composition including the fallback to identity, the lookup time and the interpolation of a changing relation, the map -> gnss_base_link broadcast, and the covariance layout of gnss_pose_cov. No production code changes. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): use one tolerance for positions and one for angles The file compared positions with 1e-9, 1e-6 and 1e-4 m depending on the case, with no principle behind the difference: the tighter values were meant to show "the same library call", which is more than a characterization test needs. Computed positions now share [position_tolerance]{.title-ref} (1e-4 m) and headings [angle_tolerance]{.title-ref} (1e-6 rad), each with its rationale next to the definition; [expect_same_rotation]{.title-ref} compares the rotation angle between the orientations so the same constant applies. Values the node copies keep exact equality, and the geoid-height check keeps its own 1 cm bound. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): explain the covariance constants in the assertions Review of #1448: the orientation and covariance cases assert squared rmse values and two hard-coded fallbacks without saying where they come from. Each of them now carries the arithmetic (0.1\^2 = 0.01 and so on), the origin of the 1.0 placeholder and of the 10.0 substitute, and the input covariance names the diagonal it expects to survive. Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> ---------Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize the position pipeline and buffering (#1437)

    * test(autoware_gnss_poser): characterize the position pipeline and buffering Second PR of the series, stacked on the harness branch. Twelve cases on how a fixed NavSatFix becomes a position: projection through autoware_geography_utils, height datum conversion, the instantaneous method, and the average / median buffering with its full-buffer gate, sliding window, independence from gated and

File truncated at 100 lines see the full file

Launch files

  • launch/gnss_poser.launch.xml
      • param_file [default: $(find-pkg-share autoware_gnss_poser)/config/gnss_poser.param.yaml]
      • input_topic_fix [default: /fix]
      • input_topic_orientation [default: /autoware_orientation]
      • output_topic_gnss_pose [default: gnss_pose]
      • output_topic_gnss_pose_cov [default: gnss_pose_cov]
      • output_topic_gnss_fixed [default: gnss_fixed]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_gnss_poser at Robotics Stack Exchange

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

autoware_gnss_poser package from autoware_core repo

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

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

The ROS 2 autoware_gnss_poser package

Maintainers

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

Authors

  • Ryo Watanabe

gnss_poser

Overview

The gnss_poser is a node that subscribes gnss sensing messages and calculates vehicle pose with covariance.

Design

This node subscribes to NavSatFix to publish the pose of base_link. The data in NavSatFix represents the antenna’s position. Therefore, it performs a coordinate transformation using the tf from base_link to the antenna’s position. The frame_id of the antenna’s position refers to NavSatFix’s header.frame_id. (Note that header.frame_id in NavSatFix indicates the antenna’s frame_id, not the Earth or reference ellipsoid. See also NavSatFix definition.)

If the transformation from base_link to the antenna cannot be obtained, it outputs the pose of the antenna position without performing coordinate transformation.

Inputs / Outputs

Input

Name Type Description
/map/map_projector_info autoware_map_msgs::msg::MapProjectorInfo map projection info
~/input/fix sensor_msgs::msg::NavSatFix gnss status message
~/input/autoware_orientation autoware_sensing_msgs::msg::GnssInsOrientationStamped orientation click here for more details

Output

Name Type Description
~/output/pose geometry_msgs::msg::PoseStamped vehicle pose calculated from gnss sensing data
~/output/gnss_pose_cov geometry_msgs::msg::PoseWithCovarianceStamped vehicle pose with covariance calculated from gnss sensing data
~/output/gnss_fixed autoware_internal_debug_msgs::msg::BoolStamped gnss fix status

Parameters

Parameters in below table

Name Type Default Description
base_frame string base_link frame id for base_frame
gnss_base_frame string gnss_base_link frame id for gnss_base_frame
map_frame string map frame id for map_frame
use_gnss_ins_orientation boolean true use Gnss-Ins orientation
gnss_pose_pub_method integer 0 0: Instant Value 1: Average Value 2: Median Value. Any other value is rejected at startup.
buff_epoch integer 1 Number of positions the average / median is taken over (ignored for method 0). Range: 1~inf; smaller values are rejected at startup.

All above parameters can be changed in config file gnss_poser.param.yaml .

CHANGELOG

Changelog for package autoware_gnss_poser

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • fix(autoware_gnss_poser): stamp gnss_fixed with the fixed header stamp (#1459) fix(autoware_gnss_poser): stamp gnss_fixed with the fix header stamp gnss_fixed was the only output stamped with the node clock; gnss_pose, gnss_pose_cov and the TF broadcast all carry the header stamp of the fix they were computed from. It now carries that stamp too, so the status can be matched to the fix and to the pose it belongs to. It comes before the logic is separated out because it decides what the pose computation answers with: once the outputs are built there, every one of them is stamped with the fix, and this is the only one that was not. The characterization case GnssFixed_StampIsNodeClockNotFixHeaderStamp pinned the old behavior and is rewritten as GnssFixed_StampIsFixHeaderStamp; built against this change with the old assertions, exactly that case fails and the other 30 pass. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • fix(autoware_gnss_poser): reject invalid gnss_pose_pub_method and buff_epoch at startup (#1458) gnss_pose_pub_method is now an enum (Instant / Average / Median). A value outside 0..2 used to be accepted silently: every non-zero value enabled buffering and every value other than 1 selected the median. buff_epoch must now be at least 1: a zero-capacity buffer counted as "full", so the average published NaN coordinates on every output and the median threw std::out_of_range inside the fix callback. Both are rejected with std::invalid_argument while the node is constructed, so a misconfiguration fails at launch instead of at runtime. The schema already documented 0..2 for the method; buff_epoch's minimum moves from 0 to 1 and the README no longer claims that buff_epoch = 0 disables the method (it never did). Characterization tests rewritten on purpose: MethodUnknown_BehavesLikeMedian, MethodAverage_BuffEpochZero_PublishesNaNPosition and MethodInstant_BuffEpochZero_IsHarmless (all three fail against this change with the old assertions) are replaced by Construct_UnknownPubMethod_FailsToStart and Construct_BuffEpochBelowOne_FailsToStart. The other 29 cases are unchanged. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance (#1448)

    * test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance Third PR of the series, stacked on the position branch. Ten cases on the orientation sources (INS message vs. heading from displacement), the antenna -> base_link TF lookup and composition including the fallback to identity, the lookup time and the interpolation of a changing relation, the map -> gnss_base_link broadcast, and the covariance layout of gnss_pose_cov. No production code changes. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): use one tolerance for positions and one for angles The file compared positions with 1e-9, 1e-6 and 1e-4 m depending on the case, with no principle behind the difference: the tighter values were meant to show "the same library call", which is more than a characterization test needs. Computed positions now share [position_tolerance]{.title-ref} (1e-4 m) and headings [angle_tolerance]{.title-ref} (1e-6 rad), each with its rationale next to the definition; [expect_same_rotation]{.title-ref} compares the rotation angle between the orientations so the same constant applies. Values the node copies keep exact equality, and the geoid-height check keeps its own 1 cm bound. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): explain the covariance constants in the assertions Review of #1448: the orientation and covariance cases assert squared rmse values and two hard-coded fallbacks without saying where they come from. Each of them now carries the arithmetic (0.1\^2 = 0.01 and so on), the origin of the 1.0 placeholder and of the 10.0 substitute, and the input covariance names the diagonal it expects to survive. Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> ---------Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize the position pipeline and buffering (#1437)

    * test(autoware_gnss_poser): characterize the position pipeline and buffering Second PR of the series, stacked on the harness branch. Twelve cases on how a fixed NavSatFix becomes a position: projection through autoware_geography_utils, height datum conversion, the instantaneous method, and the average / median buffering with its full-buffer gate, sliding window, independence from gated and

File truncated at 100 lines see the full file

Launch files

  • launch/gnss_poser.launch.xml
      • param_file [default: $(find-pkg-share autoware_gnss_poser)/config/gnss_poser.param.yaml]
      • input_topic_fix [default: /fix]
      • input_topic_orientation [default: /autoware_orientation]
      • output_topic_gnss_pose [default: gnss_pose]
      • output_topic_gnss_pose_cov [default: gnss_pose_cov]
      • output_topic_gnss_fixed [default: gnss_fixed]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_gnss_poser at Robotics Stack Exchange

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

autoware_gnss_poser package from autoware_core repo

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

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

The ROS 2 autoware_gnss_poser package

Maintainers

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

Authors

  • Ryo Watanabe

gnss_poser

Overview

The gnss_poser is a node that subscribes gnss sensing messages and calculates vehicle pose with covariance.

Design

This node subscribes to NavSatFix to publish the pose of base_link. The data in NavSatFix represents the antenna’s position. Therefore, it performs a coordinate transformation using the tf from base_link to the antenna’s position. The frame_id of the antenna’s position refers to NavSatFix’s header.frame_id. (Note that header.frame_id in NavSatFix indicates the antenna’s frame_id, not the Earth or reference ellipsoid. See also NavSatFix definition.)

If the transformation from base_link to the antenna cannot be obtained, it outputs the pose of the antenna position without performing coordinate transformation.

Inputs / Outputs

Input

Name Type Description
/map/map_projector_info autoware_map_msgs::msg::MapProjectorInfo map projection info
~/input/fix sensor_msgs::msg::NavSatFix gnss status message
~/input/autoware_orientation autoware_sensing_msgs::msg::GnssInsOrientationStamped orientation click here for more details

Output

Name Type Description
~/output/pose geometry_msgs::msg::PoseStamped vehicle pose calculated from gnss sensing data
~/output/gnss_pose_cov geometry_msgs::msg::PoseWithCovarianceStamped vehicle pose with covariance calculated from gnss sensing data
~/output/gnss_fixed autoware_internal_debug_msgs::msg::BoolStamped gnss fix status

Parameters

Parameters in below table

Name Type Default Description
base_frame string base_link frame id for base_frame
gnss_base_frame string gnss_base_link frame id for gnss_base_frame
map_frame string map frame id for map_frame
use_gnss_ins_orientation boolean true use Gnss-Ins orientation
gnss_pose_pub_method integer 0 0: Instant Value 1: Average Value 2: Median Value. Any other value is rejected at startup.
buff_epoch integer 1 Number of positions the average / median is taken over (ignored for method 0). Range: 1~inf; smaller values are rejected at startup.

All above parameters can be changed in config file gnss_poser.param.yaml .

CHANGELOG

Changelog for package autoware_gnss_poser

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • fix(autoware_gnss_poser): stamp gnss_fixed with the fixed header stamp (#1459) fix(autoware_gnss_poser): stamp gnss_fixed with the fix header stamp gnss_fixed was the only output stamped with the node clock; gnss_pose, gnss_pose_cov and the TF broadcast all carry the header stamp of the fix they were computed from. It now carries that stamp too, so the status can be matched to the fix and to the pose it belongs to. It comes before the logic is separated out because it decides what the pose computation answers with: once the outputs are built there, every one of them is stamped with the fix, and this is the only one that was not. The characterization case GnssFixed_StampIsNodeClockNotFixHeaderStamp pinned the old behavior and is rewritten as GnssFixed_StampIsFixHeaderStamp; built against this change with the old assertions, exactly that case fails and the other 30 pass. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • fix(autoware_gnss_poser): reject invalid gnss_pose_pub_method and buff_epoch at startup (#1458) gnss_pose_pub_method is now an enum (Instant / Average / Median). A value outside 0..2 used to be accepted silently: every non-zero value enabled buffering and every value other than 1 selected the median. buff_epoch must now be at least 1: a zero-capacity buffer counted as "full", so the average published NaN coordinates on every output and the median threw std::out_of_range inside the fix callback. Both are rejected with std::invalid_argument while the node is constructed, so a misconfiguration fails at launch instead of at runtime. The schema already documented 0..2 for the method; buff_epoch's minimum moves from 0 to 1 and the README no longer claims that buff_epoch = 0 disables the method (it never did). Characterization tests rewritten on purpose: MethodUnknown_BehavesLikeMedian, MethodAverage_BuffEpochZero_PublishesNaNPosition and MethodInstant_BuffEpochZero_IsHarmless (all three fail against this change with the old assertions) are replaced by Construct_UnknownPubMethod_FailsToStart and Construct_BuffEpochBelowOne_FailsToStart. The other 29 cases are unchanged. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance (#1448)

    * test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance Third PR of the series, stacked on the position branch. Ten cases on the orientation sources (INS message vs. heading from displacement), the antenna -> base_link TF lookup and composition including the fallback to identity, the lookup time and the interpolation of a changing relation, the map -> gnss_base_link broadcast, and the covariance layout of gnss_pose_cov. No production code changes. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): use one tolerance for positions and one for angles The file compared positions with 1e-9, 1e-6 and 1e-4 m depending on the case, with no principle behind the difference: the tighter values were meant to show "the same library call", which is more than a characterization test needs. Computed positions now share [position_tolerance]{.title-ref} (1e-4 m) and headings [angle_tolerance]{.title-ref} (1e-6 rad), each with its rationale next to the definition; [expect_same_rotation]{.title-ref} compares the rotation angle between the orientations so the same constant applies. Values the node copies keep exact equality, and the geoid-height check keeps its own 1 cm bound. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): explain the covariance constants in the assertions Review of #1448: the orientation and covariance cases assert squared rmse values and two hard-coded fallbacks without saying where they come from. Each of them now carries the arithmetic (0.1\^2 = 0.01 and so on), the origin of the 1.0 placeholder and of the 10.0 substitute, and the input covariance names the diagonal it expects to survive. Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> ---------Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize the position pipeline and buffering (#1437)

    * test(autoware_gnss_poser): characterize the position pipeline and buffering Second PR of the series, stacked on the harness branch. Twelve cases on how a fixed NavSatFix becomes a position: projection through autoware_geography_utils, height datum conversion, the instantaneous method, and the average / median buffering with its full-buffer gate, sliding window, independence from gated and

File truncated at 100 lines see the full file

Launch files

  • launch/gnss_poser.launch.xml
      • param_file [default: $(find-pkg-share autoware_gnss_poser)/config/gnss_poser.param.yaml]
      • input_topic_fix [default: /fix]
      • input_topic_orientation [default: /autoware_orientation]
      • output_topic_gnss_pose [default: gnss_pose]
      • output_topic_gnss_pose_cov [default: gnss_pose_cov]
      • output_topic_gnss_fixed [default: gnss_fixed]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_gnss_poser at Robotics Stack Exchange

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

autoware_gnss_poser package from autoware_core repo

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

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

The ROS 2 autoware_gnss_poser package

Maintainers

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

Authors

  • Ryo Watanabe

gnss_poser

Overview

The gnss_poser is a node that subscribes gnss sensing messages and calculates vehicle pose with covariance.

Design

This node subscribes to NavSatFix to publish the pose of base_link. The data in NavSatFix represents the antenna’s position. Therefore, it performs a coordinate transformation using the tf from base_link to the antenna’s position. The frame_id of the antenna’s position refers to NavSatFix’s header.frame_id. (Note that header.frame_id in NavSatFix indicates the antenna’s frame_id, not the Earth or reference ellipsoid. See also NavSatFix definition.)

If the transformation from base_link to the antenna cannot be obtained, it outputs the pose of the antenna position without performing coordinate transformation.

Inputs / Outputs

Input

Name Type Description
/map/map_projector_info autoware_map_msgs::msg::MapProjectorInfo map projection info
~/input/fix sensor_msgs::msg::NavSatFix gnss status message
~/input/autoware_orientation autoware_sensing_msgs::msg::GnssInsOrientationStamped orientation click here for more details

Output

Name Type Description
~/output/pose geometry_msgs::msg::PoseStamped vehicle pose calculated from gnss sensing data
~/output/gnss_pose_cov geometry_msgs::msg::PoseWithCovarianceStamped vehicle pose with covariance calculated from gnss sensing data
~/output/gnss_fixed autoware_internal_debug_msgs::msg::BoolStamped gnss fix status

Parameters

Parameters in below table

Name Type Default Description
base_frame string base_link frame id for base_frame
gnss_base_frame string gnss_base_link frame id for gnss_base_frame
map_frame string map frame id for map_frame
use_gnss_ins_orientation boolean true use Gnss-Ins orientation
gnss_pose_pub_method integer 0 0: Instant Value 1: Average Value 2: Median Value. Any other value is rejected at startup.
buff_epoch integer 1 Number of positions the average / median is taken over (ignored for method 0). Range: 1~inf; smaller values are rejected at startup.

All above parameters can be changed in config file gnss_poser.param.yaml .

CHANGELOG

Changelog for package autoware_gnss_poser

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • fix(autoware_gnss_poser): stamp gnss_fixed with the fixed header stamp (#1459) fix(autoware_gnss_poser): stamp gnss_fixed with the fix header stamp gnss_fixed was the only output stamped with the node clock; gnss_pose, gnss_pose_cov and the TF broadcast all carry the header stamp of the fix they were computed from. It now carries that stamp too, so the status can be matched to the fix and to the pose it belongs to. It comes before the logic is separated out because it decides what the pose computation answers with: once the outputs are built there, every one of them is stamped with the fix, and this is the only one that was not. The characterization case GnssFixed_StampIsNodeClockNotFixHeaderStamp pinned the old behavior and is rewritten as GnssFixed_StampIsFixHeaderStamp; built against this change with the old assertions, exactly that case fails and the other 30 pass. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • fix(autoware_gnss_poser): reject invalid gnss_pose_pub_method and buff_epoch at startup (#1458) gnss_pose_pub_method is now an enum (Instant / Average / Median). A value outside 0..2 used to be accepted silently: every non-zero value enabled buffering and every value other than 1 selected the median. buff_epoch must now be at least 1: a zero-capacity buffer counted as "full", so the average published NaN coordinates on every output and the median threw std::out_of_range inside the fix callback. Both are rejected with std::invalid_argument while the node is constructed, so a misconfiguration fails at launch instead of at runtime. The schema already documented 0..2 for the method; buff_epoch's minimum moves from 0 to 1 and the README no longer claims that buff_epoch = 0 disables the method (it never did). Characterization tests rewritten on purpose: MethodUnknown_BehavesLikeMedian, MethodAverage_BuffEpochZero_PublishesNaNPosition and MethodInstant_BuffEpochZero_IsHarmless (all three fail against this change with the old assertions) are replaced by Construct_UnknownPubMethod_FailsToStart and Construct_BuffEpochBelowOne_FailsToStart. The other 29 cases are unchanged. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance (#1448)

    * test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance Third PR of the series, stacked on the position branch. Ten cases on the orientation sources (INS message vs. heading from displacement), the antenna -> base_link TF lookup and composition including the fallback to identity, the lookup time and the interpolation of a changing relation, the map -> gnss_base_link broadcast, and the covariance layout of gnss_pose_cov. No production code changes. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): use one tolerance for positions and one for angles The file compared positions with 1e-9, 1e-6 and 1e-4 m depending on the case, with no principle behind the difference: the tighter values were meant to show "the same library call", which is more than a characterization test needs. Computed positions now share [position_tolerance]{.title-ref} (1e-4 m) and headings [angle_tolerance]{.title-ref} (1e-6 rad), each with its rationale next to the definition; [expect_same_rotation]{.title-ref} compares the rotation angle between the orientations so the same constant applies. Values the node copies keep exact equality, and the geoid-height check keeps its own 1 cm bound. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): explain the covariance constants in the assertions Review of #1448: the orientation and covariance cases assert squared rmse values and two hard-coded fallbacks without saying where they come from. Each of them now carries the arithmetic (0.1\^2 = 0.01 and so on), the origin of the 1.0 placeholder and of the 10.0 substitute, and the input covariance names the diagonal it expects to survive. Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> ---------Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize the position pipeline and buffering (#1437)

    * test(autoware_gnss_poser): characterize the position pipeline and buffering Second PR of the series, stacked on the harness branch. Twelve cases on how a fixed NavSatFix becomes a position: projection through autoware_geography_utils, height datum conversion, the instantaneous method, and the average / median buffering with its full-buffer gate, sliding window, independence from gated and

File truncated at 100 lines see the full file

Launch files

  • launch/gnss_poser.launch.xml
      • param_file [default: $(find-pkg-share autoware_gnss_poser)/config/gnss_poser.param.yaml]
      • input_topic_fix [default: /fix]
      • input_topic_orientation [default: /autoware_orientation]
      • output_topic_gnss_pose [default: gnss_pose]
      • output_topic_gnss_pose_cov [default: gnss_pose_cov]
      • output_topic_gnss_fixed [default: gnss_fixed]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_gnss_poser at Robotics Stack Exchange

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

autoware_gnss_poser package from autoware_core repo

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

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

The ROS 2 autoware_gnss_poser package

Maintainers

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

Authors

  • Ryo Watanabe

gnss_poser

Overview

The gnss_poser is a node that subscribes gnss sensing messages and calculates vehicle pose with covariance.

Design

This node subscribes to NavSatFix to publish the pose of base_link. The data in NavSatFix represents the antenna’s position. Therefore, it performs a coordinate transformation using the tf from base_link to the antenna’s position. The frame_id of the antenna’s position refers to NavSatFix’s header.frame_id. (Note that header.frame_id in NavSatFix indicates the antenna’s frame_id, not the Earth or reference ellipsoid. See also NavSatFix definition.)

If the transformation from base_link to the antenna cannot be obtained, it outputs the pose of the antenna position without performing coordinate transformation.

Inputs / Outputs

Input

Name Type Description
/map/map_projector_info autoware_map_msgs::msg::MapProjectorInfo map projection info
~/input/fix sensor_msgs::msg::NavSatFix gnss status message
~/input/autoware_orientation autoware_sensing_msgs::msg::GnssInsOrientationStamped orientation click here for more details

Output

Name Type Description
~/output/pose geometry_msgs::msg::PoseStamped vehicle pose calculated from gnss sensing data
~/output/gnss_pose_cov geometry_msgs::msg::PoseWithCovarianceStamped vehicle pose with covariance calculated from gnss sensing data
~/output/gnss_fixed autoware_internal_debug_msgs::msg::BoolStamped gnss fix status

Parameters

Parameters in below table

Name Type Default Description
base_frame string base_link frame id for base_frame
gnss_base_frame string gnss_base_link frame id for gnss_base_frame
map_frame string map frame id for map_frame
use_gnss_ins_orientation boolean true use Gnss-Ins orientation
gnss_pose_pub_method integer 0 0: Instant Value 1: Average Value 2: Median Value. Any other value is rejected at startup.
buff_epoch integer 1 Number of positions the average / median is taken over (ignored for method 0). Range: 1~inf; smaller values are rejected at startup.

All above parameters can be changed in config file gnss_poser.param.yaml .

CHANGELOG

Changelog for package autoware_gnss_poser

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • fix(autoware_gnss_poser): stamp gnss_fixed with the fixed header stamp (#1459) fix(autoware_gnss_poser): stamp gnss_fixed with the fix header stamp gnss_fixed was the only output stamped with the node clock; gnss_pose, gnss_pose_cov and the TF broadcast all carry the header stamp of the fix they were computed from. It now carries that stamp too, so the status can be matched to the fix and to the pose it belongs to. It comes before the logic is separated out because it decides what the pose computation answers with: once the outputs are built there, every one of them is stamped with the fix, and this is the only one that was not. The characterization case GnssFixed_StampIsNodeClockNotFixHeaderStamp pinned the old behavior and is rewritten as GnssFixed_StampIsFixHeaderStamp; built against this change with the old assertions, exactly that case fails and the other 30 pass. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • fix(autoware_gnss_poser): reject invalid gnss_pose_pub_method and buff_epoch at startup (#1458) gnss_pose_pub_method is now an enum (Instant / Average / Median). A value outside 0..2 used to be accepted silently: every non-zero value enabled buffering and every value other than 1 selected the median. buff_epoch must now be at least 1: a zero-capacity buffer counted as "full", so the average published NaN coordinates on every output and the median threw std::out_of_range inside the fix callback. Both are rejected with std::invalid_argument while the node is constructed, so a misconfiguration fails at launch instead of at runtime. The schema already documented 0..2 for the method; buff_epoch's minimum moves from 0 to 1 and the README no longer claims that buff_epoch = 0 disables the method (it never did). Characterization tests rewritten on purpose: MethodUnknown_BehavesLikeMedian, MethodAverage_BuffEpochZero_PublishesNaNPosition and MethodInstant_BuffEpochZero_IsHarmless (all three fail against this change with the old assertions) are replaced by Construct_UnknownPubMethod_FailsToStart and Construct_BuffEpochBelowOne_FailsToStart. The other 29 cases are unchanged. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance (#1448)

    * test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance Third PR of the series, stacked on the position branch. Ten cases on the orientation sources (INS message vs. heading from displacement), the antenna -> base_link TF lookup and composition including the fallback to identity, the lookup time and the interpolation of a changing relation, the map -> gnss_base_link broadcast, and the covariance layout of gnss_pose_cov. No production code changes. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): use one tolerance for positions and one for angles The file compared positions with 1e-9, 1e-6 and 1e-4 m depending on the case, with no principle behind the difference: the tighter values were meant to show "the same library call", which is more than a characterization test needs. Computed positions now share [position_tolerance]{.title-ref} (1e-4 m) and headings [angle_tolerance]{.title-ref} (1e-6 rad), each with its rationale next to the definition; [expect_same_rotation]{.title-ref} compares the rotation angle between the orientations so the same constant applies. Values the node copies keep exact equality, and the geoid-height check keeps its own 1 cm bound. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): explain the covariance constants in the assertions Review of #1448: the orientation and covariance cases assert squared rmse values and two hard-coded fallbacks without saying where they come from. Each of them now carries the arithmetic (0.1\^2 = 0.01 and so on), the origin of the 1.0 placeholder and of the 10.0 substitute, and the input covariance names the diagonal it expects to survive. Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> ---------Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize the position pipeline and buffering (#1437)

    * test(autoware_gnss_poser): characterize the position pipeline and buffering Second PR of the series, stacked on the harness branch. Twelve cases on how a fixed NavSatFix becomes a position: projection through autoware_geography_utils, height datum conversion, the instantaneous method, and the average / median buffering with its full-buffer gate, sliding window, independence from gated and

File truncated at 100 lines see the full file

Launch files

  • launch/gnss_poser.launch.xml
      • param_file [default: $(find-pkg-share autoware_gnss_poser)/config/gnss_poser.param.yaml]
      • input_topic_fix [default: /fix]
      • input_topic_orientation [default: /autoware_orientation]
      • output_topic_gnss_pose [default: gnss_pose]
      • output_topic_gnss_pose_cov [default: gnss_pose_cov]
      • output_topic_gnss_fixed [default: gnss_fixed]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_gnss_poser at Robotics Stack Exchange

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

autoware_gnss_poser package from autoware_core repo

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

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

The ROS 2 autoware_gnss_poser package

Maintainers

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

Authors

  • Ryo Watanabe

gnss_poser

Overview

The gnss_poser is a node that subscribes gnss sensing messages and calculates vehicle pose with covariance.

Design

This node subscribes to NavSatFix to publish the pose of base_link. The data in NavSatFix represents the antenna’s position. Therefore, it performs a coordinate transformation using the tf from base_link to the antenna’s position. The frame_id of the antenna’s position refers to NavSatFix’s header.frame_id. (Note that header.frame_id in NavSatFix indicates the antenna’s frame_id, not the Earth or reference ellipsoid. See also NavSatFix definition.)

If the transformation from base_link to the antenna cannot be obtained, it outputs the pose of the antenna position without performing coordinate transformation.

Inputs / Outputs

Input

Name Type Description
/map/map_projector_info autoware_map_msgs::msg::MapProjectorInfo map projection info
~/input/fix sensor_msgs::msg::NavSatFix gnss status message
~/input/autoware_orientation autoware_sensing_msgs::msg::GnssInsOrientationStamped orientation click here for more details

Output

Name Type Description
~/output/pose geometry_msgs::msg::PoseStamped vehicle pose calculated from gnss sensing data
~/output/gnss_pose_cov geometry_msgs::msg::PoseWithCovarianceStamped vehicle pose with covariance calculated from gnss sensing data
~/output/gnss_fixed autoware_internal_debug_msgs::msg::BoolStamped gnss fix status

Parameters

Parameters in below table

Name Type Default Description
base_frame string base_link frame id for base_frame
gnss_base_frame string gnss_base_link frame id for gnss_base_frame
map_frame string map frame id for map_frame
use_gnss_ins_orientation boolean true use Gnss-Ins orientation
gnss_pose_pub_method integer 0 0: Instant Value 1: Average Value 2: Median Value. Any other value is rejected at startup.
buff_epoch integer 1 Number of positions the average / median is taken over (ignored for method 0). Range: 1~inf; smaller values are rejected at startup.

All above parameters can be changed in config file gnss_poser.param.yaml .

CHANGELOG

Changelog for package autoware_gnss_poser

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • fix(autoware_gnss_poser): stamp gnss_fixed with the fixed header stamp (#1459) fix(autoware_gnss_poser): stamp gnss_fixed with the fix header stamp gnss_fixed was the only output stamped with the node clock; gnss_pose, gnss_pose_cov and the TF broadcast all carry the header stamp of the fix they were computed from. It now carries that stamp too, so the status can be matched to the fix and to the pose it belongs to. It comes before the logic is separated out because it decides what the pose computation answers with: once the outputs are built there, every one of them is stamped with the fix, and this is the only one that was not. The characterization case GnssFixed_StampIsNodeClockNotFixHeaderStamp pinned the old behavior and is rewritten as GnssFixed_StampIsFixHeaderStamp; built against this change with the old assertions, exactly that case fails and the other 30 pass. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • fix(autoware_gnss_poser): reject invalid gnss_pose_pub_method and buff_epoch at startup (#1458) gnss_pose_pub_method is now an enum (Instant / Average / Median). A value outside 0..2 used to be accepted silently: every non-zero value enabled buffering and every value other than 1 selected the median. buff_epoch must now be at least 1: a zero-capacity buffer counted as "full", so the average published NaN coordinates on every output and the median threw std::out_of_range inside the fix callback. Both are rejected with std::invalid_argument while the node is constructed, so a misconfiguration fails at launch instead of at runtime. The schema already documented 0..2 for the method; buff_epoch's minimum moves from 0 to 1 and the README no longer claims that buff_epoch = 0 disables the method (it never did). Characterization tests rewritten on purpose: MethodUnknown_BehavesLikeMedian, MethodAverage_BuffEpochZero_PublishesNaNPosition and MethodInstant_BuffEpochZero_IsHarmless (all three fail against this change with the old assertions) are replaced by Construct_UnknownPubMethod_FailsToStart and Construct_BuffEpochBelowOne_FailsToStart. The other 29 cases are unchanged. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance (#1448)

    * test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance Third PR of the series, stacked on the position branch. Ten cases on the orientation sources (INS message vs. heading from displacement), the antenna -> base_link TF lookup and composition including the fallback to identity, the lookup time and the interpolation of a changing relation, the map -> gnss_base_link broadcast, and the covariance layout of gnss_pose_cov. No production code changes. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): use one tolerance for positions and one for angles The file compared positions with 1e-9, 1e-6 and 1e-4 m depending on the case, with no principle behind the difference: the tighter values were meant to show "the same library call", which is more than a characterization test needs. Computed positions now share [position_tolerance]{.title-ref} (1e-4 m) and headings [angle_tolerance]{.title-ref} (1e-6 rad), each with its rationale next to the definition; [expect_same_rotation]{.title-ref} compares the rotation angle between the orientations so the same constant applies. Values the node copies keep exact equality, and the geoid-height check keeps its own 1 cm bound. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): explain the covariance constants in the assertions Review of #1448: the orientation and covariance cases assert squared rmse values and two hard-coded fallbacks without saying where they come from. Each of them now carries the arithmetic (0.1\^2 = 0.01 and so on), the origin of the 1.0 placeholder and of the 10.0 substitute, and the input covariance names the diagonal it expects to survive. Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> ---------Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize the position pipeline and buffering (#1437)

    * test(autoware_gnss_poser): characterize the position pipeline and buffering Second PR of the series, stacked on the harness branch. Twelve cases on how a fixed NavSatFix becomes a position: projection through autoware_geography_utils, height datum conversion, the instantaneous method, and the average / median buffering with its full-buffer gate, sliding window, independence from gated and

File truncated at 100 lines see the full file

Launch files

  • launch/gnss_poser.launch.xml
      • param_file [default: $(find-pkg-share autoware_gnss_poser)/config/gnss_poser.param.yaml]
      • input_topic_fix [default: /fix]
      • input_topic_orientation [default: /autoware_orientation]
      • output_topic_gnss_pose [default: gnss_pose]
      • output_topic_gnss_pose_cov [default: gnss_pose_cov]
      • output_topic_gnss_fixed [default: gnss_fixed]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_gnss_poser at Robotics Stack Exchange

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

autoware_gnss_poser package from autoware_core repo

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

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

The ROS 2 autoware_gnss_poser package

Maintainers

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

Authors

  • Ryo Watanabe

gnss_poser

Overview

The gnss_poser is a node that subscribes gnss sensing messages and calculates vehicle pose with covariance.

Design

This node subscribes to NavSatFix to publish the pose of base_link. The data in NavSatFix represents the antenna’s position. Therefore, it performs a coordinate transformation using the tf from base_link to the antenna’s position. The frame_id of the antenna’s position refers to NavSatFix’s header.frame_id. (Note that header.frame_id in NavSatFix indicates the antenna’s frame_id, not the Earth or reference ellipsoid. See also NavSatFix definition.)

If the transformation from base_link to the antenna cannot be obtained, it outputs the pose of the antenna position without performing coordinate transformation.

Inputs / Outputs

Input

Name Type Description
/map/map_projector_info autoware_map_msgs::msg::MapProjectorInfo map projection info
~/input/fix sensor_msgs::msg::NavSatFix gnss status message
~/input/autoware_orientation autoware_sensing_msgs::msg::GnssInsOrientationStamped orientation click here for more details

Output

Name Type Description
~/output/pose geometry_msgs::msg::PoseStamped vehicle pose calculated from gnss sensing data
~/output/gnss_pose_cov geometry_msgs::msg::PoseWithCovarianceStamped vehicle pose with covariance calculated from gnss sensing data
~/output/gnss_fixed autoware_internal_debug_msgs::msg::BoolStamped gnss fix status

Parameters

Parameters in below table

Name Type Default Description
base_frame string base_link frame id for base_frame
gnss_base_frame string gnss_base_link frame id for gnss_base_frame
map_frame string map frame id for map_frame
use_gnss_ins_orientation boolean true use Gnss-Ins orientation
gnss_pose_pub_method integer 0 0: Instant Value 1: Average Value 2: Median Value. Any other value is rejected at startup.
buff_epoch integer 1 Number of positions the average / median is taken over (ignored for method 0). Range: 1~inf; smaller values are rejected at startup.

All above parameters can be changed in config file gnss_poser.param.yaml .

CHANGELOG

Changelog for package autoware_gnss_poser

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • fix(autoware_gnss_poser): stamp gnss_fixed with the fixed header stamp (#1459) fix(autoware_gnss_poser): stamp gnss_fixed with the fix header stamp gnss_fixed was the only output stamped with the node clock; gnss_pose, gnss_pose_cov and the TF broadcast all carry the header stamp of the fix they were computed from. It now carries that stamp too, so the status can be matched to the fix and to the pose it belongs to. It comes before the logic is separated out because it decides what the pose computation answers with: once the outputs are built there, every one of them is stamped with the fix, and this is the only one that was not. The characterization case GnssFixed_StampIsNodeClockNotFixHeaderStamp pinned the old behavior and is rewritten as GnssFixed_StampIsFixHeaderStamp; built against this change with the old assertions, exactly that case fails and the other 30 pass. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • fix(autoware_gnss_poser): reject invalid gnss_pose_pub_method and buff_epoch at startup (#1458) gnss_pose_pub_method is now an enum (Instant / Average / Median). A value outside 0..2 used to be accepted silently: every non-zero value enabled buffering and every value other than 1 selected the median. buff_epoch must now be at least 1: a zero-capacity buffer counted as "full", so the average published NaN coordinates on every output and the median threw std::out_of_range inside the fix callback. Both are rejected with std::invalid_argument while the node is constructed, so a misconfiguration fails at launch instead of at runtime. The schema already documented 0..2 for the method; buff_epoch's minimum moves from 0 to 1 and the README no longer claims that buff_epoch = 0 disables the method (it never did). Characterization tests rewritten on purpose: MethodUnknown_BehavesLikeMedian, MethodAverage_BuffEpochZero_PublishesNaNPosition and MethodInstant_BuffEpochZero_IsHarmless (all three fail against this change with the old assertions) are replaced by Construct_UnknownPubMethod_FailsToStart and Construct_BuffEpochBelowOne_FailsToStart. The other 29 cases are unchanged. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance (#1448)

    * test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance Third PR of the series, stacked on the position branch. Ten cases on the orientation sources (INS message vs. heading from displacement), the antenna -> base_link TF lookup and composition including the fallback to identity, the lookup time and the interpolation of a changing relation, the map -> gnss_base_link broadcast, and the covariance layout of gnss_pose_cov. No production code changes. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): use one tolerance for positions and one for angles The file compared positions with 1e-9, 1e-6 and 1e-4 m depending on the case, with no principle behind the difference: the tighter values were meant to show "the same library call", which is more than a characterization test needs. Computed positions now share [position_tolerance]{.title-ref} (1e-4 m) and headings [angle_tolerance]{.title-ref} (1e-6 rad), each with its rationale next to the definition; [expect_same_rotation]{.title-ref} compares the rotation angle between the orientations so the same constant applies. Values the node copies keep exact equality, and the geoid-height check keeps its own 1 cm bound. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): explain the covariance constants in the assertions Review of #1448: the orientation and covariance cases assert squared rmse values and two hard-coded fallbacks without saying where they come from. Each of them now carries the arithmetic (0.1\^2 = 0.01 and so on), the origin of the 1.0 placeholder and of the 10.0 substitute, and the input covariance names the diagonal it expects to survive. Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> ---------Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize the position pipeline and buffering (#1437)

    * test(autoware_gnss_poser): characterize the position pipeline and buffering Second PR of the series, stacked on the harness branch. Twelve cases on how a fixed NavSatFix becomes a position: projection through autoware_geography_utils, height datum conversion, the instantaneous method, and the average / median buffering with its full-buffer gate, sliding window, independence from gated and

File truncated at 100 lines see the full file

Launch files

  • launch/gnss_poser.launch.xml
      • param_file [default: $(find-pkg-share autoware_gnss_poser)/config/gnss_poser.param.yaml]
      • input_topic_fix [default: /fix]
      • input_topic_orientation [default: /autoware_orientation]
      • output_topic_gnss_pose [default: gnss_pose]
      • output_topic_gnss_pose_cov [default: gnss_pose_cov]
      • output_topic_gnss_fixed [default: gnss_fixed]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_gnss_poser at Robotics Stack Exchange

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

autoware_gnss_poser package from autoware_core repo

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

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

The ROS 2 autoware_gnss_poser package

Maintainers

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

Authors

  • Ryo Watanabe

gnss_poser

Overview

The gnss_poser is a node that subscribes gnss sensing messages and calculates vehicle pose with covariance.

Design

This node subscribes to NavSatFix to publish the pose of base_link. The data in NavSatFix represents the antenna’s position. Therefore, it performs a coordinate transformation using the tf from base_link to the antenna’s position. The frame_id of the antenna’s position refers to NavSatFix’s header.frame_id. (Note that header.frame_id in NavSatFix indicates the antenna’s frame_id, not the Earth or reference ellipsoid. See also NavSatFix definition.)

If the transformation from base_link to the antenna cannot be obtained, it outputs the pose of the antenna position without performing coordinate transformation.

Inputs / Outputs

Input

Name Type Description
/map/map_projector_info autoware_map_msgs::msg::MapProjectorInfo map projection info
~/input/fix sensor_msgs::msg::NavSatFix gnss status message
~/input/autoware_orientation autoware_sensing_msgs::msg::GnssInsOrientationStamped orientation click here for more details

Output

Name Type Description
~/output/pose geometry_msgs::msg::PoseStamped vehicle pose calculated from gnss sensing data
~/output/gnss_pose_cov geometry_msgs::msg::PoseWithCovarianceStamped vehicle pose with covariance calculated from gnss sensing data
~/output/gnss_fixed autoware_internal_debug_msgs::msg::BoolStamped gnss fix status

Parameters

Parameters in below table

Name Type Default Description
base_frame string base_link frame id for base_frame
gnss_base_frame string gnss_base_link frame id for gnss_base_frame
map_frame string map frame id for map_frame
use_gnss_ins_orientation boolean true use Gnss-Ins orientation
gnss_pose_pub_method integer 0 0: Instant Value 1: Average Value 2: Median Value. Any other value is rejected at startup.
buff_epoch integer 1 Number of positions the average / median is taken over (ignored for method 0). Range: 1~inf; smaller values are rejected at startup.

All above parameters can be changed in config file gnss_poser.param.yaml .

CHANGELOG

Changelog for package autoware_gnss_poser

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • fix(autoware_gnss_poser): stamp gnss_fixed with the fixed header stamp (#1459) fix(autoware_gnss_poser): stamp gnss_fixed with the fix header stamp gnss_fixed was the only output stamped with the node clock; gnss_pose, gnss_pose_cov and the TF broadcast all carry the header stamp of the fix they were computed from. It now carries that stamp too, so the status can be matched to the fix and to the pose it belongs to. It comes before the logic is separated out because it decides what the pose computation answers with: once the outputs are built there, every one of them is stamped with the fix, and this is the only one that was not. The characterization case GnssFixed_StampIsNodeClockNotFixHeaderStamp pinned the old behavior and is rewritten as GnssFixed_StampIsFixHeaderStamp; built against this change with the old assertions, exactly that case fails and the other 30 pass. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • fix(autoware_gnss_poser): reject invalid gnss_pose_pub_method and buff_epoch at startup (#1458) gnss_pose_pub_method is now an enum (Instant / Average / Median). A value outside 0..2 used to be accepted silently: every non-zero value enabled buffering and every value other than 1 selected the median. buff_epoch must now be at least 1: a zero-capacity buffer counted as "full", so the average published NaN coordinates on every output and the median threw std::out_of_range inside the fix callback. Both are rejected with std::invalid_argument while the node is constructed, so a misconfiguration fails at launch instead of at runtime. The schema already documented 0..2 for the method; buff_epoch's minimum moves from 0 to 1 and the README no longer claims that buff_epoch = 0 disables the method (it never did). Characterization tests rewritten on purpose: MethodUnknown_BehavesLikeMedian, MethodAverage_BuffEpochZero_PublishesNaNPosition and MethodInstant_BuffEpochZero_IsHarmless (all three fail against this change with the old assertions) are replaced by Construct_UnknownPubMethod_FailsToStart and Construct_BuffEpochBelowOne_FailsToStart. The other 29 cases are unchanged. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance (#1448)

    * test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance Third PR of the series, stacked on the position branch. Ten cases on the orientation sources (INS message vs. heading from displacement), the antenna -> base_link TF lookup and composition including the fallback to identity, the lookup time and the interpolation of a changing relation, the map -> gnss_base_link broadcast, and the covariance layout of gnss_pose_cov. No production code changes. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): use one tolerance for positions and one for angles The file compared positions with 1e-9, 1e-6 and 1e-4 m depending on the case, with no principle behind the difference: the tighter values were meant to show "the same library call", which is more than a characterization test needs. Computed positions now share [position_tolerance]{.title-ref} (1e-4 m) and headings [angle_tolerance]{.title-ref} (1e-6 rad), each with its rationale next to the definition; [expect_same_rotation]{.title-ref} compares the rotation angle between the orientations so the same constant applies. Values the node copies keep exact equality, and the geoid-height check keeps its own 1 cm bound. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): explain the covariance constants in the assertions Review of #1448: the orientation and covariance cases assert squared rmse values and two hard-coded fallbacks without saying where they come from. Each of them now carries the arithmetic (0.1\^2 = 0.01 and so on), the origin of the 1.0 placeholder and of the 10.0 substitute, and the input covariance names the diagonal it expects to survive. Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> ---------Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize the position pipeline and buffering (#1437)

    * test(autoware_gnss_poser): characterize the position pipeline and buffering Second PR of the series, stacked on the harness branch. Twelve cases on how a fixed NavSatFix becomes a position: projection through autoware_geography_utils, height datum conversion, the instantaneous method, and the average / median buffering with its full-buffer gate, sliding window, independence from gated and

File truncated at 100 lines see the full file

Launch files

  • launch/gnss_poser.launch.xml
      • param_file [default: $(find-pkg-share autoware_gnss_poser)/config/gnss_poser.param.yaml]
      • input_topic_fix [default: /fix]
      • input_topic_orientation [default: /autoware_orientation]
      • output_topic_gnss_pose [default: gnss_pose]
      • output_topic_gnss_pose_cov [default: gnss_pose_cov]
      • output_topic_gnss_fixed [default: gnss_fixed]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_gnss_poser at Robotics Stack Exchange

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

autoware_gnss_poser package from autoware_core repo

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

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

The ROS 2 autoware_gnss_poser package

Maintainers

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

Authors

  • Ryo Watanabe

gnss_poser

Overview

The gnss_poser is a node that subscribes gnss sensing messages and calculates vehicle pose with covariance.

Design

This node subscribes to NavSatFix to publish the pose of base_link. The data in NavSatFix represents the antenna’s position. Therefore, it performs a coordinate transformation using the tf from base_link to the antenna’s position. The frame_id of the antenna’s position refers to NavSatFix’s header.frame_id. (Note that header.frame_id in NavSatFix indicates the antenna’s frame_id, not the Earth or reference ellipsoid. See also NavSatFix definition.)

If the transformation from base_link to the antenna cannot be obtained, it outputs the pose of the antenna position without performing coordinate transformation.

Inputs / Outputs

Input

Name Type Description
/map/map_projector_info autoware_map_msgs::msg::MapProjectorInfo map projection info
~/input/fix sensor_msgs::msg::NavSatFix gnss status message
~/input/autoware_orientation autoware_sensing_msgs::msg::GnssInsOrientationStamped orientation click here for more details

Output

Name Type Description
~/output/pose geometry_msgs::msg::PoseStamped vehicle pose calculated from gnss sensing data
~/output/gnss_pose_cov geometry_msgs::msg::PoseWithCovarianceStamped vehicle pose with covariance calculated from gnss sensing data
~/output/gnss_fixed autoware_internal_debug_msgs::msg::BoolStamped gnss fix status

Parameters

Parameters in below table

Name Type Default Description
base_frame string base_link frame id for base_frame
gnss_base_frame string gnss_base_link frame id for gnss_base_frame
map_frame string map frame id for map_frame
use_gnss_ins_orientation boolean true use Gnss-Ins orientation
gnss_pose_pub_method integer 0 0: Instant Value 1: Average Value 2: Median Value. Any other value is rejected at startup.
buff_epoch integer 1 Number of positions the average / median is taken over (ignored for method 0). Range: 1~inf; smaller values are rejected at startup.

All above parameters can be changed in config file gnss_poser.param.yaml .

CHANGELOG

Changelog for package autoware_gnss_poser

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • fix(autoware_gnss_poser): stamp gnss_fixed with the fixed header stamp (#1459) fix(autoware_gnss_poser): stamp gnss_fixed with the fix header stamp gnss_fixed was the only output stamped with the node clock; gnss_pose, gnss_pose_cov and the TF broadcast all carry the header stamp of the fix they were computed from. It now carries that stamp too, so the status can be matched to the fix and to the pose it belongs to. It comes before the logic is separated out because it decides what the pose computation answers with: once the outputs are built there, every one of them is stamped with the fix, and this is the only one that was not. The characterization case GnssFixed_StampIsNodeClockNotFixHeaderStamp pinned the old behavior and is rewritten as GnssFixed_StampIsFixHeaderStamp; built against this change with the old assertions, exactly that case fails and the other 30 pass. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • fix(autoware_gnss_poser): reject invalid gnss_pose_pub_method and buff_epoch at startup (#1458) gnss_pose_pub_method is now an enum (Instant / Average / Median). A value outside 0..2 used to be accepted silently: every non-zero value enabled buffering and every value other than 1 selected the median. buff_epoch must now be at least 1: a zero-capacity buffer counted as "full", so the average published NaN coordinates on every output and the median threw std::out_of_range inside the fix callback. Both are rejected with std::invalid_argument while the node is constructed, so a misconfiguration fails at launch instead of at runtime. The schema already documented 0..2 for the method; buff_epoch's minimum moves from 0 to 1 and the README no longer claims that buff_epoch = 0 disables the method (it never did). Characterization tests rewritten on purpose: MethodUnknown_BehavesLikeMedian, MethodAverage_BuffEpochZero_PublishesNaNPosition and MethodInstant_BuffEpochZero_IsHarmless (all three fail against this change with the old assertions) are replaced by Construct_UnknownPubMethod_FailsToStart and Construct_BuffEpochBelowOne_FailsToStart. The other 29 cases are unchanged. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance (#1448)

    * test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance Third PR of the series, stacked on the position branch. Ten cases on the orientation sources (INS message vs. heading from displacement), the antenna -> base_link TF lookup and composition including the fallback to identity, the lookup time and the interpolation of a changing relation, the map -> gnss_base_link broadcast, and the covariance layout of gnss_pose_cov. No production code changes. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): use one tolerance for positions and one for angles The file compared positions with 1e-9, 1e-6 and 1e-4 m depending on the case, with no principle behind the difference: the tighter values were meant to show "the same library call", which is more than a characterization test needs. Computed positions now share [position_tolerance]{.title-ref} (1e-4 m) and headings [angle_tolerance]{.title-ref} (1e-6 rad), each with its rationale next to the definition; [expect_same_rotation]{.title-ref} compares the rotation angle between the orientations so the same constant applies. Values the node copies keep exact equality, and the geoid-height check keeps its own 1 cm bound. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): explain the covariance constants in the assertions Review of #1448: the orientation and covariance cases assert squared rmse values and two hard-coded fallbacks without saying where they come from. Each of them now carries the arithmetic (0.1\^2 = 0.01 and so on), the origin of the 1.0 placeholder and of the 10.0 substitute, and the input covariance names the diagonal it expects to survive. Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> ---------Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize the position pipeline and buffering (#1437)

    * test(autoware_gnss_poser): characterize the position pipeline and buffering Second PR of the series, stacked on the harness branch. Twelve cases on how a fixed NavSatFix becomes a position: projection through autoware_geography_utils, height datum conversion, the instantaneous method, and the average / median buffering with its full-buffer gate, sliding window, independence from gated and

File truncated at 100 lines see the full file

Launch files

  • launch/gnss_poser.launch.xml
      • param_file [default: $(find-pkg-share autoware_gnss_poser)/config/gnss_poser.param.yaml]
      • input_topic_fix [default: /fix]
      • input_topic_orientation [default: /autoware_orientation]
      • output_topic_gnss_pose [default: gnss_pose]
      • output_topic_gnss_pose_cov [default: gnss_pose_cov]
      • output_topic_gnss_fixed [default: gnss_fixed]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_gnss_poser at Robotics Stack Exchange

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

autoware_gnss_poser package from autoware_core repo

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

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

The ROS 2 autoware_gnss_poser package

Maintainers

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

Authors

  • Ryo Watanabe

gnss_poser

Overview

The gnss_poser is a node that subscribes gnss sensing messages and calculates vehicle pose with covariance.

Design

This node subscribes to NavSatFix to publish the pose of base_link. The data in NavSatFix represents the antenna’s position. Therefore, it performs a coordinate transformation using the tf from base_link to the antenna’s position. The frame_id of the antenna’s position refers to NavSatFix’s header.frame_id. (Note that header.frame_id in NavSatFix indicates the antenna’s frame_id, not the Earth or reference ellipsoid. See also NavSatFix definition.)

If the transformation from base_link to the antenna cannot be obtained, it outputs the pose of the antenna position without performing coordinate transformation.

Inputs / Outputs

Input

Name Type Description
/map/map_projector_info autoware_map_msgs::msg::MapProjectorInfo map projection info
~/input/fix sensor_msgs::msg::NavSatFix gnss status message
~/input/autoware_orientation autoware_sensing_msgs::msg::GnssInsOrientationStamped orientation click here for more details

Output

Name Type Description
~/output/pose geometry_msgs::msg::PoseStamped vehicle pose calculated from gnss sensing data
~/output/gnss_pose_cov geometry_msgs::msg::PoseWithCovarianceStamped vehicle pose with covariance calculated from gnss sensing data
~/output/gnss_fixed autoware_internal_debug_msgs::msg::BoolStamped gnss fix status

Parameters

Parameters in below table

Name Type Default Description
base_frame string base_link frame id for base_frame
gnss_base_frame string gnss_base_link frame id for gnss_base_frame
map_frame string map frame id for map_frame
use_gnss_ins_orientation boolean true use Gnss-Ins orientation
gnss_pose_pub_method integer 0 0: Instant Value 1: Average Value 2: Median Value. Any other value is rejected at startup.
buff_epoch integer 1 Number of positions the average / median is taken over (ignored for method 0). Range: 1~inf; smaller values are rejected at startup.

All above parameters can be changed in config file gnss_poser.param.yaml .

CHANGELOG

Changelog for package autoware_gnss_poser

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • fix(autoware_gnss_poser): stamp gnss_fixed with the fixed header stamp (#1459) fix(autoware_gnss_poser): stamp gnss_fixed with the fix header stamp gnss_fixed was the only output stamped with the node clock; gnss_pose, gnss_pose_cov and the TF broadcast all carry the header stamp of the fix they were computed from. It now carries that stamp too, so the status can be matched to the fix and to the pose it belongs to. It comes before the logic is separated out because it decides what the pose computation answers with: once the outputs are built there, every one of them is stamped with the fix, and this is the only one that was not. The characterization case GnssFixed_StampIsNodeClockNotFixHeaderStamp pinned the old behavior and is rewritten as GnssFixed_StampIsFixHeaderStamp; built against this change with the old assertions, exactly that case fails and the other 30 pass. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • fix(autoware_gnss_poser): reject invalid gnss_pose_pub_method and buff_epoch at startup (#1458) gnss_pose_pub_method is now an enum (Instant / Average / Median). A value outside 0..2 used to be accepted silently: every non-zero value enabled buffering and every value other than 1 selected the median. buff_epoch must now be at least 1: a zero-capacity buffer counted as "full", so the average published NaN coordinates on every output and the median threw std::out_of_range inside the fix callback. Both are rejected with std::invalid_argument while the node is constructed, so a misconfiguration fails at launch instead of at runtime. The schema already documented 0..2 for the method; buff_epoch's minimum moves from 0 to 1 and the README no longer claims that buff_epoch = 0 disables the method (it never did). Characterization tests rewritten on purpose: MethodUnknown_BehavesLikeMedian, MethodAverage_BuffEpochZero_PublishesNaNPosition and MethodInstant_BuffEpochZero_IsHarmless (all three fail against this change with the old assertions) are replaced by Construct_UnknownPubMethod_FailsToStart and Construct_BuffEpochBelowOne_FailsToStart. The other 29 cases are unchanged. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance (#1448)

    * test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance Third PR of the series, stacked on the position branch. Ten cases on the orientation sources (INS message vs. heading from displacement), the antenna -> base_link TF lookup and composition including the fallback to identity, the lookup time and the interpolation of a changing relation, the map -> gnss_base_link broadcast, and the covariance layout of gnss_pose_cov. No production code changes. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): use one tolerance for positions and one for angles The file compared positions with 1e-9, 1e-6 and 1e-4 m depending on the case, with no principle behind the difference: the tighter values were meant to show "the same library call", which is more than a characterization test needs. Computed positions now share [position_tolerance]{.title-ref} (1e-4 m) and headings [angle_tolerance]{.title-ref} (1e-6 rad), each with its rationale next to the definition; [expect_same_rotation]{.title-ref} compares the rotation angle between the orientations so the same constant applies. Values the node copies keep exact equality, and the geoid-height check keeps its own 1 cm bound. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): explain the covariance constants in the assertions Review of #1448: the orientation and covariance cases assert squared rmse values and two hard-coded fallbacks without saying where they come from. Each of them now carries the arithmetic (0.1\^2 = 0.01 and so on), the origin of the 1.0 placeholder and of the 10.0 substitute, and the input covariance names the diagonal it expects to survive. Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> ---------Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize the position pipeline and buffering (#1437)

    * test(autoware_gnss_poser): characterize the position pipeline and buffering Second PR of the series, stacked on the harness branch. Twelve cases on how a fixed NavSatFix becomes a position: projection through autoware_geography_utils, height datum conversion, the instantaneous method, and the average / median buffering with its full-buffer gate, sliding window, independence from gated and

File truncated at 100 lines see the full file

Launch files

  • launch/gnss_poser.launch.xml
      • param_file [default: $(find-pkg-share autoware_gnss_poser)/config/gnss_poser.param.yaml]
      • input_topic_fix [default: /fix]
      • input_topic_orientation [default: /autoware_orientation]
      • output_topic_gnss_pose [default: gnss_pose]
      • output_topic_gnss_pose_cov [default: gnss_pose_cov]
      • output_topic_gnss_fixed [default: gnss_fixed]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_gnss_poser at Robotics Stack Exchange

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

autoware_gnss_poser package from autoware_core repo

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

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

The ROS 2 autoware_gnss_poser package

Maintainers

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

Authors

  • Ryo Watanabe

gnss_poser

Overview

The gnss_poser is a node that subscribes gnss sensing messages and calculates vehicle pose with covariance.

Design

This node subscribes to NavSatFix to publish the pose of base_link. The data in NavSatFix represents the antenna’s position. Therefore, it performs a coordinate transformation using the tf from base_link to the antenna’s position. The frame_id of the antenna’s position refers to NavSatFix’s header.frame_id. (Note that header.frame_id in NavSatFix indicates the antenna’s frame_id, not the Earth or reference ellipsoid. See also NavSatFix definition.)

If the transformation from base_link to the antenna cannot be obtained, it outputs the pose of the antenna position without performing coordinate transformation.

Inputs / Outputs

Input

Name Type Description
/map/map_projector_info autoware_map_msgs::msg::MapProjectorInfo map projection info
~/input/fix sensor_msgs::msg::NavSatFix gnss status message
~/input/autoware_orientation autoware_sensing_msgs::msg::GnssInsOrientationStamped orientation click here for more details

Output

Name Type Description
~/output/pose geometry_msgs::msg::PoseStamped vehicle pose calculated from gnss sensing data
~/output/gnss_pose_cov geometry_msgs::msg::PoseWithCovarianceStamped vehicle pose with covariance calculated from gnss sensing data
~/output/gnss_fixed autoware_internal_debug_msgs::msg::BoolStamped gnss fix status

Parameters

Parameters in below table

Name Type Default Description
base_frame string base_link frame id for base_frame
gnss_base_frame string gnss_base_link frame id for gnss_base_frame
map_frame string map frame id for map_frame
use_gnss_ins_orientation boolean true use Gnss-Ins orientation
gnss_pose_pub_method integer 0 0: Instant Value 1: Average Value 2: Median Value. Any other value is rejected at startup.
buff_epoch integer 1 Number of positions the average / median is taken over (ignored for method 0). Range: 1~inf; smaller values are rejected at startup.

All above parameters can be changed in config file gnss_poser.param.yaml .

CHANGELOG

Changelog for package autoware_gnss_poser

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • fix(autoware_gnss_poser): stamp gnss_fixed with the fixed header stamp (#1459) fix(autoware_gnss_poser): stamp gnss_fixed with the fix header stamp gnss_fixed was the only output stamped with the node clock; gnss_pose, gnss_pose_cov and the TF broadcast all carry the header stamp of the fix they were computed from. It now carries that stamp too, so the status can be matched to the fix and to the pose it belongs to. It comes before the logic is separated out because it decides what the pose computation answers with: once the outputs are built there, every one of them is stamped with the fix, and this is the only one that was not. The characterization case GnssFixed_StampIsNodeClockNotFixHeaderStamp pinned the old behavior and is rewritten as GnssFixed_StampIsFixHeaderStamp; built against this change with the old assertions, exactly that case fails and the other 30 pass. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • fix(autoware_gnss_poser): reject invalid gnss_pose_pub_method and buff_epoch at startup (#1458) gnss_pose_pub_method is now an enum (Instant / Average / Median). A value outside 0..2 used to be accepted silently: every non-zero value enabled buffering and every value other than 1 selected the median. buff_epoch must now be at least 1: a zero-capacity buffer counted as "full", so the average published NaN coordinates on every output and the median threw std::out_of_range inside the fix callback. Both are rejected with std::invalid_argument while the node is constructed, so a misconfiguration fails at launch instead of at runtime. The schema already documented 0..2 for the method; buff_epoch's minimum moves from 0 to 1 and the README no longer claims that buff_epoch = 0 disables the method (it never did). Characterization tests rewritten on purpose: MethodUnknown_BehavesLikeMedian, MethodAverage_BuffEpochZero_PublishesNaNPosition and MethodInstant_BuffEpochZero_IsHarmless (all three fail against this change with the old assertions) are replaced by Construct_UnknownPubMethod_FailsToStart and Construct_BuffEpochBelowOne_FailsToStart. The other 29 cases are unchanged. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance (#1448)

    * test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance Third PR of the series, stacked on the position branch. Ten cases on the orientation sources (INS message vs. heading from displacement), the antenna -> base_link TF lookup and composition including the fallback to identity, the lookup time and the interpolation of a changing relation, the map -> gnss_base_link broadcast, and the covariance layout of gnss_pose_cov. No production code changes. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): use one tolerance for positions and one for angles The file compared positions with 1e-9, 1e-6 and 1e-4 m depending on the case, with no principle behind the difference: the tighter values were meant to show "the same library call", which is more than a characterization test needs. Computed positions now share [position_tolerance]{.title-ref} (1e-4 m) and headings [angle_tolerance]{.title-ref} (1e-6 rad), each with its rationale next to the definition; [expect_same_rotation]{.title-ref} compares the rotation angle between the orientations so the same constant applies. Values the node copies keep exact equality, and the geoid-height check keeps its own 1 cm bound. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): explain the covariance constants in the assertions Review of #1448: the orientation and covariance cases assert squared rmse values and two hard-coded fallbacks without saying where they come from. Each of them now carries the arithmetic (0.1\^2 = 0.01 and so on), the origin of the 1.0 placeholder and of the 10.0 substitute, and the input covariance names the diagonal it expects to survive. Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> ---------Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize the position pipeline and buffering (#1437)

    * test(autoware_gnss_poser): characterize the position pipeline and buffering Second PR of the series, stacked on the harness branch. Twelve cases on how a fixed NavSatFix becomes a position: projection through autoware_geography_utils, height datum conversion, the instantaneous method, and the average / median buffering with its full-buffer gate, sliding window, independence from gated and

File truncated at 100 lines see the full file

Launch files

  • launch/gnss_poser.launch.xml
      • param_file [default: $(find-pkg-share autoware_gnss_poser)/config/gnss_poser.param.yaml]
      • input_topic_fix [default: /fix]
      • input_topic_orientation [default: /autoware_orientation]
      • output_topic_gnss_pose [default: gnss_pose]
      • output_topic_gnss_pose_cov [default: gnss_pose_cov]
      • output_topic_gnss_fixed [default: gnss_fixed]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_gnss_poser at Robotics Stack Exchange

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

autoware_gnss_poser package from autoware_core repo

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

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

The ROS 2 autoware_gnss_poser package

Maintainers

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

Authors

  • Ryo Watanabe

gnss_poser

Overview

The gnss_poser is a node that subscribes gnss sensing messages and calculates vehicle pose with covariance.

Design

This node subscribes to NavSatFix to publish the pose of base_link. The data in NavSatFix represents the antenna’s position. Therefore, it performs a coordinate transformation using the tf from base_link to the antenna’s position. The frame_id of the antenna’s position refers to NavSatFix’s header.frame_id. (Note that header.frame_id in NavSatFix indicates the antenna’s frame_id, not the Earth or reference ellipsoid. See also NavSatFix definition.)

If the transformation from base_link to the antenna cannot be obtained, it outputs the pose of the antenna position without performing coordinate transformation.

Inputs / Outputs

Input

Name Type Description
/map/map_projector_info autoware_map_msgs::msg::MapProjectorInfo map projection info
~/input/fix sensor_msgs::msg::NavSatFix gnss status message
~/input/autoware_orientation autoware_sensing_msgs::msg::GnssInsOrientationStamped orientation click here for more details

Output

Name Type Description
~/output/pose geometry_msgs::msg::PoseStamped vehicle pose calculated from gnss sensing data
~/output/gnss_pose_cov geometry_msgs::msg::PoseWithCovarianceStamped vehicle pose with covariance calculated from gnss sensing data
~/output/gnss_fixed autoware_internal_debug_msgs::msg::BoolStamped gnss fix status

Parameters

Parameters in below table

Name Type Default Description
base_frame string base_link frame id for base_frame
gnss_base_frame string gnss_base_link frame id for gnss_base_frame
map_frame string map frame id for map_frame
use_gnss_ins_orientation boolean true use Gnss-Ins orientation
gnss_pose_pub_method integer 0 0: Instant Value 1: Average Value 2: Median Value. Any other value is rejected at startup.
buff_epoch integer 1 Number of positions the average / median is taken over (ignored for method 0). Range: 1~inf; smaller values are rejected at startup.

All above parameters can be changed in config file gnss_poser.param.yaml .

CHANGELOG

Changelog for package autoware_gnss_poser

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • fix(autoware_gnss_poser): stamp gnss_fixed with the fixed header stamp (#1459) fix(autoware_gnss_poser): stamp gnss_fixed with the fix header stamp gnss_fixed was the only output stamped with the node clock; gnss_pose, gnss_pose_cov and the TF broadcast all carry the header stamp of the fix they were computed from. It now carries that stamp too, so the status can be matched to the fix and to the pose it belongs to. It comes before the logic is separated out because it decides what the pose computation answers with: once the outputs are built there, every one of them is stamped with the fix, and this is the only one that was not. The characterization case GnssFixed_StampIsNodeClockNotFixHeaderStamp pinned the old behavior and is rewritten as GnssFixed_StampIsFixHeaderStamp; built against this change with the old assertions, exactly that case fails and the other 30 pass. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • fix(autoware_gnss_poser): reject invalid gnss_pose_pub_method and buff_epoch at startup (#1458) gnss_pose_pub_method is now an enum (Instant / Average / Median). A value outside 0..2 used to be accepted silently: every non-zero value enabled buffering and every value other than 1 selected the median. buff_epoch must now be at least 1: a zero-capacity buffer counted as "full", so the average published NaN coordinates on every output and the median threw std::out_of_range inside the fix callback. Both are rejected with std::invalid_argument while the node is constructed, so a misconfiguration fails at launch instead of at runtime. The schema already documented 0..2 for the method; buff_epoch's minimum moves from 0 to 1 and the README no longer claims that buff_epoch = 0 disables the method (it never did). Characterization tests rewritten on purpose: MethodUnknown_BehavesLikeMedian, MethodAverage_BuffEpochZero_PublishesNaNPosition and MethodInstant_BuffEpochZero_IsHarmless (all three fail against this change with the old assertions) are replaced by Construct_UnknownPubMethod_FailsToStart and Construct_BuffEpochBelowOne_FailsToStart. The other 29 cases are unchanged. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance (#1448)

    * test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance Third PR of the series, stacked on the position branch. Ten cases on the orientation sources (INS message vs. heading from displacement), the antenna -> base_link TF lookup and composition including the fallback to identity, the lookup time and the interpolation of a changing relation, the map -> gnss_base_link broadcast, and the covariance layout of gnss_pose_cov. No production code changes. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): use one tolerance for positions and one for angles The file compared positions with 1e-9, 1e-6 and 1e-4 m depending on the case, with no principle behind the difference: the tighter values were meant to show "the same library call", which is more than a characterization test needs. Computed positions now share [position_tolerance]{.title-ref} (1e-4 m) and headings [angle_tolerance]{.title-ref} (1e-6 rad), each with its rationale next to the definition; [expect_same_rotation]{.title-ref} compares the rotation angle between the orientations so the same constant applies. Values the node copies keep exact equality, and the geoid-height check keeps its own 1 cm bound. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): explain the covariance constants in the assertions Review of #1448: the orientation and covariance cases assert squared rmse values and two hard-coded fallbacks without saying where they come from. Each of them now carries the arithmetic (0.1\^2 = 0.01 and so on), the origin of the 1.0 placeholder and of the 10.0 substitute, and the input covariance names the diagonal it expects to survive. Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> ---------Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize the position pipeline and buffering (#1437)

    * test(autoware_gnss_poser): characterize the position pipeline and buffering Second PR of the series, stacked on the harness branch. Twelve cases on how a fixed NavSatFix becomes a position: projection through autoware_geography_utils, height datum conversion, the instantaneous method, and the average / median buffering with its full-buffer gate, sliding window, independence from gated and

File truncated at 100 lines see the full file

Launch files

  • launch/gnss_poser.launch.xml
      • param_file [default: $(find-pkg-share autoware_gnss_poser)/config/gnss_poser.param.yaml]
      • input_topic_fix [default: /fix]
      • input_topic_orientation [default: /autoware_orientation]
      • output_topic_gnss_pose [default: gnss_pose]
      • output_topic_gnss_pose_cov [default: gnss_pose_cov]
      • output_topic_gnss_fixed [default: gnss_fixed]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_gnss_poser at Robotics Stack Exchange

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

autoware_gnss_poser package from autoware_core repo

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

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

The ROS 2 autoware_gnss_poser package

Maintainers

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

Authors

  • Ryo Watanabe

gnss_poser

Overview

The gnss_poser is a node that subscribes gnss sensing messages and calculates vehicle pose with covariance.

Design

This node subscribes to NavSatFix to publish the pose of base_link. The data in NavSatFix represents the antenna’s position. Therefore, it performs a coordinate transformation using the tf from base_link to the antenna’s position. The frame_id of the antenna’s position refers to NavSatFix’s header.frame_id. (Note that header.frame_id in NavSatFix indicates the antenna’s frame_id, not the Earth or reference ellipsoid. See also NavSatFix definition.)

If the transformation from base_link to the antenna cannot be obtained, it outputs the pose of the antenna position without performing coordinate transformation.

Inputs / Outputs

Input

Name Type Description
/map/map_projector_info autoware_map_msgs::msg::MapProjectorInfo map projection info
~/input/fix sensor_msgs::msg::NavSatFix gnss status message
~/input/autoware_orientation autoware_sensing_msgs::msg::GnssInsOrientationStamped orientation click here for more details

Output

Name Type Description
~/output/pose geometry_msgs::msg::PoseStamped vehicle pose calculated from gnss sensing data
~/output/gnss_pose_cov geometry_msgs::msg::PoseWithCovarianceStamped vehicle pose with covariance calculated from gnss sensing data
~/output/gnss_fixed autoware_internal_debug_msgs::msg::BoolStamped gnss fix status

Parameters

Parameters in below table

Name Type Default Description
base_frame string base_link frame id for base_frame
gnss_base_frame string gnss_base_link frame id for gnss_base_frame
map_frame string map frame id for map_frame
use_gnss_ins_orientation boolean true use Gnss-Ins orientation
gnss_pose_pub_method integer 0 0: Instant Value 1: Average Value 2: Median Value. Any other value is rejected at startup.
buff_epoch integer 1 Number of positions the average / median is taken over (ignored for method 0). Range: 1~inf; smaller values are rejected at startup.

All above parameters can be changed in config file gnss_poser.param.yaml .

CHANGELOG

Changelog for package autoware_gnss_poser

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • fix(autoware_gnss_poser): stamp gnss_fixed with the fixed header stamp (#1459) fix(autoware_gnss_poser): stamp gnss_fixed with the fix header stamp gnss_fixed was the only output stamped with the node clock; gnss_pose, gnss_pose_cov and the TF broadcast all carry the header stamp of the fix they were computed from. It now carries that stamp too, so the status can be matched to the fix and to the pose it belongs to. It comes before the logic is separated out because it decides what the pose computation answers with: once the outputs are built there, every one of them is stamped with the fix, and this is the only one that was not. The characterization case GnssFixed_StampIsNodeClockNotFixHeaderStamp pinned the old behavior and is rewritten as GnssFixed_StampIsFixHeaderStamp; built against this change with the old assertions, exactly that case fails and the other 30 pass. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • fix(autoware_gnss_poser): reject invalid gnss_pose_pub_method and buff_epoch at startup (#1458) gnss_pose_pub_method is now an enum (Instant / Average / Median). A value outside 0..2 used to be accepted silently: every non-zero value enabled buffering and every value other than 1 selected the median. buff_epoch must now be at least 1: a zero-capacity buffer counted as "full", so the average published NaN coordinates on every output and the median threw std::out_of_range inside the fix callback. Both are rejected with std::invalid_argument while the node is constructed, so a misconfiguration fails at launch instead of at runtime. The schema already documented 0..2 for the method; buff_epoch's minimum moves from 0 to 1 and the README no longer claims that buff_epoch = 0 disables the method (it never did). Characterization tests rewritten on purpose: MethodUnknown_BehavesLikeMedian, MethodAverage_BuffEpochZero_PublishesNaNPosition and MethodInstant_BuffEpochZero_IsHarmless (all three fail against this change with the old assertions) are replaced by Construct_UnknownPubMethod_FailsToStart and Construct_BuffEpochBelowOne_FailsToStart. The other 29 cases are unchanged. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance (#1448)

    * test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance Third PR of the series, stacked on the position branch. Ten cases on the orientation sources (INS message vs. heading from displacement), the antenna -> base_link TF lookup and composition including the fallback to identity, the lookup time and the interpolation of a changing relation, the map -> gnss_base_link broadcast, and the covariance layout of gnss_pose_cov. No production code changes. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): use one tolerance for positions and one for angles The file compared positions with 1e-9, 1e-6 and 1e-4 m depending on the case, with no principle behind the difference: the tighter values were meant to show "the same library call", which is more than a characterization test needs. Computed positions now share [position_tolerance]{.title-ref} (1e-4 m) and headings [angle_tolerance]{.title-ref} (1e-6 rad), each with its rationale next to the definition; [expect_same_rotation]{.title-ref} compares the rotation angle between the orientations so the same constant applies. Values the node copies keep exact equality, and the geoid-height check keeps its own 1 cm bound. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): explain the covariance constants in the assertions Review of #1448: the orientation and covariance cases assert squared rmse values and two hard-coded fallbacks without saying where they come from. Each of them now carries the arithmetic (0.1\^2 = 0.01 and so on), the origin of the 1.0 placeholder and of the 10.0 substitute, and the input covariance names the diagonal it expects to survive. Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> ---------Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize the position pipeline and buffering (#1437)

    * test(autoware_gnss_poser): characterize the position pipeline and buffering Second PR of the series, stacked on the harness branch. Twelve cases on how a fixed NavSatFix becomes a position: projection through autoware_geography_utils, height datum conversion, the instantaneous method, and the average / median buffering with its full-buffer gate, sliding window, independence from gated and

File truncated at 100 lines see the full file

Launch files

  • launch/gnss_poser.launch.xml
      • param_file [default: $(find-pkg-share autoware_gnss_poser)/config/gnss_poser.param.yaml]
      • input_topic_fix [default: /fix]
      • input_topic_orientation [default: /autoware_orientation]
      • output_topic_gnss_pose [default: gnss_pose]
      • output_topic_gnss_pose_cov [default: gnss_pose_cov]
      • output_topic_gnss_fixed [default: gnss_fixed]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_gnss_poser at Robotics Stack Exchange

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

autoware_gnss_poser package from autoware_core repo

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

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

The ROS 2 autoware_gnss_poser package

Maintainers

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

Authors

  • Ryo Watanabe

gnss_poser

Overview

The gnss_poser is a node that subscribes gnss sensing messages and calculates vehicle pose with covariance.

Design

This node subscribes to NavSatFix to publish the pose of base_link. The data in NavSatFix represents the antenna’s position. Therefore, it performs a coordinate transformation using the tf from base_link to the antenna’s position. The frame_id of the antenna’s position refers to NavSatFix’s header.frame_id. (Note that header.frame_id in NavSatFix indicates the antenna’s frame_id, not the Earth or reference ellipsoid. See also NavSatFix definition.)

If the transformation from base_link to the antenna cannot be obtained, it outputs the pose of the antenna position without performing coordinate transformation.

Inputs / Outputs

Input

Name Type Description
/map/map_projector_info autoware_map_msgs::msg::MapProjectorInfo map projection info
~/input/fix sensor_msgs::msg::NavSatFix gnss status message
~/input/autoware_orientation autoware_sensing_msgs::msg::GnssInsOrientationStamped orientation click here for more details

Output

Name Type Description
~/output/pose geometry_msgs::msg::PoseStamped vehicle pose calculated from gnss sensing data
~/output/gnss_pose_cov geometry_msgs::msg::PoseWithCovarianceStamped vehicle pose with covariance calculated from gnss sensing data
~/output/gnss_fixed autoware_internal_debug_msgs::msg::BoolStamped gnss fix status

Parameters

Parameters in below table

Name Type Default Description
base_frame string base_link frame id for base_frame
gnss_base_frame string gnss_base_link frame id for gnss_base_frame
map_frame string map frame id for map_frame
use_gnss_ins_orientation boolean true use Gnss-Ins orientation
gnss_pose_pub_method integer 0 0: Instant Value 1: Average Value 2: Median Value. Any other value is rejected at startup.
buff_epoch integer 1 Number of positions the average / median is taken over (ignored for method 0). Range: 1~inf; smaller values are rejected at startup.

All above parameters can be changed in config file gnss_poser.param.yaml .

CHANGELOG

Changelog for package autoware_gnss_poser

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • fix(autoware_gnss_poser): stamp gnss_fixed with the fixed header stamp (#1459) fix(autoware_gnss_poser): stamp gnss_fixed with the fix header stamp gnss_fixed was the only output stamped with the node clock; gnss_pose, gnss_pose_cov and the TF broadcast all carry the header stamp of the fix they were computed from. It now carries that stamp too, so the status can be matched to the fix and to the pose it belongs to. It comes before the logic is separated out because it decides what the pose computation answers with: once the outputs are built there, every one of them is stamped with the fix, and this is the only one that was not. The characterization case GnssFixed_StampIsNodeClockNotFixHeaderStamp pinned the old behavior and is rewritten as GnssFixed_StampIsFixHeaderStamp; built against this change with the old assertions, exactly that case fails and the other 30 pass. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • fix(autoware_gnss_poser): reject invalid gnss_pose_pub_method and buff_epoch at startup (#1458) gnss_pose_pub_method is now an enum (Instant / Average / Median). A value outside 0..2 used to be accepted silently: every non-zero value enabled buffering and every value other than 1 selected the median. buff_epoch must now be at least 1: a zero-capacity buffer counted as "full", so the average published NaN coordinates on every output and the median threw std::out_of_range inside the fix callback. Both are rejected with std::invalid_argument while the node is constructed, so a misconfiguration fails at launch instead of at runtime. The schema already documented 0..2 for the method; buff_epoch's minimum moves from 0 to 1 and the README no longer claims that buff_epoch = 0 disables the method (it never did). Characterization tests rewritten on purpose: MethodUnknown_BehavesLikeMedian, MethodAverage_BuffEpochZero_PublishesNaNPosition and MethodInstant_BuffEpochZero_IsHarmless (all three fail against this change with the old assertions) are replaced by Construct_UnknownPubMethod_FailsToStart and Construct_BuffEpochBelowOne_FailsToStart. The other 29 cases are unchanged. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance (#1448)

    * test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance Third PR of the series, stacked on the position branch. Ten cases on the orientation sources (INS message vs. heading from displacement), the antenna -> base_link TF lookup and composition including the fallback to identity, the lookup time and the interpolation of a changing relation, the map -> gnss_base_link broadcast, and the covariance layout of gnss_pose_cov. No production code changes. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): use one tolerance for positions and one for angles The file compared positions with 1e-9, 1e-6 and 1e-4 m depending on the case, with no principle behind the difference: the tighter values were meant to show "the same library call", which is more than a characterization test needs. Computed positions now share [position_tolerance]{.title-ref} (1e-4 m) and headings [angle_tolerance]{.title-ref} (1e-6 rad), each with its rationale next to the definition; [expect_same_rotation]{.title-ref} compares the rotation angle between the orientations so the same constant applies. Values the node copies keep exact equality, and the geoid-height check keeps its own 1 cm bound. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): explain the covariance constants in the assertions Review of #1448: the orientation and covariance cases assert squared rmse values and two hard-coded fallbacks without saying where they come from. Each of them now carries the arithmetic (0.1\^2 = 0.01 and so on), the origin of the 1.0 placeholder and of the 10.0 substitute, and the input covariance names the diagonal it expects to survive. Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> ---------Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize the position pipeline and buffering (#1437)

    * test(autoware_gnss_poser): characterize the position pipeline and buffering Second PR of the series, stacked on the harness branch. Twelve cases on how a fixed NavSatFix becomes a position: projection through autoware_geography_utils, height datum conversion, the instantaneous method, and the average / median buffering with its full-buffer gate, sliding window, independence from gated and

File truncated at 100 lines see the full file

Launch files

  • launch/gnss_poser.launch.xml
      • param_file [default: $(find-pkg-share autoware_gnss_poser)/config/gnss_poser.param.yaml]
      • input_topic_fix [default: /fix]
      • input_topic_orientation [default: /autoware_orientation]
      • output_topic_gnss_pose [default: gnss_pose]
      • output_topic_gnss_pose_cov [default: gnss_pose_cov]
      • output_topic_gnss_fixed [default: gnss_fixed]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_gnss_poser at Robotics Stack Exchange

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

autoware_gnss_poser package from autoware_core repo

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

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

The ROS 2 autoware_gnss_poser package

Maintainers

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

Authors

  • Ryo Watanabe

gnss_poser

Overview

The gnss_poser is a node that subscribes gnss sensing messages and calculates vehicle pose with covariance.

Design

This node subscribes to NavSatFix to publish the pose of base_link. The data in NavSatFix represents the antenna’s position. Therefore, it performs a coordinate transformation using the tf from base_link to the antenna’s position. The frame_id of the antenna’s position refers to NavSatFix’s header.frame_id. (Note that header.frame_id in NavSatFix indicates the antenna’s frame_id, not the Earth or reference ellipsoid. See also NavSatFix definition.)

If the transformation from base_link to the antenna cannot be obtained, it outputs the pose of the antenna position without performing coordinate transformation.

Inputs / Outputs

Input

Name Type Description
/map/map_projector_info autoware_map_msgs::msg::MapProjectorInfo map projection info
~/input/fix sensor_msgs::msg::NavSatFix gnss status message
~/input/autoware_orientation autoware_sensing_msgs::msg::GnssInsOrientationStamped orientation click here for more details

Output

Name Type Description
~/output/pose geometry_msgs::msg::PoseStamped vehicle pose calculated from gnss sensing data
~/output/gnss_pose_cov geometry_msgs::msg::PoseWithCovarianceStamped vehicle pose with covariance calculated from gnss sensing data
~/output/gnss_fixed autoware_internal_debug_msgs::msg::BoolStamped gnss fix status

Parameters

Parameters in below table

Name Type Default Description
base_frame string base_link frame id for base_frame
gnss_base_frame string gnss_base_link frame id for gnss_base_frame
map_frame string map frame id for map_frame
use_gnss_ins_orientation boolean true use Gnss-Ins orientation
gnss_pose_pub_method integer 0 0: Instant Value 1: Average Value 2: Median Value. Any other value is rejected at startup.
buff_epoch integer 1 Number of positions the average / median is taken over (ignored for method 0). Range: 1~inf; smaller values are rejected at startup.

All above parameters can be changed in config file gnss_poser.param.yaml .

CHANGELOG

Changelog for package autoware_gnss_poser

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • fix(autoware_gnss_poser): stamp gnss_fixed with the fixed header stamp (#1459) fix(autoware_gnss_poser): stamp gnss_fixed with the fix header stamp gnss_fixed was the only output stamped with the node clock; gnss_pose, gnss_pose_cov and the TF broadcast all carry the header stamp of the fix they were computed from. It now carries that stamp too, so the status can be matched to the fix and to the pose it belongs to. It comes before the logic is separated out because it decides what the pose computation answers with: once the outputs are built there, every one of them is stamped with the fix, and this is the only one that was not. The characterization case GnssFixed_StampIsNodeClockNotFixHeaderStamp pinned the old behavior and is rewritten as GnssFixed_StampIsFixHeaderStamp; built against this change with the old assertions, exactly that case fails and the other 30 pass. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • fix(autoware_gnss_poser): reject invalid gnss_pose_pub_method and buff_epoch at startup (#1458) gnss_pose_pub_method is now an enum (Instant / Average / Median). A value outside 0..2 used to be accepted silently: every non-zero value enabled buffering and every value other than 1 selected the median. buff_epoch must now be at least 1: a zero-capacity buffer counted as "full", so the average published NaN coordinates on every output and the median threw std::out_of_range inside the fix callback. Both are rejected with std::invalid_argument while the node is constructed, so a misconfiguration fails at launch instead of at runtime. The schema already documented 0..2 for the method; buff_epoch's minimum moves from 0 to 1 and the README no longer claims that buff_epoch = 0 disables the method (it never did). Characterization tests rewritten on purpose: MethodUnknown_BehavesLikeMedian, MethodAverage_BuffEpochZero_PublishesNaNPosition and MethodInstant_BuffEpochZero_IsHarmless (all three fail against this change with the old assertions) are replaced by Construct_UnknownPubMethod_FailsToStart and Construct_BuffEpochBelowOne_FailsToStart. The other 29 cases are unchanged. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance (#1448)

    * test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance Third PR of the series, stacked on the position branch. Ten cases on the orientation sources (INS message vs. heading from displacement), the antenna -> base_link TF lookup and composition including the fallback to identity, the lookup time and the interpolation of a changing relation, the map -> gnss_base_link broadcast, and the covariance layout of gnss_pose_cov. No production code changes. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): use one tolerance for positions and one for angles The file compared positions with 1e-9, 1e-6 and 1e-4 m depending on the case, with no principle behind the difference: the tighter values were meant to show "the same library call", which is more than a characterization test needs. Computed positions now share [position_tolerance]{.title-ref} (1e-4 m) and headings [angle_tolerance]{.title-ref} (1e-6 rad), each with its rationale next to the definition; [expect_same_rotation]{.title-ref} compares the rotation angle between the orientations so the same constant applies. Values the node copies keep exact equality, and the geoid-height check keeps its own 1 cm bound. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): explain the covariance constants in the assertions Review of #1448: the orientation and covariance cases assert squared rmse values and two hard-coded fallbacks without saying where they come from. Each of them now carries the arithmetic (0.1\^2 = 0.01 and so on), the origin of the 1.0 placeholder and of the 10.0 substitute, and the input covariance names the diagonal it expects to survive. Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> ---------Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize the position pipeline and buffering (#1437)

    * test(autoware_gnss_poser): characterize the position pipeline and buffering Second PR of the series, stacked on the harness branch. Twelve cases on how a fixed NavSatFix becomes a position: projection through autoware_geography_utils, height datum conversion, the instantaneous method, and the average / median buffering with its full-buffer gate, sliding window, independence from gated and

File truncated at 100 lines see the full file

Launch files

  • launch/gnss_poser.launch.xml
      • param_file [default: $(find-pkg-share autoware_gnss_poser)/config/gnss_poser.param.yaml]
      • input_topic_fix [default: /fix]
      • input_topic_orientation [default: /autoware_orientation]
      • output_topic_gnss_pose [default: gnss_pose]
      • output_topic_gnss_pose_cov [default: gnss_pose_cov]
      • output_topic_gnss_fixed [default: gnss_fixed]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_gnss_poser at Robotics Stack Exchange

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

autoware_gnss_poser package from autoware_core repo

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

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

The ROS 2 autoware_gnss_poser package

Maintainers

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

Authors

  • Ryo Watanabe

gnss_poser

Overview

The gnss_poser is a node that subscribes gnss sensing messages and calculates vehicle pose with covariance.

Design

This node subscribes to NavSatFix to publish the pose of base_link. The data in NavSatFix represents the antenna’s position. Therefore, it performs a coordinate transformation using the tf from base_link to the antenna’s position. The frame_id of the antenna’s position refers to NavSatFix’s header.frame_id. (Note that header.frame_id in NavSatFix indicates the antenna’s frame_id, not the Earth or reference ellipsoid. See also NavSatFix definition.)

If the transformation from base_link to the antenna cannot be obtained, it outputs the pose of the antenna position without performing coordinate transformation.

Inputs / Outputs

Input

Name Type Description
/map/map_projector_info autoware_map_msgs::msg::MapProjectorInfo map projection info
~/input/fix sensor_msgs::msg::NavSatFix gnss status message
~/input/autoware_orientation autoware_sensing_msgs::msg::GnssInsOrientationStamped orientation click here for more details

Output

Name Type Description
~/output/pose geometry_msgs::msg::PoseStamped vehicle pose calculated from gnss sensing data
~/output/gnss_pose_cov geometry_msgs::msg::PoseWithCovarianceStamped vehicle pose with covariance calculated from gnss sensing data
~/output/gnss_fixed autoware_internal_debug_msgs::msg::BoolStamped gnss fix status

Parameters

Parameters in below table

Name Type Default Description
base_frame string base_link frame id for base_frame
gnss_base_frame string gnss_base_link frame id for gnss_base_frame
map_frame string map frame id for map_frame
use_gnss_ins_orientation boolean true use Gnss-Ins orientation
gnss_pose_pub_method integer 0 0: Instant Value 1: Average Value 2: Median Value. Any other value is rejected at startup.
buff_epoch integer 1 Number of positions the average / median is taken over (ignored for method 0). Range: 1~inf; smaller values are rejected at startup.

All above parameters can be changed in config file gnss_poser.param.yaml .

CHANGELOG

Changelog for package autoware_gnss_poser

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • fix(autoware_gnss_poser): stamp gnss_fixed with the fixed header stamp (#1459) fix(autoware_gnss_poser): stamp gnss_fixed with the fix header stamp gnss_fixed was the only output stamped with the node clock; gnss_pose, gnss_pose_cov and the TF broadcast all carry the header stamp of the fix they were computed from. It now carries that stamp too, so the status can be matched to the fix and to the pose it belongs to. It comes before the logic is separated out because it decides what the pose computation answers with: once the outputs are built there, every one of them is stamped with the fix, and this is the only one that was not. The characterization case GnssFixed_StampIsNodeClockNotFixHeaderStamp pinned the old behavior and is rewritten as GnssFixed_StampIsFixHeaderStamp; built against this change with the old assertions, exactly that case fails and the other 30 pass. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • fix(autoware_gnss_poser): reject invalid gnss_pose_pub_method and buff_epoch at startup (#1458) gnss_pose_pub_method is now an enum (Instant / Average / Median). A value outside 0..2 used to be accepted silently: every non-zero value enabled buffering and every value other than 1 selected the median. buff_epoch must now be at least 1: a zero-capacity buffer counted as "full", so the average published NaN coordinates on every output and the median threw std::out_of_range inside the fix callback. Both are rejected with std::invalid_argument while the node is constructed, so a misconfiguration fails at launch instead of at runtime. The schema already documented 0..2 for the method; buff_epoch's minimum moves from 0 to 1 and the README no longer claims that buff_epoch = 0 disables the method (it never did). Characterization tests rewritten on purpose: MethodUnknown_BehavesLikeMedian, MethodAverage_BuffEpochZero_PublishesNaNPosition and MethodInstant_BuffEpochZero_IsHarmless (all three fail against this change with the old assertions) are replaced by Construct_UnknownPubMethod_FailsToStart and Construct_BuffEpochBelowOne_FailsToStart. The other 29 cases are unchanged. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance (#1448)

    * test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance Third PR of the series, stacked on the position branch. Ten cases on the orientation sources (INS message vs. heading from displacement), the antenna -> base_link TF lookup and composition including the fallback to identity, the lookup time and the interpolation of a changing relation, the map -> gnss_base_link broadcast, and the covariance layout of gnss_pose_cov. No production code changes. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): use one tolerance for positions and one for angles The file compared positions with 1e-9, 1e-6 and 1e-4 m depending on the case, with no principle behind the difference: the tighter values were meant to show "the same library call", which is more than a characterization test needs. Computed positions now share [position_tolerance]{.title-ref} (1e-4 m) and headings [angle_tolerance]{.title-ref} (1e-6 rad), each with its rationale next to the definition; [expect_same_rotation]{.title-ref} compares the rotation angle between the orientations so the same constant applies. Values the node copies keep exact equality, and the geoid-height check keeps its own 1 cm bound. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): explain the covariance constants in the assertions Review of #1448: the orientation and covariance cases assert squared rmse values and two hard-coded fallbacks without saying where they come from. Each of them now carries the arithmetic (0.1\^2 = 0.01 and so on), the origin of the 1.0 placeholder and of the 10.0 substitute, and the input covariance names the diagonal it expects to survive. Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> ---------Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize the position pipeline and buffering (#1437)

    * test(autoware_gnss_poser): characterize the position pipeline and buffering Second PR of the series, stacked on the harness branch. Twelve cases on how a fixed NavSatFix becomes a position: projection through autoware_geography_utils, height datum conversion, the instantaneous method, and the average / median buffering with its full-buffer gate, sliding window, independence from gated and

File truncated at 100 lines see the full file

Launch files

  • launch/gnss_poser.launch.xml
      • param_file [default: $(find-pkg-share autoware_gnss_poser)/config/gnss_poser.param.yaml]
      • input_topic_fix [default: /fix]
      • input_topic_orientation [default: /autoware_orientation]
      • output_topic_gnss_pose [default: gnss_pose]
      • output_topic_gnss_pose_cov [default: gnss_pose_cov]
      • output_topic_gnss_fixed [default: gnss_fixed]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_gnss_poser at Robotics Stack Exchange

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

autoware_gnss_poser package from autoware_core repo

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

ROS Distro
humble

Package Summary

Version 1.10.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

The ROS 2 autoware_gnss_poser package

Maintainers

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

Authors

  • Ryo Watanabe

gnss_poser

Overview

The gnss_poser is a node that subscribes gnss sensing messages and calculates vehicle pose with covariance.

Design

This node subscribes to NavSatFix to publish the pose of base_link. The data in NavSatFix represents the antenna’s position. Therefore, it performs a coordinate transformation using the tf from base_link to the antenna’s position. The frame_id of the antenna’s position refers to NavSatFix’s header.frame_id. (Note that header.frame_id in NavSatFix indicates the antenna’s frame_id, not the Earth or reference ellipsoid. See also NavSatFix definition.)

If the transformation from base_link to the antenna cannot be obtained, it outputs the pose of the antenna position without performing coordinate transformation.

Inputs / Outputs

Input

Name Type Description
/map/map_projector_info autoware_map_msgs::msg::MapProjectorInfo map projection info
~/input/fix sensor_msgs::msg::NavSatFix gnss status message
~/input/autoware_orientation autoware_sensing_msgs::msg::GnssInsOrientationStamped orientation click here for more details

Output

Name Type Description
~/output/pose geometry_msgs::msg::PoseStamped vehicle pose calculated from gnss sensing data
~/output/gnss_pose_cov geometry_msgs::msg::PoseWithCovarianceStamped vehicle pose with covariance calculated from gnss sensing data
~/output/gnss_fixed autoware_internal_debug_msgs::msg::BoolStamped gnss fix status

Parameters

Parameters in below table

Name Type Default Description
base_frame string base_link frame id for base_frame
gnss_base_frame string gnss_base_link frame id for gnss_base_frame
map_frame string map frame id for map_frame
use_gnss_ins_orientation boolean true use Gnss-Ins orientation
gnss_pose_pub_method integer 0 0: Instant Value 1: Average Value 2: Median Value. Any other value is rejected at startup.
buff_epoch integer 1 Number of positions the average / median is taken over (ignored for method 0). Range: 1~inf; smaller values are rejected at startup.

All above parameters can be changed in config file gnss_poser.param.yaml .

CHANGELOG

Changelog for package autoware_gnss_poser

1.1.0 (2025-05-01)

1.10.0 (2026-09-28)

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

  • fix(autoware_gnss_poser): stamp gnss_fixed with the fixed header stamp (#1459) fix(autoware_gnss_poser): stamp gnss_fixed with the fix header stamp gnss_fixed was the only output stamped with the node clock; gnss_pose, gnss_pose_cov and the TF broadcast all carry the header stamp of the fix they were computed from. It now carries that stamp too, so the status can be matched to the fix and to the pose it belongs to. It comes before the logic is separated out because it decides what the pose computation answers with: once the outputs are built there, every one of them is stamped with the fix, and this is the only one that was not. The characterization case GnssFixed_StampIsNodeClockNotFixHeaderStamp pinned the old behavior and is rewritten as GnssFixed_StampIsFixHeaderStamp; built against this change with the old assertions, exactly that case fails and the other 30 pass. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • fix(autoware_gnss_poser): reject invalid gnss_pose_pub_method and buff_epoch at startup (#1458) gnss_pose_pub_method is now an enum (Instant / Average / Median). A value outside 0..2 used to be accepted silently: every non-zero value enabled buffering and every value other than 1 selected the median. buff_epoch must now be at least 1: a zero-capacity buffer counted as "full", so the average published NaN coordinates on every output and the median threw std::out_of_range inside the fix callback. Both are rejected with std::invalid_argument while the node is constructed, so a misconfiguration fails at launch instead of at runtime. The schema already documented 0..2 for the method; buff_epoch's minimum moves from 0 to 1 and the README no longer claims that buff_epoch = 0 disables the method (it never did). Characterization tests rewritten on purpose: MethodUnknown_BehavesLikeMedian, MethodAverage_BuffEpochZero_PublishesNaNPosition and MethodInstant_BuffEpochZero_IsHarmless (all three fail against this change with the old assertions) are replaced by Construct_UnknownPubMethod_FailsToStart and Construct_BuffEpochBelowOne_FailsToStart. The other 29 cases are unchanged. Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance (#1448)

    * test(autoware_gnss_poser): characterize orientation, antenna TF composition and covariance Third PR of the series, stacked on the position branch. Ten cases on the orientation sources (INS message vs. heading from displacement), the antenna -> base_link TF lookup and composition including the fallback to identity, the lookup time and the interpolation of a changing relation, the map -> gnss_base_link broadcast, and the covariance layout of gnss_pose_cov. No production code changes. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): use one tolerance for positions and one for angles The file compared positions with 1e-9, 1e-6 and 1e-4 m depending on the case, with no principle behind the difference: the tighter values were meant to show "the same library call", which is more than a characterization test needs. Computed positions now share [position_tolerance]{.title-ref} (1e-4 m) and headings [angle_tolerance]{.title-ref} (1e-6 rad), each with its rationale next to the definition; [expect_same_rotation]{.title-ref} compares the rotation angle between the orientations so the same constant applies. Values the node copies keep exact equality, and the geoid-height check keeps its own 1 cm bound. Co-Authored-By: Claude Fable 5.1 <<noreply@anthropic.com>>

    * test(autoware_gnss_poser): explain the covariance constants in the assertions Review of #1448: the orientation and covariance cases assert squared rmse values and two hard-coded fallbacks without saying where they come from. Each of them now carries the arithmetic (0.1\^2 = 0.01 and so on), the origin of the 1.0 placeholder and of the 10.0 substitute, and the input covariance names the diagonal it expects to survive. Co-Authored-By: Claude Opus 5 <<noreply@anthropic.com>> ---------Co-authored-by: Claude Fable 5.1 <<noreply@anthropic.com>>

  • test(autoware_gnss_poser): characterize the position pipeline and buffering (#1437)

    * test(autoware_gnss_poser): characterize the position pipeline and buffering Second PR of the series, stacked on the harness branch. Twelve cases on how a fixed NavSatFix becomes a position: projection through autoware_geography_utils, height datum conversion, the instantaneous method, and the average / median buffering with its full-buffer gate, sliding window, independence from gated and

File truncated at 100 lines see the full file

Launch files

  • launch/gnss_poser.launch.xml
      • param_file [default: $(find-pkg-share autoware_gnss_poser)/config/gnss_poser.param.yaml]
      • input_topic_fix [default: /fix]
      • input_topic_orientation [default: /autoware_orientation]
      • output_topic_gnss_pose [default: gnss_pose]
      • output_topic_gnss_pose_cov [default: gnss_pose_cov]
      • output_topic_gnss_fixed [default: gnss_fixed]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_gnss_poser at Robotics Stack Exchange