Skip to content

PathPlanning/LatticeSIPP

Repository files navigation

Path Planning with Motion Primitives in Dynamic Environments: SIPP on Lattices

Conference License: MIT Python Version Jupyter Docker

This repository contains the official implementation and experimental framework for our paper presented at the XI International Conference on Interactive Collaborative Robotics (ICR 2026).

📖 About The Project

Path planning for non-holonomic robots in environments with dynamic, moving obstacles is a challenging task. This project provides a comprehensive, open-source framework that bridges Safe Interval Path Planning (SIPP) with a State Lattice representation.

By defining the state space as discrete poses $(x, y, \theta)$ connected by kinematically feasible motion primitives aligned with a regular grid, we effectively handle system dynamics and sensor noise. While the individual concepts of SIPP and State Lattices are well-known, combining them robustly for dynamic grid environments (such as standard MovingAI maps) requires careful implementation. This repository provides a complete end-to-end ecosystem: from motion primitive generation and custom scenario building to parallelized server-side rendering and deep benchmarking.

🔍 Visual Summary: Impact of Control Sets

The following benchmark summary demonstrates the algorithm solving the exact same task (identical map, start/goal states, and dynamic obstacles) using different control sets. Notice how increasing the expressiveness of the motion primitives (from a minimal kinematically feasible set to expanded $2^k$ sets) dramatically alters the resulting trajectory and execution timing.

github_2_3_ultra.webm

Visualization of SIPP execution across varying control sets.


📂 Repository Structure

The repository is modularly designed, separating core algorithms from data generation and visualization tools:

  • common/: Shared Python modules, including fundamental data structures, basic A* implementations, and Matplotlib visualization utilities.
  • control_set_generator/: Scripts and Jupyter notebooks to generate custom motion primitives, calculate their motion profiles (time occupancy per grid cell), and tune/visualize their kinematics.
  • data/: Pre-generated motion primitive control sets. Contains 6 default sets used in the paper's experiments.
  • dynamic_obstacles/: Trajectory and dimensional data for dynamic obstacles, tailored for specific maps.
  • maps/: Grid maps in the standard MovingAI format.
  • media/: Auto-generated assets, including trajectory plots, GIFs, and MP4 animations.
  • planners_library/: The core SIPP implementations running on motion primitives. Includes interactive Jupyter notebooks demonstrating the search process and trajectory generation.
  • python-benchmark/: The benchmarking suite for large-scale comparative tests. Contains scripts to run massive evaluations and notebooks to aggregate results into publication-ready graphs and LaTeX tables.
  • scenario_builder/: Tools and interactive notebooks for placing dynamic obstacles on chosen maps, generating their moving trajectories either manually or procedurally.
  • server_side/: A containerized environment (Dockerfile and setup guide) optimized for high-performance, multi-core remote servers. Ideal for offloading the heavy parallelized rendering of complex multi-frame video animations.

🚀 Research Workflow: Getting Started

This repository provides everything needed to reproduce our results or adapt the planner for your own research. We recommend the following workflow:

  1. Generate a Control Set: Open the notebooks in control_set_generator/ to define your robot's kinematics and generate new motion primitive sets.
  2. Select a Map: Download a grid from MovingAI (or use the provided ones) and place it in the maps/ directory.
  3. Build a Scenario: Use scenario_builder/ to spawn dynamic obstacles on your map and define their behavior.
  4. Run the Planner: Navigate to planners_library/ and use the interactive notebooks to test the SIPP algorithm on your newly created scenario.
  5. Render Animations (Optional): If you are generating long, complex videos, deploy the server_side/ Docker container to a powerful machine to render frames in parallel.
  6. Benchmark & Analyze: Use python-benchmark/ to run large-scale automated tests across multiple maps and control sets, automatically generating charts and tables for your paper.

🎥 Complex Environment Demos

Here are two examples of the algorithm operating in highly constrained and large-scale scenarios:

Tight Navigation (Empty Map) Large-Scale Search (Denver)
perfect-github-demo.webm
github_denver_1.mp4
A large-footprint agent skillfully squeezing between dynamically moving obstacles. Extensive pathfinding over a massive MovingAI map requiring prolonged trajectory calculations.

📄 Citation

If you use this code, ideas, or visualizations in your research, please cite our ICR 2026 paper:

APA:

Agranovskiy, M. (2026). Path Planning with Motion Primitives in Dynamic Environments: SIPP on Lattices. In Proceedings of the XI International Conference on Interactive Collaborative Robotics (ICR).

BibTeX:

@inproceedings{icr2026_sipp_lattice,
  author    = {Agranovskiy, Marat},
  title     = {Path Planning with Motion Primitives in Dynamic Environments: SIPP on Lattices},
  booktitle = {Proceedings of the XI International Conference on Interactive Collaborative Robotics},
  year      = {2026},
  note      = {In print}
}

About

Safe Interval Path Planning (SIPP) on State Lattices for grid-based dynamic environments. Presented at ICR 2026.

Resources

License

Stars

3 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors