One command brings up sim, robots, and ground control
airstack up starts the simulator, one container per robot, and a
Foxglove-based ground control station, wired together over ROS 2. Flags select
the simulator, scene, and fleet size — no launch-file surgery.
airstack up --sim airsim --scene neighborhood
airstack up --sim isaac --robots 3 --scene full-warehouse
airstack up --fleet sim_three_mixed
Waiting for the AirStack stack to become flight-ready...
✓ robot containers running
✓ sim publishing /clock
✓ robot_1: autonomy nodes up
✓ robot_1: MAVROS connected to PX4
✓ robot_1: PX4 EKF ready (armable)
✓ robot_2 … robot_3 …
Stack is flight-ready (143s). Takeoff is available.
Actual airstack ready output from the 3-robot Isaac Sim
bring-up shown in the hero video.
Isaac Sim: three robots, parallel TakeoffTask +
FixedTrajectoryTask action goals — the same actions the GCS and
system tests send.
Same code in sim and on the vehicle
The desktop dev container and the Jetson (L4T) onboard container extend one base service and launch the same stack entry point. What you test in simulation is what the vehicle runs.
robot-desktop: # x86 dev machine + sim
extends: {file: ./robot-base-docker-compose.yaml,
service: robot_base}
robot-l4t: # Jetson Orin, JetPack/L4T
extends: {file: ./robot-base-docker-compose.yaml,
service: robot_base}
# both dispatch the same entry launch:
# stacks/full_default/launch/stack.launch.xml
CI flies the whole stack, not just unit tests
Pull requests run pytest campaigns against the live simulators on ephemeral GPU runners: bring-up, sensor rates, takeoff–hover–land, fixed trajectories with cross-track error, and waypoint navigation judged on the odometry track.
build_dockerimage buildsbuild_packagescolcon in every containerlivelinesscontainers · /clock · nodessensorstopic Hz · RTFtakeoff_hover_landflight chain per robotautonomytrajectories + path RMSEwaypoint_flightordered corridor arrivalairstack test -m takeoff_hover_land --sim isaacsim --num-robots 1 -v
Marks defined in tests/; simulation marks run on one-job ephemeral GPU workers, and metrics regressions fail the report.
AI agents can drive this repo
Module boundaries, an AGENTS.md contract, and 23 step-by-step skills give
coding agents the same on-ramp as humans: scaffold a package, wire it into a stack,
fly it in sim, document it.
Proof over promise: every video on this page was captured by
an AI agent — it brought the stack up, scripted the flights through the
task actions, implemented the Isaac viewport follow-camera it filmed with
(pegasus_app.py), and edited the clips.
Real skill guides in the repo — each one a tested, end-to-end workflow an agent (or a new teammate) can follow.
The whole system on one screen
One workstation, one airstack up: Isaac Sim with the drone
follow-camera, Foxglove tracing all three robots' trajectories live, and the CLI's
flight-ready checklist. Layered autonomy — sensors, perception, planning, controls,
interface — runs underneath, each module swappable behind standard ROS 2 topics
(architecture docs).
Unedited desktop capture during the 3-robot mission recorded for this page — sim, ground control, and CLI, all live.
Built and flown by the AirLab
AirStack is developed at Carnegie Mellon University's Robotics Institute AirLab (PI: Sebastian Scherer), building on the lab's research in obstacle avoidance, multi-robot exploration, vision-based state estimation, and search-and-rescue field robotics. Contributors span students, researchers, and field teams.
Fly it tonight
No Linux box or GPU? Run AirStack on OSMO from any laptop.