Awesome
motion-planners
Flexible python implementations of several robotic motion planners.
Citation
Caelan Reed Garrett. Motion Planners. https://github.com/caelan/motion-planners. 2017.
Example
A simple motion planning problem in 2D workspace and 2D configuration space that only depends on Tkinter.
motion-planners$ python -m motion_planners.tkinter.run
Algorithms
Single-Query
Sampling-Based:
<img src="images/rrt.png" height="200"> <img src="images/birrt.png" height="200"> <img src="images/rrt*.png" height="200">
Grid Search
<!--* [Dijkstra/Uniform-Cost Search(UCS)](https://github.com/caelan/motion-planners/blob/691100867352db24535f29d1f4065b6da059ade3/motion_planners/discrete.py#L40)-->Other
<!--* Diverse * Random Restarts--><img src="images/lattice.png" height="200"> <img src="images/rrt+shortcut.png" height="200">
Multi-Query
Sampling-based:
<!--* Star Roadmap--><img src="images/degree_prm.png" height="200"> <img src="images/eager_prm.png" height="200"> <img src="images/lazy_prm.png" height="200">
API
Each motion planner takes as input python functions that perform its primitive operations, allowing them to be flexibly used in many software environments.
- :param
distance_fn
: Distance function - distance_fn(q1, q2)->float - :param
sample_fn
: Sample function - sample_fn()->conf - :param
extend_fn
: Extension function - extend_fn(q1, q2)->[q', ..., q"] - :param
collision_fn
: Collision function - collision_fn(q)->bool
Applications
- PyBullet Motion Planning - https://github.com/caelan/pybullet-planning
- PyBullet Task and Motion Planning (TAMP) - https://github.com/caelan/pddlstream
<img src="images/turtlebot_motion.png" height="200"> <img src="images/pr2_motion.png" height="200"> <img src="images/se3.png" height="200">