NoMAC is a research prototype for exploring how drone traffic, airspace restrictions and detect-and-avoid (DAA) settings affect safety over Norrköping. It contains two models that answer different questions. Switch between them with the red/blue toggle beside the NoMAC title.
Trajectory based · index.html
Question
How do deliveries, background traffic and U-plans interact over whole days when departure coordination (DCB) and DAA are active?
How
Persistent 3D flights with bounded kinematics on a layered route grid, continuous conflict checks, sensing and vertical avoidance maneuvers.
Outputs
Physical contacts, NMAC intervals and DAA activations per actual flight hour; delivery completion, delays and capacity levels; 3D replay of any hour.
Sample based · research.html
Question
How often do randomly placed drones form groups whose free area per drone (A/n) falls below the research threshold πr²?
How
Independent five-minute position snapshots from the Dn traffic map, connected “blue-disk” groups and a binary A/n rule. U-plans are checked separately as planned routes.
Outputs
A/n-classified groups and close pairs per snapshot, group sizes, U-plan conflicts and saved-run comparisons.
Read results as model outputs, not validated risk. Defaults are experiment assumptions, the route grid and delivery sites are synthetic, heights are above flat ground, and events from the two models are never pooled. Zero observed contacts is not evidence of zero risk.
Quick start
Trajectory based
Scenario: place terminals on the map and set deliveries/day, operating hours and profiles. Optionally add background transit, geofences and U-plans.
Run length: one day, repeated independent days, a flight-hour target (default 1,000 h) or a capacity study across demand levels.
Run: the calculation runs in the background; progress shows completed days or flight hours.
Results: safety, delivery and capacity outputs for the whole study. Select any event to replay it.
Simulation: scrub one hour of a chosen day in 3D and click aircraft to inspect them.
Sample based
Scenario: set daily operations, flight duration and DAA radius r; draw geofences (or add RWY5K) and U-plans.
Simulation: step through one hour of five-minute snapshots and inspect individual groups.
Results: A/n classifications, close pairs, group sizes, the decision map and U-plan conflicts.
Compare runs: add the current run or import exported files to compare settings side by side.
Export JSON for a durable, reproducible copy. Switching models keeps each model's settings only for the current browser session.
Trajectory model
Trajectory workflow
Scenario → Simulation → Results. Generated deliveries, background transit and drawn U-plans fly in one shared, continuous world.
One engine for everything. A single day, repeated independent days and capacity studies use the same physics; the 3D view only renders recorded paths.
Whole study vs one hour. Results and exports always describe the whole study. The 3D view shows one hour of one chosen day and never replaces those totals.
Each day starts empty at 00:00 and includes a finish period so admitted flights can complete. Repeated days are independent, not a continuous multi-day history or steady state.
Background calculation and browser limits
Both models calculate in Web Workers, so you can use another tab. On HTTPS and localhost an active calculation holds a Web Lock that prevents Chrome's automatic background freezing; it is released when the calculation finishes or stops. Keep the tab open and the computer awake: other browsers and power settings may still limit background work (Chrome's freezing policy). For runs independent of the browser, use the command line.
Traffic and deliveries
Terminals each have expected deliveries/day, operating hours, a service radius and assigned aircraft and DAA profiles.
Arrivals are independent Poisson processes per source within its operating window. An entered 120/day is an expected count, not exactly 120 flights.
Destinations are population-cell centres in the terminal's service area Sk, chosen in proportion to the population field B.
Background transit (optional) has its own daily demand and profiles and crosses the grid between opposite edges.
U-plans drawn on the map are added to the generated demand with their own route, speed, altitude and departure.
Route grid: 250, 500 or 1,000 m junction spacing. Deliveries fly out on the lower layer and return on the upper layer (80/120 m by default).
P(i | k) = Bi / Σj∈Sk Bj
Terminal climbAccess to gridOutbound cruiseApproach & descentDelivery hoverClimb to return layerReturn cruiseTerminal descent
More detail: data, geometry and delivery rules
The supplied population file has 3,499 positive cells with B totalling 117,180. B is interpreted as a population count/weight; its census date and field definition are not supplied. Destination points are synthetic, not verified landing sites.
Grid spacing is independent of the density-map resolution. Layers are 40 m apart by default; protective cylinders of ±15 m leave a nominal 10 m gap, and layer spacing must exceed every aircraft's protection height. These are experiment assumptions, not validated separation minima.
One request is one continuous round trip. Straight junctions are passed without stopping; turns and vertical transitions respect the aircraft's horizontal and vertical acceleration limits. Restrictions and conflicts are checked along every phase.
Delivery hover defaults to 30 s at 10 m above flat reference ground and only counts within 1 m of the delivery point. Missed or interrupted service is reported separately. Takeoff/landing contact, ground service, batteries and fleet size are not modelled.
Geofences change routes, waiting and rejection; trajectory mode does not redistribute Dn mass. Dn is not a demand target for daily scenarios; older imported Dn-calibrated projects keep their original demand model.
A day is limited to 2,000 flights. Demand whose expected count plus five standard deviations would exceed that limit is rejected before running.
Reserves space and time along the whole route: layer and corridor capacity, headway and protective separation.
Delays a departure on the ground or rejects it with a stated reason. Every offered flight keeps a decision.
Re-checks affected plans after avoidance maneuvers, contingencies and new restrictions.
In flight: DAA
Sensors detect within range and horizontal field of view; Pd applies per scan. Observation age and response latency delay the action.
In a cooperative pair a randomly drawn master maneuvers: a vertical offset and a continuous return to its route. It re-attempts while the conflict persists.
An infeasible maneuver is reported and may end in contact.
Turn DCB and the reference DAA profile on or off under Comparison settings to compare the same traffic with and without each function.
More detail: sensing, disturbances and policies
Each aircraft can use its own sensor profile. FoV is a horizontal bearing cone around the heading; no vertical FoV is modelled. Position error is bounded per axis and velocity is exact. CA predicts the intruder at constant velocity from observations, never from its future path.
All DAA profiles share one reference vertical avoidance policy; they are parameter sets, not independent supplier algorithms.
False alarms, first-failure hazards, smooth vertical tracking deviations and urgent geofences each use a separate seeded random process.
After a failure the aircraft brakes and hovers with an enlarged spherical protection volume, then attempts a bounded rejoin.
A collision-first geofence policy may relax a restriction to avoid predicted contact. Physical solids and the airspace boundary are never relaxed; policy use and violations are recorded.
Groups of three or more and overlapping avoidance maneuvers are flagged, not solved.
Capacity studies
Test several demand levels, refine where the outcome changes, then confirm the selected level with fresh seeds. Read the three statuses separately:
Operational
Completion, rejection, delay and adverse-event limits. Count limits apply across all replicates of a level.
Coverage
Unresolved multi-drone coordination and exhausted searches are model limitations, not passes.
Statistical
Whole-run bootstrap intervals and a separate conditional zero-contact bound. Zero contacts do not prove zero risk.
How to interpret a capacity result
Completed flights per demand hour describe the offered cohort, including completions in the finish period. They are not steady-state throughput.
If the highest tested level passes, it is a lower bound; no maximum has been located. A result applies to the chosen traffic and planning policy, not to airspace in general.
Inspect run reproduces any underlying run with its exact seed and settings.
Contacts, protection conflicts and NMAC are separate quantities with separate thresholds. All are checked continuously along the executed paths, including between replay frames.
Physical contact
Body spheres touch. One event per pair; affected aircraft are counted separately. Contact ends those flights.
Protection conflict
Horizontal and vertical protective extents overlap at the same time. The radius can grow with horizontal speed.
NMAC interval
A pair is closer than the configured horizontal and vertical NMAC thresholds (default 20 m / 5 m, illustrative). One continuous interval counts once.
DAA activation
A feasible maneuver actually starts after an alert and the latency. “No feasible maneuver” counts once per encounter; failed re-attempts are reported separately.
CA duration
From maneuver start to predicted clearance plus hold time; the return is recorded separately. Unfinished maneuvers are censored.
Flight hours H
Actually flown airborne seconds, including hover, divided by 3,600 and clipped at contact or the end of the run.
Extra distance
Executed 3D path length minus the planned length, for completed missions only.
p(t) = p₀ + v₀t + ½at²
Kinematics and the avoidance reference
Each motion segment has constant acceleration. Multirotors accelerate and brake on each leg within separate horizontal and vertical acceleration limits, stop at turns and take time to yaw. Heights are AGL above flat reference ground.
Event checks solve the continuous relative-distance and polygon-prism geometry, so changing the trace interval changes the display only. In the top view, overlapping circles alone do not establish a 3D conflict.
The CA reference tries an upward, then a downward offset that keeps the predicted protection volumes apart. If overlap has already begun, it may instead restore separation sooner, without new NMAC or contact. It then returns continuously to the original timed route.
The two-aircraft reference experiment is available from the command line: node scripts/trajectory.cjs --example crossing (add --daa-off for the baseline). It does not estimate capacity, validate TLS or represent supplier DAA performance. See the trajectory model contract.
Inspecting a run in 3D
What you see
White marker
Aircraft position; fixed screen size, not body size.
Translucent sphere
Radius guide r. During a contingency it is the actual enlarged protection volume.
Amber cylinder
Selected aircraft's actual protection: radius and vertical half-height.
Purple sector
Selected aircraft's sensor coverage: 3D range and horizontal FoV around its heading. Where detection is possible; Pd still applies.
Dashed / teal routes
Planned / executed paths.
Amber points
Sensor measurements received in the last 10 s.
Controls
Select
Click an aircraft or pick it in the inspector. Replay pauses and the camera orbits it.
Orbit · zoom · pan
Drag · scroll, pinch or +/− · right-drag or Shift-drag.
Keyboard
Arrow keys rotate, +/− zoom, Home fits the area.
Follow
The camera follows the selected aircraft when you play or scrub; panning or Fit area releases it.
Satellite imagery is background context only and needs internet access. If WebGL is unavailable, a labelled 2D fallback is used. Aircraft already airborne when the hour starts are included.
Reading trajectory results
NMAC / flight hour
Continuous pair NMAC intervals divided by H. Not the same as sample-mode A/n classification.
Physical contacts / flight hour
Contact events divided by H, including any non-cooperative intruders.
Zero-contact bound
−ln(0.05)/H: a 95% upper bound, conditional on a homogeneous Poisson process. About 30 million contact-free hours are needed to reach 10⁻⁷ per flight hour.
Completed / offered, delay
All requested missions, including U-plans. A delivery is one round trip; delivered and delivered-and-returned are reported separately. Rejected demand stays visible, so low contact counts cannot hide behind rejections.
Mean / peak airborne
Mean: aircraft-seconds divided by simulated clock seconds, including night and the finish period. Peak: the largest simultaneous count in the study.
Source table
Offered, completed, rejected, delivered and returned missions and flight hours per terminal, background traffic and U-plans.
Batches, event list and long runs
Batches keep aggregate counts, exposure, occupancy and up to 12 reproducible seeds of the most eventful days, not every flight path.
The event list keeps the first 400 events per type for replay; totals always include every event and truncation is shown. Selecting an event regenerates its day and opens its hour, paused at the event with the aircraft selected.
Stop keeps the completed days, and exported partial batches can be resumed. A flight-hour target finishes whole days, so exposure may slightly exceed it.
Millions of flight hours are a requested stopping target, not a demonstrated capability; full-day studies are slow in the browser.
The sample model draws independent drone positions from the Dn traffic map, groups nearby drones into blue disks, computes the free area per drone and applies a binary research rule. U-plans are checked separately as planned routes.
Dn mapGeofencesTraffic snapshotsBlue disksA/nDAA ruleObservations per snapshot
Traffic field Dn
pi = Dni / Σj Dnj
pi is the probability of choosing cell i for one drone position in one snapshot. The position is then sampled by area inside the cell polygon, excluding holes and geofences.
3,000 operations/day of 15 minutes give on average 31.25 active drones in each of 288 five-minute snapshots. Positions have no route, speed or identity between snapshots.
More detail: the Dn overlay and seeding
Dn is the relative traffic weight in the GeoJSON file, not a real-time probability that a drone is there. The map is a bounded analysis area; the tool does not invent Dn outside or between source cells.
Overlay colours are contrast-enhanced and clipped near the top, so colour differences are relative. Satellite imagery (ArcGIS World Imagery) does not enter any calculation.
The active-drone count per snapshot is Poisson-sampled. Sampling is seeded, so every radius is evaluated on the same traffic and an unchanged scenario reproduces its result.
Flight hours/day = operations/day · flightMinutes / 60. These are scenario metadata; the snapshots have no physical-event exposure.
Source: LiU probabilistic traffic map, QRA demand-map approach and the local GeoJSON Dn field. Display scaling is an implementation choice.
Geofences in the sample model
A cell is blocked when its centre lies inside a geofence. Its Dn mass moves to nearby unblocked edge cells.
Each blocked cell sends its mass to its nearest receiver cells (default 4) within the edge search radius (default 180 m), weighted by inverse distance.
If no receiver exists, the mass is reported as unassigned and the result is marked insufficient. Nothing is moved silently.
The altitude band is used for U-plan checks; the Dn simulation itself is horizontal.
sharej = (1 / dj) / Σk(1 / dk)
Geofence outputs explained
movedMass = blockedMass − unassignedMass
Altitude levels
Number of distinct altitude bands used by the geofences.
Analyzed clear area
Map area outside the geofence union, estimated on a 100 × 100 sample grid; not the total area where a drone could fly.
Analyzed area / active drone
Clear area divided by average active drones. A global reference, not local A/n.
Moved Dn mass
Normalized mass removed from blocked cells and successfully redistributed.
Geofence area
Planar polygon-area estimate for each geofence.
Blocked cells
Cells whose centres lie inside the geofence; overlaps go to the first matching geofence.
Receiver edge cells
Unblocked cells whose centres lie within the search radius of a geofence edge.
RWY5K is a bundled local geometry preset, not an authoritative airspace restriction.
Source: product description for geofences and height restrictions; the QRA paper and AST notes motivate boundary congestion. The edge-push algorithm and its parameters are project sensitivity choices.
Why five-minute snapshots?
The interval is an implementation choice, not a requirement or a validated DAA response time: 1440 / 5 = 288 snapshots per day. The product descriptions and papers give no justification for exactly five minutes. The LiU paper supports sampling traffic snapshots; its pixel-traversal example uses a different time step (150 m / 25 m/s = 6 s) in another calculation.
Consequence: a shorter interval gives proportionally more observations per day while flight hours stay the same. That is not more physical risk, which is why sample results are reported per snapshot and never as a collision rate. The command line can vary the interval for sensitivity studies.
Blue disks and A/n
Math at a glance
Geometry at a glance
Drone radius rEach drone is tested with one DAA radius.Radius contact creates zoneTouching r-circles connect drones into one blue disk.Collision area expandsBigger r or larger groups change A/n. Classified if A/n < πr².
Connected: drones whose centres are at most 2r apart are linked. Links are transitive: A–B and B–C make one group, even if A and C are far apart.
Blue disk: a circle around the whole group, centred on the members' mean position.
A/n: the free area of the blue disk (only geofences are subtracted) divided by the number of drones in it.
Rule: a group is A/n-classified when A/n < πr². Equality is not classified.
Geometry details and how this differs from the Java prototype
The blue disk is a mean-centred implementation envelope, not a minimum enclosing circle. It touches the outer edge of the furthest red safety circle and contains the others, so there can be extra space on other sides; tightening it would change A and possibly the classification.
The free area subtracts the union of geofences inside the disk once, using analytic polygon-edge and circle-arc integrals. Red safety disks are safety margins, not blocked airspace, and are not subtracted. The map edge is not a wall. In the inspector, green and red dots only illustrate free and blocked regions; large dark dots are drone centres.
The Java prototype merges disks recursively. This tool first finds the whole connected group, so radii are not simply added as 3r, 5r and so on.
Source-backed concept: LiU conflict graph/connected components and ATM overlapping safety disks. Mean-centred envelope: project implementation choice.
Two concrete three-drone examples
Same scale, three drones on a line, no geofences, r = 50 m (threshold πr² ≈ 7,854 m²). Red disks are safety margins around drone centres, not drone bodies; the blue envelope is centred on the middle drone.
Three close drones Centres 25 m apart, so blue R = 25 + 50 = 75 m. A = 17,671 m²; A/3 = 5,890 m²/drone. Below 7,854: A/n-classified.Three touching safety disks Centres 100 m apart, so blue R = 100 + 50 = 150 m. A = 70,686 m²; A/3 = 23,562 m²/drone. Above 7,854: not A/n-classified.
The touching red disks still connect all three drones on the right, but overlap alone does not decide the A/n result. With geofences, A is only the free part of the blue disk. A classification counts one group observation, not three collisions, and neither outcome establishes whether a physical collision occurs.
The A/n rule and radius presets
The πr² boundary is an explicit, replaceable research hypothesis, not a validated DAA law and not derived from the papers. It maps r and local A/n to a binary result so the idea can be tested; it does not model sensors, latency, nuisance alerts or avoidance maneuvers.
d = 100 m: still connected, but A/n = π · 100² / 2 ≈ 15,708 m², not classified.
In general a pair is classified only if d < 2(√2 − 1)r ≈ 0.83r. A geofence inside the disk lowers A and can tip the result.
Each preset is only a radius sensitivity point, not a complete ATM, QRA or supplier DAA. The fuller DAA parameters proposed in the requirements (range, FoV, Pd, latency, nuisance alerts, maneuver performance, per-drone profiles) are modelled in the trajectory model, not here.
Source for r and the 2r overlap test: ATM Seminar 2019 and QRA first-party risk papers. The exact πr² threshold is a project research hypothesis.
Reading sample results
A/n-classified groups / snapshot
Classified groups divided by snapshots. A group counts once, whatever its size.
Red-disc overlap pairs / snapshot
Unordered pairs with centres at most 2r apart, divided by snapshots. Shows close pairs even when their group fails the A/n test. Not a physical NMAC count.
A/n-classified share
Classified groups divided by all groups of two or more drones.
Snapshots with A/n classification
Share of snapshots with at least one classified group.
Daily observations
Per-day sums averaged over days. They scale with the number of snapshots, not with traffic density.
Multi-drone groups
Groups of 3+ drones, the largest group and a size histogram. One snapshot can contain several groups, so group and snapshot counts differ.
Mean local A/n
Mean free area per drone over all observed groups.
A/n decision map
X is A/n, Y is r (10–500 m). Red is classified, dark is not. Bubbles show observed A/n at the selected r (size = frequency); the ring is their mean, not a TLS verdict.
Independent snapshots have no persistent encounters, so sample counts cannot be turned into an NMAC or collision rate per flight hour. Sample results therefore have no TLS verdict and no rate confidence interval.
Known A/n limitation and chart notes
A/n can hide a dense subgroup: two coincident drones at r = 50 m are classified, but a third drone 100 m away enlarges the blue disk enough to remove the classification, although the coincident pair is still there. Pair counts and the closest-pair distance are therefore shown separately in the inspector.
A former 3D surface encoded the same 0/1 classification as height and was removed. The 2D map's design follows the supplied “sharp 0/1 boundary” reference figure. Legacy comparison targets in older files are only kept for import compatibility. See corrections and validation for analytical checks.
Inspecting snapshots (Simulation tab)
Shows twelve five-minute snapshots over one hour of simulated day one, using the same random stream, grouping and A/n rule as the full run.
The hour contains the earliest U-plan departure, or starts at midnight if there are no plans.
Drag the time slider or use the previous/next snapshot icons. The view has no automatic playback.
Find a group, or select its disk, to see the enclosing geometry, free area and threshold. Focus group enlarges it; Fit map restores the overview.
What the inspection does and does not show
Background positions are held for inspection and replaced every five simulated minutes; they do not represent continuous drone trajectories. U-plans move continuously along their planned paths and are evaluated separately. At 60:00 the 55:00 sample stays visible; there is no thirteenth sample. The Airborne badge counts sampled background drones only.
The status names the scenario hour and the clock shows elapsed time within it. Earlier random draws are consumed when a later hour is inspected, so its samples stay aligned with the full run. The view shows the A/n research model, not executed avoidance or physical collisions; aggregate statistics remain in Results. See the interface review.
U-plans (planned routes)
In the sample model a U-plan is one planned mission with a route, speed, altitude and departure time. U-plans form a separate layer and never change the background A/n results. In the trajectory model, drawn U-plans instead fly in the shared world.
What is checked
Conflicts: horizontal distance ≤ 2r and vertical distance ≤ the U-plan vertical separation, solved continuously on every overlapping leg.
Geofences: route segments that cross an active geofence's altitude band.
Multi-drone warning: three or more plans in one connected conflict group at the same instant.
What you can do
Draw or generate routes (Dn-sampled endpoints with 1–3 bends), or add the crossing preset.
Reroute: an A* grid search for new waypoints, then small altitude or departure shifts if needed. Endpoints are kept.
Compare each route with its frozen original plan: distance, duration, arrival shift and altitude.
routeConflict ⇔ horizontalDistance(t) ≤ 2r and verticalDistance ≤ verticalSeparation
Conflict intervals are merged per pair; a pair that separates and conflicts again counts twice. Fast crossings between display samples are not missed.
Reroute all handles plans one at a time, so the result is heuristic and depends on order. A start inside an active geofence band is reported as an error.
Generated routes avoid geofence bands where possible but not each other until rerouted.
The conflict list shows the pair, interval start/end and minimum separation. Selecting a closest approach moves the planned-flight preview to that instant. Playback follows constant-speed plans and is not an avoidance simulation. Long lists are paginated; JSON export keeps every interval.
Original plans survive edits, reroutes and export/import; older files without one use the imported plan as the baseline. Ratios with a zero denominator are exported as null, and a shorter route can exceed 100% efficiency.
Result tables: pair intervals count once, the per-route table counts each interval for both routes, and geofence intersections count each route–geofence pair once. Closest flagged approach is the smallest horizontal separation among detected conflicts.
Presets: Add RWY5K adds the bundled restriction; Add crossing U-plans adds two equal, perpendicular routes that meet at the same altitude and time. Both keep the existing settings and routes.
Source: product description for U-plans, randomized flights and {course, distance, height} legs; QRA route-GUI inspiration. CPA and A* routing are implementation choices.
Saving, importing and comparing runs
Export JSON stores all inputs, the effective random seed, the engine version, map bounds and results. Import validates the inputs and recalculates; stored results are never trusted as current.
Compare runs (sample Results) builds a matrix with model/radius settings as rows and runs as columns. Add the current run or import several exported or command-line batch files.
Deltas only where comparable. A different snapshot length, engine, dataset, field, bounds, assumptions or radius blocks numerical deltas, and the reason is shown.
More detail
Metrics: A/n classifications per snapshot, A/n observations per day, groups with 3+ drones per day, and the largest group. Bars share a linear scale; Δ is the change from the reference run at the same radius (absolute when the reference is zero). Differences are descriptive, not significance tests.
Runs & scenario settings lets you rename or remove runs, inspect provenance, or Open in Scenario, which restores the saved geometry and recalculates with the current engine.
Export all saves the comparison as a reusable batch with the reference first. Limits: 30 runs and 10 MB per file. The comparison lasts until the page is reloaded.
The dataset is identified by SHA-256 on HTTPS or localhost. Older exports remain readable, and unrecorded metadata shows as Not recorded. An incomplete run can be exported but not compared as evidence of zero events.
Trajectory projects export their scenario, traffic sources, profiles, seeds and study results, and can be resumed or replayed after import.
Reference
Command line
Requires Node.js 18 or newer; there are no external dependencies. Run commands from the project directory. Output files must not already exist.
Trajectory project
node scripts/mission.cjs --project scenario.json --output result.json Uses the project's saved run length unless --runs or --target-hours is given. --workers 4 runs days in parallel, --max-seconds sets a time limit, --resume continues a saved batch and --single writes one inspectable day.
Sample model
npm run simulate -- --scenario examples/01-baseline.json --seed workshop --output result.json Repeat --scenario or use --batch. Also --days, --data, --window-minutes and --progress. U-plans are kept but not evaluated.
node scripts/trajectory.cjs --example crossing, with --daa-off for the baseline.
Load sample outputs in Compare runs. A sample run of 13,334 days (10,000,500 operational flight hours at 3,000 flights/day of 15 minutes) has been completed; it tests execution, not physical collision risk. See the README and implementation status.
Defaults
All defaults are scenario assumptions for experiments, not sourced or approved values. Change them in Scenario.
Trajectory model
Run length
1,000 actual flight hours (or a number of independent days)
Terminal
120 deliveries/day, 08–18, 10 km service radius
Background transit
120 flights/day, 08–18
Airspace
500 m grid, 120 m corridors, layers at 80 / 120 m
Delivery
30 s hover at 10 m
Aircraft
12 m/s cruise, 4 m/s climb, 3 m/s² horizontal and vertical acceleration, 0.5 m body radius
Protection · NMAC
r = 50 m, ±15 m · 20 m horizontal, 5 m vertical
DAA
500 m range, 360° FoV, Pd = 1 per scan, 2 s latency
DCB
Max delay 120 s, corridor headway 10 s, terminal headway 30 s, capacity 100 per layer and 10 per corridor
Disturbances
Off: no failures, false alerts, tracking deviation or urgent geofences
Synthetic route grid, delivery sites and demand; no empirical calibration of traffic or DAA performance.
Flat ground and AGL heights; no terrain, buildings or altitude-reference conversion.
Multirotors only. All DAA profiles share one vertical avoidance policy; groups of three or more are flagged, not solved.
DCB is first come, first served on the shortest available route per layer; there is no global optimisation, warm-up or steady state.
No RTTA, noise or visual impact, LFV airspace import, multiple areas or category-specific TLS.
At most 2,000 flights per day. Full-day studies are slow in the browser, and the ten-million-hour acceptance run has not been performed.
Sample model
Independent snapshots: no persistent identities, encounters or flight paths.
The Dn simulation is horizontal; altitude only applies to U-plan and geofence-band checks.
Edge-push redistribution, the mean-centred blue disk and the πr² rule are research approximations, not validated DAA behaviour.
Observation counts depend on the snapshot interval and are not collision rates.
U-plans are strategic plans; this model executes no avoidance maneuvers.
Sources and further reading
The papers support the traffic-map, conflict-graph, separation-radius and route-risk concepts. Project hypotheses, numerical approximations and configurable defaults are identified as such throughout this page.