Package Summary
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Berkay Karaman
- Taiki Tanaka
- Tomoya Kimura
- Shumpei Wakabayashi
- Fumiya Watanabe
- Takamasa Horibe
- Satoshi Ota
- Takayuki Murooka
- Junya Sasaki
Authors
- Ali Boyali
- Berkay Karaman
autoware_control_performance_analysis
Purpose
autoware_control_performance_analysis
is the package to analyze the tracking performance of a control module and monitor the driving status of the vehicle.
This package is used as a tool to quantify the results of the control module. That’s why it doesn’t interfere with the core logic of autonomous driving.
Based on the various input from planning, control, and vehicle, it publishes the result of analysis as autoware_control_performance_analysis::msg::ErrorStamped
defined in this package.
All results in ErrorStamped
message are calculated in Frenet Frame of curve. Errors and velocity errors are calculated by using paper below.
Werling, Moritz & Groell, Lutz & Bretthauer, Georg. (2010). Invariant Trajectory Tracking With a Full-Size Autonomous Road Vehicle. IEEE Transactions on Robotics. 26. 758 - 765. 10.1109/TRO.2010.2052325.
If you are interested in calculations, you can see the error and error velocity calculations in section C. Asymptotical Trajectory Tracking With Orientation Control
.
Error acceleration calculations are made based on the velocity calculations above. You can see below the calculation of error acceleration.
Input / Output
Input topics
Name | Type | Description |
---|---|---|
/planning/trajectory |
autoware_planning_msgs::msg::Trajectory | Output trajectory from planning module. |
/control/command/control_cmd |
autoware_control_msgs::msg::Control | Output control command from control module. |
/vehicle/status/steering_status |
autoware_vehicle_msgs::msg::SteeringReport | Steering information from vehicle. |
/localization/kinematic_state |
nav_msgs::msg::Odometry | Use twist from odometry. |
/tf |
tf2_msgs::msg::TFMessage | Extract ego pose from tf. |
Output topics
Name | Type | Description |
---|---|---|
/control_performance/performance_vars |
autoware_control_performance_analysis::msg::ErrorStamped | The result of the performance analysis. |
/control_performance/driving_status |
autoware_control_performance_analysis::msg::DrivingMonitorStamped | Driving status (acceleration, jerk etc.) monitoring |
Outputs
autoware_control_performance_analysis::msg::DrivingMonitorStamped
Name | Type | Description |
---|---|---|
longitudinal_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
longitudinal_jerk |
float | $[ \mathrm{m/s^3} ]$ |
lateral_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
lateral_jerk |
float | $[ \mathrm{m/s^3} ]$ |
desired_steering_angle |
float | $[ \mathrm{rad} ]$ |
controller_processing_time |
float | Timestamp between last two control command messages $[ \mathrm{ms} ]$ |
autoware_control_performance_analysis::msg::ErrorStamped
Name | Type | Description |
---|---|---|
lateral_error |
float | $[ \mathrm{m} ]$ |
lateral_error_velocity |
float | $[ \mathrm{m/s} ]$ |
lateral_error_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
longitudinal_error |
float | $[ \mathrm{m} ]$ |
longitudinal_error_velocity |
float | $[ \mathrm{m/s} ]$ |
longitudinal_error_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
heading_error |
float | $[ \mathrm{rad} ]$ |
heading_error_velocity |
float | $[ \mathrm{rad/s} ]$ |
control_effort_energy |
float | $[ \mathbf{u}^\top \mathbf{R} \mathbf{u} ]$ simplified to $[ R \cdot u^2 ]$ |
error_energy |
float | $e_{\text{lat}}^2 + e_\theta^2$ (squared lateral error + squared heading error) |
value_approximation |
float | $V = \mathbf{x}^\top \mathbf{P} \mathbf{x}$; Value function from DARE Lyapunov matrix $\mathbf{P}$ |
curvature_estimate |
float | $[ \mathrm{1/m} ]$ |
curvature_estimate_pp |
float | $[ \mathrm{1/m} ]$ |
vehicle_velocity_error |
float | $[ \mathrm{m/s} ]$ |
tracking_curvature_discontinuity_ability |
float | Measures the ability to track curvature changes $\frac{\lvert \Delta(\text{curvature}) \rvert}{1 + \lvert \Delta(e_{\text{lat}}) \rvert}$ |
Parameters
Name | Type | Description |
---|---|---|
curvature_interval_length |
double | Used for estimating current curvature |
prevent_zero_division_value |
double | Value to avoid zero division. Default is 0.001
|
odom_interval |
unsigned integer | Interval between odom messages, increase it for smoother curve. |
acceptable_max_distance_to_waypoint |
double | Maximum distance between trajectory point and vehicle [m] |
acceptable_max_yaw_difference_rad |
double | Maximum yaw difference between trajectory point and vehicle [rad] |
low_pass_filter_gain |
double | Low pass filter gain |
Usage
- After launched simulation and control module, launch the
control_performance_analysis.launch.xml
. - You should be able to see the driving monitor and error variables in topics.
- If you want to visualize the results, you can use
Plotjuggler
and useconfig/controller_monitor.xml
as layout. - After import the layout, please specify the topics that are listed below.
- /localization/kinematic_state
- /vehicle/status/steering_status
- /control_performance/driving_status
- /control_performance/performance_vars
- In
Plotjuggler
you can export the statistic (max, min, average) values as csv file. Use that statistics to compare the control modules.
File truncated at 100 lines see the full file
Changelog for package autoware_control_performance_analysis
0.47.0 (2025-08-11)
-
feat: change planning output topic name to /planning/trajectory (#11135)
- change planning output topic name to /planning/trajectory
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
Contributors: Yukihiro Saito
0.46.0 (2025-06-20)
0.45.0 (2025-05-22)
0.44.2 (2025-06-10)
0.44.1 (2025-05-01)
0.44.0 (2025-04-18)
0.43.0 (2025-03-21)
- Merge remote-tracking branch 'origin/main' into chore/bump-version-0.43
- chore: rename from [autoware.universe]{.title-ref} to [autoware_universe]{.title-ref} (#10306)
- Contributors: Hayato Mizushima, Yutaka Kondo
0.42.0 (2025-03-03)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- feat(autoware_utils): replace autoware_universe_utils with autoware_utils (#10191)
- fix: add missing includes to autoware_universe_utils (#10091)
- Contributors: Fumiya Watanabe, Ryohsuke Mitsudome, 心刚
0.41.2 (2025-02-19)
- chore: bump version to 0.41.1 (#10088)
- Contributors: Ryohsuke Mitsudome
0.41.1 (2025-02-10)
0.41.0 (2025-01-29)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat: apply [autoware_]{.title-ref} prefix for [control_performance_analysis]{.title-ref} (#9982)
* feat(control_performance_analysis): apply [autoware_]{.title-ref} prefix (see below): Note:
* In this commit, I did not organize a folder structure. The folder structure will be organized in the next some commits.
- The changes will follow the Autoware's guideline as below:
- https://autowarefoundation.github.io/autoware-documentation/main/contributing/coding-guidelines/ros-nodes/directory-structure/#package-folder
- rename(control_performance_analysis): move headers under `include/autoware`:
- Fixes due to this changes for .hpp/.cpp files will be applied in the next commit
- fix(control_performance_analysis): fix include paths
- To follow the previous commit
- rename: [control_performance_analysis]{.title-ref} => [autoware_control_performance_analysis]{.title-ref}
- style(pre-commit): autofix
- bug(autoware_control_performance_analysis): fix inconsistent namespacing
- style(pre-commit): autofix
- update(autoware_control_performance_analysis): [README.md]{.title-ref}
- bug(autoware_control_performance_analysis): fix critical bugs that contaminate topic name
- style(pre-commit): autofix
- fix: update package name for error_rqt_multiplot.xml
- fix: update package name for control_performance_plot.py
- docs(autoware_control_performance_analysis): update package name in README and CHANGELOG.rst
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Ryohsuke Mitsudome <<ryohsuke.mitsudome@tier4.jp>> Co-authored-by: SakodaShintaro <<shintaro.sakoda@tier4.jp>>
-
Contributors: Fumiya Watanabe, Junya Sasaki
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Name |
---|
libboost-dev |
Dependant Packages
Launch files
- launch/control_performance_analysis.launch.xml
-
- control_performance_analysis_param_path [default: $(find-pkg-share autoware_control_performance_analysis)/config/control_performance_analysis.param.yaml]
- input/reference_trajectory [default: /planning/trajectory]
- input/control_raw [default: /control/command/control_cmd]
- input/measured_steering [default: /vehicle/status/steering_status]
- input/current_odometry [default: /localization/kinematic_state]
- output/error_stamped [default: /control_performance/performance_vars]
- output/driving_status_stamped [default: /control_performance/driving_status]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]
Services
Plugins
Recent questions tagged autoware_control_performance_analysis at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Berkay Karaman
- Taiki Tanaka
- Tomoya Kimura
- Shumpei Wakabayashi
- Fumiya Watanabe
- Takamasa Horibe
- Satoshi Ota
- Takayuki Murooka
- Junya Sasaki
Authors
- Ali Boyali
- Berkay Karaman
autoware_control_performance_analysis
Purpose
autoware_control_performance_analysis
is the package to analyze the tracking performance of a control module and monitor the driving status of the vehicle.
This package is used as a tool to quantify the results of the control module. That’s why it doesn’t interfere with the core logic of autonomous driving.
Based on the various input from planning, control, and vehicle, it publishes the result of analysis as autoware_control_performance_analysis::msg::ErrorStamped
defined in this package.
All results in ErrorStamped
message are calculated in Frenet Frame of curve. Errors and velocity errors are calculated by using paper below.
Werling, Moritz & Groell, Lutz & Bretthauer, Georg. (2010). Invariant Trajectory Tracking With a Full-Size Autonomous Road Vehicle. IEEE Transactions on Robotics. 26. 758 - 765. 10.1109/TRO.2010.2052325.
If you are interested in calculations, you can see the error and error velocity calculations in section C. Asymptotical Trajectory Tracking With Orientation Control
.
Error acceleration calculations are made based on the velocity calculations above. You can see below the calculation of error acceleration.
Input / Output
Input topics
Name | Type | Description |
---|---|---|
/planning/trajectory |
autoware_planning_msgs::msg::Trajectory | Output trajectory from planning module. |
/control/command/control_cmd |
autoware_control_msgs::msg::Control | Output control command from control module. |
/vehicle/status/steering_status |
autoware_vehicle_msgs::msg::SteeringReport | Steering information from vehicle. |
/localization/kinematic_state |
nav_msgs::msg::Odometry | Use twist from odometry. |
/tf |
tf2_msgs::msg::TFMessage | Extract ego pose from tf. |
Output topics
Name | Type | Description |
---|---|---|
/control_performance/performance_vars |
autoware_control_performance_analysis::msg::ErrorStamped | The result of the performance analysis. |
/control_performance/driving_status |
autoware_control_performance_analysis::msg::DrivingMonitorStamped | Driving status (acceleration, jerk etc.) monitoring |
Outputs
autoware_control_performance_analysis::msg::DrivingMonitorStamped
Name | Type | Description |
---|---|---|
longitudinal_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
longitudinal_jerk |
float | $[ \mathrm{m/s^3} ]$ |
lateral_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
lateral_jerk |
float | $[ \mathrm{m/s^3} ]$ |
desired_steering_angle |
float | $[ \mathrm{rad} ]$ |
controller_processing_time |
float | Timestamp between last two control command messages $[ \mathrm{ms} ]$ |
autoware_control_performance_analysis::msg::ErrorStamped
Name | Type | Description |
---|---|---|
lateral_error |
float | $[ \mathrm{m} ]$ |
lateral_error_velocity |
float | $[ \mathrm{m/s} ]$ |
lateral_error_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
longitudinal_error |
float | $[ \mathrm{m} ]$ |
longitudinal_error_velocity |
float | $[ \mathrm{m/s} ]$ |
longitudinal_error_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
heading_error |
float | $[ \mathrm{rad} ]$ |
heading_error_velocity |
float | $[ \mathrm{rad/s} ]$ |
control_effort_energy |
float | $[ \mathbf{u}^\top \mathbf{R} \mathbf{u} ]$ simplified to $[ R \cdot u^2 ]$ |
error_energy |
float | $e_{\text{lat}}^2 + e_\theta^2$ (squared lateral error + squared heading error) |
value_approximation |
float | $V = \mathbf{x}^\top \mathbf{P} \mathbf{x}$; Value function from DARE Lyapunov matrix $\mathbf{P}$ |
curvature_estimate |
float | $[ \mathrm{1/m} ]$ |
curvature_estimate_pp |
float | $[ \mathrm{1/m} ]$ |
vehicle_velocity_error |
float | $[ \mathrm{m/s} ]$ |
tracking_curvature_discontinuity_ability |
float | Measures the ability to track curvature changes $\frac{\lvert \Delta(\text{curvature}) \rvert}{1 + \lvert \Delta(e_{\text{lat}}) \rvert}$ |
Parameters
Name | Type | Description |
---|---|---|
curvature_interval_length |
double | Used for estimating current curvature |
prevent_zero_division_value |
double | Value to avoid zero division. Default is 0.001
|
odom_interval |
unsigned integer | Interval between odom messages, increase it for smoother curve. |
acceptable_max_distance_to_waypoint |
double | Maximum distance between trajectory point and vehicle [m] |
acceptable_max_yaw_difference_rad |
double | Maximum yaw difference between trajectory point and vehicle [rad] |
low_pass_filter_gain |
double | Low pass filter gain |
Usage
- After launched simulation and control module, launch the
control_performance_analysis.launch.xml
. - You should be able to see the driving monitor and error variables in topics.
- If you want to visualize the results, you can use
Plotjuggler
and useconfig/controller_monitor.xml
as layout. - After import the layout, please specify the topics that are listed below.
- /localization/kinematic_state
- /vehicle/status/steering_status
- /control_performance/driving_status
- /control_performance/performance_vars
- In
Plotjuggler
you can export the statistic (max, min, average) values as csv file. Use that statistics to compare the control modules.
File truncated at 100 lines see the full file
Changelog for package autoware_control_performance_analysis
0.47.0 (2025-08-11)
-
feat: change planning output topic name to /planning/trajectory (#11135)
- change planning output topic name to /planning/trajectory
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
Contributors: Yukihiro Saito
0.46.0 (2025-06-20)
0.45.0 (2025-05-22)
0.44.2 (2025-06-10)
0.44.1 (2025-05-01)
0.44.0 (2025-04-18)
0.43.0 (2025-03-21)
- Merge remote-tracking branch 'origin/main' into chore/bump-version-0.43
- chore: rename from [autoware.universe]{.title-ref} to [autoware_universe]{.title-ref} (#10306)
- Contributors: Hayato Mizushima, Yutaka Kondo
0.42.0 (2025-03-03)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- feat(autoware_utils): replace autoware_universe_utils with autoware_utils (#10191)
- fix: add missing includes to autoware_universe_utils (#10091)
- Contributors: Fumiya Watanabe, Ryohsuke Mitsudome, 心刚
0.41.2 (2025-02-19)
- chore: bump version to 0.41.1 (#10088)
- Contributors: Ryohsuke Mitsudome
0.41.1 (2025-02-10)
0.41.0 (2025-01-29)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat: apply [autoware_]{.title-ref} prefix for [control_performance_analysis]{.title-ref} (#9982)
* feat(control_performance_analysis): apply [autoware_]{.title-ref} prefix (see below): Note:
* In this commit, I did not organize a folder structure. The folder structure will be organized in the next some commits.
- The changes will follow the Autoware's guideline as below:
- https://autowarefoundation.github.io/autoware-documentation/main/contributing/coding-guidelines/ros-nodes/directory-structure/#package-folder
- rename(control_performance_analysis): move headers under `include/autoware`:
- Fixes due to this changes for .hpp/.cpp files will be applied in the next commit
- fix(control_performance_analysis): fix include paths
- To follow the previous commit
- rename: [control_performance_analysis]{.title-ref} => [autoware_control_performance_analysis]{.title-ref}
- style(pre-commit): autofix
- bug(autoware_control_performance_analysis): fix inconsistent namespacing
- style(pre-commit): autofix
- update(autoware_control_performance_analysis): [README.md]{.title-ref}
- bug(autoware_control_performance_analysis): fix critical bugs that contaminate topic name
- style(pre-commit): autofix
- fix: update package name for error_rqt_multiplot.xml
- fix: update package name for control_performance_plot.py
- docs(autoware_control_performance_analysis): update package name in README and CHANGELOG.rst
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Ryohsuke Mitsudome <<ryohsuke.mitsudome@tier4.jp>> Co-authored-by: SakodaShintaro <<shintaro.sakoda@tier4.jp>>
-
Contributors: Fumiya Watanabe, Junya Sasaki
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Name |
---|
libboost-dev |
Dependant Packages
Launch files
- launch/control_performance_analysis.launch.xml
-
- control_performance_analysis_param_path [default: $(find-pkg-share autoware_control_performance_analysis)/config/control_performance_analysis.param.yaml]
- input/reference_trajectory [default: /planning/trajectory]
- input/control_raw [default: /control/command/control_cmd]
- input/measured_steering [default: /vehicle/status/steering_status]
- input/current_odometry [default: /localization/kinematic_state]
- output/error_stamped [default: /control_performance/performance_vars]
- output/driving_status_stamped [default: /control_performance/driving_status]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]
Services
Plugins
Recent questions tagged autoware_control_performance_analysis at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Berkay Karaman
- Taiki Tanaka
- Tomoya Kimura
- Shumpei Wakabayashi
- Fumiya Watanabe
- Takamasa Horibe
- Satoshi Ota
- Takayuki Murooka
- Junya Sasaki
Authors
- Ali Boyali
- Berkay Karaman
autoware_control_performance_analysis
Purpose
autoware_control_performance_analysis
is the package to analyze the tracking performance of a control module and monitor the driving status of the vehicle.
This package is used as a tool to quantify the results of the control module. That’s why it doesn’t interfere with the core logic of autonomous driving.
Based on the various input from planning, control, and vehicle, it publishes the result of analysis as autoware_control_performance_analysis::msg::ErrorStamped
defined in this package.
All results in ErrorStamped
message are calculated in Frenet Frame of curve. Errors and velocity errors are calculated by using paper below.
Werling, Moritz & Groell, Lutz & Bretthauer, Georg. (2010). Invariant Trajectory Tracking With a Full-Size Autonomous Road Vehicle. IEEE Transactions on Robotics. 26. 758 - 765. 10.1109/TRO.2010.2052325.
If you are interested in calculations, you can see the error and error velocity calculations in section C. Asymptotical Trajectory Tracking With Orientation Control
.
Error acceleration calculations are made based on the velocity calculations above. You can see below the calculation of error acceleration.
Input / Output
Input topics
Name | Type | Description |
---|---|---|
/planning/trajectory |
autoware_planning_msgs::msg::Trajectory | Output trajectory from planning module. |
/control/command/control_cmd |
autoware_control_msgs::msg::Control | Output control command from control module. |
/vehicle/status/steering_status |
autoware_vehicle_msgs::msg::SteeringReport | Steering information from vehicle. |
/localization/kinematic_state |
nav_msgs::msg::Odometry | Use twist from odometry. |
/tf |
tf2_msgs::msg::TFMessage | Extract ego pose from tf. |
Output topics
Name | Type | Description |
---|---|---|
/control_performance/performance_vars |
autoware_control_performance_analysis::msg::ErrorStamped | The result of the performance analysis. |
/control_performance/driving_status |
autoware_control_performance_analysis::msg::DrivingMonitorStamped | Driving status (acceleration, jerk etc.) monitoring |
Outputs
autoware_control_performance_analysis::msg::DrivingMonitorStamped
Name | Type | Description |
---|---|---|
longitudinal_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
longitudinal_jerk |
float | $[ \mathrm{m/s^3} ]$ |
lateral_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
lateral_jerk |
float | $[ \mathrm{m/s^3} ]$ |
desired_steering_angle |
float | $[ \mathrm{rad} ]$ |
controller_processing_time |
float | Timestamp between last two control command messages $[ \mathrm{ms} ]$ |
autoware_control_performance_analysis::msg::ErrorStamped
Name | Type | Description |
---|---|---|
lateral_error |
float | $[ \mathrm{m} ]$ |
lateral_error_velocity |
float | $[ \mathrm{m/s} ]$ |
lateral_error_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
longitudinal_error |
float | $[ \mathrm{m} ]$ |
longitudinal_error_velocity |
float | $[ \mathrm{m/s} ]$ |
longitudinal_error_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
heading_error |
float | $[ \mathrm{rad} ]$ |
heading_error_velocity |
float | $[ \mathrm{rad/s} ]$ |
control_effort_energy |
float | $[ \mathbf{u}^\top \mathbf{R} \mathbf{u} ]$ simplified to $[ R \cdot u^2 ]$ |
error_energy |
float | $e_{\text{lat}}^2 + e_\theta^2$ (squared lateral error + squared heading error) |
value_approximation |
float | $V = \mathbf{x}^\top \mathbf{P} \mathbf{x}$; Value function from DARE Lyapunov matrix $\mathbf{P}$ |
curvature_estimate |
float | $[ \mathrm{1/m} ]$ |
curvature_estimate_pp |
float | $[ \mathrm{1/m} ]$ |
vehicle_velocity_error |
float | $[ \mathrm{m/s} ]$ |
tracking_curvature_discontinuity_ability |
float | Measures the ability to track curvature changes $\frac{\lvert \Delta(\text{curvature}) \rvert}{1 + \lvert \Delta(e_{\text{lat}}) \rvert}$ |
Parameters
Name | Type | Description |
---|---|---|
curvature_interval_length |
double | Used for estimating current curvature |
prevent_zero_division_value |
double | Value to avoid zero division. Default is 0.001
|
odom_interval |
unsigned integer | Interval between odom messages, increase it for smoother curve. |
acceptable_max_distance_to_waypoint |
double | Maximum distance between trajectory point and vehicle [m] |
acceptable_max_yaw_difference_rad |
double | Maximum yaw difference between trajectory point and vehicle [rad] |
low_pass_filter_gain |
double | Low pass filter gain |
Usage
- After launched simulation and control module, launch the
control_performance_analysis.launch.xml
. - You should be able to see the driving monitor and error variables in topics.
- If you want to visualize the results, you can use
Plotjuggler
and useconfig/controller_monitor.xml
as layout. - After import the layout, please specify the topics that are listed below.
- /localization/kinematic_state
- /vehicle/status/steering_status
- /control_performance/driving_status
- /control_performance/performance_vars
- In
Plotjuggler
you can export the statistic (max, min, average) values as csv file. Use that statistics to compare the control modules.
File truncated at 100 lines see the full file
Changelog for package autoware_control_performance_analysis
0.47.0 (2025-08-11)
-
feat: change planning output topic name to /planning/trajectory (#11135)
- change planning output topic name to /planning/trajectory
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
Contributors: Yukihiro Saito
0.46.0 (2025-06-20)
0.45.0 (2025-05-22)
0.44.2 (2025-06-10)
0.44.1 (2025-05-01)
0.44.0 (2025-04-18)
0.43.0 (2025-03-21)
- Merge remote-tracking branch 'origin/main' into chore/bump-version-0.43
- chore: rename from [autoware.universe]{.title-ref} to [autoware_universe]{.title-ref} (#10306)
- Contributors: Hayato Mizushima, Yutaka Kondo
0.42.0 (2025-03-03)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- feat(autoware_utils): replace autoware_universe_utils with autoware_utils (#10191)
- fix: add missing includes to autoware_universe_utils (#10091)
- Contributors: Fumiya Watanabe, Ryohsuke Mitsudome, 心刚
0.41.2 (2025-02-19)
- chore: bump version to 0.41.1 (#10088)
- Contributors: Ryohsuke Mitsudome
0.41.1 (2025-02-10)
0.41.0 (2025-01-29)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat: apply [autoware_]{.title-ref} prefix for [control_performance_analysis]{.title-ref} (#9982)
* feat(control_performance_analysis): apply [autoware_]{.title-ref} prefix (see below): Note:
* In this commit, I did not organize a folder structure. The folder structure will be organized in the next some commits.
- The changes will follow the Autoware's guideline as below:
- https://autowarefoundation.github.io/autoware-documentation/main/contributing/coding-guidelines/ros-nodes/directory-structure/#package-folder
- rename(control_performance_analysis): move headers under `include/autoware`:
- Fixes due to this changes for .hpp/.cpp files will be applied in the next commit
- fix(control_performance_analysis): fix include paths
- To follow the previous commit
- rename: [control_performance_analysis]{.title-ref} => [autoware_control_performance_analysis]{.title-ref}
- style(pre-commit): autofix
- bug(autoware_control_performance_analysis): fix inconsistent namespacing
- style(pre-commit): autofix
- update(autoware_control_performance_analysis): [README.md]{.title-ref}
- bug(autoware_control_performance_analysis): fix critical bugs that contaminate topic name
- style(pre-commit): autofix
- fix: update package name for error_rqt_multiplot.xml
- fix: update package name for control_performance_plot.py
- docs(autoware_control_performance_analysis): update package name in README and CHANGELOG.rst
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Ryohsuke Mitsudome <<ryohsuke.mitsudome@tier4.jp>> Co-authored-by: SakodaShintaro <<shintaro.sakoda@tier4.jp>>
-
Contributors: Fumiya Watanabe, Junya Sasaki
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Name |
---|
libboost-dev |
Dependant Packages
Launch files
- launch/control_performance_analysis.launch.xml
-
- control_performance_analysis_param_path [default: $(find-pkg-share autoware_control_performance_analysis)/config/control_performance_analysis.param.yaml]
- input/reference_trajectory [default: /planning/trajectory]
- input/control_raw [default: /control/command/control_cmd]
- input/measured_steering [default: /vehicle/status/steering_status]
- input/current_odometry [default: /localization/kinematic_state]
- output/error_stamped [default: /control_performance/performance_vars]
- output/driving_status_stamped [default: /control_performance/driving_status]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]
Services
Plugins
Recent questions tagged autoware_control_performance_analysis at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Berkay Karaman
- Taiki Tanaka
- Tomoya Kimura
- Shumpei Wakabayashi
- Fumiya Watanabe
- Takamasa Horibe
- Satoshi Ota
- Takayuki Murooka
- Junya Sasaki
Authors
- Ali Boyali
- Berkay Karaman
autoware_control_performance_analysis
Purpose
autoware_control_performance_analysis
is the package to analyze the tracking performance of a control module and monitor the driving status of the vehicle.
This package is used as a tool to quantify the results of the control module. That’s why it doesn’t interfere with the core logic of autonomous driving.
Based on the various input from planning, control, and vehicle, it publishes the result of analysis as autoware_control_performance_analysis::msg::ErrorStamped
defined in this package.
All results in ErrorStamped
message are calculated in Frenet Frame of curve. Errors and velocity errors are calculated by using paper below.
Werling, Moritz & Groell, Lutz & Bretthauer, Georg. (2010). Invariant Trajectory Tracking With a Full-Size Autonomous Road Vehicle. IEEE Transactions on Robotics. 26. 758 - 765. 10.1109/TRO.2010.2052325.
If you are interested in calculations, you can see the error and error velocity calculations in section C. Asymptotical Trajectory Tracking With Orientation Control
.
Error acceleration calculations are made based on the velocity calculations above. You can see below the calculation of error acceleration.
Input / Output
Input topics
Name | Type | Description |
---|---|---|
/planning/trajectory |
autoware_planning_msgs::msg::Trajectory | Output trajectory from planning module. |
/control/command/control_cmd |
autoware_control_msgs::msg::Control | Output control command from control module. |
/vehicle/status/steering_status |
autoware_vehicle_msgs::msg::SteeringReport | Steering information from vehicle. |
/localization/kinematic_state |
nav_msgs::msg::Odometry | Use twist from odometry. |
/tf |
tf2_msgs::msg::TFMessage | Extract ego pose from tf. |
Output topics
Name | Type | Description |
---|---|---|
/control_performance/performance_vars |
autoware_control_performance_analysis::msg::ErrorStamped | The result of the performance analysis. |
/control_performance/driving_status |
autoware_control_performance_analysis::msg::DrivingMonitorStamped | Driving status (acceleration, jerk etc.) monitoring |
Outputs
autoware_control_performance_analysis::msg::DrivingMonitorStamped
Name | Type | Description |
---|---|---|
longitudinal_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
longitudinal_jerk |
float | $[ \mathrm{m/s^3} ]$ |
lateral_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
lateral_jerk |
float | $[ \mathrm{m/s^3} ]$ |
desired_steering_angle |
float | $[ \mathrm{rad} ]$ |
controller_processing_time |
float | Timestamp between last two control command messages $[ \mathrm{ms} ]$ |
autoware_control_performance_analysis::msg::ErrorStamped
Name | Type | Description |
---|---|---|
lateral_error |
float | $[ \mathrm{m} ]$ |
lateral_error_velocity |
float | $[ \mathrm{m/s} ]$ |
lateral_error_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
longitudinal_error |
float | $[ \mathrm{m} ]$ |
longitudinal_error_velocity |
float | $[ \mathrm{m/s} ]$ |
longitudinal_error_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
heading_error |
float | $[ \mathrm{rad} ]$ |
heading_error_velocity |
float | $[ \mathrm{rad/s} ]$ |
control_effort_energy |
float | $[ \mathbf{u}^\top \mathbf{R} \mathbf{u} ]$ simplified to $[ R \cdot u^2 ]$ |
error_energy |
float | $e_{\text{lat}}^2 + e_\theta^2$ (squared lateral error + squared heading error) |
value_approximation |
float | $V = \mathbf{x}^\top \mathbf{P} \mathbf{x}$; Value function from DARE Lyapunov matrix $\mathbf{P}$ |
curvature_estimate |
float | $[ \mathrm{1/m} ]$ |
curvature_estimate_pp |
float | $[ \mathrm{1/m} ]$ |
vehicle_velocity_error |
float | $[ \mathrm{m/s} ]$ |
tracking_curvature_discontinuity_ability |
float | Measures the ability to track curvature changes $\frac{\lvert \Delta(\text{curvature}) \rvert}{1 + \lvert \Delta(e_{\text{lat}}) \rvert}$ |
Parameters
Name | Type | Description |
---|---|---|
curvature_interval_length |
double | Used for estimating current curvature |
prevent_zero_division_value |
double | Value to avoid zero division. Default is 0.001
|
odom_interval |
unsigned integer | Interval between odom messages, increase it for smoother curve. |
acceptable_max_distance_to_waypoint |
double | Maximum distance between trajectory point and vehicle [m] |
acceptable_max_yaw_difference_rad |
double | Maximum yaw difference between trajectory point and vehicle [rad] |
low_pass_filter_gain |
double | Low pass filter gain |
Usage
- After launched simulation and control module, launch the
control_performance_analysis.launch.xml
. - You should be able to see the driving monitor and error variables in topics.
- If you want to visualize the results, you can use
Plotjuggler
and useconfig/controller_monitor.xml
as layout. - After import the layout, please specify the topics that are listed below.
- /localization/kinematic_state
- /vehicle/status/steering_status
- /control_performance/driving_status
- /control_performance/performance_vars
- In
Plotjuggler
you can export the statistic (max, min, average) values as csv file. Use that statistics to compare the control modules.
File truncated at 100 lines see the full file
Changelog for package autoware_control_performance_analysis
0.47.0 (2025-08-11)
-
feat: change planning output topic name to /planning/trajectory (#11135)
- change planning output topic name to /planning/trajectory
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
Contributors: Yukihiro Saito
0.46.0 (2025-06-20)
0.45.0 (2025-05-22)
0.44.2 (2025-06-10)
0.44.1 (2025-05-01)
0.44.0 (2025-04-18)
0.43.0 (2025-03-21)
- Merge remote-tracking branch 'origin/main' into chore/bump-version-0.43
- chore: rename from [autoware.universe]{.title-ref} to [autoware_universe]{.title-ref} (#10306)
- Contributors: Hayato Mizushima, Yutaka Kondo
0.42.0 (2025-03-03)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- feat(autoware_utils): replace autoware_universe_utils with autoware_utils (#10191)
- fix: add missing includes to autoware_universe_utils (#10091)
- Contributors: Fumiya Watanabe, Ryohsuke Mitsudome, 心刚
0.41.2 (2025-02-19)
- chore: bump version to 0.41.1 (#10088)
- Contributors: Ryohsuke Mitsudome
0.41.1 (2025-02-10)
0.41.0 (2025-01-29)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat: apply [autoware_]{.title-ref} prefix for [control_performance_analysis]{.title-ref} (#9982)
* feat(control_performance_analysis): apply [autoware_]{.title-ref} prefix (see below): Note:
* In this commit, I did not organize a folder structure. The folder structure will be organized in the next some commits.
- The changes will follow the Autoware's guideline as below:
- https://autowarefoundation.github.io/autoware-documentation/main/contributing/coding-guidelines/ros-nodes/directory-structure/#package-folder
- rename(control_performance_analysis): move headers under `include/autoware`:
- Fixes due to this changes for .hpp/.cpp files will be applied in the next commit
- fix(control_performance_analysis): fix include paths
- To follow the previous commit
- rename: [control_performance_analysis]{.title-ref} => [autoware_control_performance_analysis]{.title-ref}
- style(pre-commit): autofix
- bug(autoware_control_performance_analysis): fix inconsistent namespacing
- style(pre-commit): autofix
- update(autoware_control_performance_analysis): [README.md]{.title-ref}
- bug(autoware_control_performance_analysis): fix critical bugs that contaminate topic name
- style(pre-commit): autofix
- fix: update package name for error_rqt_multiplot.xml
- fix: update package name for control_performance_plot.py
- docs(autoware_control_performance_analysis): update package name in README and CHANGELOG.rst
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Ryohsuke Mitsudome <<ryohsuke.mitsudome@tier4.jp>> Co-authored-by: SakodaShintaro <<shintaro.sakoda@tier4.jp>>
-
Contributors: Fumiya Watanabe, Junya Sasaki
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Name |
---|
libboost-dev |
Dependant Packages
Launch files
- launch/control_performance_analysis.launch.xml
-
- control_performance_analysis_param_path [default: $(find-pkg-share autoware_control_performance_analysis)/config/control_performance_analysis.param.yaml]
- input/reference_trajectory [default: /planning/trajectory]
- input/control_raw [default: /control/command/control_cmd]
- input/measured_steering [default: /vehicle/status/steering_status]
- input/current_odometry [default: /localization/kinematic_state]
- output/error_stamped [default: /control_performance/performance_vars]
- output/driving_status_stamped [default: /control_performance/driving_status]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]
Services
Plugins
Recent questions tagged autoware_control_performance_analysis at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Berkay Karaman
- Taiki Tanaka
- Tomoya Kimura
- Shumpei Wakabayashi
- Fumiya Watanabe
- Takamasa Horibe
- Satoshi Ota
- Takayuki Murooka
- Junya Sasaki
Authors
- Ali Boyali
- Berkay Karaman
autoware_control_performance_analysis
Purpose
autoware_control_performance_analysis
is the package to analyze the tracking performance of a control module and monitor the driving status of the vehicle.
This package is used as a tool to quantify the results of the control module. That’s why it doesn’t interfere with the core logic of autonomous driving.
Based on the various input from planning, control, and vehicle, it publishes the result of analysis as autoware_control_performance_analysis::msg::ErrorStamped
defined in this package.
All results in ErrorStamped
message are calculated in Frenet Frame of curve. Errors and velocity errors are calculated by using paper below.
Werling, Moritz & Groell, Lutz & Bretthauer, Georg. (2010). Invariant Trajectory Tracking With a Full-Size Autonomous Road Vehicle. IEEE Transactions on Robotics. 26. 758 - 765. 10.1109/TRO.2010.2052325.
If you are interested in calculations, you can see the error and error velocity calculations in section C. Asymptotical Trajectory Tracking With Orientation Control
.
Error acceleration calculations are made based on the velocity calculations above. You can see below the calculation of error acceleration.
Input / Output
Input topics
Name | Type | Description |
---|---|---|
/planning/trajectory |
autoware_planning_msgs::msg::Trajectory | Output trajectory from planning module. |
/control/command/control_cmd |
autoware_control_msgs::msg::Control | Output control command from control module. |
/vehicle/status/steering_status |
autoware_vehicle_msgs::msg::SteeringReport | Steering information from vehicle. |
/localization/kinematic_state |
nav_msgs::msg::Odometry | Use twist from odometry. |
/tf |
tf2_msgs::msg::TFMessage | Extract ego pose from tf. |
Output topics
Name | Type | Description |
---|---|---|
/control_performance/performance_vars |
autoware_control_performance_analysis::msg::ErrorStamped | The result of the performance analysis. |
/control_performance/driving_status |
autoware_control_performance_analysis::msg::DrivingMonitorStamped | Driving status (acceleration, jerk etc.) monitoring |
Outputs
autoware_control_performance_analysis::msg::DrivingMonitorStamped
Name | Type | Description |
---|---|---|
longitudinal_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
longitudinal_jerk |
float | $[ \mathrm{m/s^3} ]$ |
lateral_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
lateral_jerk |
float | $[ \mathrm{m/s^3} ]$ |
desired_steering_angle |
float | $[ \mathrm{rad} ]$ |
controller_processing_time |
float | Timestamp between last two control command messages $[ \mathrm{ms} ]$ |
autoware_control_performance_analysis::msg::ErrorStamped
Name | Type | Description |
---|---|---|
lateral_error |
float | $[ \mathrm{m} ]$ |
lateral_error_velocity |
float | $[ \mathrm{m/s} ]$ |
lateral_error_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
longitudinal_error |
float | $[ \mathrm{m} ]$ |
longitudinal_error_velocity |
float | $[ \mathrm{m/s} ]$ |
longitudinal_error_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
heading_error |
float | $[ \mathrm{rad} ]$ |
heading_error_velocity |
float | $[ \mathrm{rad/s} ]$ |
control_effort_energy |
float | $[ \mathbf{u}^\top \mathbf{R} \mathbf{u} ]$ simplified to $[ R \cdot u^2 ]$ |
error_energy |
float | $e_{\text{lat}}^2 + e_\theta^2$ (squared lateral error + squared heading error) |
value_approximation |
float | $V = \mathbf{x}^\top \mathbf{P} \mathbf{x}$; Value function from DARE Lyapunov matrix $\mathbf{P}$ |
curvature_estimate |
float | $[ \mathrm{1/m} ]$ |
curvature_estimate_pp |
float | $[ \mathrm{1/m} ]$ |
vehicle_velocity_error |
float | $[ \mathrm{m/s} ]$ |
tracking_curvature_discontinuity_ability |
float | Measures the ability to track curvature changes $\frac{\lvert \Delta(\text{curvature}) \rvert}{1 + \lvert \Delta(e_{\text{lat}}) \rvert}$ |
Parameters
Name | Type | Description |
---|---|---|
curvature_interval_length |
double | Used for estimating current curvature |
prevent_zero_division_value |
double | Value to avoid zero division. Default is 0.001
|
odom_interval |
unsigned integer | Interval between odom messages, increase it for smoother curve. |
acceptable_max_distance_to_waypoint |
double | Maximum distance between trajectory point and vehicle [m] |
acceptable_max_yaw_difference_rad |
double | Maximum yaw difference between trajectory point and vehicle [rad] |
low_pass_filter_gain |
double | Low pass filter gain |
Usage
- After launched simulation and control module, launch the
control_performance_analysis.launch.xml
. - You should be able to see the driving monitor and error variables in topics.
- If you want to visualize the results, you can use
Plotjuggler
and useconfig/controller_monitor.xml
as layout. - After import the layout, please specify the topics that are listed below.
- /localization/kinematic_state
- /vehicle/status/steering_status
- /control_performance/driving_status
- /control_performance/performance_vars
- In
Plotjuggler
you can export the statistic (max, min, average) values as csv file. Use that statistics to compare the control modules.
File truncated at 100 lines see the full file
Changelog for package autoware_control_performance_analysis
0.47.0 (2025-08-11)
-
feat: change planning output topic name to /planning/trajectory (#11135)
- change planning output topic name to /planning/trajectory
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
Contributors: Yukihiro Saito
0.46.0 (2025-06-20)
0.45.0 (2025-05-22)
0.44.2 (2025-06-10)
0.44.1 (2025-05-01)
0.44.0 (2025-04-18)
0.43.0 (2025-03-21)
- Merge remote-tracking branch 'origin/main' into chore/bump-version-0.43
- chore: rename from [autoware.universe]{.title-ref} to [autoware_universe]{.title-ref} (#10306)
- Contributors: Hayato Mizushima, Yutaka Kondo
0.42.0 (2025-03-03)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- feat(autoware_utils): replace autoware_universe_utils with autoware_utils (#10191)
- fix: add missing includes to autoware_universe_utils (#10091)
- Contributors: Fumiya Watanabe, Ryohsuke Mitsudome, 心刚
0.41.2 (2025-02-19)
- chore: bump version to 0.41.1 (#10088)
- Contributors: Ryohsuke Mitsudome
0.41.1 (2025-02-10)
0.41.0 (2025-01-29)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat: apply [autoware_]{.title-ref} prefix for [control_performance_analysis]{.title-ref} (#9982)
* feat(control_performance_analysis): apply [autoware_]{.title-ref} prefix (see below): Note:
* In this commit, I did not organize a folder structure. The folder structure will be organized in the next some commits.
- The changes will follow the Autoware's guideline as below:
- https://autowarefoundation.github.io/autoware-documentation/main/contributing/coding-guidelines/ros-nodes/directory-structure/#package-folder
- rename(control_performance_analysis): move headers under `include/autoware`:
- Fixes due to this changes for .hpp/.cpp files will be applied in the next commit
- fix(control_performance_analysis): fix include paths
- To follow the previous commit
- rename: [control_performance_analysis]{.title-ref} => [autoware_control_performance_analysis]{.title-ref}
- style(pre-commit): autofix
- bug(autoware_control_performance_analysis): fix inconsistent namespacing
- style(pre-commit): autofix
- update(autoware_control_performance_analysis): [README.md]{.title-ref}
- bug(autoware_control_performance_analysis): fix critical bugs that contaminate topic name
- style(pre-commit): autofix
- fix: update package name for error_rqt_multiplot.xml
- fix: update package name for control_performance_plot.py
- docs(autoware_control_performance_analysis): update package name in README and CHANGELOG.rst
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Ryohsuke Mitsudome <<ryohsuke.mitsudome@tier4.jp>> Co-authored-by: SakodaShintaro <<shintaro.sakoda@tier4.jp>>
-
Contributors: Fumiya Watanabe, Junya Sasaki
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Name |
---|
libboost-dev |
Dependant Packages
Launch files
- launch/control_performance_analysis.launch.xml
-
- control_performance_analysis_param_path [default: $(find-pkg-share autoware_control_performance_analysis)/config/control_performance_analysis.param.yaml]
- input/reference_trajectory [default: /planning/trajectory]
- input/control_raw [default: /control/command/control_cmd]
- input/measured_steering [default: /vehicle/status/steering_status]
- input/current_odometry [default: /localization/kinematic_state]
- output/error_stamped [default: /control_performance/performance_vars]
- output/driving_status_stamped [default: /control_performance/driving_status]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]
Services
Plugins
Recent questions tagged autoware_control_performance_analysis at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Berkay Karaman
- Taiki Tanaka
- Tomoya Kimura
- Shumpei Wakabayashi
- Fumiya Watanabe
- Takamasa Horibe
- Satoshi Ota
- Takayuki Murooka
- Junya Sasaki
Authors
- Ali Boyali
- Berkay Karaman
autoware_control_performance_analysis
Purpose
autoware_control_performance_analysis
is the package to analyze the tracking performance of a control module and monitor the driving status of the vehicle.
This package is used as a tool to quantify the results of the control module. That’s why it doesn’t interfere with the core logic of autonomous driving.
Based on the various input from planning, control, and vehicle, it publishes the result of analysis as autoware_control_performance_analysis::msg::ErrorStamped
defined in this package.
All results in ErrorStamped
message are calculated in Frenet Frame of curve. Errors and velocity errors are calculated by using paper below.
Werling, Moritz & Groell, Lutz & Bretthauer, Georg. (2010). Invariant Trajectory Tracking With a Full-Size Autonomous Road Vehicle. IEEE Transactions on Robotics. 26. 758 - 765. 10.1109/TRO.2010.2052325.
If you are interested in calculations, you can see the error and error velocity calculations in section C. Asymptotical Trajectory Tracking With Orientation Control
.
Error acceleration calculations are made based on the velocity calculations above. You can see below the calculation of error acceleration.
Input / Output
Input topics
Name | Type | Description |
---|---|---|
/planning/trajectory |
autoware_planning_msgs::msg::Trajectory | Output trajectory from planning module. |
/control/command/control_cmd |
autoware_control_msgs::msg::Control | Output control command from control module. |
/vehicle/status/steering_status |
autoware_vehicle_msgs::msg::SteeringReport | Steering information from vehicle. |
/localization/kinematic_state |
nav_msgs::msg::Odometry | Use twist from odometry. |
/tf |
tf2_msgs::msg::TFMessage | Extract ego pose from tf. |
Output topics
Name | Type | Description |
---|---|---|
/control_performance/performance_vars |
autoware_control_performance_analysis::msg::ErrorStamped | The result of the performance analysis. |
/control_performance/driving_status |
autoware_control_performance_analysis::msg::DrivingMonitorStamped | Driving status (acceleration, jerk etc.) monitoring |
Outputs
autoware_control_performance_analysis::msg::DrivingMonitorStamped
Name | Type | Description |
---|---|---|
longitudinal_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
longitudinal_jerk |
float | $[ \mathrm{m/s^3} ]$ |
lateral_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
lateral_jerk |
float | $[ \mathrm{m/s^3} ]$ |
desired_steering_angle |
float | $[ \mathrm{rad} ]$ |
controller_processing_time |
float | Timestamp between last two control command messages $[ \mathrm{ms} ]$ |
autoware_control_performance_analysis::msg::ErrorStamped
Name | Type | Description |
---|---|---|
lateral_error |
float | $[ \mathrm{m} ]$ |
lateral_error_velocity |
float | $[ \mathrm{m/s} ]$ |
lateral_error_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
longitudinal_error |
float | $[ \mathrm{m} ]$ |
longitudinal_error_velocity |
float | $[ \mathrm{m/s} ]$ |
longitudinal_error_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
heading_error |
float | $[ \mathrm{rad} ]$ |
heading_error_velocity |
float | $[ \mathrm{rad/s} ]$ |
control_effort_energy |
float | $[ \mathbf{u}^\top \mathbf{R} \mathbf{u} ]$ simplified to $[ R \cdot u^2 ]$ |
error_energy |
float | $e_{\text{lat}}^2 + e_\theta^2$ (squared lateral error + squared heading error) |
value_approximation |
float | $V = \mathbf{x}^\top \mathbf{P} \mathbf{x}$; Value function from DARE Lyapunov matrix $\mathbf{P}$ |
curvature_estimate |
float | $[ \mathrm{1/m} ]$ |
curvature_estimate_pp |
float | $[ \mathrm{1/m} ]$ |
vehicle_velocity_error |
float | $[ \mathrm{m/s} ]$ |
tracking_curvature_discontinuity_ability |
float | Measures the ability to track curvature changes $\frac{\lvert \Delta(\text{curvature}) \rvert}{1 + \lvert \Delta(e_{\text{lat}}) \rvert}$ |
Parameters
Name | Type | Description |
---|---|---|
curvature_interval_length |
double | Used for estimating current curvature |
prevent_zero_division_value |
double | Value to avoid zero division. Default is 0.001
|
odom_interval |
unsigned integer | Interval between odom messages, increase it for smoother curve. |
acceptable_max_distance_to_waypoint |
double | Maximum distance between trajectory point and vehicle [m] |
acceptable_max_yaw_difference_rad |
double | Maximum yaw difference between trajectory point and vehicle [rad] |
low_pass_filter_gain |
double | Low pass filter gain |
Usage
- After launched simulation and control module, launch the
control_performance_analysis.launch.xml
. - You should be able to see the driving monitor and error variables in topics.
- If you want to visualize the results, you can use
Plotjuggler
and useconfig/controller_monitor.xml
as layout. - After import the layout, please specify the topics that are listed below.
- /localization/kinematic_state
- /vehicle/status/steering_status
- /control_performance/driving_status
- /control_performance/performance_vars
- In
Plotjuggler
you can export the statistic (max, min, average) values as csv file. Use that statistics to compare the control modules.
File truncated at 100 lines see the full file
Changelog for package autoware_control_performance_analysis
0.47.0 (2025-08-11)
-
feat: change planning output topic name to /planning/trajectory (#11135)
- change planning output topic name to /planning/trajectory
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
Contributors: Yukihiro Saito
0.46.0 (2025-06-20)
0.45.0 (2025-05-22)
0.44.2 (2025-06-10)
0.44.1 (2025-05-01)
0.44.0 (2025-04-18)
0.43.0 (2025-03-21)
- Merge remote-tracking branch 'origin/main' into chore/bump-version-0.43
- chore: rename from [autoware.universe]{.title-ref} to [autoware_universe]{.title-ref} (#10306)
- Contributors: Hayato Mizushima, Yutaka Kondo
0.42.0 (2025-03-03)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- feat(autoware_utils): replace autoware_universe_utils with autoware_utils (#10191)
- fix: add missing includes to autoware_universe_utils (#10091)
- Contributors: Fumiya Watanabe, Ryohsuke Mitsudome, 心刚
0.41.2 (2025-02-19)
- chore: bump version to 0.41.1 (#10088)
- Contributors: Ryohsuke Mitsudome
0.41.1 (2025-02-10)
0.41.0 (2025-01-29)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat: apply [autoware_]{.title-ref} prefix for [control_performance_analysis]{.title-ref} (#9982)
* feat(control_performance_analysis): apply [autoware_]{.title-ref} prefix (see below): Note:
* In this commit, I did not organize a folder structure. The folder structure will be organized in the next some commits.
- The changes will follow the Autoware's guideline as below:
- https://autowarefoundation.github.io/autoware-documentation/main/contributing/coding-guidelines/ros-nodes/directory-structure/#package-folder
- rename(control_performance_analysis): move headers under `include/autoware`:
- Fixes due to this changes for .hpp/.cpp files will be applied in the next commit
- fix(control_performance_analysis): fix include paths
- To follow the previous commit
- rename: [control_performance_analysis]{.title-ref} => [autoware_control_performance_analysis]{.title-ref}
- style(pre-commit): autofix
- bug(autoware_control_performance_analysis): fix inconsistent namespacing
- style(pre-commit): autofix
- update(autoware_control_performance_analysis): [README.md]{.title-ref}
- bug(autoware_control_performance_analysis): fix critical bugs that contaminate topic name
- style(pre-commit): autofix
- fix: update package name for error_rqt_multiplot.xml
- fix: update package name for control_performance_plot.py
- docs(autoware_control_performance_analysis): update package name in README and CHANGELOG.rst
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Ryohsuke Mitsudome <<ryohsuke.mitsudome@tier4.jp>> Co-authored-by: SakodaShintaro <<shintaro.sakoda@tier4.jp>>
-
Contributors: Fumiya Watanabe, Junya Sasaki
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Name |
---|
libboost-dev |
Dependant Packages
Launch files
- launch/control_performance_analysis.launch.xml
-
- control_performance_analysis_param_path [default: $(find-pkg-share autoware_control_performance_analysis)/config/control_performance_analysis.param.yaml]
- input/reference_trajectory [default: /planning/trajectory]
- input/control_raw [default: /control/command/control_cmd]
- input/measured_steering [default: /vehicle/status/steering_status]
- input/current_odometry [default: /localization/kinematic_state]
- output/error_stamped [default: /control_performance/performance_vars]
- output/driving_status_stamped [default: /control_performance/driving_status]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]
Services
Plugins
Recent questions tagged autoware_control_performance_analysis at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Berkay Karaman
- Taiki Tanaka
- Tomoya Kimura
- Shumpei Wakabayashi
- Fumiya Watanabe
- Takamasa Horibe
- Satoshi Ota
- Takayuki Murooka
- Junya Sasaki
Authors
- Ali Boyali
- Berkay Karaman
autoware_control_performance_analysis
Purpose
autoware_control_performance_analysis
is the package to analyze the tracking performance of a control module and monitor the driving status of the vehicle.
This package is used as a tool to quantify the results of the control module. That’s why it doesn’t interfere with the core logic of autonomous driving.
Based on the various input from planning, control, and vehicle, it publishes the result of analysis as autoware_control_performance_analysis::msg::ErrorStamped
defined in this package.
All results in ErrorStamped
message are calculated in Frenet Frame of curve. Errors and velocity errors are calculated by using paper below.
Werling, Moritz & Groell, Lutz & Bretthauer, Georg. (2010). Invariant Trajectory Tracking With a Full-Size Autonomous Road Vehicle. IEEE Transactions on Robotics. 26. 758 - 765. 10.1109/TRO.2010.2052325.
If you are interested in calculations, you can see the error and error velocity calculations in section C. Asymptotical Trajectory Tracking With Orientation Control
.
Error acceleration calculations are made based on the velocity calculations above. You can see below the calculation of error acceleration.
Input / Output
Input topics
Name | Type | Description |
---|---|---|
/planning/trajectory |
autoware_planning_msgs::msg::Trajectory | Output trajectory from planning module. |
/control/command/control_cmd |
autoware_control_msgs::msg::Control | Output control command from control module. |
/vehicle/status/steering_status |
autoware_vehicle_msgs::msg::SteeringReport | Steering information from vehicle. |
/localization/kinematic_state |
nav_msgs::msg::Odometry | Use twist from odometry. |
/tf |
tf2_msgs::msg::TFMessage | Extract ego pose from tf. |
Output topics
Name | Type | Description |
---|---|---|
/control_performance/performance_vars |
autoware_control_performance_analysis::msg::ErrorStamped | The result of the performance analysis. |
/control_performance/driving_status |
autoware_control_performance_analysis::msg::DrivingMonitorStamped | Driving status (acceleration, jerk etc.) monitoring |
Outputs
autoware_control_performance_analysis::msg::DrivingMonitorStamped
Name | Type | Description |
---|---|---|
longitudinal_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
longitudinal_jerk |
float | $[ \mathrm{m/s^3} ]$ |
lateral_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
lateral_jerk |
float | $[ \mathrm{m/s^3} ]$ |
desired_steering_angle |
float | $[ \mathrm{rad} ]$ |
controller_processing_time |
float | Timestamp between last two control command messages $[ \mathrm{ms} ]$ |
autoware_control_performance_analysis::msg::ErrorStamped
Name | Type | Description |
---|---|---|
lateral_error |
float | $[ \mathrm{m} ]$ |
lateral_error_velocity |
float | $[ \mathrm{m/s} ]$ |
lateral_error_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
longitudinal_error |
float | $[ \mathrm{m} ]$ |
longitudinal_error_velocity |
float | $[ \mathrm{m/s} ]$ |
longitudinal_error_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
heading_error |
float | $[ \mathrm{rad} ]$ |
heading_error_velocity |
float | $[ \mathrm{rad/s} ]$ |
control_effort_energy |
float | $[ \mathbf{u}^\top \mathbf{R} \mathbf{u} ]$ simplified to $[ R \cdot u^2 ]$ |
error_energy |
float | $e_{\text{lat}}^2 + e_\theta^2$ (squared lateral error + squared heading error) |
value_approximation |
float | $V = \mathbf{x}^\top \mathbf{P} \mathbf{x}$; Value function from DARE Lyapunov matrix $\mathbf{P}$ |
curvature_estimate |
float | $[ \mathrm{1/m} ]$ |
curvature_estimate_pp |
float | $[ \mathrm{1/m} ]$ |
vehicle_velocity_error |
float | $[ \mathrm{m/s} ]$ |
tracking_curvature_discontinuity_ability |
float | Measures the ability to track curvature changes $\frac{\lvert \Delta(\text{curvature}) \rvert}{1 + \lvert \Delta(e_{\text{lat}}) \rvert}$ |
Parameters
Name | Type | Description |
---|---|---|
curvature_interval_length |
double | Used for estimating current curvature |
prevent_zero_division_value |
double | Value to avoid zero division. Default is 0.001
|
odom_interval |
unsigned integer | Interval between odom messages, increase it for smoother curve. |
acceptable_max_distance_to_waypoint |
double | Maximum distance between trajectory point and vehicle [m] |
acceptable_max_yaw_difference_rad |
double | Maximum yaw difference between trajectory point and vehicle [rad] |
low_pass_filter_gain |
double | Low pass filter gain |
Usage
- After launched simulation and control module, launch the
control_performance_analysis.launch.xml
. - You should be able to see the driving monitor and error variables in topics.
- If you want to visualize the results, you can use
Plotjuggler
and useconfig/controller_monitor.xml
as layout. - After import the layout, please specify the topics that are listed below.
- /localization/kinematic_state
- /vehicle/status/steering_status
- /control_performance/driving_status
- /control_performance/performance_vars
- In
Plotjuggler
you can export the statistic (max, min, average) values as csv file. Use that statistics to compare the control modules.
File truncated at 100 lines see the full file
Changelog for package autoware_control_performance_analysis
0.47.0 (2025-08-11)
-
feat: change planning output topic name to /planning/trajectory (#11135)
- change planning output topic name to /planning/trajectory
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
Contributors: Yukihiro Saito
0.46.0 (2025-06-20)
0.45.0 (2025-05-22)
0.44.2 (2025-06-10)
0.44.1 (2025-05-01)
0.44.0 (2025-04-18)
0.43.0 (2025-03-21)
- Merge remote-tracking branch 'origin/main' into chore/bump-version-0.43
- chore: rename from [autoware.universe]{.title-ref} to [autoware_universe]{.title-ref} (#10306)
- Contributors: Hayato Mizushima, Yutaka Kondo
0.42.0 (2025-03-03)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- feat(autoware_utils): replace autoware_universe_utils with autoware_utils (#10191)
- fix: add missing includes to autoware_universe_utils (#10091)
- Contributors: Fumiya Watanabe, Ryohsuke Mitsudome, 心刚
0.41.2 (2025-02-19)
- chore: bump version to 0.41.1 (#10088)
- Contributors: Ryohsuke Mitsudome
0.41.1 (2025-02-10)
0.41.0 (2025-01-29)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat: apply [autoware_]{.title-ref} prefix for [control_performance_analysis]{.title-ref} (#9982)
* feat(control_performance_analysis): apply [autoware_]{.title-ref} prefix (see below): Note:
* In this commit, I did not organize a folder structure. The folder structure will be organized in the next some commits.
- The changes will follow the Autoware's guideline as below:
- https://autowarefoundation.github.io/autoware-documentation/main/contributing/coding-guidelines/ros-nodes/directory-structure/#package-folder
- rename(control_performance_analysis): move headers under `include/autoware`:
- Fixes due to this changes for .hpp/.cpp files will be applied in the next commit
- fix(control_performance_analysis): fix include paths
- To follow the previous commit
- rename: [control_performance_analysis]{.title-ref} => [autoware_control_performance_analysis]{.title-ref}
- style(pre-commit): autofix
- bug(autoware_control_performance_analysis): fix inconsistent namespacing
- style(pre-commit): autofix
- update(autoware_control_performance_analysis): [README.md]{.title-ref}
- bug(autoware_control_performance_analysis): fix critical bugs that contaminate topic name
- style(pre-commit): autofix
- fix: update package name for error_rqt_multiplot.xml
- fix: update package name for control_performance_plot.py
- docs(autoware_control_performance_analysis): update package name in README and CHANGELOG.rst
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Ryohsuke Mitsudome <<ryohsuke.mitsudome@tier4.jp>> Co-authored-by: SakodaShintaro <<shintaro.sakoda@tier4.jp>>
-
Contributors: Fumiya Watanabe, Junya Sasaki
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Name |
---|
libboost-dev |
Dependant Packages
Launch files
- launch/control_performance_analysis.launch.xml
-
- control_performance_analysis_param_path [default: $(find-pkg-share autoware_control_performance_analysis)/config/control_performance_analysis.param.yaml]
- input/reference_trajectory [default: /planning/trajectory]
- input/control_raw [default: /control/command/control_cmd]
- input/measured_steering [default: /vehicle/status/steering_status]
- input/current_odometry [default: /localization/kinematic_state]
- output/error_stamped [default: /control_performance/performance_vars]
- output/driving_status_stamped [default: /control_performance/driving_status]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]
Services
Plugins
Recent questions tagged autoware_control_performance_analysis at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Berkay Karaman
- Taiki Tanaka
- Tomoya Kimura
- Shumpei Wakabayashi
- Fumiya Watanabe
- Takamasa Horibe
- Satoshi Ota
- Takayuki Murooka
- Junya Sasaki
Authors
- Ali Boyali
- Berkay Karaman
autoware_control_performance_analysis
Purpose
autoware_control_performance_analysis
is the package to analyze the tracking performance of a control module and monitor the driving status of the vehicle.
This package is used as a tool to quantify the results of the control module. That’s why it doesn’t interfere with the core logic of autonomous driving.
Based on the various input from planning, control, and vehicle, it publishes the result of analysis as autoware_control_performance_analysis::msg::ErrorStamped
defined in this package.
All results in ErrorStamped
message are calculated in Frenet Frame of curve. Errors and velocity errors are calculated by using paper below.
Werling, Moritz & Groell, Lutz & Bretthauer, Georg. (2010). Invariant Trajectory Tracking With a Full-Size Autonomous Road Vehicle. IEEE Transactions on Robotics. 26. 758 - 765. 10.1109/TRO.2010.2052325.
If you are interested in calculations, you can see the error and error velocity calculations in section C. Asymptotical Trajectory Tracking With Orientation Control
.
Error acceleration calculations are made based on the velocity calculations above. You can see below the calculation of error acceleration.
Input / Output
Input topics
Name | Type | Description |
---|---|---|
/planning/trajectory |
autoware_planning_msgs::msg::Trajectory | Output trajectory from planning module. |
/control/command/control_cmd |
autoware_control_msgs::msg::Control | Output control command from control module. |
/vehicle/status/steering_status |
autoware_vehicle_msgs::msg::SteeringReport | Steering information from vehicle. |
/localization/kinematic_state |
nav_msgs::msg::Odometry | Use twist from odometry. |
/tf |
tf2_msgs::msg::TFMessage | Extract ego pose from tf. |
Output topics
Name | Type | Description |
---|---|---|
/control_performance/performance_vars |
autoware_control_performance_analysis::msg::ErrorStamped | The result of the performance analysis. |
/control_performance/driving_status |
autoware_control_performance_analysis::msg::DrivingMonitorStamped | Driving status (acceleration, jerk etc.) monitoring |
Outputs
autoware_control_performance_analysis::msg::DrivingMonitorStamped
Name | Type | Description |
---|---|---|
longitudinal_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
longitudinal_jerk |
float | $[ \mathrm{m/s^3} ]$ |
lateral_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
lateral_jerk |
float | $[ \mathrm{m/s^3} ]$ |
desired_steering_angle |
float | $[ \mathrm{rad} ]$ |
controller_processing_time |
float | Timestamp between last two control command messages $[ \mathrm{ms} ]$ |
autoware_control_performance_analysis::msg::ErrorStamped
Name | Type | Description |
---|---|---|
lateral_error |
float | $[ \mathrm{m} ]$ |
lateral_error_velocity |
float | $[ \mathrm{m/s} ]$ |
lateral_error_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
longitudinal_error |
float | $[ \mathrm{m} ]$ |
longitudinal_error_velocity |
float | $[ \mathrm{m/s} ]$ |
longitudinal_error_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
heading_error |
float | $[ \mathrm{rad} ]$ |
heading_error_velocity |
float | $[ \mathrm{rad/s} ]$ |
control_effort_energy |
float | $[ \mathbf{u}^\top \mathbf{R} \mathbf{u} ]$ simplified to $[ R \cdot u^2 ]$ |
error_energy |
float | $e_{\text{lat}}^2 + e_\theta^2$ (squared lateral error + squared heading error) |
value_approximation |
float | $V = \mathbf{x}^\top \mathbf{P} \mathbf{x}$; Value function from DARE Lyapunov matrix $\mathbf{P}$ |
curvature_estimate |
float | $[ \mathrm{1/m} ]$ |
curvature_estimate_pp |
float | $[ \mathrm{1/m} ]$ |
vehicle_velocity_error |
float | $[ \mathrm{m/s} ]$ |
tracking_curvature_discontinuity_ability |
float | Measures the ability to track curvature changes $\frac{\lvert \Delta(\text{curvature}) \rvert}{1 + \lvert \Delta(e_{\text{lat}}) \rvert}$ |
Parameters
Name | Type | Description |
---|---|---|
curvature_interval_length |
double | Used for estimating current curvature |
prevent_zero_division_value |
double | Value to avoid zero division. Default is 0.001
|
odom_interval |
unsigned integer | Interval between odom messages, increase it for smoother curve. |
acceptable_max_distance_to_waypoint |
double | Maximum distance between trajectory point and vehicle [m] |
acceptable_max_yaw_difference_rad |
double | Maximum yaw difference between trajectory point and vehicle [rad] |
low_pass_filter_gain |
double | Low pass filter gain |
Usage
- After launched simulation and control module, launch the
control_performance_analysis.launch.xml
. - You should be able to see the driving monitor and error variables in topics.
- If you want to visualize the results, you can use
Plotjuggler
and useconfig/controller_monitor.xml
as layout. - After import the layout, please specify the topics that are listed below.
- /localization/kinematic_state
- /vehicle/status/steering_status
- /control_performance/driving_status
- /control_performance/performance_vars
- In
Plotjuggler
you can export the statistic (max, min, average) values as csv file. Use that statistics to compare the control modules.
File truncated at 100 lines see the full file
Changelog for package autoware_control_performance_analysis
0.47.0 (2025-08-11)
-
feat: change planning output topic name to /planning/trajectory (#11135)
- change planning output topic name to /planning/trajectory
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
Contributors: Yukihiro Saito
0.46.0 (2025-06-20)
0.45.0 (2025-05-22)
0.44.2 (2025-06-10)
0.44.1 (2025-05-01)
0.44.0 (2025-04-18)
0.43.0 (2025-03-21)
- Merge remote-tracking branch 'origin/main' into chore/bump-version-0.43
- chore: rename from [autoware.universe]{.title-ref} to [autoware_universe]{.title-ref} (#10306)
- Contributors: Hayato Mizushima, Yutaka Kondo
0.42.0 (2025-03-03)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- feat(autoware_utils): replace autoware_universe_utils with autoware_utils (#10191)
- fix: add missing includes to autoware_universe_utils (#10091)
- Contributors: Fumiya Watanabe, Ryohsuke Mitsudome, 心刚
0.41.2 (2025-02-19)
- chore: bump version to 0.41.1 (#10088)
- Contributors: Ryohsuke Mitsudome
0.41.1 (2025-02-10)
0.41.0 (2025-01-29)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat: apply [autoware_]{.title-ref} prefix for [control_performance_analysis]{.title-ref} (#9982)
* feat(control_performance_analysis): apply [autoware_]{.title-ref} prefix (see below): Note:
* In this commit, I did not organize a folder structure. The folder structure will be organized in the next some commits.
- The changes will follow the Autoware's guideline as below:
- https://autowarefoundation.github.io/autoware-documentation/main/contributing/coding-guidelines/ros-nodes/directory-structure/#package-folder
- rename(control_performance_analysis): move headers under `include/autoware`:
- Fixes due to this changes for .hpp/.cpp files will be applied in the next commit
- fix(control_performance_analysis): fix include paths
- To follow the previous commit
- rename: [control_performance_analysis]{.title-ref} => [autoware_control_performance_analysis]{.title-ref}
- style(pre-commit): autofix
- bug(autoware_control_performance_analysis): fix inconsistent namespacing
- style(pre-commit): autofix
- update(autoware_control_performance_analysis): [README.md]{.title-ref}
- bug(autoware_control_performance_analysis): fix critical bugs that contaminate topic name
- style(pre-commit): autofix
- fix: update package name for error_rqt_multiplot.xml
- fix: update package name for control_performance_plot.py
- docs(autoware_control_performance_analysis): update package name in README and CHANGELOG.rst
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Ryohsuke Mitsudome <<ryohsuke.mitsudome@tier4.jp>> Co-authored-by: SakodaShintaro <<shintaro.sakoda@tier4.jp>>
-
Contributors: Fumiya Watanabe, Junya Sasaki
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Name |
---|
libboost-dev |
Dependant Packages
Launch files
- launch/control_performance_analysis.launch.xml
-
- control_performance_analysis_param_path [default: $(find-pkg-share autoware_control_performance_analysis)/config/control_performance_analysis.param.yaml]
- input/reference_trajectory [default: /planning/trajectory]
- input/control_raw [default: /control/command/control_cmd]
- input/measured_steering [default: /vehicle/status/steering_status]
- input/current_odometry [default: /localization/kinematic_state]
- output/error_stamped [default: /control_performance/performance_vars]
- output/driving_status_stamped [default: /control_performance/driving_status]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]
Services
Plugins
Recent questions tagged autoware_control_performance_analysis at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.47.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | |
Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-08-16 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | planner ros calibration self-driving-car autonomous-driving autonomous-vehicles ros2 3d-map autoware |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Berkay Karaman
- Taiki Tanaka
- Tomoya Kimura
- Shumpei Wakabayashi
- Fumiya Watanabe
- Takamasa Horibe
- Satoshi Ota
- Takayuki Murooka
- Junya Sasaki
Authors
- Ali Boyali
- Berkay Karaman
autoware_control_performance_analysis
Purpose
autoware_control_performance_analysis
is the package to analyze the tracking performance of a control module and monitor the driving status of the vehicle.
This package is used as a tool to quantify the results of the control module. That’s why it doesn’t interfere with the core logic of autonomous driving.
Based on the various input from planning, control, and vehicle, it publishes the result of analysis as autoware_control_performance_analysis::msg::ErrorStamped
defined in this package.
All results in ErrorStamped
message are calculated in Frenet Frame of curve. Errors and velocity errors are calculated by using paper below.
Werling, Moritz & Groell, Lutz & Bretthauer, Georg. (2010). Invariant Trajectory Tracking With a Full-Size Autonomous Road Vehicle. IEEE Transactions on Robotics. 26. 758 - 765. 10.1109/TRO.2010.2052325.
If you are interested in calculations, you can see the error and error velocity calculations in section C. Asymptotical Trajectory Tracking With Orientation Control
.
Error acceleration calculations are made based on the velocity calculations above. You can see below the calculation of error acceleration.
Input / Output
Input topics
Name | Type | Description |
---|---|---|
/planning/trajectory |
autoware_planning_msgs::msg::Trajectory | Output trajectory from planning module. |
/control/command/control_cmd |
autoware_control_msgs::msg::Control | Output control command from control module. |
/vehicle/status/steering_status |
autoware_vehicle_msgs::msg::SteeringReport | Steering information from vehicle. |
/localization/kinematic_state |
nav_msgs::msg::Odometry | Use twist from odometry. |
/tf |
tf2_msgs::msg::TFMessage | Extract ego pose from tf. |
Output topics
Name | Type | Description |
---|---|---|
/control_performance/performance_vars |
autoware_control_performance_analysis::msg::ErrorStamped | The result of the performance analysis. |
/control_performance/driving_status |
autoware_control_performance_analysis::msg::DrivingMonitorStamped | Driving status (acceleration, jerk etc.) monitoring |
Outputs
autoware_control_performance_analysis::msg::DrivingMonitorStamped
Name | Type | Description |
---|---|---|
longitudinal_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
longitudinal_jerk |
float | $[ \mathrm{m/s^3} ]$ |
lateral_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
lateral_jerk |
float | $[ \mathrm{m/s^3} ]$ |
desired_steering_angle |
float | $[ \mathrm{rad} ]$ |
controller_processing_time |
float | Timestamp between last two control command messages $[ \mathrm{ms} ]$ |
autoware_control_performance_analysis::msg::ErrorStamped
Name | Type | Description |
---|---|---|
lateral_error |
float | $[ \mathrm{m} ]$ |
lateral_error_velocity |
float | $[ \mathrm{m/s} ]$ |
lateral_error_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
longitudinal_error |
float | $[ \mathrm{m} ]$ |
longitudinal_error_velocity |
float | $[ \mathrm{m/s} ]$ |
longitudinal_error_acceleration |
float | $[ \mathrm{m/s^2} ]$ |
heading_error |
float | $[ \mathrm{rad} ]$ |
heading_error_velocity |
float | $[ \mathrm{rad/s} ]$ |
control_effort_energy |
float | $[ \mathbf{u}^\top \mathbf{R} \mathbf{u} ]$ simplified to $[ R \cdot u^2 ]$ |
error_energy |
float | $e_{\text{lat}}^2 + e_\theta^2$ (squared lateral error + squared heading error) |
value_approximation |
float | $V = \mathbf{x}^\top \mathbf{P} \mathbf{x}$; Value function from DARE Lyapunov matrix $\mathbf{P}$ |
curvature_estimate |
float | $[ \mathrm{1/m} ]$ |
curvature_estimate_pp |
float | $[ \mathrm{1/m} ]$ |
vehicle_velocity_error |
float | $[ \mathrm{m/s} ]$ |
tracking_curvature_discontinuity_ability |
float | Measures the ability to track curvature changes $\frac{\lvert \Delta(\text{curvature}) \rvert}{1 + \lvert \Delta(e_{\text{lat}}) \rvert}$ |
Parameters
Name | Type | Description |
---|---|---|
curvature_interval_length |
double | Used for estimating current curvature |
prevent_zero_division_value |
double | Value to avoid zero division. Default is 0.001
|
odom_interval |
unsigned integer | Interval between odom messages, increase it for smoother curve. |
acceptable_max_distance_to_waypoint |
double | Maximum distance between trajectory point and vehicle [m] |
acceptable_max_yaw_difference_rad |
double | Maximum yaw difference between trajectory point and vehicle [rad] |
low_pass_filter_gain |
double | Low pass filter gain |
Usage
- After launched simulation and control module, launch the
control_performance_analysis.launch.xml
. - You should be able to see the driving monitor and error variables in topics.
- If you want to visualize the results, you can use
Plotjuggler
and useconfig/controller_monitor.xml
as layout. - After import the layout, please specify the topics that are listed below.
- /localization/kinematic_state
- /vehicle/status/steering_status
- /control_performance/driving_status
- /control_performance/performance_vars
- In
Plotjuggler
you can export the statistic (max, min, average) values as csv file. Use that statistics to compare the control modules.
File truncated at 100 lines see the full file
Changelog for package autoware_control_performance_analysis
0.47.0 (2025-08-11)
-
feat: change planning output topic name to /planning/trajectory (#11135)
- change planning output topic name to /planning/trajectory
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-
Contributors: Yukihiro Saito
0.46.0 (2025-06-20)
0.45.0 (2025-05-22)
0.44.2 (2025-06-10)
0.44.1 (2025-05-01)
0.44.0 (2025-04-18)
0.43.0 (2025-03-21)
- Merge remote-tracking branch 'origin/main' into chore/bump-version-0.43
- chore: rename from [autoware.universe]{.title-ref} to [autoware_universe]{.title-ref} (#10306)
- Contributors: Hayato Mizushima, Yutaka Kondo
0.42.0 (2025-03-03)
- Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
- feat(autoware_utils): replace autoware_universe_utils with autoware_utils (#10191)
- fix: add missing includes to autoware_universe_utils (#10091)
- Contributors: Fumiya Watanabe, Ryohsuke Mitsudome, 心刚
0.41.2 (2025-02-19)
- chore: bump version to 0.41.1 (#10088)
- Contributors: Ryohsuke Mitsudome
0.41.1 (2025-02-10)
0.41.0 (2025-01-29)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat: apply [autoware_]{.title-ref} prefix for [control_performance_analysis]{.title-ref} (#9982)
* feat(control_performance_analysis): apply [autoware_]{.title-ref} prefix (see below): Note:
* In this commit, I did not organize a folder structure. The folder structure will be organized in the next some commits.
- The changes will follow the Autoware's guideline as below:
- https://autowarefoundation.github.io/autoware-documentation/main/contributing/coding-guidelines/ros-nodes/directory-structure/#package-folder
- rename(control_performance_analysis): move headers under `include/autoware`:
- Fixes due to this changes for .hpp/.cpp files will be applied in the next commit
- fix(control_performance_analysis): fix include paths
- To follow the previous commit
- rename: [control_performance_analysis]{.title-ref} => [autoware_control_performance_analysis]{.title-ref}
- style(pre-commit): autofix
- bug(autoware_control_performance_analysis): fix inconsistent namespacing
- style(pre-commit): autofix
- update(autoware_control_performance_analysis): [README.md]{.title-ref}
- bug(autoware_control_performance_analysis): fix critical bugs that contaminate topic name
- style(pre-commit): autofix
- fix: update package name for error_rqt_multiplot.xml
- fix: update package name for control_performance_plot.py
- docs(autoware_control_performance_analysis): update package name in README and CHANGELOG.rst
* style(pre-commit): autofix ---------Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Ryohsuke Mitsudome <<ryohsuke.mitsudome@tier4.jp>> Co-authored-by: SakodaShintaro <<shintaro.sakoda@tier4.jp>>
-
Contributors: Fumiya Watanabe, Junya Sasaki
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Name |
---|
libboost-dev |
Dependant Packages
Launch files
- launch/control_performance_analysis.launch.xml
-
- control_performance_analysis_param_path [default: $(find-pkg-share autoware_control_performance_analysis)/config/control_performance_analysis.param.yaml]
- input/reference_trajectory [default: /planning/trajectory]
- input/control_raw [default: /control/command/control_cmd]
- input/measured_steering [default: /vehicle/status/steering_status]
- input/current_odometry [default: /localization/kinematic_state]
- output/error_stamped [default: /control_performance/performance_vars]
- output/driving_status_stamped [default: /control_performance/driving_status]
- vehicle_info_param_file [default: $(find-pkg-share autoware_vehicle_info_utils)/config/vehicle_info.param.yaml]