perf: optimize Reeds-Shepp path planning with NumPy vectorization #1242
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.py
was executed 100 times to benchmark performance. The runtime improvements of key functions are as follows:calc_paths
generate_local_course
calc_interpolate_dists_list
Optimization Details
calc_interpolate_dists_list
The 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_course
interpolate
loop with a vectorized versioninterpolate_vectorized
, enabling batch computation with NumPy.calc_paths
Constructed SE(2) transformation matrices to accelerate coordinate transformations using NumPy matrix operations.
CheckList