Parallax Trackingבס״ד

Multi-target tracking, sensor fusion and estimation

Interactive tutorial · with Claude AI assistance

Several sensors report only the direction to each of several targets. The tracker has to decide which report belongs to which target, and each method here is a different answer to that question.

From an Algorithm to a Real System

The four articles before this one are about algorithms. This one is about everything around them that turns an algorithm into software that flies: certification, calibration, budgets, evidence. In plain words.

The four method articles show the algorithms, with the math and the measurements. Here the subject is different. An algorithm is maybe five percent of a real system. The rest is engineering: calibration, error budgets, certification evidence, configuration control. The proportion surprises people every time, and it decides how such projects are planned and budgeted. So this is not a paper. It is a short tour of what it takes to put an algorithm like MHT into an airborne system, with the real terms named for each part, so you can see the shape of the whole job.

Terms that will come up—DO-178C, ARP4754A, development assurance level, error budget, boresight calibration, worst-case execution time, structural coverage, tool qualification, configuration index, verification matrix.

Imager1920×1080 · 30 HzDetectthreshold · centroidBearingundistort · attitudeReportPTP-stampedMHT fusion10 Hz · N = 3Tracksid · state · covariance
Fig. 1. The processing chain the method articles share. The first four stages run on every node; only fusion is central. This essay is about everything this diagram does not show.

The algorithm is the small part

Look at one number first. The association engine behind these articles runs in 2.5 ms, inside a 100 ms cycle. A few hundred lines of arithmetic. Now ask what stands around it in a real airborne programme: a safety assessment, an error budget, a calibration procedure, worst-case timing analysis, structural coverage of every line of code, qualified tools, a configuration index, problem reports.

On a real programme the algorithm is a small fraction of the work. People who come from the university side usually do not believe this until they see one programme from inside. The standards that define all of it are ARP4754A for the system and DO-178C for the software, and the rest of this tour walks through the parts that cost the most.

Failure conditionwhat can go wrongAssurance levelDAL, from severityRequirementseach one testableDesign and codeVerificationevery statementEvidencethe deliverableeverything elsealgorithmevery test traces to a requirement
Fig. S1. The shape of one programme. The algorithm is the small box, drawn to scale.
system boundaryObserving node 1imager · detect · bearingObserving node 2Observing node 3Fusionassociation · filterI/F-2Target setthe environmentTime reference1 Hz · ≤ 1 msAttitude reference≥ 10 Hz · 0.25°I/F-0I/F-3I/F-4Track consumerexternalI/F-5I/F-1 is internal to a node — imager to processor — and is specified because it sizes the node, not because it crosses the line
Fig. S2. The whole system, not just the algorithm box: three observing nodes, a fusion element, and every interface that somebody outside the team has to agree to.

The level is not chosen

DO-178C sorts software by what happens when it fails. Catastrophic failure means level A. Our case is milder: the tracker only advises a human operator. The worst failure is misleading data — a confirmed track with a small reported error and nothing real under it. The operator loses situation awareness, so the condition is Major and the software lands on level C.

Table S1What each assurance level demands (DO-178C Annex A)
LevelFailureObjectivesWith independenceCoverage
ACatastrophic7130MC/DC, decision, statement
BHazardous6918Decision, statement
CMajor625Statement
DMinor262None
ENo effect00None
Independence: the verification is done by someone other than the author.

Now note what happens if the output commands a manoeuvre instead of advising a person. Same tracker, same code — and the level jumps to B, with nearly double the independent verification. The assurance level comes from the system context, not from the software itself. You cannot pick it to save money.

Accuracy comes from calibration

Here is the least intuitive result in the whole design. Take the full error budget of one bearing measurement: centroid noise, lens distortion, motion smear, time stamping, and knowledge of where the sensor points. The last term is 99% of the variance.

Table S2Where the bearing error comes from
All optical terms together0.024°
Knowing where the sensor points0.25° — 99% of the variance
Allocation used in this report0.30°, with 16% margin

So a better lens buys nothing, and a better survey of the mount buys almost everything. Accuracy is created on the ground, by calibration, and the algorithm can only preserve it. One consequence worth sitting with: the calibration file becomes airborne data, with its own part number. A wrong file crashes nothing — it gives confident wrong answers, the failure from the level discussion, arriving through the back door.

The worst case must be a number

A demo can say: it runs fast, we measured it. Avionics cannot. A measurement only tells what happened on the inputs you tried; certification asks for the worst case, as a number, proven from the structure of the code. Memory the same — fixed before the system ever runs, not observed while it does.

And the real code for such a system is written in C, to the MISRA C coding standard. This is not about style. MISRA exists to make the worst case analysable: it bans dynamic memory, unbounded loops, and the corners of C where the compiler is free to surprise you. One more thing people forget: the analysis tools themselves need qualification under DO-330, because a timing analyser that under-reports is a tool that hides an error. The reference code behind the deterministic engines is substantially progressed toward MISRA C:2012, with a documented gap analysis. Not compliant, and I do not claim it is.

Failure is a design input

In a real programme you write the failure table before you finish the design. Each row: what breaks, how the system detects it, what it does. A failure that cannot be detected is not a failure mode, it is a hazard, and you redesign until none remains.

Two examples from this system. Lose one of the three nodes, and the tracker cannot separate real targets from ghost intersections any more: accuracy drops from 41 m to 150–190 m, and no tuning can recover it, because the information is simply not in the geometry. The right response is to warn the operator, not to re-tune. And a knocked boresight is the nasty one: it produces precise, confident, wrong bearings, and the detection is indirect and late. That failure is what sets the recalibration schedule.

Verification, and the paper trail

Every requirement gets a test that traces to it, with a pass criterion written before the test runs. Together the tests must reach every statement in the code; whatever they do not reach is dead code to remove, or deactivated code to prove unreachable.

Then the layer nobody budgets for: the verification matrix, the configuration index that says exactly what was built from what, a problem report for every defect. This is not bureaucracy — it is what makes a result reproducible and a defect count. On a real programme this evidence is the deliverable. The code is almost a by-product.

What is not claimed

To be clear about this demo: no hardware was built, nothing here went through a qualification programme, and nothing is offered for certification credit. The algorithms in the method articles are real and measured — the deterministic core is verified against a reference implementation bit for bit, and the performance numbers are five-seed medians. But the system in this essay is an illustration, not a product.

If you take one thing from here, take this. When someone shows you a tracking algorithm and calls it a system, ask about the calibration plan and the worst-case timing. The answers tell you how far they really got.

Table IResult at the current epoch
Live: the running scenario's own numbers, not a recorded benchmark. For reproducible medians see Table III.
Fig. 2aMean 2σ major axis, recent history
Step changes are sensors being added or removed; the sawtooth is track birth and death.
Table IIIThe four algorithms, five-seed medians
Method2 sen.3 sen.4 sen. ms/stepvalidation
OSPA at cutoff 200 m and clutter 2, in metres; lower is better. Every cell is the median of five seeds — the same configuration has been measured spanning 4.5 to 162.9 across seeds, so a single-seed figure is noise. Tuned on one seed set, reported on a disjoint one. Timing measured solo at three sensors. Click a row to open that article.
Fig. 2. The Cramér–Rao position bound as a body. One target at the origin, its sensors around it, and the 2σ covariance ellipsoids of a converged EKF and of a batch Gauss–Newton solution, both normalised by σ · reff so the absolute noise level cancels. Drag to orbit; the sensor list and both estimators are behind the gear. Three-dimensional because with a single target there is nothing to associate, hence no filter and nothing that can diverge.
Table IIGeometry and accuracy for the constellation above

References

  1. D. B. Reid, “An algorithm for tracking multiple targets,” IEEE Trans. Autom. Control, vol. 24, no. 6, pp. 843–854, 1979.
  2. Y. Bar-Shalom and E. Tse, “Tracking in a cluttered environment with probabilistic data association,” Automatica, vol. 11, no. 5, pp. 451–460, 1975.
  3. K. G. Murty, “An algorithm for ranking all the assignments in order of increasing cost,” Oper. Res., vol. 16, no. 3, pp. 682–687, 1968.
  4. S. Deb, M. Yeddanapudi, K. Pattipati and Y. Bar-Shalom, “A generalized S-D assignment algorithm for multisensor-multitarget state estimation,” IEEE Trans. Aerosp. Electron. Syst., vol. 33, no. 2, pp. 523–538, 1997.
  5. D. Schuhmacher, B.-T. Vo and B.-N. Vo, “A consistent metric for performance evaluation of multi-object filters,” IEEE Trans. Signal Process., vol. 56, no. 8, pp. 3447–3457, 2008.
  6. S. C. Nardone and V. J. Aidala, “Observability criteria for bearings-only target motion analysis,” IEEE Trans. Aerosp. Electron. Syst., vol. 17, no. 2, pp. 162–166, 1981.
  7. D. P. Bertsekas, “The auction algorithm: a distributed relaxation method for the assignment problem,” Ann. Oper. Res., vol. 14, pp. 105–123, 1988.
  8. R. B. Langley, “Dilution of precision,” GPS World, vol. 10, no. 5, pp. 52–59, 1999.
  9. Y. Bar-Shalom, S. S. Blackman and R. J. Fitzgerald, “Dimensionless score function for multiple hypothesis tracking,” IEEE Trans. Aerosp. Electron. Syst., vol. 43, no. 1, pp. 392–400, 2007.
  10. A. Wald, “Sequential tests of statistical hypotheses,” Ann. Math. Statist., vol. 16, no. 2, pp. 117–186, 1945.
  11. J. Munkres, “Algorithms for the assignment and transportation problems,” J. SIAM, vol. 5, no. 1, pp. 32–38, 1957.
  12. P. R. J. Östergård, “A new algorithm for the maximum-weight clique problem,” Nordic J. Computing, vol. 8, no. 4, pp. 424–436, 2001.
  13. T. A. Feo, M. G. C. Resende and S. H. Smith, “A greedy randomized adaptive search procedure for maximum independent set,” Oper. Res., vol. 42, no. 5, pp. 860–878, 1994.
  14. T. Kurien, “Issues in the design of practical multitarget tracking algorithms,” in Multitarget-Multisensor Tracking: Advanced Applications, Y. Bar-Shalom, Ed. Artech House, 1990, ch. 3.