ROS Motion Planning
One repo implementing 40+ classic and learning-based robot path planners as ROS plugins
License
GPL-3.0
Overview
ros_motion_planning is a comprehensive collection of robot motion-planning algorithms implemented as plugins for the ROS navigation stack: global planners from A, Theta, D and JPS to RRT, Informed RRT* and Voronoi planners; local planners including DWA, TEB-style, PID, LQR and MPC; curve generation (Bezier, Dubins, Reeds-Shepp, B-spline); and learning-based planners such as DDPG. Every algorithm runs in the same Gazebo/RViz setup, making it a uniquely practical reference for comparing planners on equal footing.
The repository packages dozens of planners behind the standard ROS nav_core plugin interfaces, so any algorithm can be dropped into move_base (ROS 1) — with a companion ROS 2 implementation — and tested against the same costmaps, robots and Gazebo worlds. Global planning covers graph search (Dijkstra, A, D, LPA, D Lite, Theta, Lazy Theta, JPS, GBFS), sampling-based methods (RRT, RRT, Informed RRT, RRT-Connect), intelligent/evolutionary approaches (ACO, GA, PSO) and Voronoi-diagram planning. Local planning spans PID, DWA, APF, LQR and MPC controllers, and a curve-generation module implements Dubins, Reeds-Shepp, Bezier and spline paths. Learning-based planners (e.g. DDPG-based RL navigation) round out the set. Docker images, extensive per-algorithm animations and a matching Python visualization repo make it equally useful as a courseware reference and as a starting point for production planner development.
Why it matters
This is the most complete single implementation of the classic motion-planning canon in working ROS code: the textbook algorithms that are usually pseudocode in papers all run here in one consistent stack, which is why it has become the go-to reference for navigation engineers and robotics students alike.
Problem it solves
Comparing path planners fairly requires implementing each one inside the same navigation stack — months of plugin engineering. ros_motion_planning has already done it for 40+ algorithms, turning planner selection and teaching into a configuration change.
Key takeaways
- 40+ planners: graph search, sampling-based, evolutionary, curve generation, learning-based
- All implemented as standard ROS nav plugins runnable in the same Gazebo/RViz setup
- ROS 1 and ROS 2 support with Docker images for quick start
- Local planners include DWA, APF, PID, LQR and MPC controllers
- Companion Python repo provides matching algorithm visualizations for study
Who it is for
- Navigation engineers selecting planners for AMRs/AGVs
- Robotics students learning path-planning algorithms
- Researchers benchmarking new planners against classics
- Educators building motion-planning coursework
Limitations
- Breadth over depth — individual planners are reference implementations, not tuned production controllers
- GPL-3.0 license restricts closed-source reuse
- Primarily targets 2D wheeled-robot navigation (no manipulation planning)