readme · case study

Hangar readme · solar case study

From polygon to QGC draft
in one hangar pass

This page is the operator README. Follow the solar-farm case study end to end — plain site polygon, or perception detections (YOLO / demo / VLM) — then export a draft mission. Everything here is experimental. You fly it; you own the risk.

1. The story

You run a mid-size solar site. You want two to four drones to lawnmower the array, skip a truck parked on a string, and mark a thermal hotspot for a closer look — then open the result in QGroundControl.

  1. Accept the liability gate on the homepage.
  2. Choose vertical preset solar.
  3. Either draw/upload a site polygon or load perception detections.
  4. Re-confirm the disclaimer and hit customize / plan.
  5. Read SAFETY_REPORT.md, then download QGC plans.

2. Path A — site polygon only

Best when you already have a boundary and do not need CV.

  1. Open Hangar planner.
  2. Set Vertical preset to solar (≈5 m cells, mid altitude).
  3. Draw a polygon on the map, or upload a GeoJSON boundary (sample in the repo: examples/sites/solar_farm.geojson).
  4. Optional: add Point features with "role": "depot" or "depot": true for hangar placement.
  5. Check I re-confirm the disclaimer → Customize mission.
  6. Wait for metrics (coverage, makespan, drones) and the path preview.

Fair-use grid cap on the public demo keeps jobs honest — not a paywall. Local installs can raise FLEET_MAX_CELLS.

3. Path B — perception → mission

Best when YOLO / a thermal model / a VLM already labeled the site. Roles: cover avoid inspect depot

  1. Scroll to Perception Lab.
  2. Pick ontology solar / infra.
  3. Load demo detections for a one-click walkthrough, or upload a detections FeatureCollection (sample: examples/perception/solar_detections.geojson), or type a command like survey panels, avoid trucks and run NL.
  4. Confirm cover / avoid / inspect overlays on the perception map.
  5. With the planner disclaimer still checked, hit Plan from perception.
  6. Read the perception report JSON — class counts are not a clearance.

Full adapter docs (YOLO, ONNX, llama.cpp / vLLM, domain plugins): docs/PERCEPTION.md

4. Export & preflight

  1. Download SAFETY_REPORT.md first — every checklist item is yours.
  2. Grab QGC plan — drone N files (one per scheduled aircraft).
  3. Optional: Missions GeoJSON, waypoints CSV, or the full job zip.
  4. In QGroundControl: inspect home / RTH, altitude mode, geofence, and every leg.
  5. Multi-drone schedules are not spatially deconflicted — separate yourself.

Case-study success looks like

  • Coverage of reachable grid cells near 100% (or an explained skip list).
  • Avoid zones empty of free cells (truck / crane punched out).
  • Inspect points visible in the bundle for the hotspot follow-up.
  • You still treat the export as a draft until GCS review is done.

5. Same case study on the CLI

Mirror of Path B for scripts and CI:

git clone https://github.com/mmorri/pimpmydrone.git
cd pimpmydrone
make build
cd python && uv sync

# Perception → site → plan
uv run python -m fleet perception ingest \
  --input ../examples/perception/solar_detections.geojson \
  --output /tmp/site.geojson --ontology solar

uv run python -m fleet perception plan-from-perception \
  --input ../examples/perception/solar_detections.geojson \
  --output-dir ../outputs/case-solar --vertical solar

# Or polygon-only
uv run python -m fleet from-geo \
  --geojson ../examples/sites/solar_farm.geojson \
  --output-dir ../outputs/site-solar --vertical solar

Local UI: make serve → http://127.0.0.1:8000.

6. What to try next