Submission · Updated 2026-04-19

Code submission &
model validation.

How to validate, benchmark, and package your AI for the Virtual Qualifier. Major 2026-04-19 update baked in: no GPS, no absolute positioning, no depth; inputs are FPV visual stream + telemetry; outputs are Throttle / Roll / Pitch / Yaw; Windows only; active internet during runs (anti-cheat); multiple parallel sim instances supported; unlimited attempts, 8-min max per run.

VQ1
Completion (pass all gates in order)
<10 gates · clear
VQ2
Fastest valid time
<20 gates · complex
OS
Windows only
Linux not working
Attempts
Unlimited · 8-min cap per run
no rush per run

§ 01How submission works

Confirmed 2026-04-19. You submit a Python AI that consumes the FPV stream + telemetry and emits standard drone controls. VQ1 scores on gate-clearing completion. VQ2 scores on fastest valid time. Same course per round for all teams; gates change between VQ1 and VQ2. No human interaction during runs.

What the simulator provides

InputWhat it carriesConfirmed?
FPV visual streamForward-facing camera framesYes
TelemetryAttitude + body rates + accel (exact format TBD at credentials release)Yes · payload TBD
GPS / absolute positionNot provided
Depth / LiDARNot provided
Sensor shortcutsNot provided

What you send back

OutputWhat it controls
ThrottleCollective thrust
RollBody roll axis
PitchBody pitch axis
YawBody yaw axis

Exact transport (MAVLink command name, rate, units) ships with the sim package.

Scoring

RoundScoringGate countEnvironment
VQ1Completion (pass all gates in order)<10Short, simple, clear gates
VQ2Fastest valid time<20Longer · lighting · 3D objects · obstacles
PhysicalReal drones, controlled envTBDNo audience · CA · September
FinalReal drones + audienceTBDOhio · November · environmental distractions
Submission portal details (URL, upload format, deadline) will be provided by Anduril/DCL shortly before VQ1 launch. Watch dcl-project.com. Until then: validate and benchmark locally.

§ 02Platform requirements

RequirementNotes
OSWindows only. Linux is explicitly stated to not work.
InternetActive connection required during runs (anti-cheat).
Parallel instancesMultiple sim instances can run on one box — good for RL env fan-out.
Max run time8 minutes per attempt
AttemptsUnlimited within the qualification window
AutonomyNo human interaction during runs. Any manipulation = DQ.
Code reviewCode must be accessible for review if requested. Pin dep versions, include a one-command reproduction script.

§ 03Step 1 — Validate your code

Run the submission validator

python submit_check.py

Checks module imports, vision smoke test (detect + PnP on synthetic frame), controller smoke test, and config validity.

Run the standalone race test against SimDrone

python test_race_standalone.py

Runs the full pipeline against sim_drone.py (our 6DOF proxy), not the real AIGP sim. Useful for end-to-end smoke testing before the real sim is available. Don't use SimDrone as a substitute for real-sim validation once the sim drops — SimDrone's physics diverge (hover = 2mg, max pitch ~15°).

§ 04Step 2 — Benchmark detector modes

python benchmark_models.py                                # full (2 laps, ~2 min)
python benchmark_models.py --quick                        # 1 lap, ~1 min

What it measures

MetricWhat it meansGood value
Gates passedHow many gates the drone flew through (proxy course)All
Total timeTotal lap time<60s competitive
Detection rate% of frames where a gate was found>80%
Vision latencyPer-frame inference time<10ms (VQ1), <5ms (VQ2)

Detector comparison

DetectorBest forCorner accuracySpeedTraining
YOLO11n + YOLO11n-poseVQ1 + VQ2 (ships first)Good (4 corners)~5ms GPUDone (APEX)
RF-DETR-NanoVQ2 upgrade if YOLO is bottleneckGood~2.3ms TRTP2 retrain
U-Net + RANSACSub-pixel corners alternativeExcellent~5ms GPUDone
Color (HSV)Fallback if trained failsGood if gates highlighted<1ms CPUNone
VQ1 recommendation: ship YOLO11n + YOLO11n-pose (already trained, APEX Phase 1+2) with the VQ1 completion pilot. Lock in a passing submission. Benchmark sim-frame detection rate once credentials are released.

§ 05Step 3 — Package for submission

Run the packager

python submit_check.py package

Creates submission.zip. Only runs if validation passes (0 failures).

Typical package contents

FilePurpose
vq1_completion_pilot.pyZero-learning VQ1 completion stack
race_pipeline.pyMain orchestrator + entry point
vision_pipeline.pyGate detection + PnP
rl_controller.pyUsed by APEX PPO (VQ2)
gate_segmentation.pyU-Net alternative detector
race_logger.pyJSONL logging
drone_mpc_foundation.pySchemas (MPC itself retired)
race_config.pyConfiguration
camera_adapter.pyCamera input adapter
fpv_renderer.pyDev-only renderer

Add model weights (.onnx or .pt for the detector/keypoints, plus .onnx for the PPO policy if submitting for VQ2).

Final config check

SettingValueWhy
vision.modeYour best mode (benchmark result)Best detector for this course
connection.*UDP MAVSDK + UDP:5600 JPEG streamPer VADR-TS-002 §4.2 / §4.6
race.max_time_s480.08-minute limit per rules
gate.width / height1.5 / 1.5 m (inner aperture)VADR-TS-002 §3.7 · outer 2.7m

§ 06Submission checklist

#CheckHowExpected
1All modules importpython submit_check.py0 failures
2Vision detects gatespython submit_check.pyDetection + PnP pass
3Controller respondspython submit_check.pyCommands generated
4Standalone race completespython test_race_standalone.pyAll gates cleared on proxy
5Best detector identifiedpython benchmark_models.pyRecommendation printed
6Package createdpython submit_check.py packagesubmission.zip exists
7No human interaction in codeManual reviewNo input() / keyboard reads
8Deps pinned + reproducibleManual reviewOne-command reproduction script
9Runs on WindowsTest on target boxPasses same tests as Linux
When all 9 checks pass, your submission is ready. Upload via the portal once Anduril/DCL publishes it (watch dcl-project.com).
SUBMISSION-GUIDE · v2.0 2026-04-19 · ← Index · Strategy