motion-planning / rrt-algorithms

n-dimensional RRT, RRT* (RRT-Star)
MIT License
600 stars 173 forks source link
algorithm algorithms geometry motion-planning random rrt rrt-star tree

rrt

Collection of rrt-based algorithms that scale to n-dimensions:

Utilizes R-trees to improve performance by avoiding point-wise collision-checking and distance-checking.

This would not have been possible without Steven M. LaValle's excellent Planning Algorithms book, specifically Chapter 5, Section 5: Sampling-Based Motion Planning, Rapidly Exploring Dense Trees.

Requirements

Usage

Define an n-dimensional Search Space, and n-dimensional obstacles within that space. Assign start and goal locations as well as the number of iterations to expand the tree before testing for connectivity with the goal, and the max number of overall iterations.

Search Space

Assign bounds to Search Space in form: [(x_lower, x_upper), (y_lower, y_upper), ...]

Start and Goal

Points represented by tuples of form: (x, y, ...)

Obstacles

Axis-aligned (hyper)rectangles represented by a tuples of form (x_lower, y_lower, ..., x_upper, y_upper, ...)

Non-axis aligned (hyper)rectangles or other obstacle representations should also work, provided that collision_free and obstacle_free are updated to work with the new obstacles.

Resolution

Assign resolution of edges:

Examples

Visualization examples can be found for rrt and rrt* in both 2 and 3 dimensions.

Contributing

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

References

  1. Steven Michael Lavalle. Planning Algorithms. New York (Ny), Cambridge University Press, 2014, pp. 228–237, lavalle.pl/planning/.
  2. LaValle, Steven. "Rapidly-exploring random trees: A new tool for path planning." Research Report 9811 (1998).
  3. Kuffner, James J., and Steven M. LaValle. "RRT-connect: An efficient approach to single-query path planning." Proceedings 2000 ICRA. Millennium Conference. IEEE International Conference on Robotics and Automation. Symposia Proceedings (Cat. No. 00CH37065). Vol. 2. IEEE, 2000.

License

MIT License