From 5358fb76796ccdff08e44d357643731d399f94a4 Mon Sep 17 00:00:00 2001 From: qmohsu Date: Mon, 24 Aug 2026 15:20:25 +0800 Subject: [PATCH 1/2] Chapter 4: sweep the initial guess, and find the residual behind it When an iterative positioning solve fails, the reflex is to blame the starting point. example_initial_guess_basin.py holds the geometry at the well-behaved square, fixes one target, sets the measurement noise to zero, and sweeps the initial guess over 1681 seeds twice - changing nothing but the space the residual is formed in. The example was written expecting the wrapped-angle form to remove the basin outright and the sweep said otherwise, so the docstring, the README and the tests all state the narrower claim it can actually support. Over 1681 seeds: tan(psi) wrap(angle) seeds that fail 785 341 quiet: stalled or plausible 263 0 loud: walked off past 100 m 522 341 failures claiming converged 305 196 So it is 2.3x fewer failures, and underneath that a sharper statement: the wrapped-angle form removes the quiet class completely - the failures that look like answers - while a seed far outside the room still walks off under either parameterisation, and 196 of those still set converged=True. Fixing the residual makes the solver honest, not safe, which is why solve_batch's four conditions are not optional either way. One traced seed at (-4.5, -2.0) walked to 9.4e11 m in 18 iterations with the flag set; that run is the fourth panel. Two details worth keeping: - The target sits off the seed lattice at (3.2, 6.8). On a lattice point one of the 1681 seeds IS the answer, so the solver cannot move and scores as a stall - a classification artifact, and the rule against seeding a solver with the ground truth arrived at by accident. An assert now makes the collision impossible rather than subtracting it afterwards. - Classification goes through core.rf.solve_batch rather than being re-derived, and the failure modes are drawn as their own bar panel. Also adds tests/ch4_rf_point_positioning/test_initial_guess_basin.py, which pins both halves of the claim so the caption cannot drift to "fixed", and a guard that fails if the two parameterisations ever perform the same - at which point the example has stopped demonstrating anything. Notebook: new Part 7, "When the solver lies" - the collinear geometry from compare_geometries() where TOA and TDOA fail 100/100 with a GDOP of 1.43, then this sweep. Parts 1-6 all report the accuracy of the solves that worked. --- ch4_rf_point_positioning/README.md | 48 +- .../example_initial_guess_basin.py | 331 + .../figs/ch4_initial_guess_basin.pdf | Bin 0 -> 63596 bytes .../figs/ch4_initial_guess_basin.png | Bin 0 -> 155381 bytes .../figs/ch4_initial_guess_basin.svg | 23321 ++++++++++++++++ notebooks/ch4_rf_positioning.ipynb | 119 + .../test_initial_guess_basin.py | 155 + 7 files changed, 23973 insertions(+), 1 deletion(-) create mode 100644 ch4_rf_point_positioning/example_initial_guess_basin.py create mode 100644 ch4_rf_point_positioning/figs/ch4_initial_guess_basin.pdf create mode 100644 ch4_rf_point_positioning/figs/ch4_initial_guess_basin.png create mode 100644 ch4_rf_point_positioning/figs/ch4_initial_guess_basin.svg create mode 100644 tests/ch4_rf_point_positioning/test_initial_guess_basin.py diff --git a/ch4_rf_point_positioning/README.md b/ch4_rf_point_positioning/README.md index a338c3d..fc6ca72 100644 --- a/ch4_rf_point_positioning/README.md +++ b/ch4_rf_point_positioning/README.md @@ -15,6 +15,9 @@ python -m ch4_rf_point_positioning.example_aoa_positioning # Dilution of precision: walk away from the anchors (add --animate) python -m ch4_rf_point_positioning.example_dop_geometry +# Sweep the initial guess over the floor, under two residual parameterisations +python -m ch4_rf_point_positioning.example_initial_guess_basin + # Run with pre-generated datasets python -m ch4_rf_point_positioning.example_comparison --data ch4_rf_2d_square python -m ch4_rf_point_positioning.example_comparison --data ch4_rf_2d_nlos @@ -58,6 +61,46 @@ Two things are measured, not asserted: is fixed, yet the position error grows **6×** across the walk — purely because the anchors are in the wrong place. +## The initial guess, and why it is usually the wrong thing to blame (Section 4.4) + +| Figure | Built by | Size | +|--------|----------|------| +| `ch4_initial_guess_basin.{svg,pdf,png}` | `example_initial_guess_basin.py` | — | + +When an iterative solve fails, the reflex is to blame the starting point. This example holds +the geometry at the well-behaved square, fixes one target, sets the measurement noise to +**zero**, and sweeps the initial guess over 1681 seeds — twice, changing nothing but the +space the residual is formed in. + +| | | +|---|---| +| `residual="tan"` | `z = tan(ψ)`, Eq. (4.64) written literally | +| `residual="angle"` | `wrap(ψ − atan2(ΔE, ΔN))` — the default | + +The tan form carries two defects no starting point repairs. `tan` has period π, so an anchor +ahead and an anchor behind give the same measurement; and as the estimate runs to infinity +every bearing converges, so the tan residuals *shrink* on the way out. Infinity is an +attractor, and the iteration arrives there reporting success — one traced seed at (−4.5, +−2.0) walked to **9.4 × 10¹¹ m in 18 iterations with `converged=True`**. + +Measured over the sweep: + +| | `tan(ψ)` | `wrap(angle)` | +|---|---:|---:| +| seeds that fail | 785 / 1681 | 341 / 1681 | +| **quiet:** stalled at the seed, or stopped somewhere plausible | **263** | **0** | +| loud: walked off past 100 m | 522 | 341 | +| failures that still reported `converged=True` | 305 | 196 | + +So the honest headline is 2.3× fewer failures, and a sharper claim underneath it: the +wrapped-angle form removes the **quiet** class completely — the failures that look like +answers — while a seed far outside the room still walks off under either parameterisation. + +**Fixing the residual makes the solver honest, not safe.** The convergence flag is not a +check either way, which is why `core.rf.solve_batch`'s four conditions are not optional. Two +questions catch both defects, and they are worth asking of any residual: *is it bounded?* and +*does the cost stay large when the estimate is far wrong?* + ## 📂 Dataset Connection | Example Script | Dataset | Description | @@ -809,7 +852,7 @@ drift from the code. ```mermaid flowchart TB D["optional input
data/sim/ch4_rf_2d_linear
data/sim/ch4_rf_2d_nlos
data/sim/ch4_rf_2d_optimal
data/sim/ch4_rf_2d_square
only example_comparison reads it"] - E["ch4_rf_point_positioning/example_*.py
5 runnable demos"] + E["ch4_rf_point_positioning/example_*.py
6 runnable demos"] C["the reusable library
core/eval/ · core/rf/ · core/utils/"] F["ch4_rf_point_positioning/figs/
svg + pdf + png"] D -. "--data" .-> E @@ -822,6 +865,7 @@ flowchart TB | `example_aoa_positioning` | `core.eval`, `core.rf` | — | | `example_comparison` | `core.eval`, `core.rf`, `core.utils` | `ch4_rf_2d_linear`, `ch4_rf_2d_nlos`, `ch4_rf_2d_optimal`, `ch4_rf_2d_square` | | `example_dop_geometry` | `core.eval`, `core.rf` | — | +| `example_initial_guess_basin` | `core.eval`, `core.rf` | — | | `example_tdoa_positioning` | `core.eval`, `core.rf` | — | | `example_toa_positioning` | `core.eval`, `core.rf` | — | @@ -836,11 +880,13 @@ ch4_rf_point_positioning/ ├── example_tdoa_positioning.py # TDOA positioning demo ├── example_aoa_positioning.py # AOA positioning demo ├── example_dop_geometry.py # Sec. 4.5: how anchor geometry amplifies noise +├── example_initial_guess_basin.py # Sec. 4.4: the basin is the residual's, not the seed's ├── example_comparison.py # Compare all RF methods └── figs/ # Generated figures ├── toa_positioning_example.png # TOA positioning geometry and convergence ├── ch4_rf_comparison.png # Comprehensive RF methods comparison ├── ch4_aoa_geometry.png # AOA positioning geometry (ENU convention) + ├── ch4_initial_guess_basin.png # Seed sweep under two residual parameterisations ├── tdoa_covariance_matrix.png # TDOA covariance structure (Eq. 4.42) └── closed_form_comparison.png # Fang/Chan vs iterative solvers diff --git a/ch4_rf_point_positioning/example_initial_guess_basin.py b/ch4_rf_point_positioning/example_initial_guess_basin.py new file mode 100644 index 0000000..26e33de --- /dev/null +++ b/ch4_rf_point_positioning/example_initial_guess_basin.py @@ -0,0 +1,331 @@ +"""Where an iterative solve starts, and why that is usually the wrong thing to blame. + +Chapter 4, Section 4.4. A Gauss-Newton positioning solve needs an initial guess, and when it +fails the reflex is to blame the guess. This example sweeps the guess over the whole floor, +twice, changing nothing but the space the residual is formed in. + +The measurements here are NOISELESS, so every error on this page is the solver. + +Two parameterisations of one measurement model: + + residual="tan" z = tan(psi), Eq. (4.64) written literally + residual="angle" wrap(psi_measured - atan2(dE, dN)) [the default] + +The tan form carries two defects that no starting point repairs. `tan` has period pi, so an +anchor ahead and an anchor behind produce the same measurement and the residual cannot tell +them apart. And as the estimate runs to infinity every anchor tends to the same bearing, so +the tan residuals *shrink* on the way out -- infinity is an attractor, and Gauss-Newton +arrives there reporting success. The fourth panel traces one such run. + +Both questions to ask of any residual are answered by the wrapped-angle form and failed by +the tan form: **is it bounded?** and **does the cost stay large when the estimate is far +wrong?** + +WHAT THE SWEEP ACTUALLY SHOWS -- measured, and not what this example was written expecting. +Over 1681 seeds the wrapped-angle form fails 341 times against tan's 785, so the honest +headline is 2.3x, not "the basin disappears". What it removes is the QUIET class, and that it +removes completely: seeds that stall at the guess (82 -> 0) and seeds that stop somewhere +plausible but wrong (181 -> 0). What survives is the loud one -- a seed far outside the room +still walks off under either parameterisation, and 196 of those still set converged=True. + +So the parameterisation makes the solver *honest*, not *safe*. Fixing the residual is worth +doing and is not a substitute for the four-condition failure test in `core.rf.solve_batch`: +the convergence flag is not a check, whichever residual you form. + +Run: + python -m ch4_rf_point_positioning.example_initial_guess_basin + +Author: Li-Ta Hsu +References: Chapter 4, Eqs. (4.63)-(4.65), (4.66)-(4.70). The behaviour pinned here is the + same one asserted in tests/ch4_rf_point_positioning/test_aoa_initialisation_basin.py; + this example is its picture. +""" + +import argparse +import sys +from pathlib import Path + +import matplotlib +import numpy as np + +matplotlib.use("Agg") +import matplotlib.pyplot as plt +from matplotlib.colors import ListedColormap +from matplotlib.patches import Patch + +# Run as a script, sys.path[0] is THIS directory, so `core` resolves to whatever is +# installed -- another clone, a stale editable install -- or fails outright on a fresh +# one. See issue #86. +sys.path.insert(0, str(Path(__file__).resolve().parent.parent)) + +from core.eval import resolve_figs_dir, save_figure, show_figures_if_requested +from core.rf import AOAPositioner, aoa_azimuth, solve_batch +from core.rf.positioning import STALL_M + +FIGS_DIR = Path(__file__).parent / "figs" + +#: Four anchors on a square room -- a geometry that is not the problem here. The collinear +#: array in `example_comparison` fails for reasons of geometry; this one does not. +ANCHORS = np.array([[0.0, 0.0], [10.0, 0.0], [10.0, 10.0], [0.0, 10.0]]) + +#: One target, off-centre AND off the seed lattice. At (3.0, 7.0) one seed of the 1681 was +#: the answer exactly, so the solver never moved and `solve_batch` scored it -- correctly, by +#: its own definition -- as a stall. That is a classification artifact rather than a failure, +#: and it is also the rule against seeding a solver with the ground truth, arrived at by +#: accident. Off-lattice makes the collision impossible instead of subtracting it later. +TRUTH = np.array([3.2, 6.8]) + +#: The seed grid extends well outside the room: a cold start does not know where it is. +GRID_MIN, GRID_MAX, GRID_STEP = -5.0, 15.0, 0.5 + +#: Noiseless measurements converge to ~1e-8 m, so a millimetre is a generous "solved". +SOLVED_M = 1e-3 + +#: Outcome codes, in the order they are drawn. +SOLVED, STALLED, WRONG, DIVERGED, RAISED = 0, 1, 2, 3, 4 +LABELS = { + SOLVED: "solved", + STALLED: "stalled at the seed", + WRONG: "converged, wrong place", + DIVERGED: "diverged (>100 m)", + RAISED: "solver raised", +} +COLOURS = ["#2E7D32", "#F9A825", "#C62828", "#6A1B9A", "#455A64"] + +#: Separate palette for the two PARAMETERISATIONS. Reusing the outcome colours for the bars +#: put "tan" in the green of "solved" and "angle" in the purple of "diverged" on the same +#: figure -- two meanings for one colour, caught by looking at the render. +SERIES = ["#37474F", "#0277BD"] + + +def measurements(truth=TRUTH): + """Noiseless AOA azimuths from every anchor to the target.""" + return np.array([aoa_azimuth(a, truth) for a in ANCHORS]) + + +def seed_grid(): + """The initial guesses to try, as a meshgrid and as a flat (N, 2) list.""" + axis = np.arange(GRID_MIN, GRID_MAX + GRID_STEP / 2, GRID_STEP) + xx, yy = np.meshgrid(axis, axis) + seeds = np.column_stack([xx.ravel(), yy.ravel()]) + assert np.min(np.linalg.norm(seeds - TRUTH, axis=1)) > STALL_M, ( + "a seed coincides with the target: it cannot move, and would be scored a stall") + return axis, xx, yy, seeds + + +def sweep(residual, verbose=True): + """Solve the same fix from every seed and classify each outcome. + + Classification goes through `core.rf.solve_batch` rather than being re-derived here: + it is the four failure conditions applied once (raised / converged=False / never left + the seed / landed beyond the divergence threshold), and re-implementing them is the + recurring bug this repository has already paid for. + """ + axis, xx, yy, seeds = seed_grid() + meas = measurements() + truth = TRUTH[None, :] + solver = AOAPositioner(ANCHORS) + + codes = np.empty(len(seeds), dtype=int) + errors = np.empty(len(seeds)) + claimed = np.zeros(len(seeds), dtype=bool) + for i, seed in enumerate(seeds): + out = solve_batch(solver, meas[None, :], seed, truth, residual=residual) + err = float(out.errors[0]) + errors[i] = err + claimed[i] = bool(out.converged[0]) + if np.isnan(err): + codes[i] = RAISED + elif bool(out.stalled[0]): + codes[i] = STALLED + elif err > out.divergence_m: + codes[i] = DIVERGED + elif err > SOLVED_M: + codes[i] = WRONG + else: + codes[i] = SOLVED + + result = { + "residual": residual, + "axis": axis, + "xx": xx, + "yy": yy, + "seeds": seeds, + "codes": codes.reshape(xx.shape), + "errors": errors.reshape(xx.shape), + "claimed": claimed.reshape(xx.shape), + # the failures that lied: wrong answer, convergence flag set + "silent": int(np.sum((codes != SOLVED) & (codes != RAISED) & claimed)), + "counts": {c: int(np.sum(codes == c)) for c in LABELS}, + "n": len(seeds), + } + if verbose: + n_bad = result["n"] - result["counts"][SOLVED] + print(f"\n residual={residual!r}: {n_bad}/{result['n']} seeds failed to reach " + f"the target") + for c, name in LABELS.items(): + if result["counts"][c]: + print(f" {name:<24} {result['counts'][c]:>5}") + finite = errors[np.isfinite(errors)] + print(f" median error {np.median(finite):>10.2e} m") + print(f" worst error {finite.max():>10.2e} m") + print(f" of those failures, {result['silent']} reported converged=True") + return result + + +def trace_worst(result): + """Re-solve the worst SILENT failure and return its iterate path. + + Deliberately not the worst failure outright: the largest error in this sweep reports + `converged=False`, which is the solver behaving correctly and is not the thing worth a + panel. The interesting run is the furthest one that still set the flag. + + `AOAPositioner.solve` returns the iterates in `info["history"]`, so the walk out to + infinity can be drawn rather than described. + """ + flat = result["errors"].ravel() + finite = np.where(np.isfinite(flat), flat, -np.inf) + lying = result["claimed"].ravel() & (result["codes"].ravel() == DIVERGED) + ranked = np.where(lying, finite, -np.inf) + if not np.isfinite(ranked).any(): # no silent failure: fall back to the worst + ranked = finite + seed = result["seeds"][int(np.argmax(ranked))] + _, info = AOAPositioner(ANCHORS).solve( + measurements(), initial_guess=seed, residual=result["residual"] + ) + return seed, np.asarray(info["history"]), bool(info["converged"]) + + +def plot_basin(ax, result): + """One basin map: every seed coloured by what the solve did from there.""" + cmap = ListedColormap(COLOURS) + ax.pcolormesh(result["xx"], result["yy"], result["codes"], cmap=cmap, + vmin=-0.5, vmax=len(COLOURS) - 0.5, shading="auto") + ax.plot(ANCHORS[:, 0], ANCHORS[:, 1], "k^", ms=9, label="anchors") + ax.plot(*TRUTH, "w*", ms=18, mec="k", mew=1.2, label="target") + solved = result["counts"][SOLVED] + ax.set_title(f'residual="{result["residual"]}" ' + f'{result["n"] - solved}/{result["n"]} seeds fail', + fontsize=11) + ax.set_xlabel("initial guess x (m)") + ax.set_ylabel("initial guess y (m)") + ax.set_aspect("equal") + + +def plot_failure_rates(ax, results): + """Failure modes side by side. + + Its own panel, because an accuracy figure cannot say "this did not work" -- and a + method that failed everywhere must never be drawn as a zero-height bar. + """ + codes = [c for c in LABELS if any(r["counts"][c] for r in results)] + width = 0.8 / len(results) + for k, r in enumerate(results): + pos = np.arange(len(codes)) + k * width - 0.4 + width / 2 + pct = [100 * r["counts"][c] / r["n"] for c in codes] + bars = ax.bar(pos, pct, width, label=f'residual="{r["residual"]}"', + color=SERIES[k], edgecolor="black", linewidth=0.5) + for b, v, c in zip(bars, pct, codes, strict=True): + ax.text(b.get_x() + b.get_width() / 2, max(v, 0) + 1.5, + f"{r['counts'][c]}", ha="center", fontsize=9) + ax.set_xticks(np.arange(len(codes))) + ax.set_xticklabels([LABELS[c].replace(" ", "\n", 1) for c in codes], fontsize=9) + ax.set_ylabel("% of seeds") + ax.set_ylim(0, 108) + ax.set_title("Same measurements, same seeds, one line of difference", fontsize=11) + ax.legend(fontsize=9) + + +def plot_trace(ax, seed, history, converged): + """The walk to infinity, with the flag it set on arrival.""" + d = np.linalg.norm(history - TRUTH, axis=1) + ax.semilogy(np.arange(len(d)), np.maximum(d, 1e-12), "o-", color="#6A1B9A", ms=4) + ax.axhline(100.0, color="#C62828", ls="--", lw=1, + label="divergence threshold, 100 m") + ax.set_xlabel("Gauss-Newton iteration") + ax.set_ylabel("distance from the target (m)") + ax.set_title(f'seed ({seed[0]:.1f}, {seed[1]:.1f}) -> {d[-1]:.1e} m, ' + f'converged={converged}', fontsize=11) + ax.grid(True, which="both", alpha=0.3) + ax.legend(fontsize=9, loc="lower right") + + +def plot_summary(results, trace): + """The whole story on one figure.""" + fig, axes = plt.subplots(2, 2, figsize=(13.0, 10.4)) + plot_basin(axes[0, 0], results[0]) + plot_basin(axes[0, 1], results[1]) + plot_failure_rates(axes[1, 0], results) + plot_trace(axes[1, 1], *trace) + + # only the outcomes that actually occurred: an unused "solver raised" patch sat in a + # grey almost identical to the tan bars, which is a second meaning for one colour + seen = [c for c in LABELS if any(r["counts"][c] for r in results)] + handles = [Patch(facecolor=COLOURS[c], edgecolor="black", label=LABELS[c]) + for c in seen] + handles += [plt.Line2D([], [], color="k", marker="^", ls="", label="anchor"), + plt.Line2D([], [], color="w", marker="*", mec="k", ls="", ms=12, + label="target")] + fig.legend(handles=handles, loc="lower center", ncol=len(handles), frameon=False, fontsize=9) + fig.suptitle("An initial-guess problem that is not about the initial guess\n" + "AOA, four anchors, zero measurement noise", fontsize=13) + fig.tight_layout(rect=(0, 0.045, 1, 0.96)) + return fig + + +def main() -> None: + """Sweep both parameterisations and write the figure.""" + parser = argparse.ArgumentParser( + description="Initial-guess basin for AOA positioning (Chapter 4)") + parser.add_argument("--out-dir", default=str(FIGS_DIR), + help="Output directory for figures") + args = parser.parse_args() + + axis, *_ = seed_grid() + print("=" * 70) + print("Chapter 4: the initial guess is not usually the problem") + print("=" * 70) + print(f" {len(axis)}x{len(axis)} seeds over [{GRID_MIN:.0f}, {GRID_MAX:.0f}] m, " + f"target at ({TRUTH[0]:.1f}, {TRUTH[1]:.1f}), zero measurement noise") + + tan_r = sweep("tan") + ang_r = sweep("angle") + + bad_tan = tan_r["n"] - tan_r["counts"][SOLVED] + bad_ang = ang_r["n"] - ang_r["counts"][SOLVED] + quiet_tan = tan_r["counts"][STALLED] + tan_r["counts"][WRONG] + quiet_ang = ang_r["counts"][STALLED] + ang_r["counts"][WRONG] + + print("\n " + "-" * 66) + print(f" {'':30}{'tan(psi)':>12}{'wrap(angle)':>14}") + print(f" {'seeds that fail':30}{bad_tan:>12}{bad_ang:>14}") + print(f" {' quiet: stalled or plausible':30}{quiet_tan:>12}{quiet_ang:>14}") + print(f" {' loud: walked off past 100 m':30}" + f"{tan_r['counts'][DIVERGED]:>12}{ang_r['counts'][DIVERGED]:>14}") + print(f" {'failures claiming converged':30}" + f"{tan_r['silent']:>12}{ang_r['silent']:>14}") + print(f"\n Overall {bad_tan / max(bad_ang, 1):.1f}x fewer failures -- but the honest " + f"statement is narrower:") + print(f" the wrapped-angle form removes the QUIET failures ({quiet_tan} -> " + f"{quiet_ang}), the ones") + print(" that look like answers. Seeds far outside the room still walk off under both,") + print(f" and {ang_r['silent']} of those still set converged=True. The residual fix " + f"makes the") + print(" solver honest, not safe -- the four-condition test is still what catches it.") + + seed, history, converged = trace_worst(tan_r) + print(f"\n Worst SILENT tan failure: seed ({seed[0]:.1f}, {seed[1]:.1f}) walked to " + f"{np.linalg.norm(history[-1] - TRUTH):.2e} m") + print(f" in {len(history) - 1} iterations and reported converged={converged}.") + + paths = save_figure(plot_summary([tan_r, ang_r], (seed, history, converged)), + args.out_dir, "ch4_initial_guess_basin") + print(f"\n saved ch4_initial_guess_basin: " + f"{', '.join(p.suffix.lstrip('.') for p in paths)}") + plt.close("all") + print(f"Figures written to {resolve_figs_dir(args.out_dir)}") + show_figures_if_requested() + + +if __name__ == "__main__": + main() diff --git a/ch4_rf_point_positioning/figs/ch4_initial_guess_basin.pdf b/ch4_rf_point_positioning/figs/ch4_initial_guess_basin.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a0033795e310ed2ad364cad8685ef7fcba1d8b75 GIT binary patch literal 63596 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 literal 0 HcmV?d00001 diff --git a/ch4_rf_point_positioning/figs/ch4_initial_guess_basin.png b/ch4_rf_point_positioning/figs/ch4_initial_guess_basin.png new file mode 100644 index 0000000000000000000000000000000000000000..97b401490fe6f269875485fa058696a6bce22796 GIT binary patch literal 155381 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 literal 0 HcmV?d00001 diff --git a/ch4_rf_point_positioning/figs/ch4_initial_guess_basin.svg b/ch4_rf_point_positioning/figs/ch4_initial_guess_basin.svg new file mode 100644 index 0000000..95af121 --- /dev/null +++ b/ch4_rf_point_positioning/figs/ch4_initial_guess_basin.svg @@ -0,0 +1,23321 @@ + + + + + + + + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/notebooks/ch4_rf_positioning.ipynb b/notebooks/ch4_rf_positioning.ipynb index 9c125b9..f6f14a1 100644 --- a/notebooks/ch4_rf_positioning.ipynb +++ b/notebooks/ch4_rf_positioning.ipynb @@ -680,6 +680,125 @@ "print(\" - All methods benefit from symmetric anchor placement\")\n" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "# Part 7: When the solver lies\n", + "\n", + "Everything above reports the accuracy of solves that worked. This part is the other half.\n", + "\n", + "An iterative positioning solve can fail in four ways, and only one of them is loud:\n", + "\n", + "1. it raises;\n", + "2. it reports `converged=False`;\n", + "3. it **never leaves the initial guess** — Gauss-Newton calls a zero step convergence;\n", + "4. it walks off to somewhere absurd and **still sets `converged=True`**.\n", + "\n", + "Counting only 1 and 2 is how a method comes to look better than it is. `core.rf.solve_batch`\n", + "applies all four, which is what the two sections below rely on.\n", + "\n", + "## 7.1 Geometry: the same four beacons, in a line\n", + "\n", + "Beacons down a corridor rather than around a room. Nothing changes about the measurement\n", + "model or the noise — only where the anchors are.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from ch4_rf_point_positioning.example_comparison import compare_geometries\n", + "\n", + "# 100 fixes per method per geometry, with the failures kept rather than dropped\n", + "_ = compare_geometries(verbose=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### What just happened\n", + "\n", + "TOA and TDOA failed **100 out of 100** on the collinear array — and their identical 6.770 m\n", + "median is the tell: it is the distance from the seed to the truth, a property of the starting\n", + "point rather than of the measurements. Two methods that share nothing but their\n", + "initialisation cannot agree to three decimal places by accident.\n", + "\n", + "Note the GDOP column. TOA's GDOP on the collinear array is 1.43 against 1.02 for the square:\n", + "a healthy number, for a configuration that solves nothing. DOP is a local, first-order\n", + "measure and the ambiguity that breaks this geometry is global. **A healthy DOP is necessary,\n", + "not sufficient.**\n", + "\n", + "AOA is *better* on the collinear array than on the square, because reflecting a position\n", + "flips every azimuth — bearings carry the side information ranges do not.\n", + "\n", + "## 7.2 The initial guess, and why it is usually the wrong thing to blame\n", + "\n", + "Now hold the geometry fixed at the well-behaved square and sweep the *initial guess* over the\n", + "whole floor, 1681 seeds, with **zero measurement noise** — so every failure below is the\n", + "solver.\n", + "\n", + "The only thing that changes between the two maps is the space the residual is formed in:\n", + "\n", + "| | |\n", + "|---|---|\n", + "| `residual=\"tan\"` | `z = tan(psi)`, Eq. (4.64) written literally |\n", + "| `residual=\"angle\"` | `wrap(psi - atan2(dE, dN))` — the default |\n", + "\n", + "`tan` has period pi, so an anchor ahead and one behind give the same measurement; and as the\n", + "estimate runs to infinity every bearing converges, so the tan residuals *shrink* on the way\n", + "out. Infinity is an attractor, and the iteration arrives there reporting success.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from ch4_rf_point_positioning.example_initial_guess_basin import (\n", + " sweep, trace_worst, plot_summary)\n", + "\n", + "tan_result = sweep(\"tan\") # ~13 s\n", + "angle_result = sweep(\"angle\") # ~13 s\n", + "\n", + "fig = plot_summary([tan_result, angle_result], trace_worst(tan_result))\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Read the two maps against each other\n", + "\n", + "The wrapped-angle form does **not** make the solver globally convergent: a seed far outside\n", + "the room still walks off, 341 times out of 1681, and 196 of those still set `converged=True`.\n", + "\n", + "What it removes, completely, is the *quiet* class — the seeds that stall at the guess\n", + "(82 → 0) and the ones that stop somewhere plausible but wrong (181 → 0). Those are the\n", + "failures a reader cannot detect downstream, because they look like answers.\n", + "\n", + "So fixing the residual makes the solver **honest, not safe**. Two questions catch both\n", + "defects, and they are worth asking of any residual you write:\n", + "\n", + "- **is it bounded?**\n", + "- **does the cost stay large when the estimate is far wrong?**\n", + "\n", + "### Try it\n", + "\n", + "- Move the target: `example_initial_guess_basin.TRUTH = np.array([8.0, 2.0])` and re-run. The\n", + " basin moves with it — keep it off the 0.5 m seed lattice, or one seed *is* the answer and\n", + " gets scored as a stall.\n", + "- Widen the grid to `GRID_MIN, GRID_MAX = -20, 30`. The divergent fringe grows under both\n", + " parameterisations; the quiet failures stay at zero for `\"angle\"`.\n", + "- Add noise to `measurements()` and watch the boundary between basins fray.\n" + ] + }, { "cell_type": "markdown", "metadata": {}, diff --git a/tests/ch4_rf_point_positioning/test_initial_guess_basin.py b/tests/ch4_rf_point_positioning/test_initial_guess_basin.py new file mode 100644 index 0000000..d78473c --- /dev/null +++ b/tests/ch4_rf_point_positioning/test_initial_guess_basin.py @@ -0,0 +1,155 @@ +"""What the initial-guess basin figure claims, asserted. + +The figure argues one thing and it is easy to overstate: that AOA's cold-start failures are +a property of the residual's parameterisation rather than of the starting point. The example +was in fact written expecting the wrapped-angle form to remove the basin outright, and the +sweep said otherwise -- 341 of 1681 seeds still fail. What it removes is the QUIET class. + +So these tests pin the narrow claim, in both directions: + + * the quiet failures -- stalled at the seed, or stopped somewhere plausible but wrong -- + are what changing the residual removes; + * the loud ones survive, and the convergence flag is still not a check, so the figure must + not be re-captioned as "fixed". + +`test_the_ratio_is_not_one` is the "a demonstration that does not demonstrate" guard: if the +two parameterisations ever perform the same, this example has stopped demonstrating anything +and should be deleted rather than left to argue from a caption. + +The sweeps are ~13 s each, so they are computed once and shared -- see the Cost note in +.cursor/rules/030-figures-and-claims.mdc. + +Author: Li-Ta Hsu +References: Chapter 4, Eqs. (4.63)-(4.65). Companion to + test_aoa_initialisation_basin.py, which pins the same behaviour from a single + cold start; this one sweeps the whole floor. +""" + +import unittest + +import matplotlib + +matplotlib.use("Agg") # headless: no display during tests + +import numpy as np + +from ch4_rf_point_positioning.example_initial_guess_basin import ( + ANCHORS, + DIVERGED, + SOLVED, + STALLED, + TRUTH, + WRONG, + sweep, + trace_worst, +) + +_CACHE = {} + + +def sweeps(): + """Both sweeps, computed once per session.""" + if not _CACHE: + for residual in ("tan", "angle"): + _CACHE[residual] = sweep(residual, verbose=False) + return _CACHE["tan"], _CACHE["angle"] + + +def quiet(result): + """Failures that look like answers: never moved, or stopped somewhere plausible.""" + return result["counts"][STALLED] + result["counts"][WRONG] + + +class TestInitialGuessBasin(unittest.TestCase): + """Zero measurement noise, so every failure counted here is the solver.""" + + def test_the_quiet_failures_are_what_the_residual_fix_removes(self): + """The claim the figure is actually allowed to make.""" + tan, angle = sweeps() + + self.assertGreater(quiet(tan), 100) + self.assertEqual(quiet(angle), 0) + + def test_the_wrapped_form_never_stops_somewhere_plausible(self): + """No `converged, wrong place` outcome: the sneaky class goes to zero. + + A near-miss that reports success is the one failure mode a reader cannot detect + downstream, which is why it gets its own assertion. + """ + _, angle = sweeps() + + self.assertEqual(angle["counts"][WRONG], 0) + + def test_far_seeds_still_diverge_under_both(self): + """The honest half of the result, pinned so the caption cannot drift. + + If this ever fails, the wrapped-angle form has become globally convergent on this + geometry and the example's "honest, not safe" paragraph is out of date. + """ + tan, angle = sweeps() + + self.assertGreater(tan["counts"][DIVERGED], 0) + self.assertGreater(angle["counts"][DIVERGED], 0) + + def test_the_convergence_flag_is_not_a_check_under_either(self): + """Failures that set converged=True exist in both sweeps. + + This is why `solve_batch`'s four conditions are not optional: fixing the residual + does not turn the flag into a test. + """ + tan, angle = sweeps() + + self.assertGreater(tan["silent"], 0) + self.assertGreater(angle["silent"], 0) + + def test_the_ratio_is_not_one(self): + """A demonstration that does not demonstrate is a failing test.""" + tan, angle = sweeps() + failed_tan = tan["n"] - tan["counts"][SOLVED] + failed_angle = angle["n"] - angle["counts"][SOLVED] + + self.assertGreater(failed_tan / max(failed_angle, 1), 1.5) + + def test_seeds_inside_the_room_all_solve_with_the_wrapped_form(self): + """The practically relevant statement: a seed anywhere in the room is fine.""" + _, angle = sweeps() + inside = ( + (angle["xx"] >= ANCHORS[:, 0].min()) & (angle["xx"] <= ANCHORS[:, 0].max()) + & (angle["yy"] >= ANCHORS[:, 1].min()) & (angle["yy"] <= ANCHORS[:, 1].max()) + ) + + self.assertGreater(int(np.sum(inside)), 100) + self.assertTrue(np.all(angle["codes"][inside] == SOLVED)) + + def test_the_traced_run_is_a_silent_divergence(self): + """The fourth panel must show a lie, not an honest failure. + + The largest error in the tan sweep reports converged=False, which is correct + behaviour and not worth a panel; `trace_worst` deliberately picks the furthest run + that still set the flag. + """ + tan, _ = sweeps() + seed, history, converged = trace_worst(tan) + + self.assertTrue(converged) + self.assertGreater(np.linalg.norm(history[-1] - TRUTH), 1e6) + self.assertLess(np.linalg.norm(history[0] - seed), 1e-9) + + def test_the_measurements_are_sufficient(self): + """Nothing is wrong with the data: seeded at the answer, tan solves too. + + Without this the figure could be read as a geometry or an observability problem. + """ + from ch4_rf_point_positioning.example_initial_guess_basin import measurements + from core.rf import AOAPositioner + + for residual in ("tan", "angle"): + est, info = AOAPositioner(ANCHORS).solve( + measurements(), initial_guess=TRUTH + 0.5, residual=residual + ) + self.assertTrue(info["converged"], residual) + self.assertLess(float(np.linalg.norm(est - TRUTH)), 1e-3, residual) + + +if __name__ == "__main__": + unittest.main() From d405cac9e97502f1f33110411f2549160762cab2 Mon Sep 17 00:00:00 2001 From: qmohsu Date: Mon, 24 Aug 2026 16:40:27 +0800 Subject: [PATCH 2/2] Notebook Part 6.1: keep the failures in the Monte Carlo too The cell appended an error only `if info['converged']`, wrapped each solve in `except: pass`, and reported RMSE, mean and a "Success %" over whatever survived. That is the shape 030-figures-and-claims.mdc exists to stop: the solves that silently returned nonsense are averaged in, the ones that honestly refused disappear from the denominator, and a solve that converges at 1e11 m counts as a success. Now on core.rf.solve_batch - the four conditions applied once - reporting the median beside the failure count, with the failure rate drawn as its own panel because an accuracy plot cannot say "this did not work". The seed stays the beacon centroid, which was already right. Every method reports 0/100 on this geometry, which is the honest result and the right setup for Part 7: the same code and the same noise, with the beacons moved into a line, fails 100/100. --- notebooks/ch4_rf_positioning.ipynb | 157 ++++++++++++++--------------- 1 file changed, 78 insertions(+), 79 deletions(-) diff --git a/notebooks/ch4_rf_positioning.ipynb b/notebooks/ch4_rf_positioning.ipynb index f6f14a1..ca7d3d8 100644 --- a/notebooks/ch4_rf_positioning.ipynb +++ b/notebooks/ch4_rf_positioning.ipynb @@ -557,7 +557,16 @@ "\n", "## 6.1 Monte Carlo Simulation\n", "\n", - "Let's compare all methods under identical noise conditions across multiple trials.\n" + "All methods, identical noise, 100 trials — **with the failures kept.**\n", + "\n", + "An iterative solve can fail four ways and only one of them is loud: it raises, it reports\n", + "`converged=False`, it **never leaves the initial guess** (Gauss-Newton calls a zero step\n", + "convergence), or it walks off somewhere absurd and **still sets `converged=True`**. Counting\n", + "only the first two is how a method comes to look better than it is — the silent nonsense gets\n", + "averaged in and the honest refusals vanish from the denominator.\n", + "\n", + "`core.rf.solve_batch` applies all four and hands back the errors with a `solved` mask beside\n", + "them, so the median and the failure count can be read separately.\n" ] }, { @@ -566,70 +575,46 @@ "metadata": {}, "outputs": [], "source": [ - "# Monte Carlo comparison of RF positioning methods\n", - "print(\"=\"*70)\n", - "print(\"Monte Carlo Comparison: 100 Trials\")\n", - "print(\"=\"*70)\n", + "# Monte Carlo comparison of RF positioning methods, failures kept\n", + "from core.rf import solve_batch\n", "\n", - "np.random.seed(42)\n", - "n_trials = 100\n", + "print(\"=\" * 70)\n", + "print(\"Monte Carlo Comparison: 100 trials\")\n", + "print(\"=\" * 70)\n", "\n", - "# Noise levels\n", - "range_noise_std = 0.10 # 10 cm for TOA/TDOA\n", + "rng = np.random.default_rng(42)\n", + "n_trials = 100\n", + "range_noise_std = 0.10 # 10 cm for TOA/TDOA\n", "aoa_noise_std = np.deg2rad(3.0) # 3 degrees for AOA\n", "\n", - "# Results storage\n", - "results = {\n", - " 'TOA': [],\n", - " 'TDOA': [],\n", - " 'AOA': [],\n", + "truth = np.tile(true_pos, (n_trials, 1))\n", + "seed = np.mean(anchors, axis=0) # the beacon centroid: a cold start, never the answer\n", + "\n", + "batches = {\n", + " 'TOA': (positioner,\n", + " true_ranges + rng.normal(0, range_noise_std, (n_trials, len(anchors)))),\n", + " 'TDOA': (tdoa_positioner,\n", + " tdoa_measurements\n", + " + rng.normal(0, range_noise_std, (n_trials, len(tdoa_measurements)))),\n", + " 'AOA': (aoa_positioner,\n", + " true_aoa + rng.normal(0, aoa_noise_std, (n_trials, len(anchors)))),\n", "}\n", "\n", - "for trial in range(n_trials):\n", - " # Generate noisy measurements\n", - " noisy_ranges = true_ranges + np.random.randn(len(anchors)) * range_noise_std\n", - " noisy_tdoa = tdoa_measurements + np.random.randn(len(tdoa_measurements)) * range_noise_std\n", - " noisy_aoa = true_aoa + np.random.randn(len(anchors)) * aoa_noise_std\n", - " \n", - " # TOA\n", - " try:\n", - " est, info = positioner.solve(noisy_ranges, initial_guess=np.mean(anchors, axis=0))\n", - " if info['converged']:\n", - " results['TOA'].append(np.linalg.norm(est - true_pos))\n", - " except:\n", - " pass\n", - " \n", - " # TDOA\n", - " try:\n", - " est, info = tdoa_positioner.solve(noisy_tdoa, initial_guess=np.mean(anchors, axis=0))\n", - " if info['converged']:\n", - " results['TDOA'].append(np.linalg.norm(est - true_pos))\n", - " except:\n", - " pass\n", - " \n", - " # AOA\n", - " try:\n", - " est, info = aoa_positioner.solve(noisy_aoa, initial_guess=np.mean(anchors, axis=0))\n", - " if info['converged']:\n", - " results['AOA'].append(np.linalg.norm(est - true_pos))\n", - " except:\n", - " pass\n", - "\n", - "# Print summary\n", - "print(f\"\\n📊 Results Summary (range noise={range_noise_std*100:.0f}cm, AOA noise=3°):\\n\")\n", - "print(f\"{'Method':<8} {'RMSE (m)':<10} {'Mean (m)':<10} {'Max (m)':<10} {'Success':<10}\")\n", - "print(\"-\" * 48)\n", - "\n", - "for method in ['TOA', 'TDOA', 'AOA']:\n", - " errors = np.array(results[method])\n", - " if len(errors) > 0:\n", - " rmse = np.sqrt(np.mean(errors**2))\n", - " mean_err = np.mean(errors)\n", - " max_err = np.max(errors)\n", - " success = len(errors) / n_trials * 100\n", - " print(f\"{method:<8} {rmse:<10.4f} {mean_err:<10.4f} {max_err:<10.4f} {success:<10.0f}%\")\n", - " else:\n", - " print(f\"{method:<8} {'N/A':<10} {'N/A':<10} {'N/A':<10} 0%\")\n" + "outcomes = {name: solve_batch(solver, meas, seed, truth)\n", + " for name, (solver, meas) in batches.items()}\n", + "\n", + "print(f\"\\nrange noise {range_noise_std * 100:.0f} cm, AOA noise 3 deg\")\n", + "print(\"A fix has FAILED if it raised, reported converged=False, never left the\")\n", + "print(\"initial guess, or landed more than 100 m from the truth.\\n\")\n", + "print(f\"{'Method':<8}{'median (m)':>12}{'mean (m)':>11}{'worst (m)':>11}{'failed':>11}\")\n", + "print(\"-\" * 53)\n", + "for name, out in outcomes.items():\n", + " print(f\"{name:<8}{out.median_m:>12.3f}{out.mean_solved_m:>11.3f}\"\n", + " f\"{out.max_solved_m:>11.3f}{out.n_failed:>8}/{out.n}\")\n", + "\n", + "print(\"\\nThe median is over every fix that returned a number; mean and worst are\")\n", + "print(\"over the ones that solved. Reporting a bare mean across a divergence makes\")\n", + "print(\"the number a property of that one outlier rather than of the method.\")\n" ] }, { @@ -639,45 +624,59 @@ "outputs": [], "source": [ "# Visualize comparison results\n", - "fig, axes = plt.subplots(1, 2, figsize=(14, 5))\n", - "\n", - "# Box plot\n", - "ax1 = axes[0]\n", - "data_to_plot = [results['TOA'], results['TDOA'], results['AOA']]\n", - "labels = ['TOA', 'TDOA', 'AOA']\n", + "fig, axes = plt.subplots(1, 3, figsize=(16, 4.6))\n", + "methods = ['TOA', 'TDOA', 'AOA']\n", "colors = ['#3498db', '#e74c3c', '#2ecc71']\n", "\n", - "bp = ax1.boxplot(data_to_plot, tick_labels=labels, patch_artist=True)\n", + "# Errors of the fixes that SOLVED -- said so on the axis, because the ones that did not\n", + "# are not in this panel\n", + "solved_errors = [outcomes[m].errors[outcomes[m].solved] for m in methods]\n", + "\n", + "ax1 = axes[0]\n", + "bp = ax1.boxplot(solved_errors, tick_labels=methods, patch_artist=True)\n", "for patch, color in zip(bp['boxes'], colors):\n", " patch.set_facecolor(color)\n", " patch.set_alpha(0.7)\n", - "\n", - "ax1.set_ylabel('Position Error (m)', fontsize=12)\n", - "ax1.set_title('Error Distribution by Method', fontsize=14, fontweight='bold')\n", + "ax1.set_ylabel('Position error (m)', fontsize=12)\n", + "ax1.set_title('Error distribution — solved fixes only', fontsize=13, fontweight='bold')\n", "ax1.grid(True, alpha=0.3, axis='y')\n", "\n", - "# CDF plot\n", "ax2 = axes[1]\n", - "for method, color in zip(['TOA', 'TDOA', 'AOA'], colors):\n", - " errors = np.sort(results[method])\n", + "for method, color in zip(methods, colors):\n", + " errors = np.sort(outcomes[method].errors[outcomes[method].solved])\n", " cdf = np.arange(1, len(errors) + 1) / len(errors)\n", " ax2.plot(errors, cdf, label=method, color=color, linewidth=2)\n", - "\n", "ax2.axhline(y=0.95, color='gray', linestyle='--', alpha=0.7, label='95th percentile')\n", - "ax2.set_xlabel('Position Error (m)', fontsize=12)\n", + "ax2.set_xlabel('Position error (m)', fontsize=12)\n", "ax2.set_ylabel('CDF', fontsize=12)\n", - "ax2.set_title('Cumulative Distribution Function', fontsize=14, fontweight='bold')\n", + "ax2.set_title('Cumulative distribution', fontsize=13, fontweight='bold')\n", "ax2.legend(loc='lower right')\n", "ax2.grid(True, alpha=0.3)\n", "ax2.set_xlim(0, None)\n", "\n", + "# Its own panel: an accuracy plot cannot say \"this did not work\", and a method that failed\n", + "# everywhere would otherwise draw as a zero-height bar, which reads as the best result here\n", + "ax3 = axes[2]\n", + "failed = [100 * outcomes[m].n_failed / outcomes[m].n for m in methods]\n", + "bars = ax3.bar(methods, failed, color=colors, alpha=0.7, edgecolor='black')\n", + "for bar, m in zip(bars, methods):\n", + " ax3.text(bar.get_x() + bar.get_width() / 2, bar.get_height() + 2,\n", + " f\"{outcomes[m].n_failed}/{outcomes[m].n}\", ha='center', fontsize=11)\n", + "ax3.set_ylabel('Fixes that failed (%)', fontsize=12)\n", + "ax3.set_ylim(0, 100)\n", + "ax3.set_title('Failure rate', fontsize=13, fontweight='bold')\n", + "ax3.grid(True, alpha=0.3, axis='y')\n", + "\n", "plt.tight_layout()\n", "plt.show()\n", "\n", - "print(\"\\n💡 Key Observations:\")\n", - "print(\" - TOA and TDOA achieve similar accuracy with good geometry\")\n", - "print(\" - AOA accuracy depends on distance to anchors\")\n", - "print(\" - All methods benefit from symmetric anchor placement\")\n" + "print(\"\\nWhat this run measured:\")\n", + "for m in methods:\n", + " o = outcomes[m]\n", + " print(f\" {m:<5} median {o.median_m:.3f} m, {o.n_failed}/{o.n} failed\")\n", + "print(\"\\nEvery method solves every fix here, and that is a statement about this\")\n", + "print(\"GEOMETRY as much as about the methods. Part 7 keeps the code and the noise\")\n", + "print(\"and moves the beacons into a line.\")\n" ] }, {