Rapidly Exploring Random Trees for Path Planning: RRT-Connect
Dave Lattanzi
Background
“Complete” algorithms (Dijkstra) are slow• especially in higher dimensional
configuration space
Kuffner and LaValle proposed using randomized methods
Published in IEEE, 2000
Basic Concept
Use randomly exploring trees
Build trees from both start and finish nodes
Path is found when the two trees connect
Building a Random Tree
Tree building = graph building
Start the tree at a given node
Pick a random node in the graph of the map
Find the nearest node in the tree
Extend from nearest node by steps towards random node as long as possible
Add the new edge and vertex to the tree
Random Tree Pseudocode
Def BuildTree(start_node, Nnodes, Δstep):
Initialize(Tree, start_node)
For i = 1 to Nnodes:
Get(random_node)
nearest_node = Nearest(random_node, tree)
new_node = Extend(nearest_node, Δstep)
Tree.add(new_node)
Return Tree
RRT-Connect
Build a tree from start and end nodes
Path is found when two trees meet
RRT Connect Pseudocode
Def RRT(start_node, end_node, K (total nodes in map), Δstep):
Initialize(startTree, start_node)
Initialize(endTree, end_node)
for i = 1 to K:
ExtendTree(startTree, Δstep)
ExtendTree(endTree, Δstep)
if Connect(startTree,endTree) = True:
Return Path
From Kuffner’s website
Advantages and Disadvantages
Fast!
Will always find a path if possible
No parameter tuning
But:
Computational time is highly variable
Path is not repeatable or predictable
Lots of hunting for nearest neighbors in big lists
Top Related