160 likes | 592 Views
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.
E N D
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
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