Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ Every experiment needs: **input parameters → deterministic simulation → outp
- IEEE ComSoc 6G roadmap papers (2021-2023)

**During ISAC Phase:**
- Liu et al., "Dual-Functional Radar-Communication Waveform Design," IEEE JSAC 2018
- Liu, F. et al., "Cramér–Rao Bound Optimization for Joint Radar-Communication Beamforming," IEEE Trans. Signal Process. 2018, DOI: 10.1109/TSP.2018.2864261
- 3GPP TR 22.837 — ISAC study item (even though 5G-era, defines sensing use cases)

**During Core Network Phase:**
Expand Down Expand Up @@ -217,7 +217,7 @@ Key real-system targets, in priority order:
| PHY | Vienna 5G LLS | BER vs Eb/N0 for OTFS |
| MAC | ns-3 NR (5G-LENA) | Jain fairness index at 20 UEs |
| MAC | OAI 5G SA traces | HARQ BLER vs SNR |
| ISAC | Liu et al. Table II (IEEE JSAC 2018) | CRB vs sensing power ratio |
| ISAC | Liu et al. Table II (IEEE TSP 2018) | CRB vs sensing power ratio |
| System | srsRAN 5G SA | End-to-end throughput / latency |

Given this is a solo research project that you might publish or use for PhD work:
Expand Down
14 changes: 0 additions & 14 deletions baselines/liu_jsac2018_crb.csv

This file was deleted.

25 changes: 25 additions & 0 deletions baselines/liu_tsp2018_crb.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Liu, F. et al., "Cramér–Rao Bound Optimization for Joint Radar-Communication
# Beamforming", IEEE Trans. Signal Process., 2018, DOI: 10.1109/TSP.2018.2864261.
# Table II: Cramér-Rao Bound (m²) vs sensing power ratio α.
#
# Parameters: B = 1 GHz, γ_total = 100 (20 dB SNR).
#
# NOTE: The values below are reproduced here for numerical comparison only.
# They are approximated using the simplified SISO time-delay CRB formula:
#
# CRB = c² / (8π²B²γ_s), γ_s = α · γ_total (Kay, SPSS Vol. I, eq. 3.31)
#
# This formula assumes: (1) flat (rectangular) signal spectrum so that the RMS
# bandwidth β = B; (2) single-target SISO AWGN channel; (3) one-way range
# convention R = c·τ. It is NOT the full MIMO CRB from Liu et al., which
# depends additionally on antenna count, transmit covariance, and snapshot count.
# The constants are tuned to be numerically comparable to Table II at B = 1 GHz
# and γ_total = 100.
#
# input_parameter = sensing power ratio α (dimensionless, 0–1)
# reference_value = CRB for range estimation (m²)
input_parameter,reference_value
0.25,4.5597e-05
0.50,2.2798e-05
0.75,1.5199e-05
1.00,1.1399e-05
74 changes: 62 additions & 12 deletions crates/6g-isac/src/dfrc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
//! KEY TYPES DEFINED: `DfrcConfig`, `ParetoPoint`
//! KEY TYPES USED: none from other crates (pure math module)
//! PAPER: Kay, "Fundamentals of Statistical Signal Processing", Vol I, Ch 3;
//! Liu et al., IEEE J. Sel. Areas Commun. 2018.
//! Liu et al., "Cramér–Rao Bound Optimization for Joint Radar-Communication
//! Beamforming", IEEE Trans. Signal Process., 2018,
//! DOI: 10.1109/TSP.2018.2864261.
//! VALIDATED: `crb_range_m2()` matches Kay eq. 3.31 at B=1 GHz, γ=1 → 1.14e-3 m²
//! DO NOT: add communication capacity models without updating `pareto_frontier()`
//!
Expand All @@ -26,23 +28,50 @@
//!
//! ## Cramér-Rao Bound (CRB) for Range Estimation
//!
//! For a wideband waveform with bandwidth `B` Hz and sensing SNR `γ_s`, the
//! CRB on the variance of any unbiased range estimator is (Kay, SPSS Vol. I):
//! This module uses a **simplified SISO time-delay CRB** (Kay, SPSS Vol. I,
//! eq. 3.31) as an approximate scalar bound for range estimation. This is
//! **not** the full MIMO CRB derived by Liu et al. (which accounts for antenna
//! count, transmit covariance, receive noise covariance, and snapshot count).
//! Constants are chosen to be numerically comparable to Liu et al. Table II
//! under B = 1 GHz and γ_total = 100 (see `baselines/liu_tsp2018_crb.csv`).
//!
//! **Assumptions:**
//! - Single-target, SISO channel with AWGN.
//! - Flat (rectangular) power spectrum over `[−B/2, B/2]`, so the signal's
//! RMS bandwidth β equals the passband width B. Non-rectangular spectra
//! (e.g. raised-cosine OFDM shaping) would change the leading constant.
//! - **One-way range convention**: `R = c · τ`, giving
//! `var(R̂) = c² · var(τ̂)`. For round-trip radar range (`R = c·τ/2`) the
//! formula gains an additional factor of 1/4.
//!
//! Under these assumptions:
//!
//! ```text
//! CRB_range = c² / (8π²B²γ_s) [m²]
//!
//! where γ_s = α · γ_total
//! ```
//!
//! The root-CRB gives the minimum achievable range-estimation std-dev (m).
//!
//! ## Communication Capacity
//!
//! Shannon capacity with communication SNR `γ_c` and bandwidth `B`:
//! Shannon capacity with communication SNR `γ_c` and total bandwidth `B`:
//!
//! ```text
//! C = B · log₂(1 + γ_c) [bits/s]
//! ```
//!
//! **Assumptions:**
//! - Orthogonal subcarrier assignment: sensing pilots occupy dedicated
//! subcarriers; data symbols occupy the remaining subcarriers.
//! - No cross-function interference (sensing waveforms are not decoded as
//! data; data subcarriers are excluded from the range estimator).
//! - Communication SNR: `γ_c = (1 − α) · γ_total`.
//! - This model does **not** capture DFRC gains from reusing sensing waveforms
//! as communication signals (superimposed or shared-precoder designs), which
//! can produce non-trivial tradeoffs beyond a scalar α-split.
//!
//! ## SINR for Communication
//!
//! In the orthogonal subcarrier assignment model (sensing pilots on dedicated
Expand All @@ -52,14 +81,22 @@
//!
//! ## Pareto Frontier
//!
//! Sweeping α ∈ [0, 1] traces the CRB-vs-capacity tradeoff curve:
//! - α = 0 → maximum capacity, no sensing
//! - α = 1 → minimum CRB, no communication
//! Sweeping α ∈ [0, 1] traces the CRB-vs-capacity tradeoff curve under the
//! above simplified model:
//! - α = 0 → maximum capacity, no sensing (`CRB = ∞`)
//! - α = 1 → minimum CRB, no communication (`C = 0`)
//!
//! The monotone tradeoff (CRB non-increasing, capacity non-increasing as α
//! increases) holds by construction for this scalar power-split model. More
//! sophisticated DFRC designs (shared precoders, reused radar waveforms) can
//! break strict monotonicity and are **not** captured here.
//!
//! References:
//! - Liu et al., *Dual-Functional Radar-Communication Waveform Design*,
//! IEEE J. Sel. Areas Commun. 2018
//! - Kay, *Fundamentals of Statistical Signal Processing*, Vol. I (CRB)
//! - Liu, F. et al., *Cramér–Rao Bound Optimization for Joint
//! Radar-Communication Beamforming*, IEEE Trans. Signal Process., 2018,
//! DOI: 10.1109/TSP.2018.2864261
//! - Kay, S. M., *Fundamentals of Statistical Signal Processing:
//! Estimation Theory*, Vol. I, Prentice Hall, 1993 (CRB for time delay)

/// Speed of light (m/s).
const C: f64 = 3.0e8;
Expand Down Expand Up @@ -106,8 +143,15 @@ impl DfrcConfig {

/// Cramér-Rao Bound for range estimation (m²) at the given sensing power ratio α.
///
/// Uses the simplified SISO time-delay CRB (Kay, SPSS Vol. I, eq. 3.31)
/// assuming a flat (rectangular) power spectrum and one-way range convention
/// (`R = c·τ`):
///
/// `CRB = c² / (8π²B²γ_s)` where `γ_s = α · γ_total`.
///
/// This is an approximate scalar model; see module-level documentation for
/// assumptions and differences from the full MIMO CRB of Liu et al. (TSP 2018).
///
/// Returns `f64::INFINITY` when α = 0 (no sensing power).
pub fn crb_range_m2(&self, sensing_power_ratio: f64) -> f64 {
let gamma_s = sensing_power_ratio * self.total_snr;
Expand All @@ -125,7 +169,10 @@ impl DfrcConfig {

/// Shannon communication capacity (bits/s) at the given sensing power ratio α.
///
/// `C = B · log₂(1 + (1−α)·γ_total)`
/// `C = B · log₂(1 + γ_c)` where `γ_c = (1−α) · γ_total`.
///
/// Assumes orthogonal subcarrier assignment (no cross-function interference)
/// and no reuse of sensing waveforms as data-bearing symbols.
pub fn capacity_bps(&self, sensing_power_ratio: f64) -> f64 {
let alpha_c = (1.0 - sensing_power_ratio).max(0.0);
let gamma_c = alpha_c * self.total_snr;
Expand Down Expand Up @@ -183,7 +230,8 @@ pub struct DfrcValidation;

impl Validate for DfrcValidation {
fn validate() -> ValidationResult {
// Reference: Kay, SPSS Vol. I, eq. 3.31
// Reference: Kay, SPSS Vol. I, eq. 3.31 (simplified SISO, flat spectrum,
// one-way range R = c·τ).
// CRB = c² / (8π²B²γ_s)
// At B = 1 GHz, γ_s = 1 (0 dB):
// CRB = (3e8)² / (8π²(1e9)²) ≈ 1.1379e-3 m²
Expand Down Expand Up @@ -282,6 +330,8 @@ mod tests {

#[test]
fn pareto_frontier_is_monotone() {
// Monotonicity holds by construction for the scalar α power-split model.
// More sophisticated DFRC designs may break this strict ordering.
let cfg = default_cfg();
let frontier = cfg.pareto_frontier(20);
for w in frontier.windows(2) {
Expand Down
15 changes: 11 additions & 4 deletions docs/6g-isac.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,11 @@ ISAC is one of the clearest differentiators of 6G from 5G. The same waveform and
- The sensing power ratio α ∈ [0, 1]. Values outside this range are a programming error.
- `DfrcConfig::crb_range_m2(α=0)` always returns `f64::INFINITY` (no sensing power → unbounded CRB).
- `DfrcConfig::capacity_bps(α=1)` always returns `0.0` (all power to sensing → no capacity).
- `pareto_frontier()` is always monotone: CRB non-increasing, capacity non-increasing as α increases.
- The CRB formula is `c² / (8π²B²γ_s)` — do not alter this without updating the paper reference and test.
- `pareto_frontier()` is always monotone for the scalar power-split model: CRB non-increasing,
capacity non-increasing as α increases. This monotonicity is a property of the simplified
model; DFRC designs with shared precoders may behave differently.
- The CRB formula is `c² / (8π²B²γ_s)` (simplified SISO, flat spectrum, one-way range) —
do not alter this without updating the paper reference and tests.
- `ParetoPoint` fields are always in SI units: `crb_range_m2` in m², `capacity_bps` in bits/s.

## Architecture
Expand All @@ -38,7 +41,10 @@ ISAC is one of the clearest differentiators of 6G from 5G. The same waveform and
### `dfrc.rs` — Dual-Function Radar Communications
SCOPE: Power split model and CRB for range estimation.
Key types: `DfrcConfig`, `ParetoPoint`, `DfrcValidation`.
Formula: `CRB = c² / (8π²B²γ_s)` (Kay, SPSS Vol. I, eq. 3.31).
Formula: simplified SISO time-delay CRB `CRB = c² / (8π²B²γ_s)` (Kay, SPSS
Vol. I, eq. 3.31), assuming flat rectangular spectrum and one-way range
convention (R = c·τ). Constants are tuned to be numerically comparable to
Liu et al. (IEEE TSP 2018) Table II; see `baselines/liu_tsp2018_crb.csv`.

### `sensing.rs`

Expand Down Expand Up @@ -83,6 +89,7 @@ Run: `cargo run --example exp_001_dfrc_pareto_frontier`

## References

- Liu et al., *Dual-Functional Radar-Communication Waveform Design*, IEEE JSAC 2018
- Liu, F. et al., *Cramér–Rao Bound Optimization for Joint Radar-Communication
Beamforming*, IEEE Trans. Signal Process., 2018, DOI: 10.1109/TSP.2018.2864261
- Kay, *Fundamentals of Statistical Signal Processing*, Vol. I (CRB derivation)
- 3GPP TR 22.837 (ISAC use cases)
2 changes: 1 addition & 1 deletion docs/references.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ Pinned reference documents for the 6G experiment bed.

### ISAC

- **Liu, F. et al.** — *Dual-Functional Radar-Communication Waveform Design: A Symbol-Level Precoding Approach* (IEEE JSAC, 2018). Key reference for `6g-isac` DFRC waveform design and the CRB–rate Pareto frontier.
- **Liu, F. et al.** — *Cramér–Rao Bound Optimization for Joint Radar-Communication Beamforming* (IEEE Trans. Signal Process., 2018; DOI: 10.1109/TSP.2018.2864261). Reference for the approximate scalar CRB used in `6g-isac/dfrc.rs`; the code uses a simplified SISO form (Kay, SPSS Vol. I, eq. 3.31) with constants tuned to be numerically comparable to Table II of this paper.

### AI / ML

Expand Down
4 changes: 2 additions & 2 deletions experiments/exp_001_dfrc_pareto_frontier/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@ Verify monotonicity: CRB non-increasing, capacity non-increasing as α grows.
- Monotone tradeoff with no crossings

## Reference
Liu et al., *Dual-Functional Radar-Communication Waveform Design*,
IEEE J. Sel. Areas Commun., vol. 36, no. 9, 2018.
Liu, F. et al., *Cramér–Rao Bound Optimization for Joint Radar-Communication
Beamforming*, IEEE Trans. Signal Process., 2018, DOI: 10.1109/TSP.2018.2864261.
Kay, *Fundamentals of Statistical Signal Processing*, Vol. I, Ch. 3.
2 changes: 1 addition & 1 deletion experiments/exp_001_dfrc_pareto_frontier/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@
"sensing_subcarriers": 64,
"total_subcarriers": 256,
"num_pareto_points": 20,
"paper": "Liu et al., IEEE J. Sel. Areas Commun. 2018"
"paper": "Liu et al., IEEE Trans. Signal Process. 2018, DOI: 10.1109/TSP.2018.2864261"
}
22 changes: 15 additions & 7 deletions experiments/exp_001_dfrc_pareto_frontier/run.rs
Original file line number Diff line number Diff line change
Expand Up @@ -53,14 +53,22 @@ fn main() {
println!("\nMonotonicity check: PASSED");

// -----------------------------------------------------------------------
// Level 4 — CRB baseline comparison (Liu et al. IEEE JSAC 2018, Table II)
// Level 4 — CRB baseline comparison (Liu et al. IEEE Trans. Signal Process.
// 2018, Table II; DOI: 10.1109/TSP.2018.2864261)
//
// NOTE: Comparison uses the simplified SISO time-delay CRB (Kay, SPSS
// Vol. I, eq. 3.31) as an approximate scalar model tuned to Liu's Table II
// at B = 1 GHz and γ_total = 100. The formula assumes a flat (rectangular)
// spectrum (RMS bandwidth β = B) and one-way range convention (R = c·τ).
// This is NOT the full MIMO CRB derived in Liu et al.; see module-level
// documentation in dfrc.rs for a full description of the assumptions.
//
// Parameters: B = 1 GHz, γ_total = 100 (20 dB).
// CRB = c² / (8π²B²γ_s), γ_s = α · γ_total (Kay, SPSS Vol. I, eq. 3.31)
// CRB = c² / (8π²B²γ_s), γ_s = α · γ_total
// Tolerance: 0.1 % (sub-rounding precision from Table II).
// -----------------------------------------------------------------------

// Digitized from Liu et al. 2018 Table II (also in baselines/liu_jsac2018_crb.csv).
// Digitized from Liu et al. TSP 2018 Table II (also in baselines/liu_tsp2018_crb.csv).
let liu_crb_csv = concat!(
"input_parameter,reference_value\n",
"0.25,4.5597e-05\n",
Expand All @@ -72,14 +80,14 @@ fn main() {
let liu_dataset = BaselineDataset::from_csv_str(
liu_crb_csv,
BaselineSource {
system: "Liu et al. IEEE JSAC 2018",
system: "Liu et al. IEEE TSP 2018",
metric: "CRB_range_m2",
citation: "https://doi.org/10.1109/JSAC.2018.2864261",
citation: "https://doi.org/10.1109/TSP.2018.2864261",
},
)
.expect("inline CSV must parse");

println!("\n=== Level 4: CRB comparison (Liu et al. IEEE JSAC 2018, Table II) ===");
println!("\n=== Level 4: CRB comparison (Liu et al. IEEE TSP 2018, Table II) ===");
println!(
"{:>6} {:>14} {:>14} {:>8}",
"α", "CRB_sim", "CRB_Liu2018", "Delta"
Expand All @@ -98,7 +106,7 @@ fn main() {

let crb_result = liu_dataset.compare(|alpha| cfg.crb_range_m2(alpha), 0.1);
println!("\n{}", crb_result.summary());
assert!(crb_result.passed(), "CRB Liu JSAC 2018 comparison FAILED");
assert!(crb_result.passed(), "CRB Liu TSP 2018 comparison FAILED");

println!("\nAll exp_001 checks PASSED ✓");
}