Package symbol

autoware_twist2accel 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_specs autoware_geography_utils autoware_global_parameter_loader 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_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.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-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The acceleration estimation package

Maintainers

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

Authors

  • Koji Minoda

autoware_twist2accel

Purpose

This package is responsible for estimating acceleration using the output of ekf_localizer. It uses lowpass filter to mitigate the noise.

Inputs / Outputs

Input

Name Type Description
input/odom nav_msgs::msg::Odometry localization odometry
input/twist geometry_msgs::msg::TwistWithCovarianceStamped twist

Output

Name Type Description
output/accel geometry_msgs::msg::AccelWithCovarianceStamped estimated acceleration

Parameters

{{ json_to_markdown(“localization/autoware_twist2accel/schema/twist2accel.schema.json”) }}

Future work

Future work includes integrating acceleration into the EKF state.

CHANGELOG

Changelog for package autoware_twist2accel

1.1.0 (2025-05-01)

1.9.0 (2026-06-24)

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

  • feat(twist2accel): apply [agnocast_wrapper::Node]{.title-ref} to [twist2accel]{.title-ref} (#1189)

    • apply agnocast_wrapper::Node
    • fix to use ALLOCATE
    • fix Cmake
    • fix cpplint

    * disable test when agnocast enabled ---------

  • refactor(autoware_twist2accel): arrange class interface (#1186)

    * refactor(autoware_twist2accel): encapsulate dt and previous twist in AccelEstimator AccelEstimator::estimate() now takes only the current twist sample and owns the per-call state that previously lived in the node: it holds the previous twist, derives dt from successive header stamps, and returns a ready-to-publish AccelWithCovarianceStamped with the header copied from the input. Add TwistWithCovarianceStamped and Odometry overloads that normalize to a TwistStamped and delegate, so the node callbacks can pass the raw message directly and the estimate_accel helper is no longer needed.

    * style(autoware_twist2accel): remove redundant comments ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>

  • refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests (#1111)

    * refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests Extract the ROS-free acceleration math (dt-clamped finite difference plus 6-channel LowpassFilter1d smoothing) out of Twist2Accel::estimate_accel into a pure, injectable AccelEstimator class, mirroring the sibling autoware_stop_filter::StopFilter pattern. estimate_accel becomes a thin wrapper that computes dt from the ROS clock, calls the estimator, fills the message, and publishes. This makes the previously untestable estimation logic exercisable without spinning a ROS node and adds gtest coverage for the no-smoothing-on-first-sample, finite-difference, low-pass smoothing, dt-clamp, channel-independence, and covariance-index branches. Behavior-preserving: the dt clamp (>= 1e-3), per-component LPF order, and the first-message zero/empty accel branch are unchanged. The accel covariance diagonal is now written via autoware_utils_geometry XYZRPY_COV_IDX named indices instead of magic i*6+i arithmetic (a gtest pins the equivalence), and the hot-path per-message std::make_shared copy is dropped by storing the previous twist as a value (std::optional). Dead tf2 / STL includes, the file-scope LowpassFilter1d using-declaration in the header, and the unused tf2 package.xml dependency are removed; autoware_utils_geometry is added. Refs: autowarefoundation/autoware_core#1096

    * refactor(autoware_twist2accel): clarify AccelEstimator docstring The class operates on geometry_msgs Twist/Accel value types, so the "ROS-free" wording was imprecise. Reword to state the actual property: no rclcpp::Node / spinning dependency. Refs: autowarefoundation/autoware_core#1096

    • refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator (#85)

    * refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator The previous extraction left the acceleration covariance assignment in the node while only the acceleration values moved into the pure AccelEstimator. Per reviewer feedback, the covariance is core estimation logic and belongs with the value estimate. AccelEstimator::estimate now returns geometry_msgs::msg::AccelWithCovariance, filling the same constant diagonal covariance the node used to set (linear variance 1.0, angular variance 0.05, off-diagonal terms zero) via named constants g_linear_accel_variance / g_angular_accel_variance. The node simply assigns the core's AccelWithCovariance output, so the published covariance is byte-for-byte unchanged. The core stays pure with no new mutable shared state. Unit tests assert the covariance against hand-computed literals, and the node test adds a characterization assertion locking the published covariance. Refs: autowarefoundation/autoware_core#1096

    * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>> ---------Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>>

    * test(autoware_twist2accel): assert covariance diagonal against named constants Address review: build the expected covariance array

File truncated at 100 lines see the full file

Launch files

  • launch/twist2accel.launch.xml
      • param_file [default: $(find-pkg-share autoware_twist2accel)/config/twist2accel.param.yaml]
      • in_odom [default: in_odom]
      • in_twist [default: in_twist]
      • out_accel [default: out_accel]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_twist2accel at Robotics Stack Exchange

Package symbol

autoware_twist2accel 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_specs autoware_geography_utils autoware_global_parameter_loader 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_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
jazzy

Package Summary

Version 1.9.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-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The acceleration estimation package

Maintainers

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

Authors

  • Koji Minoda

autoware_twist2accel

Purpose

This package is responsible for estimating acceleration using the output of ekf_localizer. It uses lowpass filter to mitigate the noise.

Inputs / Outputs

Input

Name Type Description
input/odom nav_msgs::msg::Odometry localization odometry
input/twist geometry_msgs::msg::TwistWithCovarianceStamped twist

Output

Name Type Description
output/accel geometry_msgs::msg::AccelWithCovarianceStamped estimated acceleration

Parameters

{{ json_to_markdown(“localization/autoware_twist2accel/schema/twist2accel.schema.json”) }}

Future work

Future work includes integrating acceleration into the EKF state.

CHANGELOG

Changelog for package autoware_twist2accel

1.1.0 (2025-05-01)

1.9.0 (2026-06-24)

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

  • feat(twist2accel): apply [agnocast_wrapper::Node]{.title-ref} to [twist2accel]{.title-ref} (#1189)

    • apply agnocast_wrapper::Node
    • fix to use ALLOCATE
    • fix Cmake
    • fix cpplint

    * disable test when agnocast enabled ---------

  • refactor(autoware_twist2accel): arrange class interface (#1186)

    * refactor(autoware_twist2accel): encapsulate dt and previous twist in AccelEstimator AccelEstimator::estimate() now takes only the current twist sample and owns the per-call state that previously lived in the node: it holds the previous twist, derives dt from successive header stamps, and returns a ready-to-publish AccelWithCovarianceStamped with the header copied from the input. Add TwistWithCovarianceStamped and Odometry overloads that normalize to a TwistStamped and delegate, so the node callbacks can pass the raw message directly and the estimate_accel helper is no longer needed.

    * style(autoware_twist2accel): remove redundant comments ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>

  • refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests (#1111)

    * refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests Extract the ROS-free acceleration math (dt-clamped finite difference plus 6-channel LowpassFilter1d smoothing) out of Twist2Accel::estimate_accel into a pure, injectable AccelEstimator class, mirroring the sibling autoware_stop_filter::StopFilter pattern. estimate_accel becomes a thin wrapper that computes dt from the ROS clock, calls the estimator, fills the message, and publishes. This makes the previously untestable estimation logic exercisable without spinning a ROS node and adds gtest coverage for the no-smoothing-on-first-sample, finite-difference, low-pass smoothing, dt-clamp, channel-independence, and covariance-index branches. Behavior-preserving: the dt clamp (>= 1e-3), per-component LPF order, and the first-message zero/empty accel branch are unchanged. The accel covariance diagonal is now written via autoware_utils_geometry XYZRPY_COV_IDX named indices instead of magic i*6+i arithmetic (a gtest pins the equivalence), and the hot-path per-message std::make_shared copy is dropped by storing the previous twist as a value (std::optional). Dead tf2 / STL includes, the file-scope LowpassFilter1d using-declaration in the header, and the unused tf2 package.xml dependency are removed; autoware_utils_geometry is added. Refs: autowarefoundation/autoware_core#1096

    * refactor(autoware_twist2accel): clarify AccelEstimator docstring The class operates on geometry_msgs Twist/Accel value types, so the "ROS-free" wording was imprecise. Reword to state the actual property: no rclcpp::Node / spinning dependency. Refs: autowarefoundation/autoware_core#1096

    • refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator (#85)

    * refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator The previous extraction left the acceleration covariance assignment in the node while only the acceleration values moved into the pure AccelEstimator. Per reviewer feedback, the covariance is core estimation logic and belongs with the value estimate. AccelEstimator::estimate now returns geometry_msgs::msg::AccelWithCovariance, filling the same constant diagonal covariance the node used to set (linear variance 1.0, angular variance 0.05, off-diagonal terms zero) via named constants g_linear_accel_variance / g_angular_accel_variance. The node simply assigns the core's AccelWithCovariance output, so the published covariance is byte-for-byte unchanged. The core stays pure with no new mutable shared state. Unit tests assert the covariance against hand-computed literals, and the node test adds a characterization assertion locking the published covariance. Refs: autowarefoundation/autoware_core#1096

    * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>> ---------Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>>

    * test(autoware_twist2accel): assert covariance diagonal against named constants Address review: build the expected covariance array

File truncated at 100 lines see the full file

Launch files

  • launch/twist2accel.launch.xml
      • param_file [default: $(find-pkg-share autoware_twist2accel)/config/twist2accel.param.yaml]
      • in_odom [default: in_odom]
      • in_twist [default: in_twist]
      • out_accel [default: out_accel]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_twist2accel at Robotics Stack Exchange

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

autoware_twist2accel 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_specs autoware_geography_utils autoware_global_parameter_loader 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_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.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-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The acceleration estimation package

Maintainers

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

Authors

  • Koji Minoda

autoware_twist2accel

Purpose

This package is responsible for estimating acceleration using the output of ekf_localizer. It uses lowpass filter to mitigate the noise.

Inputs / Outputs

Input

Name Type Description
input/odom nav_msgs::msg::Odometry localization odometry
input/twist geometry_msgs::msg::TwistWithCovarianceStamped twist

Output

Name Type Description
output/accel geometry_msgs::msg::AccelWithCovarianceStamped estimated acceleration

Parameters

{{ json_to_markdown(“localization/autoware_twist2accel/schema/twist2accel.schema.json”) }}

Future work

Future work includes integrating acceleration into the EKF state.

CHANGELOG

Changelog for package autoware_twist2accel

1.1.0 (2025-05-01)

1.9.0 (2026-06-24)

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

  • feat(twist2accel): apply [agnocast_wrapper::Node]{.title-ref} to [twist2accel]{.title-ref} (#1189)

    • apply agnocast_wrapper::Node
    • fix to use ALLOCATE
    • fix Cmake
    • fix cpplint

    * disable test when agnocast enabled ---------

  • refactor(autoware_twist2accel): arrange class interface (#1186)

    * refactor(autoware_twist2accel): encapsulate dt and previous twist in AccelEstimator AccelEstimator::estimate() now takes only the current twist sample and owns the per-call state that previously lived in the node: it holds the previous twist, derives dt from successive header stamps, and returns a ready-to-publish AccelWithCovarianceStamped with the header copied from the input. Add TwistWithCovarianceStamped and Odometry overloads that normalize to a TwistStamped and delegate, so the node callbacks can pass the raw message directly and the estimate_accel helper is no longer needed.

    * style(autoware_twist2accel): remove redundant comments ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>

  • refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests (#1111)

    * refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests Extract the ROS-free acceleration math (dt-clamped finite difference plus 6-channel LowpassFilter1d smoothing) out of Twist2Accel::estimate_accel into a pure, injectable AccelEstimator class, mirroring the sibling autoware_stop_filter::StopFilter pattern. estimate_accel becomes a thin wrapper that computes dt from the ROS clock, calls the estimator, fills the message, and publishes. This makes the previously untestable estimation logic exercisable without spinning a ROS node and adds gtest coverage for the no-smoothing-on-first-sample, finite-difference, low-pass smoothing, dt-clamp, channel-independence, and covariance-index branches. Behavior-preserving: the dt clamp (>= 1e-3), per-component LPF order, and the first-message zero/empty accel branch are unchanged. The accel covariance diagonal is now written via autoware_utils_geometry XYZRPY_COV_IDX named indices instead of magic i*6+i arithmetic (a gtest pins the equivalence), and the hot-path per-message std::make_shared copy is dropped by storing the previous twist as a value (std::optional). Dead tf2 / STL includes, the file-scope LowpassFilter1d using-declaration in the header, and the unused tf2 package.xml dependency are removed; autoware_utils_geometry is added. Refs: autowarefoundation/autoware_core#1096

    * refactor(autoware_twist2accel): clarify AccelEstimator docstring The class operates on geometry_msgs Twist/Accel value types, so the "ROS-free" wording was imprecise. Reword to state the actual property: no rclcpp::Node / spinning dependency. Refs: autowarefoundation/autoware_core#1096

    • refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator (#85)

    * refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator The previous extraction left the acceleration covariance assignment in the node while only the acceleration values moved into the pure AccelEstimator. Per reviewer feedback, the covariance is core estimation logic and belongs with the value estimate. AccelEstimator::estimate now returns geometry_msgs::msg::AccelWithCovariance, filling the same constant diagonal covariance the node used to set (linear variance 1.0, angular variance 0.05, off-diagonal terms zero) via named constants g_linear_accel_variance / g_angular_accel_variance. The node simply assigns the core's AccelWithCovariance output, so the published covariance is byte-for-byte unchanged. The core stays pure with no new mutable shared state. Unit tests assert the covariance against hand-computed literals, and the node test adds a characterization assertion locking the published covariance. Refs: autowarefoundation/autoware_core#1096

    * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>> ---------Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>>

    * test(autoware_twist2accel): assert covariance diagonal against named constants Address review: build the expected covariance array

File truncated at 100 lines see the full file

Launch files

  • launch/twist2accel.launch.xml
      • param_file [default: $(find-pkg-share autoware_twist2accel)/config/twist2accel.param.yaml]
      • in_odom [default: in_odom]
      • in_twist [default: in_twist]
      • out_accel [default: out_accel]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_twist2accel at Robotics Stack Exchange

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

autoware_twist2accel 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_specs autoware_geography_utils autoware_global_parameter_loader 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_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.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-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The acceleration estimation package

Maintainers

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

Authors

  • Koji Minoda

autoware_twist2accel

Purpose

This package is responsible for estimating acceleration using the output of ekf_localizer. It uses lowpass filter to mitigate the noise.

Inputs / Outputs

Input

Name Type Description
input/odom nav_msgs::msg::Odometry localization odometry
input/twist geometry_msgs::msg::TwistWithCovarianceStamped twist

Output

Name Type Description
output/accel geometry_msgs::msg::AccelWithCovarianceStamped estimated acceleration

Parameters

{{ json_to_markdown(“localization/autoware_twist2accel/schema/twist2accel.schema.json”) }}

Future work

Future work includes integrating acceleration into the EKF state.

CHANGELOG

Changelog for package autoware_twist2accel

1.1.0 (2025-05-01)

1.9.0 (2026-06-24)

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

  • feat(twist2accel): apply [agnocast_wrapper::Node]{.title-ref} to [twist2accel]{.title-ref} (#1189)

    • apply agnocast_wrapper::Node
    • fix to use ALLOCATE
    • fix Cmake
    • fix cpplint

    * disable test when agnocast enabled ---------

  • refactor(autoware_twist2accel): arrange class interface (#1186)

    * refactor(autoware_twist2accel): encapsulate dt and previous twist in AccelEstimator AccelEstimator::estimate() now takes only the current twist sample and owns the per-call state that previously lived in the node: it holds the previous twist, derives dt from successive header stamps, and returns a ready-to-publish AccelWithCovarianceStamped with the header copied from the input. Add TwistWithCovarianceStamped and Odometry overloads that normalize to a TwistStamped and delegate, so the node callbacks can pass the raw message directly and the estimate_accel helper is no longer needed.

    * style(autoware_twist2accel): remove redundant comments ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>

  • refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests (#1111)

    * refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests Extract the ROS-free acceleration math (dt-clamped finite difference plus 6-channel LowpassFilter1d smoothing) out of Twist2Accel::estimate_accel into a pure, injectable AccelEstimator class, mirroring the sibling autoware_stop_filter::StopFilter pattern. estimate_accel becomes a thin wrapper that computes dt from the ROS clock, calls the estimator, fills the message, and publishes. This makes the previously untestable estimation logic exercisable without spinning a ROS node and adds gtest coverage for the no-smoothing-on-first-sample, finite-difference, low-pass smoothing, dt-clamp, channel-independence, and covariance-index branches. Behavior-preserving: the dt clamp (>= 1e-3), per-component LPF order, and the first-message zero/empty accel branch are unchanged. The accel covariance diagonal is now written via autoware_utils_geometry XYZRPY_COV_IDX named indices instead of magic i*6+i arithmetic (a gtest pins the equivalence), and the hot-path per-message std::make_shared copy is dropped by storing the previous twist as a value (std::optional). Dead tf2 / STL includes, the file-scope LowpassFilter1d using-declaration in the header, and the unused tf2 package.xml dependency are removed; autoware_utils_geometry is added. Refs: autowarefoundation/autoware_core#1096

    * refactor(autoware_twist2accel): clarify AccelEstimator docstring The class operates on geometry_msgs Twist/Accel value types, so the "ROS-free" wording was imprecise. Reword to state the actual property: no rclcpp::Node / spinning dependency. Refs: autowarefoundation/autoware_core#1096

    • refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator (#85)

    * refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator The previous extraction left the acceleration covariance assignment in the node while only the acceleration values moved into the pure AccelEstimator. Per reviewer feedback, the covariance is core estimation logic and belongs with the value estimate. AccelEstimator::estimate now returns geometry_msgs::msg::AccelWithCovariance, filling the same constant diagonal covariance the node used to set (linear variance 1.0, angular variance 0.05, off-diagonal terms zero) via named constants g_linear_accel_variance / g_angular_accel_variance. The node simply assigns the core's AccelWithCovariance output, so the published covariance is byte-for-byte unchanged. The core stays pure with no new mutable shared state. Unit tests assert the covariance against hand-computed literals, and the node test adds a characterization assertion locking the published covariance. Refs: autowarefoundation/autoware_core#1096

    * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>> ---------Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>>

    * test(autoware_twist2accel): assert covariance diagonal against named constants Address review: build the expected covariance array

File truncated at 100 lines see the full file

Launch files

  • launch/twist2accel.launch.xml
      • param_file [default: $(find-pkg-share autoware_twist2accel)/config/twist2accel.param.yaml]
      • in_odom [default: in_odom]
      • in_twist [default: in_twist]
      • out_accel [default: out_accel]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_twist2accel at Robotics Stack Exchange

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

autoware_twist2accel 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_specs autoware_geography_utils autoware_global_parameter_loader 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_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.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-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The acceleration estimation package

Maintainers

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

Authors

  • Koji Minoda

autoware_twist2accel

Purpose

This package is responsible for estimating acceleration using the output of ekf_localizer. It uses lowpass filter to mitigate the noise.

Inputs / Outputs

Input

Name Type Description
input/odom nav_msgs::msg::Odometry localization odometry
input/twist geometry_msgs::msg::TwistWithCovarianceStamped twist

Output

Name Type Description
output/accel geometry_msgs::msg::AccelWithCovarianceStamped estimated acceleration

Parameters

{{ json_to_markdown(“localization/autoware_twist2accel/schema/twist2accel.schema.json”) }}

Future work

Future work includes integrating acceleration into the EKF state.

CHANGELOG

Changelog for package autoware_twist2accel

1.1.0 (2025-05-01)

1.9.0 (2026-06-24)

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

  • feat(twist2accel): apply [agnocast_wrapper::Node]{.title-ref} to [twist2accel]{.title-ref} (#1189)

    • apply agnocast_wrapper::Node
    • fix to use ALLOCATE
    • fix Cmake
    • fix cpplint

    * disable test when agnocast enabled ---------

  • refactor(autoware_twist2accel): arrange class interface (#1186)

    * refactor(autoware_twist2accel): encapsulate dt and previous twist in AccelEstimator AccelEstimator::estimate() now takes only the current twist sample and owns the per-call state that previously lived in the node: it holds the previous twist, derives dt from successive header stamps, and returns a ready-to-publish AccelWithCovarianceStamped with the header copied from the input. Add TwistWithCovarianceStamped and Odometry overloads that normalize to a TwistStamped and delegate, so the node callbacks can pass the raw message directly and the estimate_accel helper is no longer needed.

    * style(autoware_twist2accel): remove redundant comments ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>

  • refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests (#1111)

    * refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests Extract the ROS-free acceleration math (dt-clamped finite difference plus 6-channel LowpassFilter1d smoothing) out of Twist2Accel::estimate_accel into a pure, injectable AccelEstimator class, mirroring the sibling autoware_stop_filter::StopFilter pattern. estimate_accel becomes a thin wrapper that computes dt from the ROS clock, calls the estimator, fills the message, and publishes. This makes the previously untestable estimation logic exercisable without spinning a ROS node and adds gtest coverage for the no-smoothing-on-first-sample, finite-difference, low-pass smoothing, dt-clamp, channel-independence, and covariance-index branches. Behavior-preserving: the dt clamp (>= 1e-3), per-component LPF order, and the first-message zero/empty accel branch are unchanged. The accel covariance diagonal is now written via autoware_utils_geometry XYZRPY_COV_IDX named indices instead of magic i*6+i arithmetic (a gtest pins the equivalence), and the hot-path per-message std::make_shared copy is dropped by storing the previous twist as a value (std::optional). Dead tf2 / STL includes, the file-scope LowpassFilter1d using-declaration in the header, and the unused tf2 package.xml dependency are removed; autoware_utils_geometry is added. Refs: autowarefoundation/autoware_core#1096

    * refactor(autoware_twist2accel): clarify AccelEstimator docstring The class operates on geometry_msgs Twist/Accel value types, so the "ROS-free" wording was imprecise. Reword to state the actual property: no rclcpp::Node / spinning dependency. Refs: autowarefoundation/autoware_core#1096

    • refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator (#85)

    * refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator The previous extraction left the acceleration covariance assignment in the node while only the acceleration values moved into the pure AccelEstimator. Per reviewer feedback, the covariance is core estimation logic and belongs with the value estimate. AccelEstimator::estimate now returns geometry_msgs::msg::AccelWithCovariance, filling the same constant diagonal covariance the node used to set (linear variance 1.0, angular variance 0.05, off-diagonal terms zero) via named constants g_linear_accel_variance / g_angular_accel_variance. The node simply assigns the core's AccelWithCovariance output, so the published covariance is byte-for-byte unchanged. The core stays pure with no new mutable shared state. Unit tests assert the covariance against hand-computed literals, and the node test adds a characterization assertion locking the published covariance. Refs: autowarefoundation/autoware_core#1096

    * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>> ---------Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>>

    * test(autoware_twist2accel): assert covariance diagonal against named constants Address review: build the expected covariance array

File truncated at 100 lines see the full file

Launch files

  • launch/twist2accel.launch.xml
      • param_file [default: $(find-pkg-share autoware_twist2accel)/config/twist2accel.param.yaml]
      • in_odom [default: in_odom]
      • in_twist [default: in_twist]
      • out_accel [default: out_accel]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_twist2accel at Robotics Stack Exchange

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

autoware_twist2accel 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_specs autoware_geography_utils autoware_global_parameter_loader 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_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.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-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The acceleration estimation package

Maintainers

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

Authors

  • Koji Minoda

autoware_twist2accel

Purpose

This package is responsible for estimating acceleration using the output of ekf_localizer. It uses lowpass filter to mitigate the noise.

Inputs / Outputs

Input

Name Type Description
input/odom nav_msgs::msg::Odometry localization odometry
input/twist geometry_msgs::msg::TwistWithCovarianceStamped twist

Output

Name Type Description
output/accel geometry_msgs::msg::AccelWithCovarianceStamped estimated acceleration

Parameters

{{ json_to_markdown(“localization/autoware_twist2accel/schema/twist2accel.schema.json”) }}

Future work

Future work includes integrating acceleration into the EKF state.

CHANGELOG

Changelog for package autoware_twist2accel

1.1.0 (2025-05-01)

1.9.0 (2026-06-24)

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

  • feat(twist2accel): apply [agnocast_wrapper::Node]{.title-ref} to [twist2accel]{.title-ref} (#1189)

    • apply agnocast_wrapper::Node
    • fix to use ALLOCATE
    • fix Cmake
    • fix cpplint

    * disable test when agnocast enabled ---------

  • refactor(autoware_twist2accel): arrange class interface (#1186)

    * refactor(autoware_twist2accel): encapsulate dt and previous twist in AccelEstimator AccelEstimator::estimate() now takes only the current twist sample and owns the per-call state that previously lived in the node: it holds the previous twist, derives dt from successive header stamps, and returns a ready-to-publish AccelWithCovarianceStamped with the header copied from the input. Add TwistWithCovarianceStamped and Odometry overloads that normalize to a TwistStamped and delegate, so the node callbacks can pass the raw message directly and the estimate_accel helper is no longer needed.

    * style(autoware_twist2accel): remove redundant comments ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>

  • refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests (#1111)

    * refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests Extract the ROS-free acceleration math (dt-clamped finite difference plus 6-channel LowpassFilter1d smoothing) out of Twist2Accel::estimate_accel into a pure, injectable AccelEstimator class, mirroring the sibling autoware_stop_filter::StopFilter pattern. estimate_accel becomes a thin wrapper that computes dt from the ROS clock, calls the estimator, fills the message, and publishes. This makes the previously untestable estimation logic exercisable without spinning a ROS node and adds gtest coverage for the no-smoothing-on-first-sample, finite-difference, low-pass smoothing, dt-clamp, channel-independence, and covariance-index branches. Behavior-preserving: the dt clamp (>= 1e-3), per-component LPF order, and the first-message zero/empty accel branch are unchanged. The accel covariance diagonal is now written via autoware_utils_geometry XYZRPY_COV_IDX named indices instead of magic i*6+i arithmetic (a gtest pins the equivalence), and the hot-path per-message std::make_shared copy is dropped by storing the previous twist as a value (std::optional). Dead tf2 / STL includes, the file-scope LowpassFilter1d using-declaration in the header, and the unused tf2 package.xml dependency are removed; autoware_utils_geometry is added. Refs: autowarefoundation/autoware_core#1096

    * refactor(autoware_twist2accel): clarify AccelEstimator docstring The class operates on geometry_msgs Twist/Accel value types, so the "ROS-free" wording was imprecise. Reword to state the actual property: no rclcpp::Node / spinning dependency. Refs: autowarefoundation/autoware_core#1096

    • refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator (#85)

    * refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator The previous extraction left the acceleration covariance assignment in the node while only the acceleration values moved into the pure AccelEstimator. Per reviewer feedback, the covariance is core estimation logic and belongs with the value estimate. AccelEstimator::estimate now returns geometry_msgs::msg::AccelWithCovariance, filling the same constant diagonal covariance the node used to set (linear variance 1.0, angular variance 0.05, off-diagonal terms zero) via named constants g_linear_accel_variance / g_angular_accel_variance. The node simply assigns the core's AccelWithCovariance output, so the published covariance is byte-for-byte unchanged. The core stays pure with no new mutable shared state. Unit tests assert the covariance against hand-computed literals, and the node test adds a characterization assertion locking the published covariance. Refs: autowarefoundation/autoware_core#1096

    * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>> ---------Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>>

    * test(autoware_twist2accel): assert covariance diagonal against named constants Address review: build the expected covariance array

File truncated at 100 lines see the full file

Launch files

  • launch/twist2accel.launch.xml
      • param_file [default: $(find-pkg-share autoware_twist2accel)/config/twist2accel.param.yaml]
      • in_odom [default: in_odom]
      • in_twist [default: in_twist]
      • out_accel [default: out_accel]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_twist2accel at Robotics Stack Exchange

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

autoware_twist2accel 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_specs autoware_geography_utils autoware_global_parameter_loader 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_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.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-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The acceleration estimation package

Maintainers

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

Authors

  • Koji Minoda

autoware_twist2accel

Purpose

This package is responsible for estimating acceleration using the output of ekf_localizer. It uses lowpass filter to mitigate the noise.

Inputs / Outputs

Input

Name Type Description
input/odom nav_msgs::msg::Odometry localization odometry
input/twist geometry_msgs::msg::TwistWithCovarianceStamped twist

Output

Name Type Description
output/accel geometry_msgs::msg::AccelWithCovarianceStamped estimated acceleration

Parameters

{{ json_to_markdown(“localization/autoware_twist2accel/schema/twist2accel.schema.json”) }}

Future work

Future work includes integrating acceleration into the EKF state.

CHANGELOG

Changelog for package autoware_twist2accel

1.1.0 (2025-05-01)

1.9.0 (2026-06-24)

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

  • feat(twist2accel): apply [agnocast_wrapper::Node]{.title-ref} to [twist2accel]{.title-ref} (#1189)

    • apply agnocast_wrapper::Node
    • fix to use ALLOCATE
    • fix Cmake
    • fix cpplint

    * disable test when agnocast enabled ---------

  • refactor(autoware_twist2accel): arrange class interface (#1186)

    * refactor(autoware_twist2accel): encapsulate dt and previous twist in AccelEstimator AccelEstimator::estimate() now takes only the current twist sample and owns the per-call state that previously lived in the node: it holds the previous twist, derives dt from successive header stamps, and returns a ready-to-publish AccelWithCovarianceStamped with the header copied from the input. Add TwistWithCovarianceStamped and Odometry overloads that normalize to a TwistStamped and delegate, so the node callbacks can pass the raw message directly and the estimate_accel helper is no longer needed.

    * style(autoware_twist2accel): remove redundant comments ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>

  • refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests (#1111)

    * refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests Extract the ROS-free acceleration math (dt-clamped finite difference plus 6-channel LowpassFilter1d smoothing) out of Twist2Accel::estimate_accel into a pure, injectable AccelEstimator class, mirroring the sibling autoware_stop_filter::StopFilter pattern. estimate_accel becomes a thin wrapper that computes dt from the ROS clock, calls the estimator, fills the message, and publishes. This makes the previously untestable estimation logic exercisable without spinning a ROS node and adds gtest coverage for the no-smoothing-on-first-sample, finite-difference, low-pass smoothing, dt-clamp, channel-independence, and covariance-index branches. Behavior-preserving: the dt clamp (>= 1e-3), per-component LPF order, and the first-message zero/empty accel branch are unchanged. The accel covariance diagonal is now written via autoware_utils_geometry XYZRPY_COV_IDX named indices instead of magic i*6+i arithmetic (a gtest pins the equivalence), and the hot-path per-message std::make_shared copy is dropped by storing the previous twist as a value (std::optional). Dead tf2 / STL includes, the file-scope LowpassFilter1d using-declaration in the header, and the unused tf2 package.xml dependency are removed; autoware_utils_geometry is added. Refs: autowarefoundation/autoware_core#1096

    * refactor(autoware_twist2accel): clarify AccelEstimator docstring The class operates on geometry_msgs Twist/Accel value types, so the "ROS-free" wording was imprecise. Reword to state the actual property: no rclcpp::Node / spinning dependency. Refs: autowarefoundation/autoware_core#1096

    • refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator (#85)

    * refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator The previous extraction left the acceleration covariance assignment in the node while only the acceleration values moved into the pure AccelEstimator. Per reviewer feedback, the covariance is core estimation logic and belongs with the value estimate. AccelEstimator::estimate now returns geometry_msgs::msg::AccelWithCovariance, filling the same constant diagonal covariance the node used to set (linear variance 1.0, angular variance 0.05, off-diagonal terms zero) via named constants g_linear_accel_variance / g_angular_accel_variance. The node simply assigns the core's AccelWithCovariance output, so the published covariance is byte-for-byte unchanged. The core stays pure with no new mutable shared state. Unit tests assert the covariance against hand-computed literals, and the node test adds a characterization assertion locking the published covariance. Refs: autowarefoundation/autoware_core#1096

    * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>> ---------Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>>

    * test(autoware_twist2accel): assert covariance diagonal against named constants Address review: build the expected covariance array

File truncated at 100 lines see the full file

Launch files

  • launch/twist2accel.launch.xml
      • param_file [default: $(find-pkg-share autoware_twist2accel)/config/twist2accel.param.yaml]
      • in_odom [default: in_odom]
      • in_twist [default: in_twist]
      • out_accel [default: out_accel]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_twist2accel at Robotics Stack Exchange

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

autoware_twist2accel 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_specs autoware_geography_utils autoware_global_parameter_loader 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_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.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-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The acceleration estimation package

Maintainers

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

Authors

  • Koji Minoda

autoware_twist2accel

Purpose

This package is responsible for estimating acceleration using the output of ekf_localizer. It uses lowpass filter to mitigate the noise.

Inputs / Outputs

Input

Name Type Description
input/odom nav_msgs::msg::Odometry localization odometry
input/twist geometry_msgs::msg::TwistWithCovarianceStamped twist

Output

Name Type Description
output/accel geometry_msgs::msg::AccelWithCovarianceStamped estimated acceleration

Parameters

{{ json_to_markdown(“localization/autoware_twist2accel/schema/twist2accel.schema.json”) }}

Future work

Future work includes integrating acceleration into the EKF state.

CHANGELOG

Changelog for package autoware_twist2accel

1.1.0 (2025-05-01)

1.9.0 (2026-06-24)

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

  • feat(twist2accel): apply [agnocast_wrapper::Node]{.title-ref} to [twist2accel]{.title-ref} (#1189)

    • apply agnocast_wrapper::Node
    • fix to use ALLOCATE
    • fix Cmake
    • fix cpplint

    * disable test when agnocast enabled ---------

  • refactor(autoware_twist2accel): arrange class interface (#1186)

    * refactor(autoware_twist2accel): encapsulate dt and previous twist in AccelEstimator AccelEstimator::estimate() now takes only the current twist sample and owns the per-call state that previously lived in the node: it holds the previous twist, derives dt from successive header stamps, and returns a ready-to-publish AccelWithCovarianceStamped with the header copied from the input. Add TwistWithCovarianceStamped and Odometry overloads that normalize to a TwistStamped and delegate, so the node callbacks can pass the raw message directly and the estimate_accel helper is no longer needed.

    * style(autoware_twist2accel): remove redundant comments ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>

  • refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests (#1111)

    * refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests Extract the ROS-free acceleration math (dt-clamped finite difference plus 6-channel LowpassFilter1d smoothing) out of Twist2Accel::estimate_accel into a pure, injectable AccelEstimator class, mirroring the sibling autoware_stop_filter::StopFilter pattern. estimate_accel becomes a thin wrapper that computes dt from the ROS clock, calls the estimator, fills the message, and publishes. This makes the previously untestable estimation logic exercisable without spinning a ROS node and adds gtest coverage for the no-smoothing-on-first-sample, finite-difference, low-pass smoothing, dt-clamp, channel-independence, and covariance-index branches. Behavior-preserving: the dt clamp (>= 1e-3), per-component LPF order, and the first-message zero/empty accel branch are unchanged. The accel covariance diagonal is now written via autoware_utils_geometry XYZRPY_COV_IDX named indices instead of magic i*6+i arithmetic (a gtest pins the equivalence), and the hot-path per-message std::make_shared copy is dropped by storing the previous twist as a value (std::optional). Dead tf2 / STL includes, the file-scope LowpassFilter1d using-declaration in the header, and the unused tf2 package.xml dependency are removed; autoware_utils_geometry is added. Refs: autowarefoundation/autoware_core#1096

    * refactor(autoware_twist2accel): clarify AccelEstimator docstring The class operates on geometry_msgs Twist/Accel value types, so the "ROS-free" wording was imprecise. Reword to state the actual property: no rclcpp::Node / spinning dependency. Refs: autowarefoundation/autoware_core#1096

    • refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator (#85)

    * refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator The previous extraction left the acceleration covariance assignment in the node while only the acceleration values moved into the pure AccelEstimator. Per reviewer feedback, the covariance is core estimation logic and belongs with the value estimate. AccelEstimator::estimate now returns geometry_msgs::msg::AccelWithCovariance, filling the same constant diagonal covariance the node used to set (linear variance 1.0, angular variance 0.05, off-diagonal terms zero) via named constants g_linear_accel_variance / g_angular_accel_variance. The node simply assigns the core's AccelWithCovariance output, so the published covariance is byte-for-byte unchanged. The core stays pure with no new mutable shared state. Unit tests assert the covariance against hand-computed literals, and the node test adds a characterization assertion locking the published covariance. Refs: autowarefoundation/autoware_core#1096

    * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>> ---------Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>>

    * test(autoware_twist2accel): assert covariance diagonal against named constants Address review: build the expected covariance array

File truncated at 100 lines see the full file

Launch files

  • launch/twist2accel.launch.xml
      • param_file [default: $(find-pkg-share autoware_twist2accel)/config/twist2accel.param.yaml]
      • in_odom [default: in_odom]
      • in_twist [default: in_twist]
      • out_accel [default: out_accel]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_twist2accel at Robotics Stack Exchange

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

autoware_twist2accel 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_specs autoware_geography_utils autoware_global_parameter_loader 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_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.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-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The acceleration estimation package

Maintainers

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

Authors

  • Koji Minoda

autoware_twist2accel

Purpose

This package is responsible for estimating acceleration using the output of ekf_localizer. It uses lowpass filter to mitigate the noise.

Inputs / Outputs

Input

Name Type Description
input/odom nav_msgs::msg::Odometry localization odometry
input/twist geometry_msgs::msg::TwistWithCovarianceStamped twist

Output

Name Type Description
output/accel geometry_msgs::msg::AccelWithCovarianceStamped estimated acceleration

Parameters

{{ json_to_markdown(“localization/autoware_twist2accel/schema/twist2accel.schema.json”) }}

Future work

Future work includes integrating acceleration into the EKF state.

CHANGELOG

Changelog for package autoware_twist2accel

1.1.0 (2025-05-01)

1.9.0 (2026-06-24)

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

  • feat(twist2accel): apply [agnocast_wrapper::Node]{.title-ref} to [twist2accel]{.title-ref} (#1189)

    • apply agnocast_wrapper::Node
    • fix to use ALLOCATE
    • fix Cmake
    • fix cpplint

    * disable test when agnocast enabled ---------

  • refactor(autoware_twist2accel): arrange class interface (#1186)

    * refactor(autoware_twist2accel): encapsulate dt and previous twist in AccelEstimator AccelEstimator::estimate() now takes only the current twist sample and owns the per-call state that previously lived in the node: it holds the previous twist, derives dt from successive header stamps, and returns a ready-to-publish AccelWithCovarianceStamped with the header copied from the input. Add TwistWithCovarianceStamped and Odometry overloads that normalize to a TwistStamped and delegate, so the node callbacks can pass the raw message directly and the estimate_accel helper is no longer needed.

    * style(autoware_twist2accel): remove redundant comments ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>

  • refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests (#1111)

    * refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests Extract the ROS-free acceleration math (dt-clamped finite difference plus 6-channel LowpassFilter1d smoothing) out of Twist2Accel::estimate_accel into a pure, injectable AccelEstimator class, mirroring the sibling autoware_stop_filter::StopFilter pattern. estimate_accel becomes a thin wrapper that computes dt from the ROS clock, calls the estimator, fills the message, and publishes. This makes the previously untestable estimation logic exercisable without spinning a ROS node and adds gtest coverage for the no-smoothing-on-first-sample, finite-difference, low-pass smoothing, dt-clamp, channel-independence, and covariance-index branches. Behavior-preserving: the dt clamp (>= 1e-3), per-component LPF order, and the first-message zero/empty accel branch are unchanged. The accel covariance diagonal is now written via autoware_utils_geometry XYZRPY_COV_IDX named indices instead of magic i*6+i arithmetic (a gtest pins the equivalence), and the hot-path per-message std::make_shared copy is dropped by storing the previous twist as a value (std::optional). Dead tf2 / STL includes, the file-scope LowpassFilter1d using-declaration in the header, and the unused tf2 package.xml dependency are removed; autoware_utils_geometry is added. Refs: autowarefoundation/autoware_core#1096

    * refactor(autoware_twist2accel): clarify AccelEstimator docstring The class operates on geometry_msgs Twist/Accel value types, so the "ROS-free" wording was imprecise. Reword to state the actual property: no rclcpp::Node / spinning dependency. Refs: autowarefoundation/autoware_core#1096

    • refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator (#85)

    * refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator The previous extraction left the acceleration covariance assignment in the node while only the acceleration values moved into the pure AccelEstimator. Per reviewer feedback, the covariance is core estimation logic and belongs with the value estimate. AccelEstimator::estimate now returns geometry_msgs::msg::AccelWithCovariance, filling the same constant diagonal covariance the node used to set (linear variance 1.0, angular variance 0.05, off-diagonal terms zero) via named constants g_linear_accel_variance / g_angular_accel_variance. The node simply assigns the core's AccelWithCovariance output, so the published covariance is byte-for-byte unchanged. The core stays pure with no new mutable shared state. Unit tests assert the covariance against hand-computed literals, and the node test adds a characterization assertion locking the published covariance. Refs: autowarefoundation/autoware_core#1096

    * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>> ---------Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>>

    * test(autoware_twist2accel): assert covariance diagonal against named constants Address review: build the expected covariance array

File truncated at 100 lines see the full file

Launch files

  • launch/twist2accel.launch.xml
      • param_file [default: $(find-pkg-share autoware_twist2accel)/config/twist2accel.param.yaml]
      • in_odom [default: in_odom]
      • in_twist [default: in_twist]
      • out_accel [default: out_accel]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_twist2accel at Robotics Stack Exchange

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

autoware_twist2accel 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_specs autoware_geography_utils autoware_global_parameter_loader 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_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.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-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The acceleration estimation package

Maintainers

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

Authors

  • Koji Minoda

autoware_twist2accel

Purpose

This package is responsible for estimating acceleration using the output of ekf_localizer. It uses lowpass filter to mitigate the noise.

Inputs / Outputs

Input

Name Type Description
input/odom nav_msgs::msg::Odometry localization odometry
input/twist geometry_msgs::msg::TwistWithCovarianceStamped twist

Output

Name Type Description
output/accel geometry_msgs::msg::AccelWithCovarianceStamped estimated acceleration

Parameters

{{ json_to_markdown(“localization/autoware_twist2accel/schema/twist2accel.schema.json”) }}

Future work

Future work includes integrating acceleration into the EKF state.

CHANGELOG

Changelog for package autoware_twist2accel

1.1.0 (2025-05-01)

1.9.0 (2026-06-24)

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

  • feat(twist2accel): apply [agnocast_wrapper::Node]{.title-ref} to [twist2accel]{.title-ref} (#1189)

    • apply agnocast_wrapper::Node
    • fix to use ALLOCATE
    • fix Cmake
    • fix cpplint

    * disable test when agnocast enabled ---------

  • refactor(autoware_twist2accel): arrange class interface (#1186)

    * refactor(autoware_twist2accel): encapsulate dt and previous twist in AccelEstimator AccelEstimator::estimate() now takes only the current twist sample and owns the per-call state that previously lived in the node: it holds the previous twist, derives dt from successive header stamps, and returns a ready-to-publish AccelWithCovarianceStamped with the header copied from the input. Add TwistWithCovarianceStamped and Odometry overloads that normalize to a TwistStamped and delegate, so the node callbacks can pass the raw message directly and the estimate_accel helper is no longer needed.

    * style(autoware_twist2accel): remove redundant comments ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>

  • refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests (#1111)

    * refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests Extract the ROS-free acceleration math (dt-clamped finite difference plus 6-channel LowpassFilter1d smoothing) out of Twist2Accel::estimate_accel into a pure, injectable AccelEstimator class, mirroring the sibling autoware_stop_filter::StopFilter pattern. estimate_accel becomes a thin wrapper that computes dt from the ROS clock, calls the estimator, fills the message, and publishes. This makes the previously untestable estimation logic exercisable without spinning a ROS node and adds gtest coverage for the no-smoothing-on-first-sample, finite-difference, low-pass smoothing, dt-clamp, channel-independence, and covariance-index branches. Behavior-preserving: the dt clamp (>= 1e-3), per-component LPF order, and the first-message zero/empty accel branch are unchanged. The accel covariance diagonal is now written via autoware_utils_geometry XYZRPY_COV_IDX named indices instead of magic i*6+i arithmetic (a gtest pins the equivalence), and the hot-path per-message std::make_shared copy is dropped by storing the previous twist as a value (std::optional). Dead tf2 / STL includes, the file-scope LowpassFilter1d using-declaration in the header, and the unused tf2 package.xml dependency are removed; autoware_utils_geometry is added. Refs: autowarefoundation/autoware_core#1096

    * refactor(autoware_twist2accel): clarify AccelEstimator docstring The class operates on geometry_msgs Twist/Accel value types, so the "ROS-free" wording was imprecise. Reword to state the actual property: no rclcpp::Node / spinning dependency. Refs: autowarefoundation/autoware_core#1096

    • refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator (#85)

    * refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator The previous extraction left the acceleration covariance assignment in the node while only the acceleration values moved into the pure AccelEstimator. Per reviewer feedback, the covariance is core estimation logic and belongs with the value estimate. AccelEstimator::estimate now returns geometry_msgs::msg::AccelWithCovariance, filling the same constant diagonal covariance the node used to set (linear variance 1.0, angular variance 0.05, off-diagonal terms zero) via named constants g_linear_accel_variance / g_angular_accel_variance. The node simply assigns the core's AccelWithCovariance output, so the published covariance is byte-for-byte unchanged. The core stays pure with no new mutable shared state. Unit tests assert the covariance against hand-computed literals, and the node test adds a characterization assertion locking the published covariance. Refs: autowarefoundation/autoware_core#1096

    * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>> ---------Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>>

    * test(autoware_twist2accel): assert covariance diagonal against named constants Address review: build the expected covariance array

File truncated at 100 lines see the full file

Launch files

  • launch/twist2accel.launch.xml
      • param_file [default: $(find-pkg-share autoware_twist2accel)/config/twist2accel.param.yaml]
      • in_odom [default: in_odom]
      • in_twist [default: in_twist]
      • out_accel [default: out_accel]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_twist2accel at Robotics Stack Exchange

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

autoware_twist2accel 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_specs autoware_geography_utils autoware_global_parameter_loader 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_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.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-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The acceleration estimation package

Maintainers

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

Authors

  • Koji Minoda

autoware_twist2accel

Purpose

This package is responsible for estimating acceleration using the output of ekf_localizer. It uses lowpass filter to mitigate the noise.

Inputs / Outputs

Input

Name Type Description
input/odom nav_msgs::msg::Odometry localization odometry
input/twist geometry_msgs::msg::TwistWithCovarianceStamped twist

Output

Name Type Description
output/accel geometry_msgs::msg::AccelWithCovarianceStamped estimated acceleration

Parameters

{{ json_to_markdown(“localization/autoware_twist2accel/schema/twist2accel.schema.json”) }}

Future work

Future work includes integrating acceleration into the EKF state.

CHANGELOG

Changelog for package autoware_twist2accel

1.1.0 (2025-05-01)

1.9.0 (2026-06-24)

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

  • feat(twist2accel): apply [agnocast_wrapper::Node]{.title-ref} to [twist2accel]{.title-ref} (#1189)

    • apply agnocast_wrapper::Node
    • fix to use ALLOCATE
    • fix Cmake
    • fix cpplint

    * disable test when agnocast enabled ---------

  • refactor(autoware_twist2accel): arrange class interface (#1186)

    * refactor(autoware_twist2accel): encapsulate dt and previous twist in AccelEstimator AccelEstimator::estimate() now takes only the current twist sample and owns the per-call state that previously lived in the node: it holds the previous twist, derives dt from successive header stamps, and returns a ready-to-publish AccelWithCovarianceStamped with the header copied from the input. Add TwistWithCovarianceStamped and Odometry overloads that normalize to a TwistStamped and delegate, so the node callbacks can pass the raw message directly and the estimate_accel helper is no longer needed.

    * style(autoware_twist2accel): remove redundant comments ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>

  • refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests (#1111)

    * refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests Extract the ROS-free acceleration math (dt-clamped finite difference plus 6-channel LowpassFilter1d smoothing) out of Twist2Accel::estimate_accel into a pure, injectable AccelEstimator class, mirroring the sibling autoware_stop_filter::StopFilter pattern. estimate_accel becomes a thin wrapper that computes dt from the ROS clock, calls the estimator, fills the message, and publishes. This makes the previously untestable estimation logic exercisable without spinning a ROS node and adds gtest coverage for the no-smoothing-on-first-sample, finite-difference, low-pass smoothing, dt-clamp, channel-independence, and covariance-index branches. Behavior-preserving: the dt clamp (>= 1e-3), per-component LPF order, and the first-message zero/empty accel branch are unchanged. The accel covariance diagonal is now written via autoware_utils_geometry XYZRPY_COV_IDX named indices instead of magic i*6+i arithmetic (a gtest pins the equivalence), and the hot-path per-message std::make_shared copy is dropped by storing the previous twist as a value (std::optional). Dead tf2 / STL includes, the file-scope LowpassFilter1d using-declaration in the header, and the unused tf2 package.xml dependency are removed; autoware_utils_geometry is added. Refs: autowarefoundation/autoware_core#1096

    * refactor(autoware_twist2accel): clarify AccelEstimator docstring The class operates on geometry_msgs Twist/Accel value types, so the "ROS-free" wording was imprecise. Reword to state the actual property: no rclcpp::Node / spinning dependency. Refs: autowarefoundation/autoware_core#1096

    • refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator (#85)

    * refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator The previous extraction left the acceleration covariance assignment in the node while only the acceleration values moved into the pure AccelEstimator. Per reviewer feedback, the covariance is core estimation logic and belongs with the value estimate. AccelEstimator::estimate now returns geometry_msgs::msg::AccelWithCovariance, filling the same constant diagonal covariance the node used to set (linear variance 1.0, angular variance 0.05, off-diagonal terms zero) via named constants g_linear_accel_variance / g_angular_accel_variance. The node simply assigns the core's AccelWithCovariance output, so the published covariance is byte-for-byte unchanged. The core stays pure with no new mutable shared state. Unit tests assert the covariance against hand-computed literals, and the node test adds a characterization assertion locking the published covariance. Refs: autowarefoundation/autoware_core#1096

    * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>> ---------Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>>

    * test(autoware_twist2accel): assert covariance diagonal against named constants Address review: build the expected covariance array

File truncated at 100 lines see the full file

Launch files

  • launch/twist2accel.launch.xml
      • param_file [default: $(find-pkg-share autoware_twist2accel)/config/twist2accel.param.yaml]
      • in_odom [default: in_odom]
      • in_twist [default: in_twist]
      • out_accel [default: out_accel]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_twist2accel at Robotics Stack Exchange

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

autoware_twist2accel 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_specs autoware_geography_utils autoware_global_parameter_loader 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_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.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-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The acceleration estimation package

Maintainers

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

Authors

  • Koji Minoda

autoware_twist2accel

Purpose

This package is responsible for estimating acceleration using the output of ekf_localizer. It uses lowpass filter to mitigate the noise.

Inputs / Outputs

Input

Name Type Description
input/odom nav_msgs::msg::Odometry localization odometry
input/twist geometry_msgs::msg::TwistWithCovarianceStamped twist

Output

Name Type Description
output/accel geometry_msgs::msg::AccelWithCovarianceStamped estimated acceleration

Parameters

{{ json_to_markdown(“localization/autoware_twist2accel/schema/twist2accel.schema.json”) }}

Future work

Future work includes integrating acceleration into the EKF state.

CHANGELOG

Changelog for package autoware_twist2accel

1.1.0 (2025-05-01)

1.9.0 (2026-06-24)

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

  • feat(twist2accel): apply [agnocast_wrapper::Node]{.title-ref} to [twist2accel]{.title-ref} (#1189)

    • apply agnocast_wrapper::Node
    • fix to use ALLOCATE
    • fix Cmake
    • fix cpplint

    * disable test when agnocast enabled ---------

  • refactor(autoware_twist2accel): arrange class interface (#1186)

    * refactor(autoware_twist2accel): encapsulate dt and previous twist in AccelEstimator AccelEstimator::estimate() now takes only the current twist sample and owns the per-call state that previously lived in the node: it holds the previous twist, derives dt from successive header stamps, and returns a ready-to-publish AccelWithCovarianceStamped with the header copied from the input. Add TwistWithCovarianceStamped and Odometry overloads that normalize to a TwistStamped and delegate, so the node callbacks can pass the raw message directly and the estimate_accel helper is no longer needed.

    * style(autoware_twist2accel): remove redundant comments ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>

  • refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests (#1111)

    * refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests Extract the ROS-free acceleration math (dt-clamped finite difference plus 6-channel LowpassFilter1d smoothing) out of Twist2Accel::estimate_accel into a pure, injectable AccelEstimator class, mirroring the sibling autoware_stop_filter::StopFilter pattern. estimate_accel becomes a thin wrapper that computes dt from the ROS clock, calls the estimator, fills the message, and publishes. This makes the previously untestable estimation logic exercisable without spinning a ROS node and adds gtest coverage for the no-smoothing-on-first-sample, finite-difference, low-pass smoothing, dt-clamp, channel-independence, and covariance-index branches. Behavior-preserving: the dt clamp (>= 1e-3), per-component LPF order, and the first-message zero/empty accel branch are unchanged. The accel covariance diagonal is now written via autoware_utils_geometry XYZRPY_COV_IDX named indices instead of magic i*6+i arithmetic (a gtest pins the equivalence), and the hot-path per-message std::make_shared copy is dropped by storing the previous twist as a value (std::optional). Dead tf2 / STL includes, the file-scope LowpassFilter1d using-declaration in the header, and the unused tf2 package.xml dependency are removed; autoware_utils_geometry is added. Refs: autowarefoundation/autoware_core#1096

    * refactor(autoware_twist2accel): clarify AccelEstimator docstring The class operates on geometry_msgs Twist/Accel value types, so the "ROS-free" wording was imprecise. Reword to state the actual property: no rclcpp::Node / spinning dependency. Refs: autowarefoundation/autoware_core#1096

    • refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator (#85)

    * refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator The previous extraction left the acceleration covariance assignment in the node while only the acceleration values moved into the pure AccelEstimator. Per reviewer feedback, the covariance is core estimation logic and belongs with the value estimate. AccelEstimator::estimate now returns geometry_msgs::msg::AccelWithCovariance, filling the same constant diagonal covariance the node used to set (linear variance 1.0, angular variance 0.05, off-diagonal terms zero) via named constants g_linear_accel_variance / g_angular_accel_variance. The node simply assigns the core's AccelWithCovariance output, so the published covariance is byte-for-byte unchanged. The core stays pure with no new mutable shared state. Unit tests assert the covariance against hand-computed literals, and the node test adds a characterization assertion locking the published covariance. Refs: autowarefoundation/autoware_core#1096

    * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>> ---------Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>>

    * test(autoware_twist2accel): assert covariance diagonal against named constants Address review: build the expected covariance array

File truncated at 100 lines see the full file

Launch files

  • launch/twist2accel.launch.xml
      • param_file [default: $(find-pkg-share autoware_twist2accel)/config/twist2accel.param.yaml]
      • in_odom [default: in_odom]
      • in_twist [default: in_twist]
      • out_accel [default: out_accel]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_twist2accel at Robotics Stack Exchange

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

autoware_twist2accel 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_specs autoware_geography_utils autoware_global_parameter_loader 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_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.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-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The acceleration estimation package

Maintainers

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

Authors

  • Koji Minoda

autoware_twist2accel

Purpose

This package is responsible for estimating acceleration using the output of ekf_localizer. It uses lowpass filter to mitigate the noise.

Inputs / Outputs

Input

Name Type Description
input/odom nav_msgs::msg::Odometry localization odometry
input/twist geometry_msgs::msg::TwistWithCovarianceStamped twist

Output

Name Type Description
output/accel geometry_msgs::msg::AccelWithCovarianceStamped estimated acceleration

Parameters

{{ json_to_markdown(“localization/autoware_twist2accel/schema/twist2accel.schema.json”) }}

Future work

Future work includes integrating acceleration into the EKF state.

CHANGELOG

Changelog for package autoware_twist2accel

1.1.0 (2025-05-01)

1.9.0 (2026-06-24)

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

  • feat(twist2accel): apply [agnocast_wrapper::Node]{.title-ref} to [twist2accel]{.title-ref} (#1189)

    • apply agnocast_wrapper::Node
    • fix to use ALLOCATE
    • fix Cmake
    • fix cpplint

    * disable test when agnocast enabled ---------

  • refactor(autoware_twist2accel): arrange class interface (#1186)

    * refactor(autoware_twist2accel): encapsulate dt and previous twist in AccelEstimator AccelEstimator::estimate() now takes only the current twist sample and owns the per-call state that previously lived in the node: it holds the previous twist, derives dt from successive header stamps, and returns a ready-to-publish AccelWithCovarianceStamped with the header copied from the input. Add TwistWithCovarianceStamped and Odometry overloads that normalize to a TwistStamped and delegate, so the node callbacks can pass the raw message directly and the estimate_accel helper is no longer needed.

    * style(autoware_twist2accel): remove redundant comments ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>

  • refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests (#1111)

    * refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests Extract the ROS-free acceleration math (dt-clamped finite difference plus 6-channel LowpassFilter1d smoothing) out of Twist2Accel::estimate_accel into a pure, injectable AccelEstimator class, mirroring the sibling autoware_stop_filter::StopFilter pattern. estimate_accel becomes a thin wrapper that computes dt from the ROS clock, calls the estimator, fills the message, and publishes. This makes the previously untestable estimation logic exercisable without spinning a ROS node and adds gtest coverage for the no-smoothing-on-first-sample, finite-difference, low-pass smoothing, dt-clamp, channel-independence, and covariance-index branches. Behavior-preserving: the dt clamp (>= 1e-3), per-component LPF order, and the first-message zero/empty accel branch are unchanged. The accel covariance diagonal is now written via autoware_utils_geometry XYZRPY_COV_IDX named indices instead of magic i*6+i arithmetic (a gtest pins the equivalence), and the hot-path per-message std::make_shared copy is dropped by storing the previous twist as a value (std::optional). Dead tf2 / STL includes, the file-scope LowpassFilter1d using-declaration in the header, and the unused tf2 package.xml dependency are removed; autoware_utils_geometry is added. Refs: autowarefoundation/autoware_core#1096

    * refactor(autoware_twist2accel): clarify AccelEstimator docstring The class operates on geometry_msgs Twist/Accel value types, so the "ROS-free" wording was imprecise. Reword to state the actual property: no rclcpp::Node / spinning dependency. Refs: autowarefoundation/autoware_core#1096

    • refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator (#85)

    * refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator The previous extraction left the acceleration covariance assignment in the node while only the acceleration values moved into the pure AccelEstimator. Per reviewer feedback, the covariance is core estimation logic and belongs with the value estimate. AccelEstimator::estimate now returns geometry_msgs::msg::AccelWithCovariance, filling the same constant diagonal covariance the node used to set (linear variance 1.0, angular variance 0.05, off-diagonal terms zero) via named constants g_linear_accel_variance / g_angular_accel_variance. The node simply assigns the core's AccelWithCovariance output, so the published covariance is byte-for-byte unchanged. The core stays pure with no new mutable shared state. Unit tests assert the covariance against hand-computed literals, and the node test adds a characterization assertion locking the published covariance. Refs: autowarefoundation/autoware_core#1096

    * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>> ---------Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>>

    * test(autoware_twist2accel): assert covariance diagonal against named constants Address review: build the expected covariance array

File truncated at 100 lines see the full file

Launch files

  • launch/twist2accel.launch.xml
      • param_file [default: $(find-pkg-share autoware_twist2accel)/config/twist2accel.param.yaml]
      • in_odom [default: in_odom]
      • in_twist [default: in_twist]
      • out_accel [default: out_accel]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_twist2accel at Robotics Stack Exchange

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

autoware_twist2accel 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_specs autoware_geography_utils autoware_global_parameter_loader 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_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.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-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The acceleration estimation package

Maintainers

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

Authors

  • Koji Minoda

autoware_twist2accel

Purpose

This package is responsible for estimating acceleration using the output of ekf_localizer. It uses lowpass filter to mitigate the noise.

Inputs / Outputs

Input

Name Type Description
input/odom nav_msgs::msg::Odometry localization odometry
input/twist geometry_msgs::msg::TwistWithCovarianceStamped twist

Output

Name Type Description
output/accel geometry_msgs::msg::AccelWithCovarianceStamped estimated acceleration

Parameters

{{ json_to_markdown(“localization/autoware_twist2accel/schema/twist2accel.schema.json”) }}

Future work

Future work includes integrating acceleration into the EKF state.

CHANGELOG

Changelog for package autoware_twist2accel

1.1.0 (2025-05-01)

1.9.0 (2026-06-24)

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

  • feat(twist2accel): apply [agnocast_wrapper::Node]{.title-ref} to [twist2accel]{.title-ref} (#1189)

    • apply agnocast_wrapper::Node
    • fix to use ALLOCATE
    • fix Cmake
    • fix cpplint

    * disable test when agnocast enabled ---------

  • refactor(autoware_twist2accel): arrange class interface (#1186)

    * refactor(autoware_twist2accel): encapsulate dt and previous twist in AccelEstimator AccelEstimator::estimate() now takes only the current twist sample and owns the per-call state that previously lived in the node: it holds the previous twist, derives dt from successive header stamps, and returns a ready-to-publish AccelWithCovarianceStamped with the header copied from the input. Add TwistWithCovarianceStamped and Odometry overloads that normalize to a TwistStamped and delegate, so the node callbacks can pass the raw message directly and the estimate_accel helper is no longer needed.

    * style(autoware_twist2accel): remove redundant comments ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>

  • refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests (#1111)

    * refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests Extract the ROS-free acceleration math (dt-clamped finite difference plus 6-channel LowpassFilter1d smoothing) out of Twist2Accel::estimate_accel into a pure, injectable AccelEstimator class, mirroring the sibling autoware_stop_filter::StopFilter pattern. estimate_accel becomes a thin wrapper that computes dt from the ROS clock, calls the estimator, fills the message, and publishes. This makes the previously untestable estimation logic exercisable without spinning a ROS node and adds gtest coverage for the no-smoothing-on-first-sample, finite-difference, low-pass smoothing, dt-clamp, channel-independence, and covariance-index branches. Behavior-preserving: the dt clamp (>= 1e-3), per-component LPF order, and the first-message zero/empty accel branch are unchanged. The accel covariance diagonal is now written via autoware_utils_geometry XYZRPY_COV_IDX named indices instead of magic i*6+i arithmetic (a gtest pins the equivalence), and the hot-path per-message std::make_shared copy is dropped by storing the previous twist as a value (std::optional). Dead tf2 / STL includes, the file-scope LowpassFilter1d using-declaration in the header, and the unused tf2 package.xml dependency are removed; autoware_utils_geometry is added. Refs: autowarefoundation/autoware_core#1096

    * refactor(autoware_twist2accel): clarify AccelEstimator docstring The class operates on geometry_msgs Twist/Accel value types, so the "ROS-free" wording was imprecise. Reword to state the actual property: no rclcpp::Node / spinning dependency. Refs: autowarefoundation/autoware_core#1096

    • refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator (#85)

    * refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator The previous extraction left the acceleration covariance assignment in the node while only the acceleration values moved into the pure AccelEstimator. Per reviewer feedback, the covariance is core estimation logic and belongs with the value estimate. AccelEstimator::estimate now returns geometry_msgs::msg::AccelWithCovariance, filling the same constant diagonal covariance the node used to set (linear variance 1.0, angular variance 0.05, off-diagonal terms zero) via named constants g_linear_accel_variance / g_angular_accel_variance. The node simply assigns the core's AccelWithCovariance output, so the published covariance is byte-for-byte unchanged. The core stays pure with no new mutable shared state. Unit tests assert the covariance against hand-computed literals, and the node test adds a characterization assertion locking the published covariance. Refs: autowarefoundation/autoware_core#1096

    * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>> ---------Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>>

    * test(autoware_twist2accel): assert covariance diagonal against named constants Address review: build the expected covariance array

File truncated at 100 lines see the full file

Launch files

  • launch/twist2accel.launch.xml
      • param_file [default: $(find-pkg-share autoware_twist2accel)/config/twist2accel.param.yaml]
      • in_odom [default: in_odom]
      • in_twist [default: in_twist]
      • out_accel [default: out_accel]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_twist2accel at Robotics Stack Exchange

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

autoware_twist2accel 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_specs autoware_geography_utils autoware_global_parameter_loader 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_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.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-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The acceleration estimation package

Maintainers

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

Authors

  • Koji Minoda

autoware_twist2accel

Purpose

This package is responsible for estimating acceleration using the output of ekf_localizer. It uses lowpass filter to mitigate the noise.

Inputs / Outputs

Input

Name Type Description
input/odom nav_msgs::msg::Odometry localization odometry
input/twist geometry_msgs::msg::TwistWithCovarianceStamped twist

Output

Name Type Description
output/accel geometry_msgs::msg::AccelWithCovarianceStamped estimated acceleration

Parameters

{{ json_to_markdown(“localization/autoware_twist2accel/schema/twist2accel.schema.json”) }}

Future work

Future work includes integrating acceleration into the EKF state.

CHANGELOG

Changelog for package autoware_twist2accel

1.1.0 (2025-05-01)

1.9.0 (2026-06-24)

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

  • feat(twist2accel): apply [agnocast_wrapper::Node]{.title-ref} to [twist2accel]{.title-ref} (#1189)

    • apply agnocast_wrapper::Node
    • fix to use ALLOCATE
    • fix Cmake
    • fix cpplint

    * disable test when agnocast enabled ---------

  • refactor(autoware_twist2accel): arrange class interface (#1186)

    * refactor(autoware_twist2accel): encapsulate dt and previous twist in AccelEstimator AccelEstimator::estimate() now takes only the current twist sample and owns the per-call state that previously lived in the node: it holds the previous twist, derives dt from successive header stamps, and returns a ready-to-publish AccelWithCovarianceStamped with the header copied from the input. Add TwistWithCovarianceStamped and Odometry overloads that normalize to a TwistStamped and delegate, so the node callbacks can pass the raw message directly and the estimate_accel helper is no longer needed.

    * style(autoware_twist2accel): remove redundant comments ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>

  • refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests (#1111)

    * refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests Extract the ROS-free acceleration math (dt-clamped finite difference plus 6-channel LowpassFilter1d smoothing) out of Twist2Accel::estimate_accel into a pure, injectable AccelEstimator class, mirroring the sibling autoware_stop_filter::StopFilter pattern. estimate_accel becomes a thin wrapper that computes dt from the ROS clock, calls the estimator, fills the message, and publishes. This makes the previously untestable estimation logic exercisable without spinning a ROS node and adds gtest coverage for the no-smoothing-on-first-sample, finite-difference, low-pass smoothing, dt-clamp, channel-independence, and covariance-index branches. Behavior-preserving: the dt clamp (>= 1e-3), per-component LPF order, and the first-message zero/empty accel branch are unchanged. The accel covariance diagonal is now written via autoware_utils_geometry XYZRPY_COV_IDX named indices instead of magic i*6+i arithmetic (a gtest pins the equivalence), and the hot-path per-message std::make_shared copy is dropped by storing the previous twist as a value (std::optional). Dead tf2 / STL includes, the file-scope LowpassFilter1d using-declaration in the header, and the unused tf2 package.xml dependency are removed; autoware_utils_geometry is added. Refs: autowarefoundation/autoware_core#1096

    * refactor(autoware_twist2accel): clarify AccelEstimator docstring The class operates on geometry_msgs Twist/Accel value types, so the "ROS-free" wording was imprecise. Reword to state the actual property: no rclcpp::Node / spinning dependency. Refs: autowarefoundation/autoware_core#1096

    • refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator (#85)

    * refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator The previous extraction left the acceleration covariance assignment in the node while only the acceleration values moved into the pure AccelEstimator. Per reviewer feedback, the covariance is core estimation logic and belongs with the value estimate. AccelEstimator::estimate now returns geometry_msgs::msg::AccelWithCovariance, filling the same constant diagonal covariance the node used to set (linear variance 1.0, angular variance 0.05, off-diagonal terms zero) via named constants g_linear_accel_variance / g_angular_accel_variance. The node simply assigns the core's AccelWithCovariance output, so the published covariance is byte-for-byte unchanged. The core stays pure with no new mutable shared state. Unit tests assert the covariance against hand-computed literals, and the node test adds a characterization assertion locking the published covariance. Refs: autowarefoundation/autoware_core#1096

    * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>> ---------Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>>

    * test(autoware_twist2accel): assert covariance diagonal against named constants Address review: build the expected covariance array

File truncated at 100 lines see the full file

Launch files

  • launch/twist2accel.launch.xml
      • param_file [default: $(find-pkg-share autoware_twist2accel)/config/twist2accel.param.yaml]
      • in_odom [default: in_odom]
      • in_twist [default: in_twist]
      • out_accel [default: out_accel]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_twist2accel at Robotics Stack Exchange

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

autoware_twist2accel 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_specs autoware_geography_utils autoware_global_parameter_loader 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_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.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-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The acceleration estimation package

Maintainers

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

Authors

  • Koji Minoda

autoware_twist2accel

Purpose

This package is responsible for estimating acceleration using the output of ekf_localizer. It uses lowpass filter to mitigate the noise.

Inputs / Outputs

Input

Name Type Description
input/odom nav_msgs::msg::Odometry localization odometry
input/twist geometry_msgs::msg::TwistWithCovarianceStamped twist

Output

Name Type Description
output/accel geometry_msgs::msg::AccelWithCovarianceStamped estimated acceleration

Parameters

{{ json_to_markdown(“localization/autoware_twist2accel/schema/twist2accel.schema.json”) }}

Future work

Future work includes integrating acceleration into the EKF state.

CHANGELOG

Changelog for package autoware_twist2accel

1.1.0 (2025-05-01)

1.9.0 (2026-06-24)

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

  • feat(twist2accel): apply [agnocast_wrapper::Node]{.title-ref} to [twist2accel]{.title-ref} (#1189)

    • apply agnocast_wrapper::Node
    • fix to use ALLOCATE
    • fix Cmake
    • fix cpplint

    * disable test when agnocast enabled ---------

  • refactor(autoware_twist2accel): arrange class interface (#1186)

    * refactor(autoware_twist2accel): encapsulate dt and previous twist in AccelEstimator AccelEstimator::estimate() now takes only the current twist sample and owns the per-call state that previously lived in the node: it holds the previous twist, derives dt from successive header stamps, and returns a ready-to-publish AccelWithCovarianceStamped with the header copied from the input. Add TwistWithCovarianceStamped and Odometry overloads that normalize to a TwistStamped and delegate, so the node callbacks can pass the raw message directly and the estimate_accel helper is no longer needed.

    * style(autoware_twist2accel): remove redundant comments ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>

  • refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests (#1111)

    * refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests Extract the ROS-free acceleration math (dt-clamped finite difference plus 6-channel LowpassFilter1d smoothing) out of Twist2Accel::estimate_accel into a pure, injectable AccelEstimator class, mirroring the sibling autoware_stop_filter::StopFilter pattern. estimate_accel becomes a thin wrapper that computes dt from the ROS clock, calls the estimator, fills the message, and publishes. This makes the previously untestable estimation logic exercisable without spinning a ROS node and adds gtest coverage for the no-smoothing-on-first-sample, finite-difference, low-pass smoothing, dt-clamp, channel-independence, and covariance-index branches. Behavior-preserving: the dt clamp (>= 1e-3), per-component LPF order, and the first-message zero/empty accel branch are unchanged. The accel covariance diagonal is now written via autoware_utils_geometry XYZRPY_COV_IDX named indices instead of magic i*6+i arithmetic (a gtest pins the equivalence), and the hot-path per-message std::make_shared copy is dropped by storing the previous twist as a value (std::optional). Dead tf2 / STL includes, the file-scope LowpassFilter1d using-declaration in the header, and the unused tf2 package.xml dependency are removed; autoware_utils_geometry is added. Refs: autowarefoundation/autoware_core#1096

    * refactor(autoware_twist2accel): clarify AccelEstimator docstring The class operates on geometry_msgs Twist/Accel value types, so the "ROS-free" wording was imprecise. Reword to state the actual property: no rclcpp::Node / spinning dependency. Refs: autowarefoundation/autoware_core#1096

    • refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator (#85)

    * refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator The previous extraction left the acceleration covariance assignment in the node while only the acceleration values moved into the pure AccelEstimator. Per reviewer feedback, the covariance is core estimation logic and belongs with the value estimate. AccelEstimator::estimate now returns geometry_msgs::msg::AccelWithCovariance, filling the same constant diagonal covariance the node used to set (linear variance 1.0, angular variance 0.05, off-diagonal terms zero) via named constants g_linear_accel_variance / g_angular_accel_variance. The node simply assigns the core's AccelWithCovariance output, so the published covariance is byte-for-byte unchanged. The core stays pure with no new mutable shared state. Unit tests assert the covariance against hand-computed literals, and the node test adds a characterization assertion locking the published covariance. Refs: autowarefoundation/autoware_core#1096

    * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>> ---------Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>>

    * test(autoware_twist2accel): assert covariance diagonal against named constants Address review: build the expected covariance array

File truncated at 100 lines see the full file

Launch files

  • launch/twist2accel.launch.xml
      • param_file [default: $(find-pkg-share autoware_twist2accel)/config/twist2accel.param.yaml]
      • in_odom [default: in_odom]
      • in_twist [default: in_twist]
      • out_accel [default: out_accel]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_twist2accel at Robotics Stack Exchange

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

autoware_twist2accel 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_specs autoware_geography_utils autoware_global_parameter_loader 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_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.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-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The acceleration estimation package

Maintainers

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

Authors

  • Koji Minoda

autoware_twist2accel

Purpose

This package is responsible for estimating acceleration using the output of ekf_localizer. It uses lowpass filter to mitigate the noise.

Inputs / Outputs

Input

Name Type Description
input/odom nav_msgs::msg::Odometry localization odometry
input/twist geometry_msgs::msg::TwistWithCovarianceStamped twist

Output

Name Type Description
output/accel geometry_msgs::msg::AccelWithCovarianceStamped estimated acceleration

Parameters

{{ json_to_markdown(“localization/autoware_twist2accel/schema/twist2accel.schema.json”) }}

Future work

Future work includes integrating acceleration into the EKF state.

CHANGELOG

Changelog for package autoware_twist2accel

1.1.0 (2025-05-01)

1.9.0 (2026-06-24)

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

  • feat(twist2accel): apply [agnocast_wrapper::Node]{.title-ref} to [twist2accel]{.title-ref} (#1189)

    • apply agnocast_wrapper::Node
    • fix to use ALLOCATE
    • fix Cmake
    • fix cpplint

    * disable test when agnocast enabled ---------

  • refactor(autoware_twist2accel): arrange class interface (#1186)

    * refactor(autoware_twist2accel): encapsulate dt and previous twist in AccelEstimator AccelEstimator::estimate() now takes only the current twist sample and owns the per-call state that previously lived in the node: it holds the previous twist, derives dt from successive header stamps, and returns a ready-to-publish AccelWithCovarianceStamped with the header copied from the input. Add TwistWithCovarianceStamped and Odometry overloads that normalize to a TwistStamped and delegate, so the node callbacks can pass the raw message directly and the estimate_accel helper is no longer needed.

    * style(autoware_twist2accel): remove redundant comments ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>

  • refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests (#1111)

    * refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests Extract the ROS-free acceleration math (dt-clamped finite difference plus 6-channel LowpassFilter1d smoothing) out of Twist2Accel::estimate_accel into a pure, injectable AccelEstimator class, mirroring the sibling autoware_stop_filter::StopFilter pattern. estimate_accel becomes a thin wrapper that computes dt from the ROS clock, calls the estimator, fills the message, and publishes. This makes the previously untestable estimation logic exercisable without spinning a ROS node and adds gtest coverage for the no-smoothing-on-first-sample, finite-difference, low-pass smoothing, dt-clamp, channel-independence, and covariance-index branches. Behavior-preserving: the dt clamp (>= 1e-3), per-component LPF order, and the first-message zero/empty accel branch are unchanged. The accel covariance diagonal is now written via autoware_utils_geometry XYZRPY_COV_IDX named indices instead of magic i*6+i arithmetic (a gtest pins the equivalence), and the hot-path per-message std::make_shared copy is dropped by storing the previous twist as a value (std::optional). Dead tf2 / STL includes, the file-scope LowpassFilter1d using-declaration in the header, and the unused tf2 package.xml dependency are removed; autoware_utils_geometry is added. Refs: autowarefoundation/autoware_core#1096

    * refactor(autoware_twist2accel): clarify AccelEstimator docstring The class operates on geometry_msgs Twist/Accel value types, so the "ROS-free" wording was imprecise. Reword to state the actual property: no rclcpp::Node / spinning dependency. Refs: autowarefoundation/autoware_core#1096

    • refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator (#85)

    * refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator The previous extraction left the acceleration covariance assignment in the node while only the acceleration values moved into the pure AccelEstimator. Per reviewer feedback, the covariance is core estimation logic and belongs with the value estimate. AccelEstimator::estimate now returns geometry_msgs::msg::AccelWithCovariance, filling the same constant diagonal covariance the node used to set (linear variance 1.0, angular variance 0.05, off-diagonal terms zero) via named constants g_linear_accel_variance / g_angular_accel_variance. The node simply assigns the core's AccelWithCovariance output, so the published covariance is byte-for-byte unchanged. The core stays pure with no new mutable shared state. Unit tests assert the covariance against hand-computed literals, and the node test adds a characterization assertion locking the published covariance. Refs: autowarefoundation/autoware_core#1096

    * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>> ---------Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>>

    * test(autoware_twist2accel): assert covariance diagonal against named constants Address review: build the expected covariance array

File truncated at 100 lines see the full file

Launch files

  • launch/twist2accel.launch.xml
      • param_file [default: $(find-pkg-share autoware_twist2accel)/config/twist2accel.param.yaml]
      • in_odom [default: in_odom]
      • in_twist [default: in_twist]
      • out_accel [default: out_accel]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_twist2accel at Robotics Stack Exchange

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

autoware_twist2accel 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_specs autoware_geography_utils autoware_global_parameter_loader 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_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.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-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The acceleration estimation package

Maintainers

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

Authors

  • Koji Minoda

autoware_twist2accel

Purpose

This package is responsible for estimating acceleration using the output of ekf_localizer. It uses lowpass filter to mitigate the noise.

Inputs / Outputs

Input

Name Type Description
input/odom nav_msgs::msg::Odometry localization odometry
input/twist geometry_msgs::msg::TwistWithCovarianceStamped twist

Output

Name Type Description
output/accel geometry_msgs::msg::AccelWithCovarianceStamped estimated acceleration

Parameters

{{ json_to_markdown(“localization/autoware_twist2accel/schema/twist2accel.schema.json”) }}

Future work

Future work includes integrating acceleration into the EKF state.

CHANGELOG

Changelog for package autoware_twist2accel

1.1.0 (2025-05-01)

1.9.0 (2026-06-24)

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

  • feat(twist2accel): apply [agnocast_wrapper::Node]{.title-ref} to [twist2accel]{.title-ref} (#1189)

    • apply agnocast_wrapper::Node
    • fix to use ALLOCATE
    • fix Cmake
    • fix cpplint

    * disable test when agnocast enabled ---------

  • refactor(autoware_twist2accel): arrange class interface (#1186)

    * refactor(autoware_twist2accel): encapsulate dt and previous twist in AccelEstimator AccelEstimator::estimate() now takes only the current twist sample and owns the per-call state that previously lived in the node: it holds the previous twist, derives dt from successive header stamps, and returns a ready-to-publish AccelWithCovarianceStamped with the header copied from the input. Add TwistWithCovarianceStamped and Odometry overloads that normalize to a TwistStamped and delegate, so the node callbacks can pass the raw message directly and the estimate_accel helper is no longer needed.

    * style(autoware_twist2accel): remove redundant comments ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>

  • refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests (#1111)

    * refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests Extract the ROS-free acceleration math (dt-clamped finite difference plus 6-channel LowpassFilter1d smoothing) out of Twist2Accel::estimate_accel into a pure, injectable AccelEstimator class, mirroring the sibling autoware_stop_filter::StopFilter pattern. estimate_accel becomes a thin wrapper that computes dt from the ROS clock, calls the estimator, fills the message, and publishes. This makes the previously untestable estimation logic exercisable without spinning a ROS node and adds gtest coverage for the no-smoothing-on-first-sample, finite-difference, low-pass smoothing, dt-clamp, channel-independence, and covariance-index branches. Behavior-preserving: the dt clamp (>= 1e-3), per-component LPF order, and the first-message zero/empty accel branch are unchanged. The accel covariance diagonal is now written via autoware_utils_geometry XYZRPY_COV_IDX named indices instead of magic i*6+i arithmetic (a gtest pins the equivalence), and the hot-path per-message std::make_shared copy is dropped by storing the previous twist as a value (std::optional). Dead tf2 / STL includes, the file-scope LowpassFilter1d using-declaration in the header, and the unused tf2 package.xml dependency are removed; autoware_utils_geometry is added. Refs: autowarefoundation/autoware_core#1096

    * refactor(autoware_twist2accel): clarify AccelEstimator docstring The class operates on geometry_msgs Twist/Accel value types, so the "ROS-free" wording was imprecise. Reword to state the actual property: no rclcpp::Node / spinning dependency. Refs: autowarefoundation/autoware_core#1096

    • refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator (#85)

    * refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator The previous extraction left the acceleration covariance assignment in the node while only the acceleration values moved into the pure AccelEstimator. Per reviewer feedback, the covariance is core estimation logic and belongs with the value estimate. AccelEstimator::estimate now returns geometry_msgs::msg::AccelWithCovariance, filling the same constant diagonal covariance the node used to set (linear variance 1.0, angular variance 0.05, off-diagonal terms zero) via named constants g_linear_accel_variance / g_angular_accel_variance. The node simply assigns the core's AccelWithCovariance output, so the published covariance is byte-for-byte unchanged. The core stays pure with no new mutable shared state. Unit tests assert the covariance against hand-computed literals, and the node test adds a characterization assertion locking the published covariance. Refs: autowarefoundation/autoware_core#1096

    * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>> ---------Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>>

    * test(autoware_twist2accel): assert covariance diagonal against named constants Address review: build the expected covariance array

File truncated at 100 lines see the full file

Launch files

  • launch/twist2accel.launch.xml
      • param_file [default: $(find-pkg-share autoware_twist2accel)/config/twist2accel.param.yaml]
      • in_odom [default: in_odom]
      • in_twist [default: in_twist]
      • out_accel [default: out_accel]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_twist2accel at Robotics Stack Exchange

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

autoware_twist2accel 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_specs autoware_geography_utils autoware_global_parameter_loader 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_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.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-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The acceleration estimation package

Maintainers

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

Authors

  • Koji Minoda

autoware_twist2accel

Purpose

This package is responsible for estimating acceleration using the output of ekf_localizer. It uses lowpass filter to mitigate the noise.

Inputs / Outputs

Input

Name Type Description
input/odom nav_msgs::msg::Odometry localization odometry
input/twist geometry_msgs::msg::TwistWithCovarianceStamped twist

Output

Name Type Description
output/accel geometry_msgs::msg::AccelWithCovarianceStamped estimated acceleration

Parameters

{{ json_to_markdown(“localization/autoware_twist2accel/schema/twist2accel.schema.json”) }}

Future work

Future work includes integrating acceleration into the EKF state.

CHANGELOG

Changelog for package autoware_twist2accel

1.1.0 (2025-05-01)

1.9.0 (2026-06-24)

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

  • feat(twist2accel): apply [agnocast_wrapper::Node]{.title-ref} to [twist2accel]{.title-ref} (#1189)

    • apply agnocast_wrapper::Node
    • fix to use ALLOCATE
    • fix Cmake
    • fix cpplint

    * disable test when agnocast enabled ---------

  • refactor(autoware_twist2accel): arrange class interface (#1186)

    * refactor(autoware_twist2accel): encapsulate dt and previous twist in AccelEstimator AccelEstimator::estimate() now takes only the current twist sample and owns the per-call state that previously lived in the node: it holds the previous twist, derives dt from successive header stamps, and returns a ready-to-publish AccelWithCovarianceStamped with the header copied from the input. Add TwistWithCovarianceStamped and Odometry overloads that normalize to a TwistStamped and delegate, so the node callbacks can pass the raw message directly and the estimate_accel helper is no longer needed.

    * style(autoware_twist2accel): remove redundant comments ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>

  • refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests (#1111)

    * refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests Extract the ROS-free acceleration math (dt-clamped finite difference plus 6-channel LowpassFilter1d smoothing) out of Twist2Accel::estimate_accel into a pure, injectable AccelEstimator class, mirroring the sibling autoware_stop_filter::StopFilter pattern. estimate_accel becomes a thin wrapper that computes dt from the ROS clock, calls the estimator, fills the message, and publishes. This makes the previously untestable estimation logic exercisable without spinning a ROS node and adds gtest coverage for the no-smoothing-on-first-sample, finite-difference, low-pass smoothing, dt-clamp, channel-independence, and covariance-index branches. Behavior-preserving: the dt clamp (>= 1e-3), per-component LPF order, and the first-message zero/empty accel branch are unchanged. The accel covariance diagonal is now written via autoware_utils_geometry XYZRPY_COV_IDX named indices instead of magic i*6+i arithmetic (a gtest pins the equivalence), and the hot-path per-message std::make_shared copy is dropped by storing the previous twist as a value (std::optional). Dead tf2 / STL includes, the file-scope LowpassFilter1d using-declaration in the header, and the unused tf2 package.xml dependency are removed; autoware_utils_geometry is added. Refs: autowarefoundation/autoware_core#1096

    * refactor(autoware_twist2accel): clarify AccelEstimator docstring The class operates on geometry_msgs Twist/Accel value types, so the "ROS-free" wording was imprecise. Reword to state the actual property: no rclcpp::Node / spinning dependency. Refs: autowarefoundation/autoware_core#1096

    • refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator (#85)

    * refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator The previous extraction left the acceleration covariance assignment in the node while only the acceleration values moved into the pure AccelEstimator. Per reviewer feedback, the covariance is core estimation logic and belongs with the value estimate. AccelEstimator::estimate now returns geometry_msgs::msg::AccelWithCovariance, filling the same constant diagonal covariance the node used to set (linear variance 1.0, angular variance 0.05, off-diagonal terms zero) via named constants g_linear_accel_variance / g_angular_accel_variance. The node simply assigns the core's AccelWithCovariance output, so the published covariance is byte-for-byte unchanged. The core stays pure with no new mutable shared state. Unit tests assert the covariance against hand-computed literals, and the node test adds a characterization assertion locking the published covariance. Refs: autowarefoundation/autoware_core#1096

    * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>> ---------Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>>

    * test(autoware_twist2accel): assert covariance diagonal against named constants Address review: build the expected covariance array

File truncated at 100 lines see the full file

Launch files

  • launch/twist2accel.launch.xml
      • param_file [default: $(find-pkg-share autoware_twist2accel)/config/twist2accel.param.yaml]
      • in_odom [default: in_odom]
      • in_twist [default: in_twist]
      • out_accel [default: out_accel]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_twist2accel at Robotics Stack Exchange

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

autoware_twist2accel 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_specs autoware_geography_utils autoware_global_parameter_loader 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_topic_converter autoware_route_handler autoware_velocity_smoother autoware_behavior_velocity_planner autoware_behavior_velocity_planner_common autoware_behavior_velocity_stop_line_module autoware_motion_velocity_obstacle_stop_module autoware_motion_velocity_planner autoware_motion_velocity_planner_common autoware_core_sensing autoware_crop_box_filter autoware_downsample_filters autoware_gnss_poser autoware_vehicle_velocity_converter autoware_planning_test_manager autoware_pyplot autoware_test_node autoware_test_utils autoware_testing autoware_core_vehicle

ROS Distro
humble

Package Summary

Version 1.9.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-07-03
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

The acceleration estimation package

Maintainers

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

Authors

  • Koji Minoda

autoware_twist2accel

Purpose

This package is responsible for estimating acceleration using the output of ekf_localizer. It uses lowpass filter to mitigate the noise.

Inputs / Outputs

Input

Name Type Description
input/odom nav_msgs::msg::Odometry localization odometry
input/twist geometry_msgs::msg::TwistWithCovarianceStamped twist

Output

Name Type Description
output/accel geometry_msgs::msg::AccelWithCovarianceStamped estimated acceleration

Parameters

{{ json_to_markdown(“localization/autoware_twist2accel/schema/twist2accel.schema.json”) }}

Future work

Future work includes integrating acceleration into the EKF state.

CHANGELOG

Changelog for package autoware_twist2accel

1.1.0 (2025-05-01)

1.9.0 (2026-06-24)

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

  • feat(twist2accel): apply [agnocast_wrapper::Node]{.title-ref} to [twist2accel]{.title-ref} (#1189)

    • apply agnocast_wrapper::Node
    • fix to use ALLOCATE
    • fix Cmake
    • fix cpplint

    * disable test when agnocast enabled ---------

  • refactor(autoware_twist2accel): arrange class interface (#1186)

    * refactor(autoware_twist2accel): encapsulate dt and previous twist in AccelEstimator AccelEstimator::estimate() now takes only the current twist sample and owns the per-call state that previously lived in the node: it holds the previous twist, derives dt from successive header stamps, and returns a ready-to-publish AccelWithCovarianceStamped with the header copied from the input. Add TwistWithCovarianceStamped and Odometry overloads that normalize to a TwistStamped and delegate, so the node callbacks can pass the raw message directly and the estimate_accel helper is no longer needed.

    * style(autoware_twist2accel): remove redundant comments ---------Co-authored-by: Takahisa.Ishikawa <<takahisa.ishikawa@tier4.jp>>

  • refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests (#1111)

    * refactor(autoware_twist2accel): extract pure AccelEstimator and add unit tests Extract the ROS-free acceleration math (dt-clamped finite difference plus 6-channel LowpassFilter1d smoothing) out of Twist2Accel::estimate_accel into a pure, injectable AccelEstimator class, mirroring the sibling autoware_stop_filter::StopFilter pattern. estimate_accel becomes a thin wrapper that computes dt from the ROS clock, calls the estimator, fills the message, and publishes. This makes the previously untestable estimation logic exercisable without spinning a ROS node and adds gtest coverage for the no-smoothing-on-first-sample, finite-difference, low-pass smoothing, dt-clamp, channel-independence, and covariance-index branches. Behavior-preserving: the dt clamp (>= 1e-3), per-component LPF order, and the first-message zero/empty accel branch are unchanged. The accel covariance diagonal is now written via autoware_utils_geometry XYZRPY_COV_IDX named indices instead of magic i*6+i arithmetic (a gtest pins the equivalence), and the hot-path per-message std::make_shared copy is dropped by storing the previous twist as a value (std::optional). Dead tf2 / STL includes, the file-scope LowpassFilter1d using-declaration in the header, and the unused tf2 package.xml dependency are removed; autoware_utils_geometry is added. Refs: autowarefoundation/autoware_core#1096

    * refactor(autoware_twist2accel): clarify AccelEstimator docstring The class operates on geometry_msgs Twist/Accel value types, so the "ROS-free" wording was imprecise. Reword to state the actual property: no rclcpp::Node / spinning dependency. Refs: autowarefoundation/autoware_core#1096

    • refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator (#85)

    * refactor(autoware_twist2accel): move accel covariance into pure AccelEstimator The previous extraction left the acceleration covariance assignment in the node while only the acceleration values moved into the pure AccelEstimator. Per reviewer feedback, the covariance is core estimation logic and belongs with the value estimate. AccelEstimator::estimate now returns geometry_msgs::msg::AccelWithCovariance, filling the same constant diagonal covariance the node used to set (linear variance 1.0, angular variance 0.05, off-diagonal terms zero) via named constants g_linear_accel_variance / g_angular_accel_variance. The node simply assigns the core's AccelWithCovariance output, so the published covariance is byte-for-byte unchanged. The core stays pure with no new mutable shared state. Unit tests assert the covariance against hand-computed literals, and the node test adds a characterization assertion locking the published covariance. Refs: autowarefoundation/autoware_core#1096

    * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>> ---------Co-authored-by: Copilot Autofix powered by AI <<175728472+Copilot@users.noreply.github.com>>

    * test(autoware_twist2accel): assert covariance diagonal against named constants Address review: build the expected covariance array

File truncated at 100 lines see the full file

Launch files

  • launch/twist2accel.launch.xml
      • param_file [default: $(find-pkg-share autoware_twist2accel)/config/twist2accel.param.yaml]
      • in_odom [default: in_odom]
      • in_twist [default: in_twist]
      • out_accel [default: out_accel]

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged autoware_twist2accel at Robotics Stack Exchange