Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

5G Predictive Beam Tracking

Training-free, formally-guaranteed candidate beam sets for mmWave/sub-6GHz beam management

A Kalman filter's own uncertainty, calibrated online with conformal inference — no training data, no offline calibration, no trained neural network.

Adaptive conformal candidate beam set around a moving UE

Octave Validated on License Status

Results · How it works · Getting started · Results summary


The problem

A 5G mmWave gNB with an $N$-beam codebook must pick the right beam for a moving UE every scheduling slot. Two bad options dominate practice: trust a single predicted beam (fast, but wrong exactly when the prediction is uncertain) or sweep the entire codebook ($N\times$ the probing cost, every step, regardless of whether it's needed). Both ignore the one signal a tracking filter already has for free: how confident it is.

The approach

This project replaces that binary choice with a candidate beam set that grows and shrinks with the Kalman filter's own posterior covariance, sized online by adaptive conformal inference (ACI) so it carries a formal, distribution-free coverage guarantee — $P(\text{true beam} \in \text{set}) \geq 1-\alpha$without ever seeing a labeled training set or running an offline calibration pass. The closest published work with a comparable guarantee (SCAN-BEST, arXiv:2503.13801) wraps a trained neural network and needs offline calibration data. This system needs neither.

Results

The flagship result: accuracy vs. probing overhead

At a matched ~2-beam overhead, the conformal candidate set beats a static top-$k$ window by +37 percentage points, and matches full-codebook-sweep accuracy at 8× lower cost — by spending probes only when the filter is actually uncertain.

Accuracy vs. overhead frontier: conformal beats fixed top-k by 37 points at matched overhead and matches full sweep at 8x lower cost

Validated on real hardware data, not just synthetic noise

The identical pipeline — unmodified — runs on four real DeepSense6G scenarios (real RTK-class GPS, real 64-beam measured power). A fixed-quantile baseline that shares the exact same Kalman covariance collapses to ~51% coverage against a 90% target on real data — a guarantee-breaking failure. The online-adaptive conformal set, using nothing else, recovers to ~90%. This isolates what the online adaptation is doing: it's not a refinement, it's the thing that makes the guarantee hold at all outside the synthetic Gaussian-noise regime it was designed under.

Real-world validation on DeepSense6G: nominal fixed-quantile method under-covers badly (51% pooled) while online conformal recovers to 90% target

Why training-free matters: measured, not asserted

A real trained MLP and LSTM (same real DeepSense6G data, matched candidate-set size, no power-privilege either side) match or exceed the training-free method's coverage in-distribution — trained models are not a strawman here. But trained on two scenarios and tested on a real, held-out third with no spatial overlap, the LSTM collapses (95.7% → 68.8%, a 26.9-point drop) while the conformal set barely moves (91.0% → 89.5%, 1.5 points) — because it has no training distribution to fall out of. This is the concrete, measured evidence for the training-free method's actual advantage: not raw accuracy, but robustness to shift, zero training cost, and a coverage guarantee neither trained baseline provides.

Distribution shift robustness: trained LSTM collapses 27 points under real cross-scenario shift while conformal barely moves

Full results, including the honest negatives

This project reports 16 sub-studies (C1–C16) — coverage-guarantee stress tests, adaptation-speed characterization, per-user budget allocation under scarcity, a legible-degradation monitor, and more — with the same discipline throughout: pre-registered thresholds, seed-disciplined evaluation, and negative results kept rather than tuned away. Two headline examples of the latter: the closed-loop budget controller has a real overhead ceiling it can't grow past on demand, and a blockage-vs-misalignment discriminator does not clear a usable precision bar at the project's default GPS rate — both reported plainly rather than omitted. Results summary in RESULTS.md

How it works

flowchart LR
    A["GPS fix<br/>(noisy, 5 Hz)"] --> B["Kalman filter<br/>kf_step.m"]
    B --> C["Angular uncertainty<br/>kf_angle_uncertainty.m<br/>(delta-method)"]
    C --> D["Online conformal<br/>calibration<br/>conformal_beamset.m"]
    D --> E["Candidate beam set<br/>(grows/shrinks with<br/>reported uncertainty)"]
    E --> F["Mini-sweep<br/>(probe only the set)"]
    F --> G["Served beam"]
    F -.->|"trailing score<br/>feedback"| D

    style D fill:#2a78d6,color:#ffffff,stroke:#184f95
    style E fill:#2a78d6,color:#ffffff,stroke:#184f95
Loading
  1. Kalman filter tracks UE position from sparse, noisy GPS fixes — standard constant-velocity model.
  2. Angular uncertainty is derived from the filter's own posterior covariance via a delta-method projection through atan2 — no extra state, no extra model.
  3. Online conformal calibration (Gibbs & Candès 2021-style ACI) sizes the candidate set's angular radius from a trailing window of the system's own recent prediction errors — self-correcting, with no labeled data and no offline pass.
  4. Only the candidate set is probed — a real, counted cost, not a free oracle lookup — and the feedback from whether the true beam landed inside it drives the next step's calibration.

Every module in this pipeline is Octave/MATLAB-compatible, reused unmodified across all 16 sub-studies.

Repository structure

core/          # shared simulation modules (single source of truth): sim_config.m, generate_trajectory.m,
               # kf_step.m, beam_mapping.m, signal_model.m, evaluation.m, comms_metrics.m, ...
conformal/     # the flagship contribution: kf_angle_uncertainty.m, conformal_*.m,
               # run_conformal_tracking.m, budget_controller.m, reliability_monitor.m, ...
deepsense/     # real-data (DeepSense6G) validation bridge: deepsense_loader.m, run_deepsense_tracking.m
analysis/      # runnable top-level scripts: main.m, run_verification.m, conformal_beamset_analysis.m,
               # deepsense_validation.m, heterogeneous_reliability.m, and every other "octave --eval X" entry point
python_baseline/  # C14 satellite: real trained-baseline comparison (PyTorch)
docs/          # figures, theory notes, novelty checks, legacy .fig outputs
RESULTS.md     # results summary (C1–C16 headline numbers)
ENVIRONMENT.md # exact tool versions + determinism confirmation
.octaverc      # adds core/, conformal/, deepsense/, analysis/ to Octave's path automatically

There is no build system — this is a topically-organized directory of .m scripts and functions, verified against GNU Octave 11.3 (no proprietary toolboxes). .octaverc is sourced automatically by Octave whenever it starts in this directory, so every octave --eval "<script>" command below works unqualified regardless of which subfolder that script lives in.

Getting started

# core simulation + headline ablation grid
octave --eval "main"

# structural correctness suite (28 invariants, ~30s, exits nonzero on failure)
octave --eval "run_verification"

# the flagship frontier result (Figure 1 above)
octave --eval "conformal_beamset_analysis"

# real-data validation on DeepSense6G (Figure 2 above; requires the dataset — see Data below)
octave --eval "deepsense_validation"

The C14 real-trained-baseline satellite comparison (Figure 3) runs separately, in Python:

octave --eval "export_deepsense_for_python"                      # bridges Octave -> CSV
cd python_baseline && python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
.venv/bin/python train_eval.py && .venv/bin/python compare.py    # writes results/c14_table.txt

See the analysis/ directory for the complete list of runnable analysis scripts, and RESULTS.md § Reproducing these results for the full reproduction log.

Data

Real-data validation (C7, C9, C11, C12, C14) uses the DeepSense6G adaptive beam-tracking scenarios 31–34. Neither the raw dataset nor any per-row extraction of it is included in this repository — request access from the DeepSense6G project directly and place each scenario under scenario31/scenario34/ at the repo root (already .gitignored). export_deepsense_for_python.m regenerates python_baseline/data/*.csv locally from your own copy of the raw dataset (also .gitignored) — those derived files are not redistributed here either, since they remain a substantial extraction of a license-restricted third-party dataset. Every synthetic result (C1–C6, C8, C10, C13, C15, C16) is fully self-contained and requires no external data.

Requirements

  • GNU Octave ≥ 11.3 (or MATLAB) — no Statistics/proprietary toolboxes required for any core script.
  • Python 3 + PyTorch (CPU) — only for the optional python_baseline/ C14 satellite comparison; the training-free system itself has zero Python dependency.

Citing this work

This is an independent research project, not affiliated with 3GPP, DeepSense6G, or any vendor. If it's useful to you, please cite the repository directly; see RESULTS.md for citations to the specific published work each contribution is positioned against (SCAN-BEST, Gibbs & Candès ACI, Larew & Love UKF beam tracking, DeepSense6G).

License

All rights reserved — see LICENSE. This work may not be republished, redistributed, or represented as your own, in whole or in part, without written permission.

About

A training-free, formally-guaranteed beam-tracking system for 5G/6G that predicts which antenna beam a moving user needs next — using a Kalman filter to track position and an online conformal calibration layer (Adaptive Conformal Inference) to size a candidate beam set with a mathematical coverage guarantee.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages