Skip to content
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

perf(map_based_prediction): apply lerp instead of spline #8416

Merged

Conversation

ktro2828
Copy link
Contributor

@ktro2828 ktro2828 commented Aug 8, 2024

Description

Use interpotion::lerp instead of interpolation::spline in PathGenerator::generatePathForonLaneVehicle.
This PR improved worst case execution time of MapBasedPrediction::objectsCallback from 36.86[ms] to 28.47[ms] on my device.

  • Before
⏰ Worst Case Execution Time ⏰
objectsCallback: total 36.86 [ms], avg. 36.86 [ms], run count: 1
    ├── trafficSignalsCallback: total 0.01 [ms], avg. 0.01 [ms], run count: 1
    ├── removeStaleTrafficLightInfo: total 0.00 [ms], avg. 0.00 [ms], run count: 1
    ├── updateObjectData: total 0.00 [ms], avg. 0.00 [ms], run count: 1
    ├── getCurrentLanelets: total 0.28 [ms], avg. 0.28 [ms], run count: 1
    │   
  • After
⏰ Worst Case Execution Time ⏰
objectsCallback: total 28.47 [ms], avg. 28.47 [ms], run count: 1
    ├── trafficSignalsCallback: total 0.01 [ms], avg. 0.01 [ms], run count: 1
    ├── removeStaleTrafficLightInfo: total 0.00 [ms], avg. 0.00 [ms], run count: 1
    ├── updateObjectData: total 0.00 [ms], avg. 0.00 [ms], run count: 1
    ├── getCurrentLanelets: total 0.18 [ms], avg. 0.18 [ms], run count: 1
    │  

CPU time (during the node is active) comparison of PathGenerator::generatePathForonLaneVehicle is as follows:

Before: 1.792[s] -> After: 0.520[s]

SplineVsLerp

Related links

Parent Issue:

  • Link

How was this PR tested?

I checked predicted paths with this data. TIER IV INTERNAL LINK

TODO

  • Currently, it seems some objects output weired path in the latest main branch, but by reverting 147403f I confirmed these paths disappeared including this PR.
  • Testing whether there is degradation on planning modules.

Notes for reviewers

None.

Interface changes

None.

Effects on system behavior

None.

@github-actions github-actions bot added the component:perception Advanced sensor data processing and environment understanding. (auto-assigned) label Aug 8, 2024
Copy link

github-actions bot commented Aug 8, 2024

Thank you for contributing to the Autoware project!

🚧 If your pull request is in progress, switch it to draft mode.

Please ensure:

@ktro2828 ktro2828 marked this pull request as ready for review August 9, 2024 01:02
@ktro2828 ktro2828 force-pushed the perf/map_based_prediction/lerp branch from dff3817 to 4037867 Compare August 9, 2024 01:25
@ktro2828 ktro2828 changed the title perf(map_based_prediction): apply lerp interpolation instead of spline perf(map_based_prediction): apply lerp instead of spline Aug 9, 2024
Copy link
Contributor

@technolojin technolojin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this change also makes performance improvement!

I made similar change and is under testing.

I think it is better to check if there is degradation on planning.

@ktro2828
Copy link
Contributor Author

ktro2828 commented Aug 9, 2024

TODO
[ ] Testing whether there is degradation on planning modules.

I'm testing an influence of this PR on planning modules. TIER IV INTERNAL LINK

@ktro2828
Copy link
Contributor Author

ktro2828 commented Aug 9, 2024

TODO
[ ] Testing whether there is degradation on planning modules.

I'm testing an influence of this PR on planning modules. TIER IV INTERNAL LINK

@YoshiRi @kyoichi-sugahara @technolojin
The test passed and looks there is no degradation on planning modules.
Could you review this PR? I've experimented this PR following as TIER IV INTERNAL LINK.

Copy link
Contributor

@technolojin technolojin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@ktro2828 ktro2828 added the tag:run-build-and-test-differential Mark to enable build-and-test-differential workflow. (used-by-ci) label Aug 9, 2024
Copy link

codecov bot commented Aug 9, 2024

Codecov Report

Attention: Patch coverage is 0% with 5 lines in your changes missing coverage. Please review.

Project coverage is 23.72%. Comparing base (dcd56fe) to head (bef5997).
Report is 12 commits behind head on main.

Files Patch % Lines
...toware_map_based_prediction/src/path_generator.cpp 0.00% 5 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #8416      +/-   ##
==========================================
- Coverage   23.73%   23.72%   -0.01%     
==========================================
  Files        1379     1381       +2     
  Lines      101392   101406      +14     
  Branches    38534    38539       +5     
==========================================
- Hits        24063    24059       -4     
- Misses      74937    74955      +18     
  Partials     2392     2392              
Flag Coverage Δ *Carryforward flag
differential 2.14% <0.00%> (?)
total 23.73% <ø> (+<0.01%) ⬆️ Carriedforward from 4037867

*This pull request uses carry forward flags. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@technolojin technolojin self-assigned this Aug 9, 2024
Copy link
Contributor

@YoshiRi YoshiRi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@ktro2828 ktro2828 enabled auto-merge (squash) August 9, 2024 07:22
@ktro2828 ktro2828 merged commit 58276d5 into autowarefoundation:main Aug 9, 2024
29 of 30 checks passed
technolojin pushed a commit to technolojin/autoware.universe that referenced this pull request Aug 13, 2024
…ndation#8416)

perf: apply lerp interpolation instead of spline

Signed-off-by: ktro2828 <[email protected]>
esteve pushed a commit to esteve/autoware.universe that referenced this pull request Aug 13, 2024
…ndation#8416)

perf: apply lerp interpolation instead of spline

Signed-off-by: ktro2828 <[email protected]>
@ktro2828 ktro2828 deleted the perf/map_based_prediction/lerp branch August 13, 2024 15:46
technolojin pushed a commit to technolojin/autoware.universe that referenced this pull request Aug 15, 2024
…ndation#8416)

perf: apply lerp interpolation instead of spline

Signed-off-by: ktro2828 <[email protected]>
technolojin pushed a commit to technolojin/autoware.universe that referenced this pull request Aug 15, 2024
…ndation#8416)

perf: apply lerp interpolation instead of spline

Signed-off-by: Kotaro Uetake <[email protected]>
technolojin added a commit to tier4/autoware.universe that referenced this pull request Aug 15, 2024
…performance of map_based_prediction (#1464)

* fix(autoware_map_based_prediction): fix argument order (autowarefoundation#8031)

fix(autoware_map_based_prediction): fix argument order in call `getFrenetPoint()`

Signed-off-by: yucedagonurcan <[email protected]>

Co-authored-by: Shintaro Tomie <[email protected]>
Co-authored-by: Kotaro Uetake <[email protected]>

* perf(map_based_prediction): remove unncessary withinRoadLanelet() (autowarefoundation#8403)

Signed-off-by: Mamoru Sobue <[email protected]>

* perf(map_based_prediction): create a fence LineString layer and use rtree query (autowarefoundation#8406)

use fence layer

Signed-off-by: Mamoru Sobue <[email protected]>

* perf(map_based_prediction): apply lerp instead of spline (autowarefoundation#8416)

perf: apply lerp interpolation instead of spline

Signed-off-by: Kotaro Uetake <[email protected]>

* perf(autoware_map_based_prediction): improve orientation calculation and resample converted path (autowarefoundation#8427)

* refactor: improve orientation calculation and resample converted path with linear interpolation

Simplify the calculation of the orientation for each pose in the convertPathType function by directly calculating the sine and cosine of half the yaw angle. This improves efficiency and readability. Also, improve the resampling of the converted path by using linear interpolation for better performance.

Signed-off-by: Taekjin LEE <[email protected]>

* Update perception/autoware_map_based_prediction/src/map_based_prediction_node.cpp

Co-authored-by: Kotaro Uetake <[email protected]>

* Update perception/autoware_map_based_prediction/src/map_based_prediction_node.cpp

Co-authored-by: Kotaro Uetake <[email protected]>

---------

Signed-off-by: Taekjin LEE <[email protected]>
Co-authored-by: Shumpei Wakabayashi <[email protected]>
Co-authored-by: Kotaro Uetake <[email protected]>

* perf(map_based_prediction): improve world to map transform calculation (autowarefoundation#8413)

* perf(map_based_prediction): improve world to map transform calculation

1. remove unused transforms
2. make transform loading late as possible

Signed-off-by: Taekjin LEE <[email protected]>

* perf(map_based_prediction): get transform only when it is necessary

Signed-off-by: Taekjin LEE <[email protected]>

---------

Signed-off-by: Taekjin LEE <[email protected]>

* feat(autoware_universe_utils): add LRU Cache (autowarefoundation#8456)

Signed-off-by: Yukinari Hisaki <[email protected]>

* perf(autoware_map_based_prediction): speed up map based prediction by using lru cache in convertPathType (autowarefoundation#8461)

feat(autoware_map_based_prediction): speed up map based prediction by using lru cache in convertPathType

Signed-off-by: Yukinari Hisaki <[email protected]>

* fix(autoware_map_based_prediction): use surrounding_crosswalks instead of external_surrounding_crosswalks (autowarefoundation#8467)

Signed-off-by: Yukinari Hisaki <[email protected]>

---------

Signed-off-by: Mamoru Sobue <[email protected]>
Signed-off-by: Kotaro Uetake <[email protected]>
Signed-off-by: Taekjin LEE <[email protected]>
Signed-off-by: Yukinari Hisaki <[email protected]>
Co-authored-by: Onur Can Yücedağ <[email protected]>
Co-authored-by: Shintaro Tomie <[email protected]>
Co-authored-by: Kotaro Uetake <[email protected]>
Co-authored-by: Mamoru Sobue <[email protected]>
Co-authored-by: Shumpei Wakabayashi <[email protected]>
Co-authored-by: Yukinari Hisaki <[email protected]>
xtk8532704 pushed a commit to tier4/autoware.universe that referenced this pull request Aug 15, 2024
…ndation#8416)

perf: apply lerp interpolation instead of spline

Signed-off-by: ktro2828 <[email protected]>
Signed-off-by: xtk8532704 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component:perception Advanced sensor data processing and environment understanding. (auto-assigned) tag:run-build-and-test-differential Mark to enable build-and-test-differential workflow. (used-by-ci)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants