Fast Marching Trees (FMT*)
Published:
Article Goal
Explain FMT* (Fast Marching Tree) algorithm for optimal motion planning
What is FMT*?
FMT* is an asymptotically optimal sampling-based motion planning algorithm that efficiently finds collision-free paths in high-dimensional configuration spaces. FMT* performs a “lazy” dynamic programming recursion on a predetermined set of probabilistically-drawn samples to grow a tree of paths that moves steadily outward in cost-to-arrive space.
Unlike RRT* which incrementally samples and builds the tree, FMT* pre-samples all points and then systematically connects them using a heap-based approach similar to Dijkstra’s algorithm. This makes FMT* particularly efficient when collision checking is expensive, as it defers collision checks until absolutely necessary.
Core Concepts
- Batch Sampling - FMT* pre-samples all points in the configuration space before starting the tree construction process.
- Lazy Dynamic Programming - Uses a systematic approach to build the tree by expanding nodes in order of their cost-to-come, similar to Dijkstra’s algorithm.
- Heap-Based Expansion - Maintains a priority queue (heap) to always expand the lowest-cost node next, ensuring optimal substructure.
- Deferred Collision Checking - Only performs collision checks when a connection is about to be added to the tree, reducing computational overhead.
The Math
Cost Function
\(c(x) = \text{cost-to-come from start to node } x\)
Sample Sets
FMT* partitions samples into three sets:
- \(V_{\text{unvisited}}\): nodes not yet considered
- \(V_{\text{open}}\): nodes in the heap ready for expansion
- \(V_{\text{closed}}\): nodes already expanded
Connection Radius
\(r_n = \gamma \left(\frac{\log n}{n}\right)^{1/d}\)
Where:
- \(\gamma\) is a problem-dependent constant
- \(n\) is the number of samples
- \(d\) is the dimension of the configuration space
Near Neighbor Set
\(N_r(x) = \{y \in V : \|x - y\| \leq r_n\}\)
Tree Update Rule
For each node \(z\) in the open set, FMT* finds the minimum cost connection: \(\text{parent}(z) = \arg\min_{y \in V_{\text{open}} \cap N_r(z)} c(y) + \|y - z\|\)
Convergence Rate
FMT* achieves a convergence rate of: \(O(n^{-1/d+\rho})\)
Where \(\rho\) is an arbitrarily small positive constant.
Algorithm Steps
- Initialize - Sample \(n\) points uniformly in the free configuration space
- Setup Sets - Place start in \(V_{\text{open}}\), goal and others in \(V_{\text{unvisited}}\)
- Heap Expansion - Extract minimum cost node \(z\) from \(V_{\text{open}}\)
- Find Neighbors - Identify all unvisited neighbors \(N_r(z) \cap V_{\text{unvisited}}\)
- Lazy Connection - For each neighbor, check if connection improves cost-to-come
- Collision Check - Only now perform collision checking for promising connections
- Update Tree - Add collision-free connections to tree, move nodes to appropriate sets
- Repeat - Continue until goal is reached or \(V_{\text{open}}\) is empty
Advantages of FMT*
- Asymptotic Optimality - Guaranteed to converge to optimal solution
- Fast Initial Convergence - Quickly finds good solutions, then slowly improves them
- Efficient for Expensive Collision Checking - Lazy evaluation reduces unnecessary collision checks
- High-Dimensional Performance - Particularly effective in high-dimensional spaces
- Deterministic Expansion - Uses systematic heap-based expansion rather than random sampling
Limitations
- Memory Requirements - Must store all n samples in memory from the start
- Parameter Tuning - Connection radius requires careful tuning for optimal performance
- Plateau Behavior - May converge slowly to true optimum within a homotopy class
- Static Planning - Not inherently designed for dynamic replanning scenarios
