Drone simulation infrastructure.

PX4 & ArduPilot SITL in the cloud. Fleets, regression suites, results before the merge.

Request access
fleet 8f3a21 · 24 vehicles
v01
v02
v03
v04
v05
v06
v07
v08
v09
v10
v11
v12
v13
v14
v15
v16
v17
v18
v19
v20
v21
v22
v23
v24
23 healthy1 failed

Every drone team writes the same CI job: provision a runner, build PX4, build Gazebo, fly one vehicle, wait.

How it works ↓

How it works

Push flight-stack code. Hangars boots PX4 or ArduPilot SITL in the cloud, flies your mission suite against it, and posts pass/fail back to the pull request. No runners to provision, no Gazebo to build.

You open a PR

Any change to the flight stack: navigation, control, mission logic.

src/nav/geofence.cpp
- if (d > _gf_max.get())
+ if (d > _gf_max.get()*.98f)

Your CI calls Hangars

Five lines in the workflow you already run. Name a stack and a vehicle count.

.github/workflows/ci.yml
- uses: hangars-dev/run@v1
with: { sitl: px4 }

Fleets boot in the cloud

One SITL instance per vehicle, real MAVLink, your mission files. Nothing to provision.

sim log · v3
[t+0.0s] 4/4 heartbeat
[t+184s] v3 fence exit

Results land on the PR

Pass/fail, plus the flight log, MAVLink trace and a replay for every failure.

hangars[bot] commented
18 passed · 1 failed
v3 geofence-breach t+184s

Private beta. Bring a flight stack and a test suite.