Architecture
Planning loop
- A query provides start and goal configurations.
- The standard run evaluates an RRT baseline on every query and a TrajOpt baseline whenever the RRT baseline produced a path; their metrics are recorded.
- GCS then tries to connect the configurations through the current convex-region graph.
- If coverage or the GCS solve is insufficient, the fallback branch refreshes the bidirectional RRT* path and reduces it to uniform or experimental smart keypoints.
- IRIS grows collision-free convex regions around those seeds.
- Non-redundant regions update the graph, and GCS is retried.
- The expanded cover remains available to later queries in the process.
This online update is the project's research subject. It does not guarantee that every collision-free path will be found or that expansion is faster than building a static cover for every workload. Standard-run timing includes RRT* and usually TrajOpt baseline evaluation even when GCS succeeds. TrajOpt needs a compatible solver; without one, its baseline cannot provide a successful optimized trajectory.
Components
| Module | Responsibility |
|---|---|
config.py |
Dependency-light validation of user-facing runtime options |
scenes.py |
Packaged scene configuration and Drake diagram construction |
planners/online.py |
Query loop and coordination of planning components |
planners/gcs.py |
Paths through a graph of convex configuration-space regions |
planners/rrt_star.py |
Sampling-based fallback and keypoint extraction |
regions/iris.py |
Collision-free IRIS region construction and persistence |
visualization.py |
Meshcat state, markers, paths, and animations |
metrics.py |
Dependency-light trajectory quality calculations |
Graphs of Convex Sets
Each vertex represents a convex region in configuration space. Edges connect intersecting regions. GCS optimizes a continuous trajectory through a connected sequence of regions; a disconnected or incomplete cover can therefore prevent a query from being solved by the current graph.
IRIS and RRT* fallback
RRT* supplies a fallback route through free configuration space. Keypoints from that route are seeds rather than final convex regions. IRIS inflates each seed into a collision-free convex set, subject to the local geometry and solver behavior. Redundancy checks limit duplicate additions before the graph is rebuilt.
Package boundaries
The stable entry points for 0.1.0 are exported from online_gcs. Planner
internals, private methods, statistics dictionaries, visualization paths, and
experiment scripts may change before 1.0. CLI parsing stays dependency-light and
imports Drake-backed classes only after arguments pass validation.