Safe Interval Path Planner (#1184)

* it works and is WAY faster than a*

* some bug fixes from testing different scenarios

* add some docs & address todos

* add sipp test

* spiff up comments

revert changes in speed-up

* explain what the removal is doing

* linting

* fix docs build

* docs formatting

* revert change to file (maybe linter did it?)

* point at gifs in gifs repo

* use raw githubusercontent gif links

* change formatting on planner results

* format output differently

* proper formatting final

* missing underline

* revert unintended change

* grammar + add descriptions for gifs

* missing ::

* add title to gifs section

* dont use sections for sub-sections

* constent a* spelling

* Update PathPlanning/TimeBasedPathPlanning/GridWithDynamicObstacles.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update tests/test_safe_interval_path_planner.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update docs/modules/5_path_planning/time_based_grid_search/time_based_grid_search_main.rst

Co-authored-by: Atsushi Sakai <asakai.amsl+github@gmail.com>

* Update PathPlanning/TimeBasedPathPlanning/SafeInterval.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* addressing comments

* revert np.full change

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Atsushi Sakai <asakai.amsl+github@gmail.com>
This commit is contained in:
Jonathan Schwartz
2025-03-17 09:01:07 -04:00
committed by GitHub
parent 41187d67b1
commit aa61a6ea57
4 changed files with 434 additions and 2 deletions

View File

@@ -33,7 +33,48 @@ After::
When starting at (1, 11) in the structured obstacle arrangement (second of the two gifs above).
References:
Safe Interval Path Planning
~~~~~~~~~~~~~~~~~~~~~~~~~~~
The safe interval path planning algorithm is described in this paper:
`SIPP: Safe Interval Path Planning for Dynamic Environments <https://www.cs.cmu.edu/~maxim/files/sipp_icra11.pdf>`__
It is faster than space-time A* because it pre-computes the intervals of time that are unoccupied in each cell. This allows it to reduce the number of successor node it generates by avoiding nodes within the same interval.
**Comparison with SpaceTime A*:**
Arrangement 1 starting at (1, 18)
SafeInterval planner::
Found path to goal after 322 expansions
Planning took: 0.00730 seconds
SpaceTime A*::
Found path to goal after 2717154 expansions
Planning took: 20.51330 seconds
**Benchmarking the Safe Interval Path Planner:**
250 random obstacles::
Found path to goal after 764 expansions
Planning took: 0.60596 seconds
.. image:: https://raw.githubusercontent.com/AtsushiSakai/PythonRoboticsGifs/refs/heads/master/PathPlanning/TimeBasedPathPlanning/SafeIntervalPathPlanner/path_animation.gif
Arrangement 1 starting at (1, 18)::
Found path to goal after 322 expansions
Planning took: 0.00730 seconds
.. image:: https://raw.githubusercontent.com/AtsushiSakai/PythonRoboticsGifs/refs/heads/master/PathPlanning/TimeBasedPathPlanning/SafeIntervalPathPlanner/path_animation2.gif
References
~~~~~~~~~~~
- `Cooperative Pathfinding <https://www.davidsilver.uk/wp-content/uploads/2020/03/coop-path-AIWisdom.pdf>`__
- `SIPP: Safe Interval Path Planning for Dynamic Environments <https://www.cs.cmu.edu/~maxim/files/sipp_icra11.pdf>`__