-
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(obstacle_avoidance_planner): faster optimization by sparser re-formulation #4600
feat(obstacle_avoidance_planner): faster optimization by sparser re-formulation #4600
Conversation
Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com>
Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com>
e0405e9
to
182f490
Compare
@@ -1522,7 +1506,9 @@ std::optional<Eigen::VectorXd> MPTOptimizer::calcOptimizedSteerAngles( | |||
const autoware::common::osqp::CSC_Matrix P_csc = | |||
autoware::common::osqp::calCSCMatrixTrapezoidal(H); | |||
const autoware::common::osqp::CSC_Matrix A_csc = autoware::common::osqp::calCSCMatrix(A); | |||
if (mpt_param_.enable_warm_start && prev_mat_n_ == H.rows() && prev_mat_m_ == A.rows()) { | |||
if ( | |||
prev_solution_status_ == 1 && mpt_param_.enable_warm_start && prev_mat_n_ == H.rows() && |
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.
Without prev_solution_status_ == 1
, the warm start is used even if the previous optimization failed, resulting in successive optimization failure.
Codecov ReportPatch coverage:
Additional details and impacted files@@ Coverage Diff @@
## main #4600 +/- ##
==========================================
- Coverage 14.84% 14.83% -0.01%
==========================================
Files 1529 1529
Lines 105769 105761 -8
Branches 32221 32215 -6
==========================================
- Hits 15698 15694 -4
+ Misses 72913 72912 -1
+ Partials 17158 17155 -3
*This pull request uses carry forward flags. Click here to find out more.
☔ View full report in Codecov by Sentry. |
…ormulation (autowarefoundation#4600) * feat(obstacle_avoidance_planner): re-formulate for faster QP Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> * minor change Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> * update Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> * fix Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> --------- Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com>
…ormulation (autowarefoundation#4600) * feat(obstacle_avoidance_planner): re-formulate for faster QP Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> * minor change Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> * update Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> * fix Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> --------- Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com>
…ormulation (autowarefoundation#4600) * feat(obstacle_avoidance_planner): re-formulate for faster QP Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> * minor change Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> * update Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> * fix Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> --------- Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com>
…ormulation (autowarefoundation#4600) * feat(obstacle_avoidance_planner): re-formulate for faster QP Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> * minor change Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> * update Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> * fix Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> --------- Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com>
…ormulation (autowarefoundation#4600) * feat(obstacle_avoidance_planner): re-formulate for faster QP Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> * minor change Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> * update Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> * fix Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> --------- Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com>
…ormulation (autowarefoundation#4600) * feat(obstacle_avoidance_planner): re-formulate for faster QP Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> * minor change Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> * update Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> * fix Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> --------- Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com>
…ormulation (autowarefoundation#4600) * feat(obstacle_avoidance_planner): re-formulate for faster QP Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> * minor change Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> * update Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> * fix Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com> --------- Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com>
…ormulation (autowarefoundation#4600) (#1051) * feat(obstacle_avoidance_planner): re-formulate for faster QP * minor change * update * fix --------- Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com>
…ormulation (autowarefoundation#4600) (autowarefoundation#1051) * feat(obstacle_avoidance_planner): re-formulate for faster QP * minor change * update * fix --------- Signed-off-by: Takayuki Murooka <takayuki5168@gmail.com>
Description
According to https://github.com/orgs/autowarefoundation/discussions/3681, this PR makes the optimization of MPT (Model Predictive Trajectory) sparser resulting in faster calculation.
TODO
Qualitative evaluation
I measured the calculation time of obstacle_avoidance_planner with the following route on the sample map.
![image](https://private-user-images.githubusercontent.com/20228327/260200699-c0c13864-7bb9-4702-8664-018f45a9a5de.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMTk3NDksIm5iZiI6MTczOTMxOTQ0OSwicGF0aCI6Ii8yMDIyODMyNy8yNjAyMDA2OTktYzBjMTM4NjQtN2JiOS00NzAyLTg2NjQtMDE4ZjQ1YTlhNWRlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDAwMTcyOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTgwNzZlMDUxNDk2MzMxZWJjMTA0YzEwOTM0MDdmMWNlNDk5MDMwYjE2ZTM1NGRjNGU4ZjZmOWQ1OTM3OTliOGEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.o2DvleTYA0cqaxwaBSZI6kqENe_TnxmCCzEuzmAmKFs)
without this PR
![image](https://private-user-images.githubusercontent.com/20228327/260200870-0df381f6-9ed6-4749-b083-c5c2f4e5fd27.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMTk3NDksIm5iZiI6MTczOTMxOTQ0OSwicGF0aCI6Ii8yMDIyODMyNy8yNjAyMDA4NzAtMGRmMzgxZjYtOWVkNi00NzQ5LWIwODMtYzVjMmY0ZTVmZDI3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDAwMTcyOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTUzMTRkMjY4YTNjOWZiYWE5MjkzODNlYTI3NTI5OGM2MWE0NzYyYmQyMDIzZmQxMzQ2NDRmYjkxYTVlMWIxY2UmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.bCivL99427LN-jIIAJuxam0xgTt4RUFjDvQTgDL7exQ)
with this PR
![image](https://private-user-images.githubusercontent.com/20228327/260200726-f6e913c9-fa8d-4058-bf7e-d514f7c5ef57.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMTk3NDksIm5iZiI6MTczOTMxOTQ0OSwicGF0aCI6Ii8yMDIyODMyNy8yNjAyMDA3MjYtZjZlOTEzYzktZmE4ZC00MDU4LWJmN2UtZDUxNGY3YzVlZjU3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDAwMTcyOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTc5YmQwMzgwZmU0OThjYjYyYTU3MjlkNDEyMTI1MmFkMGE5NDdiOWM2Y2RiYWI4OWFiMjg4MTVlMTFjN2FlZDQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.KumScItvWFyatfr2NDKbUOWEotzI9yei4_-VQrKqoMw)
The time rarely increases suddenly, but overall much better than without this PR.
Tests performed
planning simulator
Effects on system behavior
Nothing
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.