This repository contains the official implementation and experimental framework for our paper presented at the XI International Conference on Interactive Collaborative Robotics (ICR 2026).
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
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
github_2_3_ultra.webm
Visualization of SIPP execution across varying control sets.
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.
This repository provides everything needed to reproduce our results or adapt the planner for your own research. We recommend the following workflow:
- Generate a Control Set: Open the notebooks in
control_set_generator/to define your robot's kinematics and generate new motion primitive sets. - Select a Map: Download a grid from MovingAI (or use the provided ones) and place it in the
maps/directory. - Build a Scenario: Use
scenario_builder/to spawn dynamic obstacles on your map and define their behavior. - Run the Planner: Navigate to
planners_library/and use the interactive notebooks to test the SIPP algorithm on your newly created scenario. - 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. - 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.
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. |
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}
}