JacopoPan/aerial-autonomy-stack

An open harness to simulate and deploy perception-based PX4/ArduPilot/Betaflight swarms with ROS2, YOLO, NVIDIA Jetson

Aerial‑Autonomy‑Stack (AAS)

What it is – AAS is an open‑source software stack that lets you develop, simulate, and run multi‑drone missions on real hardware. It ties together popular autopilots (PX4, ArduPilot), the ROS 2 robotics framework, and NVIDIA‑accelerated perception (YOLO, LiDAR odometry). The goal is a “batteries‑included” pipeline that works from a laptop simulation all the way to a Jetson‑based drone.

Key capabilities

  • Multi‑vehicle simulation – quadrotors, VTOLs and tailsitters can be run together in Gazebo, with wind and wave plugins. The simulation can run faster‑than‑real‑time and supports many parallel instances.
  • ROS 2‑centric control – autopilot interfaces are exposed as ROS 2 actions/services (via MAVROS or XRCE‑DDS). You can command take‑off, land, orbit, off‑board controllers, or run custom behavior‑tree missions.
  • Perception stack – YOLO object detection (ONNX GPU runtime) and LiDAR odometry (KISS‑ICP). Optional VIO/LIVO packages (openvins, fastlio, superodom, mimosa) are available for GNSS‑denied flight.
  • Dockerised environments – separate containers for simulation, ground‑station, and aircraft. Images are provided for both amd64 (desktop) and arm64 (Jetson) and can be built locally or pulled from GitHub Container Registry.
  • Hardware deployment – tested on Holybro Jetson baseboards with Pixhawk 6X, IMX219 camera and Livox Mid‑360S LiDAR. Scripts handle building, launching, and HITL (hardware‑in‑the‑loop) testing.
  • Gymnasium RL interface – a Python package (aas‑gym) wraps the stack as a Gymnasium environment, enabling reinforcement‑learning experiments at various speeds (step, speed‑up, vectorised).

Typical workflow

  1. Install on Ubuntu 24.04 (or WSL) and pull the Docker images.
  2. Run a simulation with sim_run.sh, choosing autopilot, vehicle count, world, and real‑time factor.
  3. Control drones via ROS 2 actions/services, a ground‑station node (dtc_controller), or QGroundControl.
  4. Analyze logs with PX4 flight_review, MAVExplorer, or PlotJuggler.
  5. Deploy to a Jetson board using deploy_build.sh/deploy_run.sh, optionally linking the Jetson to a real‑world network (AIR_SUBNET) and performing HITL tests.

Who it’s for – Researchers and engineers building perception‑driven autonomy for aerial robots, especially those needing fast simulation, ROS 2 integration, and NVIDIA GPU acceleration. The stack abstracts low‑level autopilot details while still allowing custom controllers and behavior trees.

Where to start – Read the BOM.md for hardware, RATIONALE.md for design goals, and follow the quick‑start commands in the README. The repository also includes a citation for academic use.

Related

  • Project
  • Project
  • Dispatch
  • Project
  • Project