Our robots need to know how to get from a start point to an end point
Our path-planning algorithm of choice is the RRT (Rapidly-Exploring Random Tree)
How the RRT works
Start building our tree by placing a root node at the destination
Randomly select some coordinate in the position space
Identify existing node in the tree that is nearest to that coordinate
Add new node in tree branching from nearest node to random coordinate
Repeat 2-4 until a node is created at our destination.
The series of connected nodes from root to destination forms the path that the robot will follow
Smooth out path with overlaid Bézier curve
Sounds really inefficient
Why waste computation time branching out in random directions?
What advantages could there be in random branching?
Why not use a less computationally intense algorithm like A*?
Advantages of RRT
Specialized for continuous configuration spaces
Can handle kinodynamic constraints
Algorithm can be modified for various needs and preferences
Repository Code
rrt-viewer
rrt
rrt-viewer
Displays window for running RRT
Uses QT for graphics
rrt
Contains RRT implementation
Defines state space
Bi-RRT
We execute two RRTs, one rooted at the start node and the other at the end node