Inspiration

The WHITEOUT mission requires a fleet to detect and track ships across Arctic terrain. Fixed cameras leave blind spots, aircraft have limited viewing angles, and sightings become stale. Freeze coordinates these sensors to improve coverage and maintain contact.

What it does

Freeze controls two camera towers, a quadcopter, and a fixed-wing plane through five steps:

  1. Select tower positions. Analyze Fort Ross terrain and camera geometry, then compare tower sites and aircraft flight settings on separate training and validation missions.
  2. Search complementary areas. Towers scan fixed sectors, the plane covers wider water, and the quad searches nearby gaps.
  3. Confirm and track ships. Combine fresh camera observations into one estimate of a ship's position, velocity, and uncertainty. Reject stale, duplicate, and implausible sightings.
  4. Maintain sensor handoffs. The quad follows the estimate while the plane makes supporting passes. A receiving aircraft must report two fresh, accepted sightings before a handoff counts.
  5. Recover lost contact. Search around the last observation and predicted movement. Increase uncertainty as sightings age and expire unrecovered tracks.

The dashboard shows fleet roles, camera views, search paths, contact state, and mission events. Overview, Cameras, and Simulation lab share a replay clock. Live simulator feeds are displayed separately from saved synthetic experiments.

How we built it

Python and FastAPI run a deterministic 10 Hz controller. MAVLink connects it to ArduPilot in ArcticSim/Gazebo. ...some algo logic

Next.js, React, TypeScript, and Three.js power the dashboard and game. WebSockets stream mission telemetry. The offline optimizer searches tower positions and six flight settings, including search spacing, prediction horizon, and reacquisition width.

Can’t Catch Me tests coverage through player-controlled ship routes. Its separate simulation uses two towers, two quadcopters, and a plane. We record controls, starting settings, and random seed for the opening stretch, then replay each attempt on the server to verify capture or escape.

Sentry Session Replay captures the player's view. Our map replay reconstructs movement and sensor visibility. Tracing and Logs expose controller timing, rejected observations, and command outcomes, helping investigate lost contact even when the application does not crash.

Verified attempt recordings are uploaded to Sentry, retrieved, and checked before strategy evaluation. After eight eligible attempts, the optimizer tests tower and flight changes against recorded controls. Separate validation checks preserve escape opportunities and prevent newly introduced early captures. Accepted changes apply only to future runs. This replay pipeline has not yet promoted a new strategy.

Algorithm and optimization

Freeze combines complementary search routes, camera-aware flight paths, and confirmed sensor handoffs. A constant-velocity Kalman filter estimates ship position, velocity, and uncertainty while rejecting stale or implausible observations.

Our offline optimizer selects tower positions and six flight settings using separate training and validation missions, then freezes the strategy before evaluation.

Results

We compared our current strategy against release 0.2 on 400 matching, unseen synthetic missions:

Metric Release 0.2 Current
Confirmed ship detection 68.75% 70.00%
Aircraft tracking custody 24.07% 29.80%
Mean longest contact gap 113.98 s 106.28 s

Aircraft custody measures the share of sampled mission time with confirmed, fresh aircraft contact. Its 5.73-percentage-point improvement was statistically supported. Detection and gap improvements remained uncertain. Search coverage decreased, while position error and false contacts increased.

Our next priority is validating live camera performance and addressing these tradeoffs.

Built With

Share this project:

Updates

Submission history