2026-2027 Defence Software Planned

Overview

This is a published build guide for a counter-drone test-and-scoring harness: software that connects low-cost sensor nodes to military command-and-control standards (SAPIENT and Cursor on Target), runs repeatable YAML scenario cards against time-synced ground truth, scores performance with Stone Soup metrics, plans sensor coverage, and operates the resulting node fleet with signed updates and health monitoring.

Status: Planned. Nothing on this page is built, tested, measured, or flown yet. The guide is written against real Canadian government requirements: the IDEaS counter-drone sandbox guide, which asks for systems that integrate into military C2 and names networks of low-cost sensors as an emphasis area, and the CAF national counter-drone tender, which asked a contractor to design, install, integrate, test, validate, maintain, sustain and modernize the capability as a service (verify dates/scope). This build puts DevOps and test discipline into that gap: the boring, decisive work of knowing what a sensor network actually does and proving it with numbers.

The sandbox itself rewards honesty. Teams are encouraged to push a system to failure so its limits are understood, and plain radar, acoustic, RF or optical detection is less likely to be selected unless it is clearly improved. A scoring harness is exactly the tool for that: it produces the detection probability vs range curves, false-alarm rates and failure envelopes that make a submission credible, and it stays useful for any sensor build, including the counter-drone sensor fusion build on this site.

The work is software and simulation first, which fits the southern Ontario winter calendar: this is one of the builds scheduled for the October to December window, before any outdoor drone work resumes in spring. It follows the shared rules for all six defence builds on this site: defensive only, synthetic data where anything mimics protected material, testing only my own gear with permission, and one repo with README, docs, sim, test, data, results, LICENSE, SBOM and signed releases.

Concept Illustrations

Concept illustration of a counter-drone sensor test bench with a scoring dashboard and coverage map
Concept illustration (AI-generated planning visual, not a photo of built hardware): a counter-drone test bench where sensor nodes feed a scoring dashboard showing detection probability vs range and a coverage map of planned node placement.

Target Spec: What the IDEaS Sandbox Asks

The IDEaS counter-drone sandbox guide defines threat classes, hard cases, six scenarios and the C2 protocols in use. The table below restates those requirements as the spec sheet this harness is built to serve. The harness does not itself detect drones; it measures how well a sensor network meets these requirements.

Requirement areaSandbox specHow the harness serves it
Threat class: micro UASUnder 2 kg, up to 200 ft AGL, about 5 km radius, up to 200 km/hScenario cards and SITL truth matching this class
Threat class: mini UAS2-15 kg, up to 3,000 ft AGL, about 25 km radius, up to 200 km/hScenario cards and SITL truth matching this class
Hard casesDrones under 250 g, fast FPV, swarms of 3+, fibre-optic tethered drones (tethers to 30 km), birds and clutter, rain, fog, snow, nightEnvironment and class tags on every scenario card; birds logged as their own false-alarm class
Early warning rangeWell beyond 3 km described as achievableFirst-detection range distribution metric
Scenario 1Fixed base, 2.5 km radiusCoverage planner target with node count and spacing stated
Scenario 2Five-vehicle patrolScenario card format; live version not planned
Scenario 312 dismounted soldiersScenario card format; live version not planned
Scenario 4Urban, 4x4 blocks up to 10 storeysScenario card format; live version not planned
Scenario 5Frigate-sized shipScenario card format; live version not planned
Scenario 610 km linear border, state node count and spacingCoverage planner target with cost per kilometre
C2 protocols in useJREAP-C J-series, VMF K-series, Cursor on Target, SAPIENTSAPIENT on the nodes, CoT bridge to TAK; JREAP-C and VMF out of scope
EmissionsLow emissions preferred; emitters need a DND 552 spectrum formHarness is receive-only; no emitters planned
Selection guidanceDetect-only systems are accepted; plain single-sensor detection less likely selected unless clearly improvedThe harness supplies the measured improvement evidence

What the Hobby-Scale Version Proves

A solo bench build cannot field a national counter-drone capability, and this page does not pretend otherwise. What it can prove, with published data, is the engineering discipline the sandbox and the tender both ask for:

  • Standards compliance at the edge: sensor nodes that register and report over SAPIENT (BSI Flex 335) protobuf messages, verified against the official open-source compliance test harness, and bridged into TAK as Cursor on Target markers.
  • Repeatable, honest scoring: the same scenario cards run in simulation and against recorded real logs, scored with Stone Soup SIAP metrics, OSPA and CLEAR-MOT, with regression thresholds in CI so a change that degrades detection fails the build.
  • Quantified coverage: measured detection probability vs range turned into node counts, spacing and cost per kilometre for the fixed-base and linear-border scenarios via Monte Carlo planning.
  • Fleet operations: signed A/B over-the-air updates, Prometheus health monitoring, per-site acceptance tests and runbooks that mirror the tender lifecycle (install, integrate, test, validate, maintain, sustain, modernize).
  • A published failure envelope: every metric pushed to failure, with the limit written down where others can read it.

Architecture

Every sensor node runs a small adapter that registers with the fusion node and sends status and detection reports as SAPIENT protobuf messages over TCP, the edge-to-fusion pattern defined in BSI Flex 335. The fusion node runs the open-source Dstl middleware. A bridge converts detections to Cursor on Target so they appear in TAK Server and ATAK, using snstac sapientcot where version support allows (verify), plus a native CoT output path as a fallback.

Scoring depends on truth and time. Truth comes from two sources: ArduPilot SITL multi-drone simulation feeding sensor models with detection probability and noise vs range, and recorded logs from my own drone flown with GNSS (RTK if possible). Every node gets GPS PPS and chrony so timestamps line up, and clock offset is logged as a health metric, because scoring without synchronized clocks is fiction. The scoring harness consumes fused tracks plus truth and scenario cards, and its outputs feed the coverage planner, the nightly CI regression run, and the fleet operations layer that keeps deployed nodes patched and observable.

How to Build: Phases

Ten phases, roughly in order. Weeks are planning estimates, not commitments. Each phase ends with an artifact committed to the repo; a phase is done when its artifact exists, not when the code runs once on my machine.

Phase 0: Standards (weeks 1-2)

  1. Read BSI Flex 335 v2 (March 2024, free from BSI; verify date) and take notes on the message set: registration, status reports, detection and track reports.
  2. Clone the Dstl SAPIENT middleware and compliance test harness, released open source under Apache 2.0 in 2022. That release predates Flex 335 v2, so check which interface version the middleware speaks before building on it.
  3. Write down the protobuf-over-TCP edge-to-fusion pattern as the architecture contract for every later phase.

Phase 1: SAPIENT adapter and TAK bridge (weeks 2-5)

  1. Build a node adapter that registers with the fusion node and sends status and detection reports using the official protos.
  2. Verify the adapter against the official compliance test harness; a passing compliance run is the phase gate.
  3. Forward detections to TAK with snstac sapientcot (verify version support) and add a native CoT output so nodes can emit Cursor on Target directly when the bridge path is not needed.
  4. Confirm markers appear in ATAK with correct position and identity fields.

Phase 2: Ground truth and time (weeks 4-6)

  1. Use my own drone's ArduPilot logs with GNSS as truth; add RTK if possible for tighter truth position.
  2. Put GPS PPS plus chrony on every node so all clocks discipline against the same pulse.
  3. Log clock offset as a health metric; scoring is only valid when truth and sensor timestamps agree.

Phase 3: Scenario cards in YAML (weeks 5-6)

  1. Define a card schema: approach type (radial, tangential, hover, descent), speed band, altitude, drone count, class (micro or mini UAS), environment tags (rain, fog, snow, night, clutter), and an explicit detection definition.
  2. Write cards mirroring the sandbox scenarios: fixed base 2.5 km radius, five-vehicle patrol, 12 dismounted soldiers, urban 4x4 blocks up to 10 storeys, frigate-sized ship, 10 km linear border.
  3. Define detection before flying anything; a detection definition written after seeing data is not a definition.

Phase 4: Simulation at scale (weeks 6-9)

  1. Stand up ArduPilot SITL multi-drone instances as truth, including swarm cards of 3+ drones.
  2. Model sensors with detection probability and noise vs range so simulated detections behave like the real sensor class being scored.
  3. Make the same pipeline replay recorded real logs unchanged, so sim and live runs share one scoring path.

Phase 5: Scoring (weeks 8-10)

  1. Implement Stone Soup SIAP metrics: completeness, ambiguity, spuriousness, continuity.
  2. Add OSPA for multi-object tracking error and CLEAR-MOT for tracking identity quality.
  3. Add the operational metrics: detection probability vs range, first-detection range distribution, time to first alert, false alarms per hour, localization error vs range.

Phase 6: Coverage planner (weeks 10-12)

  1. Take the measured detection probability vs range curve from Phase 5 scoring as input.
  2. Run Monte Carlo placement to compute node count and spacing for the 2.5 km fixed-base scenario and the 10 km linear-border scenario.
  3. Report cost per kilometre of coverage, the number the sandbox implicitly asks for when it says to state node count and spacing.

Phase 7: Continuous integration (weeks 10-13)

  1. Run the simulated scenario suite nightly with regression thresholds: a drop in detection probability or a rise in false alarms fails the pipeline.
  2. Version data with DVC so results are reproducible against the exact truth logs that produced them.
  3. Publish an HTML report artifact per run and ship signed container images for every component.

Phase 8: Fleet operations (weeks 12-16)

  1. Signed A/B over-the-air updates: Mender, RAUC, or my own signed flow; a tampered update must be rejected, reusing the secure fleet updates work.
  2. Prometheus health monitoring per node: battery, temperature, GNSS lock, clock offset, link quality, with alerts on drift.
  3. A per-site acceptance test that a node must pass before it counts as installed, plus a maintenance schedule and spares log.
  4. Runbooks mirroring the tender lifecycle: install, integrate, test, validate, maintain, sustain, modernize.

Phase 9: Failure envelope (ongoing)

  1. Push each metric to failure: increase range, speed, swarm size, clutter and weather tags until the score collapses.
  2. Publish the limit for each metric. The sandbox favours teams that understand where their system stops working; this phase is where that understanding is manufactured.

Spec-Gap Table

Honest status against the sandbox spec, as of publication. Everything is Planned or Not tested; nothing here is claimed beyond the build guide itself.

Sandbox requirementStatusNotes
SAPIENT (BSI Flex 335) interface on nodesPlannedPhase 0-1; compliance test harness version predates Flex 335 v2, interface version to check
C2 integration: Cursor on Target / TAKPlannedPhase 1 bridge via snstac sapientcot (verify version support) plus native CoT output
C2 integration: JREAP-C J-series, VMF K-seriesNot plannedNo equipment or access; stated honestly as out of scope
Micro UAS threat class coverageNot testedScenario cards and SITL truth planned; no live flights yet
Mini UAS threat class coverageNot tested25 km radius is beyond any hobby live test; simulation only
Drones under 250 gNot testedHard case; scenario cards tagged, scoring planned
Fast FPVNot testedSpeed band in card schema; sim only at first
Swarms of 3+Simulation only, plannedArduPilot SITL multi-drone truth in Phase 4
Fibre-optic tethered drones (tethers to 30 km)Not testedRF receive-only rules out RF detection of these; stated as a known gap
Birds and clutterPlannedLogged as their own false-alarm class, not silently filtered
Rain, fog, snow, nightNot testedEnvironment tags on cards; real-weather runs wait for seasons and hardware
Early warning beyond 3 kmNot testedFirst-detection range distribution will show what is real
Fixed base 2.5 km radius: node count and spacingPlannedPhase 6 Monte Carlo coverage planner
10 km linear border: node count and spacingPlannedPhase 6, with cost per kilometre
Patrol, dismounted, urban, ship scenariosCard format onlyCards written; live versions not planned at hobby scale
Low emissions / DND 552 spectrum formMet by designHarness is receive-only; no emitters, no form required
Tender lifecycle: install to modernizePlannedPhase 8 runbooks; unproven until a real multi-node site exists

Metrics to Publish

  • Stone Soup SIAP metrics: completeness, ambiguity, spuriousness, continuity.
  • OSPA (optimal subpattern assignment) for multi-object tracking error.
  • CLEAR-MOT for tracking identity quality.
  • Detection probability vs range, per scenario card and aggregated.
  • First-detection range distribution (the early-warning number).
  • Time to first alert.
  • False alarms per hour, with birds and aircraft logged as their own class.
  • Localization error vs range.
  • Clock offset per node as a time-sync health metric.
  • Coverage planner outputs: node count, spacing, cost per kilometre.
  • Fleet health: battery, temperature, GNSS lock, link quality per node.

Hardware to Buy First

This build is mostly software; the plan names no exotic hardware. The list below is the minimum implied by the phases, and it will grow once a specific sensor class is chosen for the nodes.

  • A drone running ArduPilot with GNSS (RTK if possible) as the known-truth target for live scoring runs.
  • GPS PPS receivers and antennas, one per node, for chrony time discipline.
  • Low-cost sensor nodes (acoustic, optical, or RF receive-only); the exact sensor set is chosen after Phase 0, since the sandbox deprioritizes plain unimproved detection.
  • A host machine (existing homelab capacity) for the fusion node, TAK Server, scoring harness, CI runners and Prometheus.
  • Spares per the Phase 8 spares log, sized once node count is known.

Safety and Legal Notes

  • Defensive only: detect, score, plan. Nothing in this build jams, spoofs, or carries anything.
  • RF receive-only unless licensed. Low emissions are preferred by the sandbox; any emitter would need a DND 552 spectrum form, and none is planned.
  • Test only my own gear, with permission. Ground-truth drone flights follow the same Transport Canada rules as the other drone builds on this site.
  • Birds and aircraft create false alarms. They are logged as their own class, never silently dropped, because hidden filtering is how false-alarm rates get lied about.
  • Define detection before flying. The detection definition is part of the scenario card, written before data exists.
  • Synthetic data for anything mimicking protected material, per the shared rules for all six builds.

Frequently Asked Questions

What is SAPIENT and BSI Flex 335?

SAPIENT is the counter-drone sensor fusion interface standard published by BSI as Flex 335 (version 2, March 2024, free from BSI; verify date). Messages are protobuf over TCP from edge sensor nodes to a fusion node. Dstl released open-source middleware and a compliance test harness under Apache 2.0 in 2022, which predates v2, so the interface version must be checked.

How do you score a counter-drone detection system honestly?

Fly or simulate YAML scenario cards (approach, speed band, altitude, drone count, environment tags) against time-synced ground truth, then score with Stone Soup SIAP metrics (completeness, ambiguity, spuriousness, continuity), OSPA and CLEAR-MOT, plus detection probability vs range, time to first alert, false alarms per hour and localization error.

What does the IDEaS counter-drone sandbox ask for?

Systems that integrate into military command and control (JREAP-C J-series, VMF K-series, Cursor on Target, SAPIENT), networks of low-cost sensors, and honest handling of hard cases: drones under 250 g, fast FPV, swarms of 3+, fibre-optic tethered drones, birds and clutter, and rain, fog, snow and night. Detect-only systems are accepted.

Is anything on this page built or tested yet?

No. This is a published build guide, status Planned. Every component, from the SAPIENT adapter to the coverage planner, is described as phases to execute, and the spec-gap table marks each sandbox requirement as planned or not tested. Measured results will be published here after each phase completes.

How many sensor nodes does a 2.5 km base defence need?

That is exactly what the coverage planner computes. Phase 6 takes measured detection probability vs range from scored scenarios and runs Monte Carlo placement to return node count and spacing for the 2.5 km fixed-base and 10 km linear-border scenarios, with a cost per kilometre of coverage.

Roadmap

Order of work across the six builds puts this build first, together with the secure-autonomy build, because both are software and simulation and can run through the southern Ontario winter. The calendar: now to December is this harness, the secure-autonomy build, the sovereign AI enclave, plus bench work on the Arctic drone; December to March is snow and cold field work for the outdoor builds; April to May after ice-out is water trials. That means Phases 0 through 7 of this build should be running nightly in CI before any outdoor flight season opens, and live scoring runs with the ground-truth drone slot into spring 2027.

Funding and eligibility context, named as programs without invented links: the MINERVA challenges run through Innovative Solutions Canada for incorporated Canadian companies at TRL 5-9, and the IDEaS counter-drone sandbox is open to individuals, academia, non-profits and industry, with the next sandbox expected around 2028 and every participant receiving $20,000. A published, standards-compliant, honestly scored harness is exactly the portfolio evidence those programs reward. Results will be appended to this page phase by phase, with the spec-gap table updated as rows move from Planned to tested.

Cite This Page

Citation formats

Plain text

Taki Sadik, "Counter-Drone Test-and-Scoring Harness Build Guide", TYFSADIK, https://tyfsadik.org/work/defence/counter-drone-scoring-harness.html (accessed 2026-10-24).

BibTeX

@misc{sadik-counter-drone-scoring-harness,
  author  = {Sadik, MD. Taki Yasir Faraji},
  title   = {Counter-Drone Test-and-Scoring Harness Build Guide},
  year    = {2026},
  url     = {https://tyfsadik.org/work/defence/counter-drone-scoring-harness.html},
  urldate = {2026-10-24}
}

APA

Sadik, M. T. Y. F. (2026). Counter-Drone Test-and-Scoring Harness Build Guide. TYFSADIK. https://tyfsadik.org/work/defence/counter-drone-scoring-harness.html