-
Notifications
You must be signed in to change notification settings - Fork 682
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(control_performance_analysis): add new functionalities to evaluate the control modules #659
feat(control_performance_analysis): add new functionalities to evaluate the control modules #659
Conversation
Codecov Report
@@ Coverage Diff @@
## main #659 +/- ##
========================================
+ Coverage 9.53% 9.61% +0.08%
========================================
Files 970 960 -10
Lines 65278 64645 -633
Branches 11581 11183 -398
========================================
- Hits 6221 6217 -4
+ Misses 53893 53265 -628
+ Partials 5164 5163 -1
*This pull request uses carry forward flags. Click here to find out more.
Continue to review full report at Codecov.
|
@brkay54 Thank you for the PR. The basic design looks good to me. I have some questions:
FYI, some values are also calculated in the planning_evaluator node. |
I didn't explain it sorry for that. Actually, we want to measure the capability to deal with curvature discontinuity. It will be scored with:
Yes you are right. I will change this output name. It will measure the time between the control messages.
Thank you, I will check there. |
* Back port .auto control packages (autowarefoundation#571) * Implement Lateral and Longitudinal Control Muxer * [autowarefoundation#570] Porting wf_simulator * [autowarefoundation#1189] Deactivate flaky test in 'trajectory_follower_nodes' * [autowarefoundation#1189] Fix flacky test in 'trajectory_follower_nodes/latlon_muxer' * [autowarefoundation#1057] Add osqp_interface package * [autowarefoundation#1057] Add library code for MPC-based lateral control * [autowarefoundation#1271] Use std::abs instead of abs * [autowarefoundation#1057] Implement Lateral Controller for Cargo ODD * [autowarefoundation#1246] Resolve "Test case names currently use snake_case but should be CamelCase" * [autowarefoundation#1325] Deactivate flaky smoke test in 'trajectory_follower_nodes' * [autowarefoundation#1058] Add library code of longitudinal controller * Fix build error for trajectory follower Signed-off-by: wep21 <border_goldenmarket@yahoo.co.jp> * Fix build error for trajectory follower nodes Signed-off-by: wep21 <border_goldenmarket@yahoo.co.jp> * [autowarefoundation#1272] Add AckermannControlCommand support to simple_planning_simulator * [autowarefoundation#1058] Add Longitudinal Controller node * [autowarefoundation#1058] Rename velocity_controller -> longitudinal_controller * [autowarefoundation#1058] Update CMakeLists.txt for the longitudinal_controller_node * [autowarefoundation#1058] Add smoke test python launch file * [autowarefoundation#1058] Use LowPassFilter1d from trajectory_follower * [autowarefoundation#1058] Use autoware_auto_msgs * [autowarefoundation#1058] Changes for .auto (debug msg tmp fix, common func, tf listener) * [autowarefoundation#1058] Remove unused parameters * [autowarefoundation#1058] Fix ros test * [autowarefoundation#1058] Rm default params from declare_parameters + use autoware types * [autowarefoundation#1058] Use default param file to setup NodeOptions in the ros test * [autowarefoundation#1058] Fix docstring * [autowarefoundation#1058] Replace receiving a Twist with a VehicleKinematicState * [autowarefoundation#1058] Change class variables format to m_ prefix * [autowarefoundation#1058] Fix plugin name of LongitudinalController in CMakeLists.txt * [autowarefoundation#1058] Fix copyright dates * [autowarefoundation#1058] Reorder includes * [autowarefoundation#1058] Add some tests (~89% coverage without disabling flaky tests) * [autowarefoundation#1058] Add more tests (90+% coverage without disabling flaky tests) * [autowarefoundation#1058] Use Float32MultiArrayDiagnostic message for debug and slope * [autowarefoundation#1058] Calculate wheel_base value from vehicle parameters * [autowarefoundation#1058] Cleanup redundant logger setting in tests * [autowarefoundation#1058] Set ROS_DOMAIN_ID when running tests to prevent CI failures * [autowarefoundation#1058] Remove TF listener and use published vehicle state instead * [autowarefoundation#1058] Change smoke tests to use autoware_testing * [autowarefoundation#1058] Add plotjuggler cfg for both lateral and longitudinal control * [autowarefoundation#1058] Improve design documents * [autowarefoundation#1058] Disable flaky test * [autowarefoundation#1058] Properly transform vehicle state in longitudinal node * [autowarefoundation#1058] Fix TF buffer of lateral controller * [autowarefoundation#1058] Tuning of lateral controller for LGSVL * [autowarefoundation#1058] Fix formating * [autowarefoundation#1058] Fix /tf_static sub to be transient_local * [autowarefoundation#1058] Fix yaw recalculation of reverse trajs in the lateral controller * modify trajectory_follower for galactic build Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> * [autowarefoundation#1379] Update trajectory_follower * [autowarefoundation#1379] Update simple_planning_simulator * [autowarefoundation#1379] Update trajectory_follower_nodes * apply trajectory msg modification in control Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> * move directory Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> * remote control/trajectory_follower level dorectpry Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> * remove .iv trajectory follower Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> * use .auto trajectory_follower Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> * remove .iv simple_planning_simulator & osqp_interface Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> * use .iv simple_planning_simulator & osqp_interface Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> * add tmp_autoware_auto_dependencies Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> * tmporally add autoware_auto_msgs Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> * apply .auto message split Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> * fix build depend Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> * fix packages using osqp * fix autoware_auto_geometry * ignore lint of some packages * ignore ament_lint of some packages * ignore lint/pre-commit of trajectory_follower_nodes * disable unit tests of some packages Co-authored-by: Maxime CLEMENT <maxime.clement@tier4.jp> Co-authored-by: Joshua Whitley <josh.whitley@autoware.org> Co-authored-by: Igor Bogoslavskyi <igor.bogoslavskyi@gmail.com> Co-authored-by: MIURA Yasuyuki <kokosabu@gmail.com> Co-authored-by: wep21 <border_goldenmarket@yahoo.co.jp> Co-authored-by: tomoya.kimura <tomoya.kimura@tier4.jp> Signed-off-by: tanaka3 <ttatcoder@outlook.jp> * Fix message interface and tests of 'trajectory_follower_nodes' (autowarefoundation#617) * Update longitudinal_controller_node to use VehicleOdometry * Update lateral_controller_node for VehicleOdometry and SteeringReport * Fix tests Signed-off-by: tanaka3 <ttatcoder@outlook.jp> * Change the topic name of the control_cmd to align them in trajectory_follower_node (autowarefoundation#659) * Fix topic names * Fix namespace * Fix test codes Signed-off-by: tanaka3 <ttatcoder@outlook.jp> * Fix type of current odometry in trajectory_follower_node (autowarefoundation#666) Signed-off-by: tanaka3 <ttatcoder@outlook.jp> * [latlon muxer] fix gtest (autowarefoundation#670) * fix gtest * remove unchanged Signed-off-by: tanaka3 <ttatcoder@outlook.jp> * Update lateral controller (autowarefoundation#708) * Fix parameter names of mpc_follower (autowarefoundation#1376) * remove yaw_recalc param in mpc (autowarefoundation#1241) (autowarefoundation#1476) * parameterize curvature num (autowarefoundation#1674) (autowarefoundation#1577) * fix rosparam steer_rate_lim_degs to steer_rate_lim_dps in mpc_follower (autowarefoundation#1848) * Fix spellcheck fail for some packages autowarefoundation#1842 * use interpolation::slerp (autowarefoundation#2161) * Fix/mpc reset prev result (autowarefoundation#2185) * add add guard (autowarefoundation#2184) * add-mpc-optimization-status-print (autowarefoundation#2189) * Apply ament_uncrustify * Update control/trajectory_follower/src/qp_solver/qp_solver_osqp.cpp Co-authored-by: Takamasa Horibe <horibe.takamasa@gmail.com> Co-authored-by: Takamasa Horibe <horibe.takamasa@gmail.com> Signed-off-by: tanaka3 <ttatcoder@outlook.jp> * Use vehicle info utils (autowarefoundation#709) * Use vehicle info utils and disable unit test * Update trajectory_follower_nodes default parameters and reenable tests * Separate vehicle info param file for test Co-authored-by: Maxime CLEMENT <maxime.clement@tier4.jp> Signed-off-by: tanaka3 <ttatcoder@outlook.jp> * remove stop distance condition from stopState decision (autowarefoundation#1916) (autowarefoundation#715) Signed-off-by: tanaka3 <ttatcoder@outlook.jp> * velocity_controller sync to .iv develop latest (autowarefoundation#699) * non extrapolate velocity in lerpTrajectory to avoid negative velocity just before vehicle stops (autowarefoundation#2033) * Add keep braking function at driving state (autowarefoundation#2346) * Add keep braking function at driving state Signed-off-by: Makoto Kurihara <mkuri8m@gmail.com> * Remove debug messages Signed-off-by: Makoto Kurihara <mkuri8m@gmail.com> * Fix format Signed-off-by: Makoto Kurihara <mkuri8m@gmail.com> * Feature/add doc for keep braking function at driving state (autowarefoundation#2366) * Add the description of brake keeping Signed-off-by: Makoto Kurihara <mkuri8m@gmail.com> * Add the english document Signed-off-by: Makoto Kurihara <mkuri8m@gmail.com> * Improve description Signed-off-by: Makoto Kurihara <mkuri8m@gmail.com> * Add english description Signed-off-by: Makoto Kurihara <mkuri8m@gmail.com> Co-authored-by: Takayuki Murooka <takayuki5168@gmail.com> Co-authored-by: Makoto Kurihara <mkuri8m@gmail.com> Co-authored-by: Fumiya Watanabe <rej55.g@gmail.com> Signed-off-by: tanaka3 <ttatcoder@outlook.jp> * fix topic name in plot juggler (autowarefoundation#734) Signed-off-by: tanaka3 <ttatcoder@outlook.jp> * Fix unstable test in trajectory_follower_nodes (autowarefoundation#731) * Added spin_some to store tf_buffer * add more spin * uncomment statement * Remove temp file * Update control/trajectory_follower_nodes/src/lateral_controller_node.cpp Co-authored-by: Takamasa Horibe <horibe.takamasa@gmail.com> Co-authored-by: Takamasa Horibe <horibe.takamasa@gmail.com> Signed-off-by: tanaka3 <ttatcoder@outlook.jp> Co-authored-by: Takamasa Horibe <horibe.takamasa@gmail.com> Co-authored-by: Maxime CLEMENT <maxime.clement@tier4.jp> Co-authored-by: Joshua Whitley <josh.whitley@autoware.org> Co-authored-by: Igor Bogoslavskyi <igor.bogoslavskyi@gmail.com> Co-authored-by: MIURA Yasuyuki <kokosabu@gmail.com> Co-authored-by: wep21 <border_goldenmarket@yahoo.co.jp> Co-authored-by: tomoya.kimura <tomoya.kimura@tier4.jp> Co-authored-by: Maxime CLEMENT <78338830+maxime-clem@users.noreply.github.com> Co-authored-by: Fumiya Watanabe <rej55.g@gmail.com> Co-authored-by: Takayuki Murooka <takayuki5168@gmail.com> Co-authored-by: Makoto Kurihara <mkuri8m@gmail.com> Co-authored-by: Keisuke Shima <19993104+KeisukeShima@users.noreply.github.com>
cc @xmfcx @maxime-clem @mitsudome-r @MertClk In current BUS ODD architecture, we have nav_msgs::Odometry output from localization stack. See here. There is no measured acceleration output there. However in localization discussion, people decided to (I guess) add measured acceleration output to localization stack. Please see here. Issue #567 was labeled with BUS ODD. It is little confusing. Should I assume there will be measured acceleration output from localization stack? Otherwise, I will calculate the estimated acceleration and I will evaluate the control stack with that acceleration. |
We are working on a new message for the localization output, will post the PR here tomorrow. |
90aa22b
to
443485f
Compare
d2eaba4
to
92a79fe
Compare
@TakaHoribe @boyali it is ready for review. |
965a88f
to
0250717
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we need to recheck error accelerations, there are some errors in formulations maybe coming from the original.
core - line 259
error_vars.error.lateral_error_acceleration =
Vx * tan(current_steering_val) / wheelbase_ - curvature_est * Vx;
this expression is epsi_dot. I will post my notes from discord channel.
9ebcad3
to
f4168cf
Compare
@maxime-clem @boyali It is ready for review, instructions are written in readme.md. Can you try the evaluation tool? If you see any problem please share with me. |
a6fbbf2
to
fd9e741
Compare
6b3ab71
to
c91b8a5
Compare
6b83af7
to
e3c9962
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I could test the updated control_performance_analysis
following the instructions and it works well.
I only had issues selecting the necessary topics in plotjuggler
. Otherwise the plots look good and the statistics can be exported to CSV.
…te the control modules Signed-off-by: Berkay <berkay@leodrive.ai>
e3c9962
to
e5579ea
Compare
@xmfcx merge please? |
…te the control modules (autowarefoundation#659) Signed-off-by: Berkay <berkay@leodrive.ai> Co-authored-by: M. Fatih Cırıt <mfc@leodrive.ai> Signed-off-by: ktro2828 <kotaro.uetake@tier4.jp>
…te the control modules (tier4#659) Signed-off-by: Berkay <berkay@leodrive.ai> Co-authored-by: M. Fatih Cırıt <mfc@leodrive.ai>
…te the control modules (tier4#659) Signed-off-by: Berkay <berkay@leodrive.ai> Co-authored-by: M. Fatih Cırıt <mfc@leodrive.ai>
…te the control modules (tier4#659) Signed-off-by: Berkay <berkay@leodrive.ai> Co-authored-by: M. Fatih Cırıt <mfc@leodrive.ai>
…te the control modules (tier4#659) Signed-off-by: Berkay <berkay@leodrive.ai> Co-authored-by: M. Fatih Cırıt <mfc@leodrive.ai>
* Update repos files * Create .beta.repos and freeze repos files) * chore: update beta branch for beta/v0.13.0 (autowarefoundation#657) Update repos files Co-authored-by: GitHub Actions <actions@example.com> * fix(simulator.repos): use p/c branch for scenario_simulator (autowarefoundation#658) Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> * fix: perception pre-task in webauto-ci.yaml (autowarefoundation#659) Signed-off-by: Shunsuke Miura <shunsuke.miura@tier4.jp> * fix: download model files by ansible (autowarefoundation#662) * fix: update awf ansible hash Signed-off-by: Shunsuke Miura <shunsuke.miura@tier4.jp> * update ansible command Signed-off-by: Shunsuke Miura <shunsuke.miura@tier4.jp> --------- Signed-off-by: Shunsuke Miura <shunsuke.miura@tier4.jp> * build: update custom build spec Signed-off-by: ktro2828 <kotaro.uetake@tier4.jp> # Conflicts: # .webauto-ci.yml * add data_dir Signed-off-by: Shunsuke Miura <shunsuke.miura@tier4.jp> * change to force download artifacts Signed-off-by: Shunsuke Miura <shunsuke.miura@tier4.jp> * chore: update beta branch for beta/v0.13.0 (autowarefoundation#664) Update repos files Co-authored-by: GitHub Actions <actions@example.com> * fix: update to install libraries with pip Signed-off-by: ktro2828 <kotaro.uetake@tier4.jp> * style(pre-commit): autofix * revert beta branch related commit Signed-off-by: Shunsuke Miura <shunsuke.miura@tier4.jp> * fix merge mistake Signed-off-by: Shunsuke Miura <shunsuke.miura@tier4.jp> * Update .webauto-ci/main/autoware-build/run.sh Co-authored-by: Kotaro Uetake <60615504+ktro2828@users.noreply.github.com> * Update .webauto-ci/main/environment-setup/run.sh Co-authored-by: Kotaro Uetake <60615504+ktro2828@users.noreply.github.com> * style(pre-commit): autofix --------- Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> Signed-off-by: Shunsuke Miura <shunsuke.miura@tier4.jp> Signed-off-by: ktro2828 <kotaro.uetake@tier4.jp> Co-authored-by: Takamasa Horibe <horibe.takamasa@gmail.com> Co-authored-by: tier4-autoware-private-bot[bot] <87871706+tier4-autoware-private-bot[bot]@users.noreply.github.com> Co-authored-by: GitHub Actions <actions@example.com> Co-authored-by: ktro2828 <kotaro.uetake@tier4.jp> Co-authored-by: miursh <miursh@users.noreply.github.com> Co-authored-by: Kotaro Uetake <60615504+ktro2828@users.noreply.github.com>
…dation#659) * feat(vehicle_cmd_gate): add filter activated threshold Signed-off-by: 1222-takeshi <m.takeshi1995@gmail.com> * feat: update parameter Signed-off-by: 1222-takeshi <m.takeshi1995@gmail.com> * feat: add condition for filtering marker Signed-off-by: 1222-takeshi <m.takeshi1995@gmail.com> --------- Signed-off-by: 1222-takeshi <m.takeshi1995@gmail.com>
chore: sync awf-latest
Description
Please see (#567).
To close this issue, I want to add new functionalities to control_performance_analysis package.
New Design:
The outputs which are marked with
*
will be added.With this design, we can monitor the motion variables of vehicle (like longitudinal acceleration, longitudinal jerk, lateral jerk etc.). For BUS ODD, we need to stay public transportation limits.
Transportation Limits
Referance
Also, with
trajectory_generator_node
, we will able to test our control modules with custom paths without any map data.Outputs will be added
longitudinal_velocity_error: m/s
tracking_curvature_discontinuity_ability: It will be added to see how the curvature change affect the lateral error. It will be calculated by using:
delta(curvature) * (1 / (1 + delta(lateral_error)))
(If you have any suggestion please share with me.)
longitudinal_acceleration: m/s^2
longitudinal_jerk: m/s^3
lateral_acceleration: m/s^2
lateral_jerk: m/s^3
controller_processing_time: ms
Related links
Tests performed
Notes for reviewers
$ ros2 launch control_performance_analysis controller_performance_analysis.launch.xml
config/controller_monitor.xml
Now you should see the all outputs. In
Cost Outputs
tab, you will see the total errors. After test, you can export the statistic from plotjuggler by usingCVS exporter
, please selectExport Statistics
. In CVS file, you will see the average, maximum and minimum values of errors and driving monitor outputs. You can compare the controller modules by using these values. Also you can determine the time range by usingXY Position
tab.I did not add the trajectory generator module because it may not be necessary to compare control modules. But it can be added in future to use this tool with custom generated path without any map data.
If you have any suggestion please feel free to share with me.
Pre-review checklist for the PR author
The PR author must check the checkboxes below when creating the PR.
In-review checklist for the PR reviewers
The PR reviewers must check the checkboxes below before approval.
Post-review checklist for the PR author
The PR author must check the checkboxes below before merging.
After all checkboxes are checked, anyone who has write access can merge the PR.