arrow_left_alt

ARCO (Autonomous Routing, Control, and Observation) is an open-source Python library for autonomous navigation, designed as a reference for modern autonomy stacks. It provides:

  • Mapping: Discrete and continuous spatial representations (grids, graphs, occupancy)
  • Planning: Path search (A*, D*-lite) and sampling-based planners (RRT*, SST)
  • Guidance: Trajectory shaping (interpolation, primitives) and feedback control (PID, Pure Pursuit, MPC)

Video Benchmarks

Good results are visual results. These are some simularions generated with ARCO.

ARCO v0.2.0 benchmark between 2D RRT* and SST pathfinding algorithms in a simulated city road network environment.
ARCO v0.2.0 benchmark between 3D RRT* and SST pathfinding algorithms for a PPP robot (like a gantry arm) in an industrial environment.

Documentation Index

Architecture

ARCO is organized around three layers, mirroring the decomposition of a real autonomy stack:

  • Mapping: Handles spatial representation (grids, graphs, occupancy)
  • Planning: Searches or samples for feasible paths (A*, RRT*, SST, etc.)
  • Guidance: Tracks the resulting path with feedback controllers (Pure Pursuit, PID, MPC)

Each layer is independently testable and documented, with visualizations for step-by-step inspection of algorithm behavior.

Core Map Families

  • Manhattan Grid: Axis-aligned neighbors with Manhattan metric ($L_1$)
  • Euclidean Grid: Diagonal-capable neighbors with Euclidean metric ($L_2$)
  • Graph hierarchy: Graph → WeightedGraph → CartesianGraph → RoadGraph
  • Occupancy: Abstract continuous-space obstacle-query interface (KDTreeOccupancy)

Guidance and Control

  • Exploration primitives: Kinematic steering constraints for graph growth
  • Interpolation: Conversion of discrete plans into smooth trajectories
  • Controllers: Path tracking and control law generation

Path finding algorithms

Algorithm Status Notes
A* ✅ Done Grid and graph-based, configurable heuristics
Route Planning ✅ Done A* integration for road networks with waypoint smoothing
RRT* ✅ Done Asymptotically optimal sampling-based planner
SST ✅ Done Stable Sparse Trees for kinodynamic planning
D* Lite ⏸️ Stub Dynamic replanning (API exists, not implemented)

Requires Python 3.10+

References

Theory notes are under docs. Core references:

  • Hart, Nilsson, Raphael (1968). A Formal Basis for the Heuristic Determination of Minimum Cost Paths.
  • Stentz (1994). Optimal and Efficient Path Planning for Partially-Known Environments.
  • LaValle (1998). Rapidly-Exploring Random Trees: A New Tool for Path Planning.
  • LaValle (2006). Planning Algorithms. Cambridge University Press.
  • Karaman, Frazzoli (2011). Sampling-based Algorithms for Optimal Motion Planning.
  • Li et al. (2016). Asymptotically Optimal Sampling-based Kinodynamic Planning.