Skip to content

Path Planner: Elastic Bands#60

Open
guilyx wants to merge 8 commits intoShisatoYano:mainfrom
guilyx:feat/elastic-bands
Open

Path Planner: Elastic Bands#60
guilyx wants to merge 8 commits intoShisatoYano:mainfrom
guilyx:feat/elastic-bands

Conversation

@guilyx
Copy link
Contributor

@guilyx guilyx commented Feb 9, 2026

Summary

  • Implement Elastic Bands path planner (Quinlan & Khatib, 1993) as a new planning component
    A* finds the initial seed path on the occupancy grid, then Elastic Bands optimises it using contraction/repulsive forces with SDF-based obstacle distances
  • Tuned parameters (rho0=5, kc=0.3, kr=-0.05, lambda=0.6, step_size=1) for the project's narrow-space 90×120 grid
  • Clearance zones (grey cells) correctly treated as impassable in both A* search and SDF computation
  • Search GIF shows A* expansion → initial path → EB optimisation with bubble circles and blue path trace converging to the smoothed solution
  • Navigation GIF shows car following the smoothed path with PurePursuit (standard project look)

Test plan

[x] pytest test/test_elastic_bands_path_planning.py passes
[x] elastic_bands_search.gif shows A* search, initial path, then EB optimisation with visible path pulling taut
[x] elastic_bands_navigate.gif shows car following the smoothed path to goal
[x] No regressions on existing planner tests (test_astar_path_planning.py, etc.)

A* seed path optimised with Elastic Bands (Quinlan & Khatib, 1993):
bubble chain with contraction/repulsive forces, SDF-based obstacle
distance, and overlap maintenance.
rho0: 20→5, kc: 0.05→0.3, kr: -0.1→-0.05, lambda: 0.7→0.6,
step_size: 3→1, alpha clamped to 3.0. Path now stays 4+ cells
from obstacles while shortening by ~5%.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant