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