Knowing an aircraft’s position in a simulation does not mean a sensor can measure it. Tracktor starts with truth state and produces imperfect observations; Trackfuse combines the resulting reports into estimates of position and motion.

That boundary is central to the tsim suite. The flight simulator can supply moving truth, while tview displays both the observations and their fused result. Trackfuse does not use simulation truth IDs to solve association.

Truth, Measurement, and Estimate

graph LR
    truth["DIS entity truth"] --> sensor["Geometry and sensor detection model"]
    sensor --> noise["Noisy detections and false alarms"]
    noise --> local["Per-sensor association and filtering"]
    local --> reports["TTR1 source reports"]
    reports --> fuse["Cross-sensor association and fusion"]
    fuse --> fused["TTR1 fused reports"]
    reports --> view["tview"]
    fused --> view

Truth targets carry Earth-fixed position, velocity, acceleration, timestamp, and relevant signatures. Radar uses RCS; infrared uses target and plume characteristics; passive RF uses target-mounted emitters. Each sensor evaluates its coverage and detection model before adding seeded measurement noise and Poisson false alarms.

The result is a measurement with uncertainty. Filters turn successive measurements into estimates, and association decides which observation belongs to which existing track. These are separate operations: an accurate measurement still produces a bad track if assigned to the wrong target.

Four Sensor Families, Different Information

Sensor Observed quantities Main coverage and detection controls
AESA radar Range, range rate, azimuth, elevation Steering, field of view, range gates, RCS, detection probability
Rotating radar Range and azimuth; optional elevation and range rate RPM, beamwidth, scan phase, range gates, RCS
EO/IR camera Pixel centroid and corresponding angular bearing Focal length, field of view, revisit time, signature, atmosphere
Passive RF Azimuth, elevation, frequency Frequency coverage, sensitivity, emitter power and duty cycle

Sensor-body axes are forward/boresight, right, up. This differs from the flight model’s forward/right/down aircraft convention. Angular measurements are in the sensor body frame, while Cartesian tracking uses ECEF metres. Correct transformations are as important as the filter equations.

Radar: Detection Range Is a Probability

Both radar families normalize observations to:

[range_m, range_rate_mps, azimuth_rad, elevation_rad]

AESA steering selects the beam direction. A rotating radar instead derives scan angle from timestamp and rotation rate, so a target can be within range but outside the beam at the current tick. WGS-84 Earth line-of-sight checks reject geometrically obscured targets.

A range cutoff and a calibrated detection point have different meanings. In the supplied rotating-radar scenario, reference_range_m gives 50% single-look detection probability for a 1 m² target at the default SNR threshold. max_range_m is a geometry and computation cutoff, not a claim that every target inside it will be detected.

A 2D radar can omit elevation and range rate. Those fields then receive nominal values with large covariance and metadata identifying them as unobserved. Downstream processing must preserve that uncertainty instead of treating the nominal values as precise measurements.

False-alarm rate is the mean count per sensing tick. At 20 Hz, a desired mean of ten false measurements per second corresponds to 0.5 per tick. Likewise, sensing at 20 Hz does not imply a rotating radar revisits each target twenty times per second.

Radar detections and tracks in the tactical viewer
Radar detections and tracks in the tactical viewer

Infrared: A Bearing with a Detection Model

The infrared camera projects a target to a pixel centroid and reports the corresponding azimuth/elevation. Optional target-class tables calibrate probability of detection versus range. The runtime adjusts those probabilities using target signature, aspect, atmospheric extinction, and background noise; older scenarios retain the intensity/contrast fallback.

A rear-facing plume can make the same aircraft more detectable than a front-on view. Increased extinction can reduce detection probability even when the target remains in the field of view. Revisit timing controls when another observation becomes available.

This is a centroid and angular-observation model. It does not render a synthetic infrared image whose pixels are then processed by an image detector.

Passive RF: Preserve the Missing Range

Passive RF checks emitter frequency against sensor coverage and evaluates sensitivity, path loss, effective radiated power, and duty cycle. Measurements contain noisy direction and frequency.

A single site supplies a line of bearing. Tracktor preserves it as a bearing-only report; it does not assign an invented range to manufacture a Cartesian point. The passive sensor model uses target-emitter properties rather than decoding the full iqradio waveform pipeline.

Passive-RF bearing geometry and fused tracks
Passive-RF bearing geometry and fused tracks

Filtering and Association Within a Sensor

Radar observations initialize a nine-dimensional constant-acceleration ECEF state:

state = [x, y, z, vx, vy, vz, ax, ay, az]

Prediction advances this state between observations. Measurement updates combine the prediction with new evidence according to their covariances. Passive RF and infrared instead use constant-angular-rate filtering, retaining bearing direction and angular covariance.

Tracktor uses gated, deterministic minimum-cost matching over disconnected association components. It first maximizes valid track continuations, then minimizes residual cost. This avoids changing identities merely because detections arrive in a different order.

A source-local track ID identifies continuity within one tracker. The cross-sensor identity is (sensor index, source-local track ID). Scenario sensor indices are assigned contiguously from zero, while human-readable names remain presentation fields.

Established source tracks default to a maximum reporting rate of 0.5 Hz, with creation and drop events sent immediately. Report cadence, sensor revisit, and simulation tick rate must therefore be considered independently.

From Bearings to a Cartesian Hypothesis

Two non-parallel lines of bearing can suggest a position. In practice, noisy lines usually do not intersect exactly. Trackfuse evaluates closest-line geometry, separation, and quality, then rejects seeds outside its baseline and range constraints.

Nearly parallel bearings provide weak range information. A small angular error can move their inferred intersection a long way, so a plausible point should not immediately be treated as a confident track.

The default confirmation policy adds two requirements:

  • A hypothesis must survive two distinct timestamp epochs before publication.
  • Bearing-only support must be coherent across three independent infrared sensors or two independent passive-RF sensors.

Initial position comes from bearing-pair geometry, but subsequent observations update a 9D filter through covariance-weighted angular measurements. Repeated epochs establish motion; velocity and acceleration uncertainty remain large early in a bearing-only track’s life.

Cartesian radar reports can seed fused identities directly and update compatible bearing-derived tracks. This allows a radar observation to constrain a previously uncertain range estimate.

Scanning infrared coverage and fused tracks
Scanning infrared coverage and fused tracks

Time and Uncertainty Control Stability

The defaults favor local simulated traffic, but their purposes differ:

Control Default Purpose
Reorder window 0.10 s Hold briefly for UDP timestamp reordering
Fixed-lag replay Disabled Reprocess committed history when genuinely late data requires it
Maximum lateness 2 s Reject observations too old for the current filter
Maximum sensor baseline 2,000 km Bound bearing-pair initialization and reinforcement
Maximum bearing range 1,000 km Bound supported sensor-to-target distance
Angular innovation gate NIS 9.21 Reject bearings inconsistent with predicted state and covariance
Confirmed track age 30 s Retain tracks through temporary observation gaps

An innovation gate measures consistency relative to uncertainty. The same angular residual can be acceptable for an uncertain prediction and unacceptable for a well-constrained one.

Process acceleration uncertainty controls the tradeoff between following maneuvers and smoothing noise. Increasing it lets the filter respond faster but gives observations more freedom to move the estimate. Increasing confirmation support reduces premature publication while delaying acquisition. The Trackfuse guide documents the full controls and their interaction.

Parallel Fusion without Losing Identity Order

The default service uses four Taskflow workers and geographic S2 zones. Stable track storage is indexed by exclusive owner lists; ownership follows fused position and migrates with hysteresis at epoch barriers.

Association searches the observation’s zone and neighbors, then expands to other zones whose predicted-position and uncertainty envelopes can reach the measurement region. This avoids unconditional global searches while preserving candidates near boundaries or with broad covariance.

Workers predict, build indexes, score candidates, and update independent filters. Jobs sharing contributors, tracks, or reusable hypotheses become ordered components. At barriers, the coordinator installs new tracks and assigns public IDs and wire sequences in original command order.

A dedicated publisher encodes and sends sequenced batches while the next epoch runs. A single queue producer token preserves global FIFO order. Dense ambiguous associations can still create larger serial components; worker count alone does not determine throughput. Positive fixed-lag replay uses the monolithic history path.

Run the Pipeline and Inspect Its Health

After the shared build, the main installed Process Compose group launches the truth sources, sensors, fusion, and viewers:

cd build/dist/bin
process-compose -U

The default sensor library starts empty. Use tview to place sensors, apply their scenario to Tracktor, and save the configuration. The local feeds are 239.255.0.1:3000 for DIS truth and 239.255.0.2:5000 for track reports, using loopback by default.

Reports are version-2 TTR1 FlatBuffers batches, packing multiple events under the safe-MTU limit. Trackfuse publishes fused output onto the same feed but ignores fused input, preventing a feedback loop.

Tracktor exposes control and health on port 33103; Trackfuse health uses 33105. Inspect /health alongside source and fused counts when diagnosing backlog. In tview, the operational presentation emphasizes cyan fused tracks; diagnostic views expose raw radar, IR, and RF tracks, bearings, trails, and covariance.

The Tracktor guide details sensor calibration and report semantics. The Trackfuse guide covers association, parallel execution, benchmarks, and limitations. These models are useful for testing observability and fusion behavior; results remain dependent on the supplied signatures, geometry, cadence, and noise assumptions.

Return to the tsim overview, or explore the aircraft truth generator and orbital network geometry.