perf: optimize Reeds-Shepp path planning with NumPy vectorization#1242
Open
fishyy119 wants to merge 1 commit intoAtsushiSakai:masterfrom
Open
perf: optimize Reeds-Shepp path planning with NumPy vectorization#1242fishyy119 wants to merge 1 commit intoAtsushiSakai:masterfrom
fishyy119 wants to merge 1 commit intoAtsushiSakai:masterfrom
Conversation
Contributor
There was a problem hiding this comment.
Pull Request Overview
This PR optimizes the Reeds-Shepp path planning module by leveraging NumPy’s vectorized computations to significantly reduce runtime in key functions.
- Replaces iterative loops with vectorized operations in functions calc_interpolate_dists_list, generate_local_course, and a new interpolate_vectorized.
- Updates coordinate transformations in calc_paths to use NumPy matrix operations for improved performance.
Comments suppressed due to low confidence (2)
PathPlanning/ReedsSheppPath/reeds_shepp_path_planning.py:350
- Consider adding a docstring to calc_interpolate_dists_list to explain its role in precomputing distance arrays and how the endpoint is handled.
def calc_interpolate_dists_list(lengths: List[float], step_size: float) -> List[NDArray[np.floating]]:
PathPlanning/ReedsSheppPath/reeds_shepp_path_planning.py:399
- Add a docstring for interpolate_vectorized to detail its behavior for different modes ('S', 'L', 'R') and clarify how the vectorized computations are performed.
def interpolate_vectorized(
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR optimizes the Reeds-Shepp path planning module by leveraging NumPy's vectorized computations. The built-in test function in
reeds_shepp_path_planning.pywas executed 100 times to benchmark performance. The runtime improvements of key functions are as follows:calc_pathsgenerate_local_coursecalc_interpolate_dists_listOptimization Details
calc_interpolate_dists_listThe main bottleneck in this function was the use of
np.append, which accounted for about 70% of the runtime due to repeated memory reallocation. This has been eliminated by restructuring the function to avoid unnecessary array copying.generate_local_courseinterpolateloop with a vectorized versioninterpolate_vectorized, enabling batch computation with NumPy.calc_pathsConstructed SE(2) transformation matrices to accelerate coordinate transformations using NumPy matrix operations.
CheckList