-
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(start_planner): add curvature limit for path generation #4263
feat(start_planner): add curvature limit for path generation #4263
Conversation
Codecov ReportPatch coverage has no change and project coverage change:
Additional details and impacted files@@ Coverage Diff @@
## main #4263 +/- ##
==========================================
- Coverage 14.20% 14.17% -0.04%
==========================================
Files 1597 1597
Lines 109902 111158 +1256
Branches 31526 32457 +931
==========================================
+ Hits 15613 15753 +140
- Misses 77338 78326 +988
- Partials 16951 17079 +128
*This pull request uses carry forward flags. Click here to find out more.
☔ View full report in Codecov by Sentry. |
Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com>
Signed-off-by: kosuke55 <kosuke.tnp@gmail.com>
Signed-off-by: kosuke55 <kosuke.tnp@gmail.com>
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.
thanks!!! looks good!
// the calcBeforeShiftedArcLength is an approximate conversion from center line to center line | ||
// (not shift path to centerline), the conversion result may too long or short. To prevent too | ||
// short length, take maximum with the original distance. | ||
// TODO(): update the conversion function and get rid of the comparison with original distance. |
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.
planning/behavior_path_planner/src/utils/start_planner/shift_pull_out.cpp:212: Missing username in TODO; it should look like "// TODO(my_username): Stuff." [readability/todo] [2]
planning/behavior_path_planner/src/utils/start_planner/shift_pull_out.cpp:212: TODO(my_username) should be followed by a space [whitespace/todo] [2]
// the calcBeforeShiftedArcLength is an approximate conversion from center line to center line | ||
// (not shift path to centerline), the conversion result may too long or short. To prevent too | ||
// short length, take maximum with the original distance. | ||
// TODO(): update the conversion function and get rid of the comparison with original distance. |
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.
// TODO(): update the conversion function and get rid of the comparison with original distance. | |
// TODO(kosuke55): update the conversion function and get rid of the comparison with original distance. |
Signed-off-by: kosuke55 <kosuke.tnp@gmail.com>
…efoundation#4263) * feat: add curvature consideration in shift start Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> * update Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> * fix param Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> * update Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> * update Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> * change param Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> * maximum_curvature: 0.07 Signed-off-by: kosuke55 <kosuke.tnp@gmail.com> * update docs Signed-off-by: kosuke55 <kosuke.tnp@gmail.com> --------- Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> Signed-off-by: kosuke55 <kosuke.tnp@gmail.com> Co-authored-by: kosuke55 <kosuke.tnp@gmail.com>
Description
To prevent a shift path from being too sharp in the start_planner as in the picture below, introduce a curvature limit.
The curvature limit is applied in the longitudinal distance calculation, resulting as below.
max curvature = 0.1 (longitudinal distance = 13.5 m)
![image](https://private-user-images.githubusercontent.com/21360593/253154731-59db90ca-5d56-4c6b-99f3-85f1f01a943e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTc1MjAsIm5iZiI6MTczOTU1NzIyMCwicGF0aCI6Ii8yMTM2MDU5My8yNTMxNTQ3MzEtNTlkYjkwY2EtNWQ1Ni00YzZiLTk5ZjMtODVmMWYwMWE5NDNlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDE4MjAyMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTNlYmQwYjQxYzM2ZGQ2MzVkZjE5MmQwNjA2YjYxZGM2ZjdhODU1YTk3ZmM5MjNjYzdkYmVjZjkyNzhkMmM0NjEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.hN8US2lkfxiJhIqR67ZI9XBuvrfWlUoL6G9VBYjKLs4)
max curvature = 0.08 (longitudinal distance = 16.1 m)
![image](https://private-user-images.githubusercontent.com/21360593/253155558-54d287b2-af90-4fe3-95a4-fa3bc1786552.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTc1MjAsIm5iZiI6MTczOTU1NzIyMCwicGF0aCI6Ii8yMTM2MDU5My8yNTMxNTU1NTgtNTRkMjg3YjItYWY5MC00ZmUzLTk1YTQtZmEzYmMxNzg2NTUyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDE4MjAyMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTExZTIyZjQyMzRmNTkwNjQ4MDQ3ZWEyN2M5ODY5YWZjOGY3ODRjMjI5Mjk2Nzg3YmQyNzBkYTQzODVjODlhODImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.3uOkAHbEZKhH_kCF7c8Qvtl42Fe1lZJCDUt6USEPanM)
max curvature = 0.07 (longitudinal distance = 15.9 m)
![image](https://private-user-images.githubusercontent.com/21360593/253155269-b8fe5184-859f-4ec6-993b-b581afd14239.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTc1MjAsIm5iZiI6MTczOTU1NzIyMCwicGF0aCI6Ii8yMTM2MDU5My8yNTMxNTUyNjktYjhmZTUxODQtODU5Zi00ZWM2LTk5M2ItYjU4MWFmZDE0MjM5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDE4MjAyMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQ4MjZlYWI4YjA5NTczNzk4YTEyMjg2OGFiNWYzMDU2YzE3MmUxMzJiMWU2MTFmMDRiZDY1NTJkNTNlZmM5ZGMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.8CcLJkWewcs5ljwiNPuLHaEUIjJehKXLtsGVE3cv-xU)
max curvature = 0.06 (longitudinal distance = 17.9 m)
![image](https://private-user-images.githubusercontent.com/21360593/253155912-5a070c12-8959-4916-a8d0-d31ffba2aa96.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTc1MjAsIm5iZiI6MTczOTU1NzIyMCwicGF0aCI6Ii8yMTM2MDU5My8yNTMxNTU5MTItNWEwNzBjMTItODk1OS00OTE2LWE4ZDAtZDMxZmZiYTJhYTk2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDE4MjAyMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTEyMTQ5OWExMDI0NzhkNTg5Mzk2YmY3OWJiMTlmNDMwZTkwZGFjNTc5Yjk4Y2E4NTY2OTA5YjY1YTM1NzQ5YTUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.6pj6lnokoAcL6nM0oStVCTQcMgJq7PTnNEp_iYwa2uQ)
max curvature = 0.04 (longitudinal distance = 22.1 m)
![image](https://private-user-images.githubusercontent.com/21360593/253155109-f3a6c022-e4f1-4814-a57c-1d272ef05794.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTc1MjAsIm5iZiI6MTczOTU1NzIyMCwicGF0aCI6Ii8yMTM2MDU5My8yNTMxNTUxMDktZjNhNmMwMjItZTRmMS00ODE0LWE1N2MtMWQyNzJlZjA1Nzk0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDE4MjAyMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWVkMzQ1ZjhlZjE1ZmRiNWM4MGRkZTFmMzM4Nzc2NDljNmU4NTVmODVjMzY5NTE3MDExMTBmY2UwY2I4ZTc1MzImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.ln65lhVedUJQ9cgDJ0AUDFzP3CIhQq8o547Tn5xuciU)
max curvature = 0.03 (longitudinal distance = 26.8 m)
![image](https://private-user-images.githubusercontent.com/21360593/253154615-b2620807-aa3c-447c-a5d9-f363865efbc2.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTc1MjAsIm5iZiI6MTczOTU1NzIyMCwicGF0aCI6Ii8yMTM2MDU5My8yNTMxNTQ2MTUtYjI2MjA4MDctYWEzYy00NDdjLWE1ZDktZjM2Mzg2NWVmYmMyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDE4MjAyMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWRhMjhiMzJiMDJlYjc0NzMxYjk0OWRmZDU5ZDQyNTk4MDY3ZTdmZDBmYTdiNDU5YjA2OWI3OGFmNjJmMmQ3NTAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.z8yRrzcNhGVtDyyfwSHqyCFsuhRi-7dOztVSV4L3hY0)
max curvature = 0.02 (longitudinal distance = 32.9 m)
![image](https://private-user-images.githubusercontent.com/21360593/253154982-7a133f95-17d3-43ca-981a-8a592fea6ac3.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTc1MjAsIm5iZiI6MTczOTU1NzIyMCwicGF0aCI6Ii8yMTM2MDU5My8yNTMxNTQ5ODItN2ExMzNmOTUtMTdkMy00M2NhLTk4MWEtOGE1OTJmZWE2YWMzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDE4MjAyMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWZmZTRhODA2ZWUzNzViZWJhNTQ3OTkyYmIwNWNkNTUwYTM2YjQ3ZTUzNDdiZWU1MGNjYjc3NjFmNzNjYTIxMjAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.U-f9ZcYMeyea995XCDt8Z4xoeWI-AURXaxJHdGkwxlY)
max curvature = 0.01 (longitudinal distance = 46.6 m)
![image](https://private-user-images.githubusercontent.com/21360593/253154864-0b8bbbf4-5b02-4e50-9ab1-840a3aa6c1e4.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTc1MjAsIm5iZiI6MTczOTU1NzIyMCwicGF0aCI6Ii8yMTM2MDU5My8yNTMxNTQ4NjQtMGI4YmJiZjQtNWIwMi00ZTUwLTlhYjEtODQwYTNhYTZjMWU0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDE4MjAyMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTNiYWJiM2FlNmM2NzI2NDc3OTJjNTk4NTBmMTEzMzIxZjdkN2JiNzc5ZTQ5ZjViNzdlYmU0ZDkxN2JiYmQwYjQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.ozyOqNMuUPam-vzML-d0iVqALs10S1prmC-XYuGxcf4)
Related links
TIERIV INTERNAL TICKET
TIERIV INTERNAL SCENARIO TEST
Tests performed
Notes for reviewers
None
Interface changes
None
Effects on system behavior
The shift path in starting gets more smooth.
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.