Unified Fault Detection, Exclusion, and Integrity Monitoring for Tightly-Coupled GNSS/IMU Factor Graph Optimization

Date:

Unified Fault Detection, Exclusion, and Integrity Monitoring for Tightly-Coupled GNSS/IMU Factor Graph Optimization via Graduated Non-Convexity with Safety Constraints

Model 1: Soft-Penalty Unified Objective for Simultaneous FDE and Integrity Monitoring

Department of Aeronautical and Aviation Engineering, The Hong Kong Polytechnic University

Weisong Wen


Table of Contents

  1. Overview
  2. Problem Statement
  3. Factor Graph Optimization for Tightly-Coupled GNSS/IMU Integration
  1. The Sequential Pipeline β€” Existing Approach
  1. Model 1 β€” Unified Objective: Full Derivation
  1. Continuity and Differentiability β€” Rigorous Analysis
  2. Gradient Computation β€” Full Derivation
  1. GNC Annealing Schedule and Full Outer Loop
  2. Comparison: Model 1 vs Sequential Pipeline
  1. Computational Load Analysis
  2. Hyperparameters and Tuning Guidance
  3. Theory Lineage
  4. References

1. Overview

This repository implements Model 1, a unified optimization framework for tightly-coupled GNSS/IMU integration via Factor Graph Optimization (FGO). The framework solves three problems simultaneously that existing methods treat as sequential, decoupled stages:

  1. State Estimation β€” MAP estimation of pose, velocity, and IMU biases from GNSS pseudorange, Doppler, and IMU preintegration measurements via GTSAM
  2. Fault Detection and Exclusion (FDE) β€” soft continuous down-weighting of NLOS/multipath-corrupted GNSS measurements via Graduated Non-Convexity (GNC)
  3. Integrity Monitoring β€” real-time Protection Level (PL) embedded as a differentiable penalty term inside the optimization, grounded in Solution Separation (SS) theory from ARAIM

The unified objective is:

$$\hat{\mathbf{x}},\ \hat{s} = \underset{\mathbf{x},\ s}{\arg\min}\ \underbrace{\sum_{j=1}^{N} s_j \|\mathbf{r}^{\text{GNSS}}_j(\mathbf{x})\|^2_{V_j}}_{\text{GNC residuals}} + \underbrace{\lambda_1 \mathcal{R}(s)}_{\text{GNC regularizer}} + \underbrace{\lambda_2 \cdot \text{PL}_{\text{smooth}}(s)}_{\text{integrity penalty}} + \|\mathbf{r}^{\text{IMU}}(\mathbf{x})\|^2_{\boldsymbol{\Sigma}_{\text{IMU}}}$$

where $s = \{s_1, \ldots, s_N\} \in (\varepsilon, 1]^N$ are per-measurement GNC weights that are optimization variables β€” not fixed hyperparameters β€” and $\text{PL}_{\text{smooth}}(s)$ is a smooth differentiable approximation of the SS-ARAIM Protection Level computed via the Woodbury matrix identity.

The framework is implemented in GTSAM supporting both iSAM2 and Fixed-Lag Smoothing (FLS) backends, evaluated on the UrbanNav dataset across low-cost MEMS IMU (~500 HKD class) and high-end fiber-optic gyroscope (FOG, NovAtel SPAN-CPT) IMU grades in Hong Kong and Tokyo urban canyons.


2. Problem Statement

Formal problem definition

At each GNSS epoch $k$, the system receives:

  • $N_k$ GNSS pseudorange measurements $\{z^{\text{PR}}_{j,k}\}_{j=1}^{N_k}$
  • $N_k$ GNSS Doppler measurements $\{z^{\text{D}}_{j,k}\}_{j=1}^{N_k}$
  • IMU measurements $\{\mathbf{u}_\tau\}$ at rate $f_{\text{IMU}}$ between epochs

Each GNSS measurement is modeled as:

$$z_{j,k} = h_j(\mathbf{x}_k) + \epsilon_{j,k} + f_{j,k}$$

where $h_j(\mathbf{x}_k)$ is the geometric observation model, $\epsilon_{j,k} \sim \mathcal{N}(0, \sigma^2_{j,k})$ is Gaussian white noise, and $f_{j,k}$ is an unknown deterministic fault from NLOS propagation or multipath. Crucially, $|f_{j,k}|$ can reach 10–100 m in dense urban canyons, and its magnitude is unknown.

Two simultaneous requirements

Requirement 1 β€” Accuracy: Find $\hat{\mathbf{x}}_k$ minimizing position error in the presence of unknown faults.

Requirement 2 β€” Integrity: Provide a certified Protection Level $\text{PL}_k \leq \text{AL}$ such that:

$$P\!\left(|\boldsymbol{\alpha}^T(\hat{\mathbf{x}}_k - \mathbf{x}_k)| > \text{PL}_k\right) \leq P_{\text{IR}} = 10^{-7}$$

where $\boldsymbol{\alpha}$ extracts the position state-of-interest and AL is the Alert Limit (typically 10 m horizontal for autonomous vehicles).

Why both requirements must be solved jointly

The key observation, which motivates Model 1, is that both requirements depend on the same measurement weight vector $s$:

  • FDE (Requirement 1) determines $s$ to suppress faulted measurements
  • PL (Requirement 2) is a function of $s$ through the weighted information matrix $\boldsymbol{\Lambda}(s) = \sum_j s_j \mathbf{a}_j \mathbf{a}_j^T$

Solving them sequentially (GNC for $s$, then computing PL from $s$) yields a suboptimal $s$ from the integrity perspective. Model 1 finds the $s$ that is jointly optimal for both.


3. Factor Graph Optimization for Tightly-Coupled GNSS/IMU Integration

3.1 State Vector Definition

At each GNSS epoch $k$, the full navigation state is:

$$\mathbf{x}_k = \begin{bmatrix} \mathbf{p}_k^T & \mathbf{v}_k^T & \mathbf{R}_k & (\mathbf{b}^a_k)^T & (\mathbf{b}^g_k)^T & \delta t_k & \dot{\delta t}_k \end{bmatrix}^T$$

where $\mathbf{p}_k \in \mathbb{R}^3$ is position (ECEF or ENU), $\mathbf{v}_k \in \mathbb{R}^3$ is velocity, $\mathbf{R}_k \in SO(3)$ is orientation, $\mathbf{b}^a_k \in \mathbb{R}^3$ and $\mathbf{b}^g_k \in \mathbb{R}^3$ are accelerometer and gyroscope biases, and $\delta t_k, \dot{\delta t}_k$ are receiver clock bias and drift. Total dimension $n = 17$ (or $n = 15$ without explicit clock states).

In GTSAM, $\mathbf{R}_k$ is stored as a Rot3 object on the $SO(3)$ manifold. All optimization retraction operations use the exponential/logarithmic maps on $SO(3)$ β€” standard Euclidean updates are not used for the rotation component.

3.2 IMU Kinematic Model and Noise Characteristics

The IMU measures specific force $\tilde{\mathbf{a}}_\tau$ and angular velocity $\tilde{\boldsymbol{\omega}}_\tau$ corrupted by bias and white noise:

$$\tilde{\mathbf{a}}_\tau = \mathbf{R}_\tau^T(\ddot{\mathbf{p}}_\tau - \mathbf{g}) + \mathbf{b}^a_\tau + \boldsymbol{\eta}^a_\tau, \qquad \tilde{\boldsymbol{\omega}}_\tau = \boldsymbol{\omega}_\tau + \mathbf{b}^g_\tau + \boldsymbol{\eta}^g_\tau$$

where $\boldsymbol{\eta}^a_\tau \sim \mathcal{N}(\mathbf{0}, \sigma^2_a \mathbf{I})$, $\boldsymbol{\eta}^g_\tau \sim \mathcal{N}(\mathbf{0}, \sigma^2_g \mathbf{I})$, and the biases evolve as:

$$\dot{\mathbf{b}}^a = \boldsymbol{\eta}^{ba} \sim \mathcal{N}(\mathbf{0}, \sigma^2_{ba}\mathbf{I}), \qquad \dot{\mathbf{b}}^g = \boldsymbol{\eta}^{bg} \sim \mathcal{N}(\mathbf{0}, \sigma^2_{bg}\mathbf{I})$$

IMU grade comparison relevant to this work:

ParameterLow-cost MEMS (~500 HKD)NovAtel SPAN-CPT (FOG)Ratio
Gyro ARW (Β°/√hr)~0.84~0.012~70Γ—
Gyro bias instability (Β°/hr)~1–10~0.05~20–200Γ—
Accel noise density (m/s/√hr)~0.10~0.002~50Γ—
Accel bias instability (mg)~10~0.05~200Γ—

Since preintegration covariance scales quadratically with gyro ARW, a MEMS IMU produces a rotation preintegration covariance approximately $70^2 \approx 4{,}900\times$ larger than the FOG per unit time. This means GNSS measurement weights $s$ dominate the information budget for MEMS-grade sensors, making the weight optimization in Model 1 especially impactful for low-cost IMUs.

3.3 IMU Preintegration Factor

Between GNSS epochs $k$ and $k+1$, IMU measurements are summarized by on-manifold preintegration [Forster et al., TRO 2017]. The preintegrated rotation, velocity, and position increments are:

$$\Delta\tilde{\mathbf{R}}_{k,k+1} = \prod_{\tau=k}^{k+1-1} \text{Exp}\!\left((\tilde{\boldsymbol{\omega}}_\tau - \hat{\mathbf{b}}^g_k)\delta\tau\right) \in SO(3)$$ $$\Delta\tilde{\mathbf{v}}_{k,k+1} = \sum_{\tau=k}^{k+1-1} \Delta\tilde{\mathbf{R}}_{k,\tau} (\tilde{\mathbf{a}}_\tau - \hat{\mathbf{b}}^a_k) \delta\tau \in \mathbb{R}^3$$ $$\Delta\tilde{\mathbf{p}}_{k,k+1} = \sum_{\tau=k}^{k+1-1} \left[\Delta\tilde{\mathbf{v}}_{k,\tau} \delta\tau + \tfrac{1}{2} \Delta\tilde{\mathbf{R}}_{k,\tau} (\tilde{\mathbf{a}}_\tau - \hat{\mathbf{b}}^a_k) \delta\tau^2\right] \in \mathbb{R}^3$$

where $\text{Exp}(\cdot): \mathbb{R}^3 \to SO(3)$ is the matrix exponential map. The IMU preintegration residual on the $SO(3) \times \mathbb{R}^3 \times \mathbb{R}^3$ manifold is:

$$\mathbf{r}^{\text{IMU}}_k = \begin{bmatrix} \text{Log}\!\left(\Delta\tilde{\mathbf{R}}^T_{k,k+1}\ \mathbf{R}^T_k\ \mathbf{R}_{k+1}\right) \\ \mathbf{R}^T_k\!\left(\mathbf{v}_{k+1} - \mathbf{v}_k - \mathbf{g}\Delta t_k\right) - \Delta\tilde{\mathbf{v}}_{k,k+1} \\ \mathbf{R}^T_k\!\left(\mathbf{p}_{k+1} - \mathbf{p}_k - \mathbf{v}_k\Delta t_k - \tfrac{1}{2}\mathbf{g}\Delta t^2_k\right) - \Delta\tilde{\mathbf{p}}_{k,k+1} \end{bmatrix} \in \mathbb{R}^9$$

When bias estimates change during optimization, preintegrated quantities are corrected via first-order approximation without full re-integration:

$$\Delta\tilde{\mathbf{R}}_{k,k+1}(\mathbf{b}^g) \approx \Delta\tilde{\mathbf{R}}_{k,k+1}(\hat{\mathbf{b}}^g_k)\ \text{Exp}\!\left(\frac{\partial \Delta\tilde{\mathbf{R}}}{\partial \mathbf{b}^g}\bigg|_{\hat{\mathbf{b}}^g_k} \delta\mathbf{b}^g\right)$$

The preintegration covariance $\boldsymbol{\Sigma}_{\text{IMU}} \in \mathbb{R}^{15 \times 15}$ is propagated analytically via:

$$\boldsymbol{\Sigma}_{k+1} = \mathbf{F}_k \boldsymbol{\Sigma}_k \mathbf{F}_k^T + \mathbf{G}_k \mathbf{Q}_c \mathbf{G}_k^T \delta\tau$$

where $\mathbf{Q}_c = \text{diag}(\sigma^2_a\mathbf{I}, \sigma^2_g\mathbf{I}, \sigma^2_{ba}\mathbf{I}, \sigma^2_{bg}\mathbf{I})$ is the continuous-time noise spectral density matrix.

3.4 GNSS Pseudorange Measurement Factor

The pseudorange from receiver to satellite $j$ at epoch $k$ is:

$$z^{\text{PR}}_{j,k} = \|\mathbf{p}_k - \mathbf{p}^j_{\text{sat},k}\| + c\delta t_k + \delta^j_{\text{trop},k} + \delta^j_{\text{iono},k} + \epsilon^{\text{PR}}_{j,k} + f^{\text{PR}}_{j,k}$$

After applying standard Hopfield tropospheric and Klobuchar ionospheric corrections, the corrected pseudorange residual is:

$$\mathbf{r}^{\text{PR}}_{j,k}(\mathbf{x}_k) = z^{\text{PR}}_{j,k} - \|\mathbf{p}_k - \mathbf{p}^j_{\text{sat},k}\| - c\delta t_k - \hat{\delta}^j_{\text{trop},k} - \hat{\delta}^j_{\text{iono},k}$$

The Jacobian of the pseudorange observation with respect to the full state vector is:

$$\mathbf{H}^{\text{PR}}_{j,k} = \begin{bmatrix} -(\mathbf{e}^j_k)^T & \mathbf{0}_{1\times 3} & \mathbf{0}_{1\times 3} & \mathbf{0}_{1\times 3} & \mathbf{0}_{1\times 3} & 1 & 0 \end{bmatrix} \in \mathbb{R}^{1 \times 17}$$

where $\mathbf{e}^j_k = (\mathbf{p}_k - \mathbf{p}^j_{\text{sat},k})\,/\,\|\mathbf{p}_k - \mathbf{p}^j_{\text{sat},k}\|$ is the unit line-of-sight vector from receiver to satellite.

The baseline noise sigma is elevation-angle weighted:

$$\sigma^{\text{PR}}_{j,k} = \frac{\sigma_0}{\sin\theta^j_k}, \qquad \sigma_0 \approx 0.3\text{–}1.5\ \text{m}$$

where $\theta^j_k$ is satellite elevation angle. Low-elevation satellites receive larger $\sigma$ values, reducing their nominal contribution to the information matrix.

3.5 GNSS Doppler Measurement Factor

The Doppler-shifted carrier frequency provides a direct velocity measurement:

$$z^{\text{D}}_{j,k} = -\frac{1}{\lambda}\!\left[(\mathbf{v}_k - \mathbf{v}^j_{\text{sat},k})^T \mathbf{e}^j_k + c\dot{\delta t}_k\right] + \epsilon^{\text{D}}_{j,k}$$

where $\lambda$ is the L1 carrier wavelength (0.1903 m for GPS L1). The Doppler residual is:

$$\mathbf{r}^{\text{D}}_{j,k}(\mathbf{x}_k) = z^{\text{D}}_{j,k} + \frac{1}{\lambda}\!\left[(\mathbf{v}_k - \mathbf{v}^j_{\text{sat},k})^T \mathbf{e}^j_k + c\dot{\delta t}_k\right]$$

Doppler measurements are much less sensitive to multipath than pseudorange (multipath-induced Doppler error is $\approx 10^{-3}$ of pseudorange multipath for low-dynamic receivers), making them valuable for velocity and bias estimation in urban canyons.

3.6 Standard FGO Objective

The MAP estimate of the full trajectory $\mathbf{X} = \{\mathbf{x}_0, \ldots, \mathbf{x}_K\}$ minimizes the negative log-posterior:

$$\hat{\mathbf{X}} = \underset{\mathbf{X}}{\arg\min}\ \sum_{k=1}^{K}\!\left[\left\|\mathbf{r}^{\text{IMU}}_k\right\|^2_{\boldsymbol{\Sigma}_{\text{IMU},k}} + \sum_{j=1}^{N_k}\!\left(\left\|\mathbf{r}^{\text{PR}}_{j,k}\right\|^2_{\sigma^2_{j,k}} + \left\|\mathbf{r}^{\text{D}}_{j,k}\right\|^2_{\sigma^2_{D,j,k}}\right)\right]$$

This is solved iteratively via Gauss-Newton on the factor graph. In GTSAM, ISAM2 solves this incrementally using the Bayes tree with selective relinearization, while IncrementalFixedLagSmoother restricts the window to a bounded time horizon $W$ (typically 10–30 s).

3.7 Linearization and the Observation Matrix

At each GNC iteration, GNSS factors are linearized around the current estimate $\mathbf{x}^*_k$. The standardized observation vector for satellite $j$ is:

$$\mathbf{a}_{j,k} = \frac{1}{\sigma_{j,k}} \left(\mathbf{H}^{\text{PR}}_{j,k}\right)^T \in \mathbb{R}^n$$

This vector encodes both geometric coverage (direction $\mathbf{e}^j_k$) and measurement quality ($1/\sigma_{j,k}$). The full standardized observation matrix is:

$$\mathbf{A}_k = \begin{bmatrix} \mathbf{a}_{1,k}^T \\ \vdots \\ \mathbf{a}_{N_k,k}^T \end{bmatrix} \in \mathbb{R}^{N_k \times n}$$

and the unweighted information matrix (all $s_j = 1$) is $\boldsymbol{\Lambda}_k = \mathbf{A}_k^T\mathbf{A}_k = \sum_j \mathbf{a}_{j,k}\mathbf{a}_{j,k}^T \in \mathbb{R}^{n \times n}$.


4. The Sequential Pipeline β€” Existing Approach

The existing approach decouples FDE and integrity monitoring into two sequential stages. Stage 1 produces weights $\hat{s}^{\text{GNC}}$; Stage 2 computes PL from those frozen weights. No information flows from Stage 2 back to Stage 1.

4.1 Stage 1: Graduated Non-Convexity for FDE

Standard FGO with quadratic loss is non-robust to faults. GNC [Yang et al., IEEE RA-L 2020; Wen et al., IEEE TVT 2022] replaces the quadratic cost with a robust kernel $\rho_\mu(\cdot)$:

$$\hat{\mathbf{x}} = \underset{\mathbf{x}}{\arg\min}\ \sum_{j=1}^{N} \rho_\mu\!\left(\|\mathbf{r}^{\text{GNSS}}_j(\mathbf{x})\|^2_{V_j}\right) + \|\mathbf{r}^{\text{IMU}}(\mathbf{x})\|^2_{\boldsymbol{\Sigma}_{\text{IMU}}}$$

The annealing parameter $\mu$ controls transition from convex (no exclusion) to non-convex (fault rejection) as it decreases from $\mu_0$ toward $\mu_{\min}$.

4.2 GNC Kernel Functions and Weight Derivation

The Welsch kernel and its half-quadratic lifting:

$$\rho_\mu^{\text{W}}(r^2) = 1 - e^{-r^2/(2\mu)} = \min_{s \in (0,1]}\!\left[sr^2 - \mu\log s + \mu(1 - \log\mu)\right]$$

Setting $\partial/\partial s_j[s_j r^2_j - \mu\log s_j] = 0$ gives the closed-form GNC weight:

$$\hat{s}^{\text{W}}_j = \frac{\mu}{r^2_j + \mu} \qquad \text{(equivalently: } \hat{s}^{\text{W}}_j = e^{-r^2_j/\mu} \text{ at optimality)}$$

For the Geman-McClure kernel:

$$\hat{s}^{\text{GM}}_j = \left(\frac{\sqrt{\mu}}{\sqrt{\mu} + r_j}\right)^2$$

These closed-form updates reveal that GNC weights are solely determined by normalized residuals $r_j = \|\mathbf{r}^{\text{GNSS}}_j\|/\sigma_j$. There is no mechanism by which the GNSS geometric configuration or its impact on PL can influence the weights.

4.3 GNC Annealing and Convergence

Initialize: ΞΌ = ΞΌβ‚€ = max_j(rΜƒΒ²_j),   s_j = 1.0 βˆ€j

WHILE ΞΌ > ΞΌ_min AND NOT converged:
    Step 1 (s-update):  s_j ← ΞΌ/(rΜƒΒ²_j + ΞΌ)        [Welsch closed-form]
    Step 2 (x-update):  xΜ‚  ← argmin_x Ξ£β±Ό sβ±Όβ€–rβ±Όβ€–Β² + β€–r_IMUβ€–Β²
    Step 3:             rΜƒ_j ← β€–r^GNSS_j(xΜ‚)β€–/Οƒ_j  [update residuals]
    Step 4:             ΞΌ   ← ΞΌ / ΞΌ_step

OUTPUT: xΜ‚_GNC,  ŝ_GNC = {ŝ₁,...,ŝ_N}

After convergence, weights are near-binary: $\hat{s}^{\text{GNC}}_j \approx 1$ (healthy) or $\hat{s}^{\text{GNC}}_j \approx 0$ (faulted, i.e., $r_j \gg \sqrt{\mu_{\min}}$).

4.4 Stage 2: RAIM and ARAIM Foundations

Classical RAIM [Parkinson & Axelrad 1988] detects satellite faults using the chi-squared residual test:

$$q = \|\mathbf{V}^{-1/2}(\mathbf{z} - h(\hat{\mathbf{x}}))\|^2 \sim \chi^2_{N-n,\lambda}$$

where $\lambda = \mathbf{f}^T\mathbf{V}^{-1/2}(\mathbf{I} - \mathbf{A}\boldsymbol{\Lambda}^{-1}\mathbf{A}^T)\mathbf{V}^{-1/2}\mathbf{f}$ is the non-centrality from fault $\mathbf{f}$.

Advanced RAIM (ARAIM) [Blanch et al., IEEE TAES 2015] handles multiple simultaneous faults with formal probability guarantees. It defines $n_H$ fault hypotheses $\mathcal{H} = \{H_0, H_1, \ldots, H_{n_H}\}$, each specifying a subset of faulted satellites $\mathcal{F}_i$. Hypothesis probabilities are:

$$P(H_i) = \prod_{j \in \mathcal{F}_i} p_j \prod_{j \notin \mathcal{F}_i}(1-p_j), \qquad p_j \approx 10^{-5}\text{/epoch}$$

The total integrity risk requirement is:

$$P(\text{HMI}) = \sum_{i=0}^{n_H} P(\text{HMI}|H_i) P(H_i) \leq P_{\text{IR}} = 10^{-7}$$

4.5 Hazardous Misleading Information and Integrity Risk

HMI is the event of undetected large position error:

$$\text{HMI}_{\text{SS}} = \underbrace{\left\{|\boldsymbol{\alpha}^T\hat{\boldsymbol{\delta}}| > \text{AL}\right\}}_{\text{position error exceeds limit}} \cap \underbrace{\left\{\bigcap_{i=1}^{n_H} |\Delta_i| \leq T_{\Delta_i}\right\}}_{\text{no alarm triggered}}$$

where $\hat{\boldsymbol{\delta}} = \hat{\mathbf{x}} - \mathbf{x}$ is the estimation error and $\Delta_i$ is the SS fault detector. From the linear estimate $\hat{\boldsymbol{\delta}} = \boldsymbol{\Lambda}^{-1}\mathbf{A}^T\mathbf{V}^{-1/2}(\mathbf{v}+\mathbf{f})$:

$$\boldsymbol{\alpha}^T\hat{\boldsymbol{\delta}} \sim \mathcal{N}\!\left(\boldsymbol{\alpha}^T\boldsymbol{\Lambda}^{-1}\mathbf{A}^T\mathbf{V}^{-1/2}\mathbf{f},\ \boldsymbol{\alpha}^T\boldsymbol{\Lambda}^{-1}\boldsymbol{\alpha}\right)$$

Under $H_0$: zero mean. Under $H_i$: nonzero mean with unknown fault magnitude.

4.6 Solution Separation Method

SS [Joerger & Pervan, NAVIGATION 2014] computes $N+1$ parallel solutions:

All-in-view solution (all $N$ measurements, information matrix $\boldsymbol{\Lambda} = \sum_j \mathbf{a}_j\mathbf{a}_j^T$):

$$\hat{\mathbf{x}} = \underset{\mathbf{x}}{\arg\min}\ \|\mathbf{z} - h(\mathbf{x})\|^2_\mathbf{V}$$

Subset solution $i$ (excluding faulted measurements $\mathcal{F}_i$, information matrix $\boldsymbol{\Lambda}_i = \sum_{j \notin \mathcal{F}_i} \mathbf{a}_j\mathbf{a}_j^T$):

$$\hat{\mathbf{x}}_i = \underset{\mathbf{x}}{\arg\min}\ \|\mathbf{B}_i(\mathbf{z} - h(\mathbf{x}))\|^2_\mathbf{V}$$

SS fault detector:

$$\Delta_i = \boldsymbol{\alpha}^T(\hat{\mathbf{x}} - \hat{\mathbf{x}}_i) = \boldsymbol{\alpha}^T\!\left[\boldsymbol{\Lambda}^{-1}\mathbf{A}^T - \boldsymbol{\Lambda}_i^{-1}\mathbf{A}^T\mathbf{B}_i^T\mathbf{B}_i\right]\mathbf{b}$$

where $\mathbf{b} = \mathbf{V}^{-1/2}(\mathbf{z} - h(\mathbf{x}^*))$ is the standardized residual vector.

4.7 SS Fault Detector Distribution

The distribution of $\Delta_i$ is:

$$\Delta_i \sim \mathcal{N}\!\left(\mu_{\Delta_i},\ \boldsymbol{\alpha}^T\boldsymbol{\Lambda}^{-1}_{\Delta_i}\boldsymbol{\alpha}\right), \qquad \boldsymbol{\Lambda}^{-1}_{\Delta_i} = \boldsymbol{\Lambda}_i^{-1} - \boldsymbol{\Lambda}^{-1}$$

The fundamental SS property: Under fault hypothesis $H_i$, the $i$-th subset solution excludes the faulted measurements, so its error is fault-free:

$$\boldsymbol{\alpha}^T\hat{\boldsymbol{\delta}}_i \mid H_i \sim \mathcal{N}\!\left(0,\ \boldsymbol{\alpha}^T\boldsymbol{\Lambda}_i^{-1}\boldsymbol{\alpha}\right)$$

This zero-mean distribution does not depend on the unknown fault magnitude $f$. This is the theoretical foundation that makes SS tractable β€” the PL bound is computable without knowing the fault.

Using the triangle inequality $|\boldsymbol{\alpha}^T\hat{\boldsymbol{\delta}}| \leq |\boldsymbol{\alpha}^T\hat{\boldsymbol{\delta}}_i| + |\Delta_i|$ and the detection condition $|\Delta_i| \leq T_{\Delta_i}$:

$$P(\text{HMI}|H_i) \leq P\!\left(|\boldsymbol{\alpha}^T\hat{\boldsymbol{\delta}}_i| > \text{AL} - T_{\Delta_i}\,\big|\, H_i\right) = 2\Phi\!\left[\frac{T_{\Delta_i} - \text{AL}}{\sigma_i}\right]$$

where $\sigma_i = \sqrt{\boldsymbol{\alpha}^T\boldsymbol{\Lambda}_i^{-1}\boldsymbol{\alpha}}$.

4.8 SS Protection Level Derivation

The detection threshold $T_{\Delta_i}$ is set to control false alarms:

$$T_{\Delta_i} = \Phi^{-1}\!\left(1 - \frac{P_{\text{FA}}}{2n_H}\right) \sigma_{\Delta_i}, \qquad \sigma_{\Delta_i} = \sqrt{\boldsymbol{\alpha}^T(\boldsymbol{\Lambda}_i^{-1} - \boldsymbol{\Lambda}^{-1})\boldsymbol{\alpha}}$$

Setting $P(\text{HMI}|H_i) \leq P_{\text{IR}}/P(H_i)$ and solving for $\text{AL} = \text{PL}_i$:

$$\boxed{\text{PL}_i = \underbrace{\Phi^{-1}\!\left(1 - \frac{P_{\text{FA}}}{2N}\right) \sigma_{\Delta_i}}_{T_{\Delta_i}} + \underbrace{\Phi^{-1}\!\left(1 - \frac{P_{\text{IR}}}{2}\right) \sigma_i}_{\text{fault-free position bound}}}$$

The final PL is the worst-case over all hypotheses:

$$\text{PL}_{\text{seq}} = \max_{i=1,\ldots,N} \text{PL}_i(\hat{s}^{\text{GNC}})$$

Note how $\text{PL}_{\text{seq}}$ depends on $\hat{s}^{\text{GNC}}$ only through the fixed GNC weights. Stage 2 has no ability to change $\hat{s}^{\text{GNC}}$ to reduce this PL.

4.9 Woodbury Identity for Efficient Subset Covariance

For single-satellite hypothesis $i$ ($\boldsymbol{\Lambda}_i = \boldsymbol{\Lambda} - s_i\mathbf{a}_i\mathbf{a}_i^T$), the Woodbury matrix identity gives:

$$\boldsymbol{\Lambda}_i^{-1} = \boldsymbol{\Lambda}^{-1} + \frac{s_i}{1 - s_i\mathbf{a}_i^T\boldsymbol{\Lambda}^{-1}\mathbf{a}_i}\left(\boldsymbol{\Lambda}^{-1}\mathbf{a}_i\right)\!\left(\boldsymbol{\Lambda}^{-1}\mathbf{a}_i\right)^T$$

Proof via matrix inversion lemma: Let $\mathbf{M} = \boldsymbol{\Lambda} - s_i\mathbf{a}_i\mathbf{a}_i^T$. Setting $\mathbf{v}_i = \boldsymbol{\Lambda}^{-1}\mathbf{a}_i$ and $d_i = 1 - s_i\mathbf{a}_i^T\mathbf{v}_i$:

$$\mathbf{M}^{-1} = \boldsymbol{\Lambda}^{-1} + \frac{s_i}{d_i}\mathbf{v}_i\mathbf{v}_i^T$$

Verification: $\mathbf{M}\mathbf{M}^{-1} = (\boldsymbol{\Lambda} - s_i\mathbf{a}_i\mathbf{a}_i^T)(\boldsymbol{\Lambda}^{-1} + \frac{s_i}{d_i}\mathbf{v}_i\mathbf{v}_i^T) = \mathbf{I} + \frac{s_i}{d_i}\mathbf{v}_i\mathbf{v}_i^T\boldsymbol{\Lambda} - s_i\mathbf{a}_i\mathbf{a}_i^T\boldsymbol{\Lambda}^{-1} - \frac{s_i^2}{d_i}\mathbf{a}_i(\mathbf{a}_i^T\mathbf{v}_i)\mathbf{v}_i^T = \mathbf{I}$ βœ“

This reduces each subset covariance computation from $O(n^3)$ (full inversion) to $O(n^2)$ (one matrix-vector product $\mathbf{v}_i = \boldsymbol{\Lambda}^{-1}\mathbf{a}_i$ plus one outer product). For $N=10$ hypotheses: total cost $O(Nn^2) = 10 \times 225 = 2{,}250$ operations vs. $O(Nn^3) = 10 \times 3{,}375 = 33{,}750$ operations for full inversion.

4.10 Limitations of the Sequential Approach

#LimitationRoot CauseConsequence
L1FDE is integrity-blind$\hat{s}^{\text{GNC}}$ minimizes residuals only, no PL termPL large even when residuals are acceptable
L2Suboptimal PL$\hat{s}^{\text{GNC}} \neq \arg\min_s \text{PL}(s)$ in generalSystem reports unnecessarily large PLs
L3Reduced availability$P(\text{PL} \leq \text{AL})$ not maximizedMore frequent unavailability declarations
L4FDE–integrity inconsistencyGNC and PL monitor may prefer different exclusion setsContradictory decisions require ad hoc resolution
L5Binary fault model$\hat{s}^{\text{GNC}}_j \in \{0,1\}$ effectively after full annealingPartial NLOS biases handled sub-optimally
L6No integrity-driven exclusionGeometrically harmful moderate-fault satellite survives GNCPL inflated by measurement GNC cannot detect
L7No convergence guarantee for workaroundHeuristic outer re-optimization loops lack proofCannot certify joint solution

5. Model 1 β€” Unified Objective: Full Derivation

5.1 Motivating Insight

Both GNC (Stage 1) and SS-ARAIM (Stage 2) depend on the same quantity: the measurement weight vector $s$. GNC chooses $s$ to minimize a robust surrogate of residual cost. SS-ARAIM computes PL as a function of $s$ via $\boldsymbol{\Lambda}(s)$. Since both depend on $s$, the natural question is:

What is the $s$ that jointly minimizes residual cost and protection level?

This question has a well-defined answer because:

  1. $\text{PL}(s)$ is differentiable in $s$ (shown in Sections 5.8–5.10)
  2. $\partial\text{PL}/\partial s_j$ provides an integrity gradient signaling how each satellite weight affects PL
  3. This gradient can be added to the GNC gradient to create a unified update that is simultaneously FDE-aware and integrity-aware

Model 1 operationalizes this insight as a soft-penalty objective where $\lambda_2\text{PL}(s)$ is added as a term alongside the existing GNC terms.

5.2 The Unified Objective Function

$$\boxed{\hat{\mathbf{x}},\ \hat{s} = \underset{\mathbf{x} \in \mathcal{M},\ s \in (\varepsilon,1]^N}{\arg\min}\ \underbrace{\sum_{j=1}^{N} s_j\|\mathbf{r}^{\text{GNSS}}_j(\mathbf{x})\|^2_{V_j}}_{\mathcal{L}_1:\ \text{GNC residuals}} + \underbrace{\lambda_1\mathcal{R}(s)}_{\mathcal{L}_2:\ \text{GNC regularizer}} + \underbrace{\lambda_2\cdot\text{PL}_{\text{smooth}}(s)}_{\mathcal{L}_3:\ \text{integrity penalty}} + \underbrace{\|\mathbf{r}^{\text{IMU}}(\mathbf{x})\|^2_{\boldsymbol{\Sigma}_{\text{IMU}}}}_{\text{unchanged}}}$$

The IMU preintegration term is unchanged from the standard FGO. Model 1 modifies only the GNSS measurement handling. The optimization alternates:

  • x-update: fix $s$, solve for $\mathbf{x}$ via Gauss-Newton in GTSAM (one call to isam2.update())
  • s-update: fix $\hat{\mathbf{x}}$, update $s$ via gradient descent on $\mathcal{L}_1 + \mathcal{L}_2 + \mathcal{L}_3$

5.3 Term 1: GNC Residuals β€” Detailed Formulation

$$\mathcal{L}_1(\mathbf{x}, s) = \sum_{j=1}^{N} s_j \cdot \frac{[\mathbf{r}^{\text{GNSS}}_j(\mathbf{x})]^2}{\sigma^2_j} = \sum_{j=1}^{N} s_j \tilde{r}^2_j(\mathbf{x})$$

where $\tilde{r}_j = |\mathbf{r}^{\text{GNSS}}_j|/\sigma_j$ is the normalized residual. The weight $s_j$ is the soft inclusion indicator:

$s_j$ valuePhysical meaningEffective $\sigma_{\text{eff},j}$ in GTSAM
$s_j = 1.0$Full inclusion, healthy measurement$\sigma_j$ (unchanged)
$s_j = 0.5$Half weight, partial down-weighting$\sigma_j/\sqrt{0.5} \approx 1.41\sigma_j$
$s_j = 0.1$Strong down-weighting, likely faulted$\sigma_j/\sqrt{0.1} \approx 3.16\sigma_j$
$s_j = \varepsilon$Effective exclusion$\sigma_j/\sqrt{\varepsilon} \approx 10^3\sigma_j$

The GTSAM encoding uses $\sigma_{\text{eff},j} = \sigma_j/\sqrt{s_j+\varepsilon}$ so the GNSS factor contributes $[\mathbf{r}^{\text{GNSS}}_j]^2/\sigma^2_{\text{eff},j} = s_j\tilde{r}^2_j$ exactly. No GTSAM internals are modified.

Gradient of $\mathcal{L}_1$ with respect to $s_j$ (holding $\mathbf{x}$ fixed):

$$\frac{\partial\mathcal{L}_1}{\partial s_j} = \tilde{r}^2_j \geq 0$$

Always non-negative β€” drives $s_j$ downward whenever any residual is nonzero.

5.4 Term 2: GNC Regularizer β€” Detailed Formulation

$$\mathcal{L}_2(s) = \lambda_1\mathcal{R}(s) = \lambda_1\sum_{j=1}^{N}\frac{(1-s_j)^2}{s_j+\varepsilon}$$

This is the Welsch half-quadratic regularizer. It arises naturally from the half-quadratic lifting of the Welsch robust cost:

$$\rho_\mu^{\text{W}}(r^2_j) = \min_{s_j \in (0,1]}\!\left[s_j r^2_j - \mu\log s_j + \mu(1-\log\mu)\right]$$

The term $-\mu\log s_j$ is equivalent (up to constant) to $\lambda_1(1-s_j)^2/(s_j+\varepsilon)$ for $\lambda_1 = \mu$, confirming the regularizer's GNC pedigree.

Properties of $\mathcal{R}$:

  • $\mathcal{R}_j(s_j=1) = 0$ β€” zero cost for full inclusion
  • $\mathcal{R}_j(s_j \to 0) \to 1/\varepsilon$ β€” strong cost for exclusion (large barrier)
  • $\partial\mathcal{R}_j/\partial s_j < 0$ for all $s_j \in (0,1)$ β€” gradient always opposes exclusion

Gradient of $\mathcal{L}_2$ with respect to $s_j$:

$$\frac{\partial\mathcal{L}_2}{\partial s_j} = \lambda_1 \cdot \frac{(1-s_j)\left[-(s_j+2\varepsilon+1)\right]}{(s_j+\varepsilon)^2} < 0 \quad \text{for } s_j \in (0,1)$$

This gradient always opposes the residual gradient from $\mathcal{L}_1$. A measurement is excluded only when $|\partial\mathcal{L}_1/\partial s_j| > |\partial\mathcal{L}_2/\partial s_j| + |\partial\mathcal{L}_3/\partial s_j|$, i.e., residuals plus integrity gradient overcome the regularizer resistance.

5.5 Term 3: Integrity Penalty β€” Detailed Formulation

$$\mathcal{L}_3(s) = \lambda_2 \cdot \text{PL}_{\text{smooth}}(s)$$

This is the novel term. Its gradient $\partial\mathcal{L}_3/\partial s_j = \lambda_2 \cdot \partial\text{PL}/\partial s_j$ has two possible behaviors:

Case A β€” $\partial\text{PL}/\partial s_j > 0$: Including satellite $j$ (increasing $s_j$) inflates the PL. The integrity gradient acts in the same direction as the residual gradient β€” both drive $s_j$ down. This occurs when satellite $j$ has a dominant position in the SS separation statistic $\sigma_{\Delta_j}$ and its inclusion creates a large separation that the detector must account for. Even if $\tilde{r}_j$ is small (moderate fault), satellite $j$ gets down-weighted because it is geometrically dangerous for integrity.

Case B β€” $\partial\text{PL}/\partial s_j < 0$: Including satellite $j$ reduces the PL. The integrity gradient acts against the residual gradient. This occurs when satellite $j$ provides unique geometric coverage that is irreplaceable for maintaining small $\sigma_i$ values across all subset solutions. Even if $\tilde{r}_j$ is large (faulted), the optimizer partially retains satellite $j$ because its complete exclusion would cause PL $\to \infty$.

This bidirectional integrity feedback is impossible in any sequential approach β€” it requires the PL to be part of the optimization objective.

5.6 The Weighted Information Matrix and Its Properties

$$\boldsymbol{\Lambda}(s) = \sum_{j=1}^{N} s_j \mathbf{a}_j\mathbf{a}_j^T \in \mathbb{R}^{n \times n}$$

Key properties:

  1. Linear in each $s_j$: $\boldsymbol{\Lambda}(s) = \boldsymbol{\Lambda}(\mathbf{1}) - \sum_j(1-s_j)\mathbf{a}_j\mathbf{a}_j^T$
  1. Positive definite when at least $n$ satellites have $s_j > 0$ and they are geometrically independent
  1. Matrix derivative: $\partial\boldsymbol{\Lambda}/\partial s_j = \mathbf{a}_j\mathbf{a}_j^T \succeq 0$
  1. Inverse derivative (from $\boldsymbol{\Lambda}\boldsymbol{\Lambda}^{-1} = \mathbf{I}$, differentiating both sides):
$$\frac{\partial\boldsymbol{\Lambda}^{-1}}{\partial s_j} = -\boldsymbol{\Lambda}^{-1}\frac{\partial\boldsymbol{\Lambda}}{\partial s_j}\boldsymbol{\Lambda}^{-1} = -\boldsymbol{\Lambda}^{-1}\mathbf{a}_j\mathbf{a}_j^T\boldsymbol{\Lambda}^{-1} = -\mathbf{v}_j\mathbf{v}_j^T$$

where $\mathbf{v}_j = \boldsymbol{\Lambda}^{-1}\mathbf{a}_j \in \mathbb{R}^n$ is the $j$-th leverage vector. This derivative is used throughout the analytical gradient computation.

  1. Connection to DOP: When $s_j = 1\ \forall j$, $\text{tr}(\boldsymbol{\Lambda}^{-1}) = \text{PDOP}^2$. Excluding satellites increases DOP and hence PL.

5.7 Subset Solution Covariance via Woodbury Identity

For single-satellite fault hypothesis $i$ (excluding satellite $i$):

$$\boldsymbol{\Lambda}_i(s) = \boldsymbol{\Lambda}(s) - s_i\mathbf{a}_i\mathbf{a}_i^T$$

Applying the Woodbury identity with precomputed $\mathbf{v}_i(s) = \boldsymbol{\Lambda}^{-1}(s)\mathbf{a}_i$ and $d_i(s) = 1 - s_i\mathbf{a}_i^T\mathbf{v}_i(s)$:

$$\boldsymbol{\Lambda}_i^{-1}(s) = \boldsymbol{\Lambda}^{-1}(s) + \frac{s_i}{d_i(s)}\mathbf{v}_i(s)\mathbf{v}_i^T(s)$$

Validity condition: $d_i(s) > 0$, which holds whenever $\boldsymbol{\Lambda}_i(s) \succ 0$ (subset observable). In practice this fails only if satellite $i$ is the sole contributor to observability in some direction β€” a situation requiring at least $n+1$ visible satellites to avoid.

Gradient of $\boldsymbol{\Lambda}_i^{-1}(s)$ with respect to $s_j$ (for $j \neq i$):

First, $\partial\mathbf{v}_i/\partial s_j = (\partial\boldsymbol{\Lambda}^{-1}/\partial s_j)\mathbf{a}_i = -\mathbf{v}_j(\mathbf{a}_j^T\mathbf{v}_i)$

Then, $\partial d_i/\partial s_j = s_i\mathbf{a}_i^T\mathbf{v}_j(\mathbf{a}_j^T\mathbf{v}_i) = s_i(\mathbf{a}_j^T\mathbf{v}_i)(\mathbf{a}_i^T\mathbf{v}_j)$

Differentiating the Woodbury formula:

$$\frac{\partial\boldsymbol{\Lambda}_i^{-1}}{\partial s_j}\bigg|_{j\neq i} = -\mathbf{v}_j\mathbf{v}_j^T + \frac{s_i}{d_i}\!\left[-\mathbf{v}_j(\mathbf{a}_j^T\mathbf{v}_i)\mathbf{v}_i^T - \mathbf{v}_i(\mathbf{a}_j^T\mathbf{v}_i)\mathbf{v}_j^T\right] - \frac{s_i(\mathbf{a}_j^T\mathbf{v}_i)^2}{d_i^2}\mathbf{v}_i\mathbf{v}_i^T$$

Gradient with respect to $s_i$ (the excluded satellite itself):

$$\frac{\partial\boldsymbol{\Lambda}_i^{-1}}{\partial s_i} = -\mathbf{v}_i\mathbf{v}_i^T + \frac{d_i\mathbf{v}_i\mathbf{v}_i^T - s_i\mathbf{v}_i\mathbf{v}_i^T\frac{\partial d_i}{\partial s_i}}{d_i^2} + \frac{2s_i}{d_i}\mathbf{v}_i\frac{\partial\mathbf{v}_i^T}{\partial s_i}$$

where $\partial d_i/\partial s_i = -\mathbf{a}_i^T\mathbf{v}_i - s_i\mathbf{a}_i^T(\partial\mathbf{v}_i/\partial s_i)$ and $\partial\mathbf{v}_i/\partial s_i = -\mathbf{v}_i(\mathbf{a}_i^T\mathbf{v}_i)$.

5.8 Per-Hypothesis Protection Level as a Function of s

Substituting Woodbury results into the SS-ARAIM PL formula:

$$\sigma_{\Delta_i}(s) = \sqrt{\boldsymbol{\alpha}^T(\boldsymbol{\Lambda}_i^{-1}(s) - \boldsymbol{\Lambda}^{-1}(s))\boldsymbol{\alpha}} = \sqrt{\frac{s_i}{d_i(s)}}\,|\boldsymbol{\alpha}^T\mathbf{v}_i(s)|$$ $$\sigma_i(s) = \sqrt{\boldsymbol{\alpha}^T\boldsymbol{\Lambda}_i^{-1}(s)\boldsymbol{\alpha}} = \sqrt{\boldsymbol{\alpha}^T\boldsymbol{\Lambda}^{-1}(s)\boldsymbol{\alpha} + \frac{s_i}{d_i(s)}(\boldsymbol{\alpha}^T\mathbf{v}_i(s))^2}$$ $$\text{PL}_i(s) = K_{\text{FA}}\sigma_{\Delta_i}(s) + K_{\text{IR}}\sigma_i(s)$$

where $K_{\text{FA}} = \Phi^{-1}(1 - P_{\text{FA}}/(2N))$ and $K_{\text{IR}} = \Phi^{-1}(1 - P_{\text{IR}}/2)$. Numerically: $K_{\text{FA}} \approx 4.42$ ($P_{\text{FA}}=10^{-5}$, $N=10$) and $K_{\text{IR}} \approx 5.20$ ($P_{\text{IR}}=10^{-7}$).

Writing everything explicitly as a function of $s$ through $\mathbf{v}_i(s) = \boldsymbol{\Lambda}^{-1}(s)\mathbf{a}_i$:

$$\text{PL}_i(s) = (K_{\text{FA}} + K_{\text{IR}})\sqrt{\frac{s_i}{d_i(s)}}\,|\boldsymbol{\alpha}^T\mathbf{v}_i(s)| + K_{\text{IR}}\sqrt{\boldsymbol{\alpha}^T\boldsymbol{\Lambda}^{-1}(s)\boldsymbol{\alpha}}$$

This explicit form makes clear how each weight $s_j$ affects $\text{PL}_i$ through $\boldsymbol{\Lambda}^{-1}(s)$ and $\mathbf{v}_i(s)$.

5.9 Worst-Case PL and the Max Operator

$$\text{PL}(s) = \max_{i=1,\ldots,N} \text{PL}_i(s)$$

Convexity: Each $\text{PL}_i(s)$ is convex in $s$ (proved below). The maximum of convex functions is convex. Therefore $\text{PL}(s)$ is convex in $s$. This implies the integrity constraint $\text{PL}(s) \leq \text{AL}$ defines a convex feasible set.

Proof of convexity of $\text{PL}_i(s)$: The term $K_{\text{IR}}\sqrt{\boldsymbol{\alpha}^T\boldsymbol{\Lambda}^{-1}(s)\boldsymbol{\alpha}}$ is convex in $s$ because it is the composition of the function $\mathbf{M} \mapsto \sqrt{\boldsymbol{\alpha}^T\mathbf{M}\boldsymbol{\alpha}}$ (convex and increasing in $\mathbf{M}$) with $s \mapsto \boldsymbol{\Lambda}^{-1}(s)$ (convex in $s$ under the Loewner order for positive definite $\boldsymbol{\Lambda}$ linear in $s$). Similarly for the $\sigma_{\Delta_i}$ term. A positive linear combination of convex functions is convex.

Non-differentiability: $\text{PL}(s) = \max_i\text{PL}_i(s)$ has kinks where $\text{PL}_{i_1}(s) = \text{PL}_{i_2}(s)$ for $i_1 \neq i_2$. At kinks, the subdifferential is $\partial_s\text{PL} = \text{conv}\{\nabla_s\text{PL}_i : i \in \arg\max_i\text{PL}_i(s)\}$. This motivates the soft-max smoothing in Section 5.10.

5.10 Soft-Max Smoothing for Differentiability

Replace $\max_i$ with the log-sum-exp smooth approximation:

$$\text{PL}_{\text{smooth}}(s) = \frac{1}{\beta}\log\sum_{i=1}^{N}\exp\!\left(\beta\cdot\text{PL}_i(s)\right)$$

Approximation error:

$$0 \leq \text{PL}_{\text{smooth}}(s) - \text{PL}(s) \leq \frac{\log N}{\beta}$$

For $N=10, \beta=20$: error $\leq \ln(10)/20 = 0.115$ m $\ll$ AL = 10 m. Negligible.

Numerically stable implementation using the log-sum-exp trick to avoid overflow:

$$m = \max_i(\beta\cdot\text{PL}_i(s))$$ $$\text{PL}_{\text{smooth}}(s) = \frac{1}{\beta}\!\left[m + \log\!\left(\sum_{i=1}^{N}\exp\!\left(\beta\cdot\text{PL}_i(s) - m\right)\right)\right]$$

Gradient of $\text{PL}_{\text{smooth}}$ with respect to $s_j$:

$$\frac{\partial\text{PL}_{\text{smooth}}}{\partial s_j} = \sum_{i=1}^{N} w_i(s) \cdot \frac{\partial\text{PL}_i(s)}{\partial s_j}$$ $$w_i(s) = \frac{\exp(\beta\cdot\text{PL}_i(s))}{\sum_k\exp(\beta\cdot\text{PL}_k(s))} \in (0,1), \quad \sum_i w_i = 1$$

As $\beta \to \infty$: $w_{i^*} \to 1$ for $i^* = \arg\max_i\text{PL}_i(s)$ β€” gradient recovers the hard-max subgradient. For moderate $\beta$: weighted interpolation across all hypotheses provides smooth gradient signal.

5.11 Convexity of PL(s) in s

For completeness, we verify the Hessian structure. The key quantity is $g(s) = \boldsymbol{\alpha}^T\boldsymbol{\Lambda}^{-1}(s)\boldsymbol{\alpha}$. Its first and second derivatives are:

$$\frac{\partial g}{\partial s_j} = -(\boldsymbol{\alpha}^T\mathbf{v}_j)^2 \leq 0$$ $$\frac{\partial^2 g}{\partial s_j \partial s_k} = 2(\boldsymbol{\alpha}^T\mathbf{v}_j)(\boldsymbol{\alpha}^T\mathbf{v}_k)(\mathbf{a}_j^T\mathbf{v}_k) + 2(\boldsymbol{\alpha}^T\mathbf{v}_k)(\boldsymbol{\alpha}^T\mathbf{v}_j)(\mathbf{a}_k^T\mathbf{v}_j)$$

The Hessian $\mathbf{H}_g \in \mathbb{R}^{N \times N}$ can be written as $\mathbf{H}_g = 2(\mathbf{u}\mathbf{u}^T)\circ\mathbf{Q}$ (Hadamard product) where $u_j = \boldsymbol{\alpha}^T\mathbf{v}_j$ and $Q_{jk} = \mathbf{a}_j^T\mathbf{v}_k$. Since $\mathbf{Q} = \mathbf{A}\boldsymbol{\Lambda}^{-1}\mathbf{A}^T \succeq 0$, $\mathbf{H}_g \succeq 0$, confirming convexity of $g(s)$ and hence of $\sqrt{g(s)}$ (restricted to the domain where $g > 0$).

5.12 LMI Reformulation of the Integrity Constraint

The constraint $\sigma_i(s) \leq c_i$ (target position bound for hypothesis $i$) is equivalent to:

$$\boldsymbol{\alpha}^T\boldsymbol{\Lambda}_i^{-1}(s)\boldsymbol{\alpha} \leq c_i^2$$

By the Schur complement, this is equivalent to the Linear Matrix Inequality (LMI):

$$\begin{pmatrix} \boldsymbol{\Lambda}_i(s) & \boldsymbol{\alpha} \\ \boldsymbol{\alpha}^T & c_i^2 \end{pmatrix} \succeq 0$$

Since $\boldsymbol{\Lambda}_i(s)$ is linear in $s$, this is an LMI in $s$. The full integrity requirement $\text{PL}(s) \leq \text{AL}$ is equivalent to a Second-Order Cone Program (SOCP) in $s$. This confirms that for fixed $\mathbf{x}$, the $s$-subproblem of minimizing residuals subject to $\text{PL}(s) \leq \text{AL}$ is a disciplined convex program β€” a strong theoretical foundation for Model 2 (constrained formulation) as future work.


6. Continuity and Differentiability β€” Rigorous Analysis

ExpressionTermContinuous?Diff. in $\mathbf{x}$?Diff. in $s$?Smoothness classConditions required
$\|\mathbf{r}^{\text{IMU}}\|^2_{\boldsymbol{\Sigma}}$IMU factorβœ“βœ“ on $\mathcal{M}$N/A$C^\infty$ in $\mathbf{x}$Smooth on $SO(3)$
$s_j\|\mathbf{r}^{\text{PR}}_j\|^2_{V_j}$Pseudorange Γ— weightβœ“βœ“βœ“ $C^\infty$$C^1$ in $\mathbf{x}$, $C^\infty$ in $s$$\mathbf{p} \neq \mathbf{p}^j_{\text{sat}}$
$s_j\|\mathbf{r}^{\text{D}}_j\|^2_{V_j}$Doppler Γ— weightβœ“βœ“βœ“ $C^\infty$$C^1$ in $\mathbf{x}$, $C^\infty$ in $s$Same
$(1-s_j)^2/(s_j+\varepsilon)$Regularizerβœ“N/Aβœ“ $C^\infty$$C^\infty$ in $s$$\varepsilon > 0$
$\boldsymbol{\Lambda}(s) = \sum_j s_j\mathbf{a}_j\mathbf{a}_j^T$Info. matrixβœ“N/Aβœ“ $C^\infty$$C^\infty$ in $s$Linear in $s$
$\boldsymbol{\Lambda}^{-1}(s)$Inverseβœ“N/Aβœ“ $C^\infty$$C^\infty$ in $s$$\boldsymbol{\Lambda}(s) \succ 0$
$\boldsymbol{\Lambda}_i^{-1}(s)$ via WoodburySubset inverseβœ“N/Aβœ“ $C^\infty$$C^\infty$ in $s$$d_i(s) \neq 0$, $\boldsymbol{\Lambda}_i \succ 0$
$\sigma_i(s) = \sqrt{\boldsymbol{\alpha}^T\boldsymbol{\Lambda}_i^{-1}\boldsymbol{\alpha}}$Subset std. dev.βœ“N/Aβœ“ $C^\infty$$C^\infty$ in $s$$\sigma_i > 0$ (observability)
$\sigma_{\Delta_i}(s)$Separation std. dev.βœ“N/Aβœ“ $C^\infty$$C^\infty$ in $s$Same
$\text{PL}_i(s)$ (single $i$)Per-hypothesis PLβœ“N/Aβœ“ $C^\infty$$C^\infty$ in $s$Sum of smooth functions
$\text{PL}(s) = \max_i\text{PL}_i(s)$Hard-max PLβœ“N/Aβœ— at ties$C^0$ onlyKinks where two PL$_i$ are equal
$\text{PL}_{\text{smooth}}(s)$Soft-max PLβœ“N/Aβœ“ $C^\infty$$C^\infty$ in $s$$\beta > 0$, $N \geq 1$
$\mathcal{L}(\mathbf{x},s)$ with soft-maxFull objectiveβœ“βœ“ on $\mathcal{M}$βœ“ $C^\infty$$C^1$ in $\mathbf{x}$, $C^\infty$ in $s$All above

Conclusion: The full Model 1 objective with soft-max PL is continuous and infinitely differentiable in $s$ everywhere on the domain $s \in (\varepsilon, 1]^N$, and $C^1$ in $\mathbf{x}$ on the state manifold. Standard gradient-based and quasi-Newton methods are directly applicable for the $s$-update step.


7. Gradient Computation β€” Full Derivation

7.1 Gradient of Term 1 with Respect to s

$$\frac{\partial\mathcal{L}_1}{\partial s_j} = \tilde{r}^2_j = \frac{[\mathbf{r}^{\text{GNSS}}_j(\hat{\mathbf{x}})]^2}{\sigma^2_j} \geq 0$$

Always non-negative. Larger residuals produce stronger downward pressure on $s_j$.

7.2 Gradient of Term 2 with Respect to s

$$\frac{\partial\mathcal{L}_2}{\partial s_j} = \lambda_1 \cdot \frac{(1-s_j)\left[-(s_j+2\varepsilon+1)\right]}{(s_j+\varepsilon)^2}$$

Always negative for $s_j \in (0,1)$. Magnitude decreases as $s_j \to 1$ (vanishes at full inclusion) and increases as $s_j \to 0$ (strongest barrier near exclusion).

7.3 Gradient of Term 3 β€” Analytical Derivation

Step 1 β€” Soft-max decomposition:

$$\frac{\partial\text{PL}_{\text{smooth}}}{\partial s_j} = \sum_{i=1}^N w_i(s) \cdot \frac{\partial\text{PL}_i(s)}{\partial s_j}, \qquad w_i = \frac{e^{\beta\cdot\text{PL}_i}}{\sum_k e^{\beta\cdot\text{PL}_k}}$$

Step 2 β€” Per-hypothesis PL gradient decomposition:

$$\frac{\partial\text{PL}_i}{\partial s_j} = K_{\text{FA}}\frac{\partial\sigma_{\Delta_i}}{\partial s_j} + K_{\text{IR}}\frac{\partial\sigma_i}{\partial s_j}$$

Step 3 β€” Gradient of $\sigma_i$ with respect to $s_j$:

Using $\partial\sigma_i/\partial s_j = \boldsymbol{\alpha}^T(\partial\boldsymbol{\Lambda}_i^{-1}/\partial s_j)\boldsymbol{\alpha}/(2\sigma_i)$:

For $j \neq i$ (non-excluded satellite):

$$\frac{\partial\sigma_i}{\partial s_j}\bigg|_{j\neq i} = \frac{-(\boldsymbol{\alpha}^T\mathbf{v}^{(i)}_j)^2}{2\sigma_i} - \frac{s_i(\mathbf{a}_j^T\mathbf{v}_i)^2}{d_i\sigma_i}\left[\frac{(\boldsymbol{\alpha}^T\mathbf{v}_i)^2}{d_i} + \boldsymbol{\alpha}^T\mathbf{v}^{(i)}_j(\boldsymbol{\alpha}^T\mathbf{v}_i)\right]$$

where $\mathbf{v}^{(i)}_j = \boldsymbol{\Lambda}_i^{-1}\mathbf{a}_j$ and $\mathbf{v}_i = \boldsymbol{\Lambda}^{-1}\mathbf{a}_i$.

For $j = i$ (the excluded satellite):

$$\frac{\partial\sigma_i}{\partial s_i} = \frac{(\boldsymbol{\alpha}^T\mathbf{v}_i)^2}{2\sigma_i d_i}\!\left(1 + \frac{s_i\mathbf{a}_i^T\mathbf{v}_i}{d_i}\right)$$

Step 4 β€” Gradient of $\sigma_{\Delta_i}$ with respect to $s_j$:

Since $\sigma^2_{\Delta_i} = (s_i/d_i)(\boldsymbol{\alpha}^T\mathbf{v}_i)^2$:

$$\frac{\partial\sigma^2_{\Delta_i}}{\partial s_j} = \frac{\partial}{\partial s_j}\!\left[\frac{s_i}{d_i}\right]\!(\boldsymbol{\alpha}^T\mathbf{v}_i)^2 + \frac{s_i}{d_i}\frac{\partial}{\partial s_j}(\boldsymbol{\alpha}^T\mathbf{v}_i)^2$$

For $j \neq i$:

$$\frac{\partial}{\partial s_j}\!\left[\frac{s_i}{d_i}\right] = \frac{s_i}{d_i^2}\frac{\partial d_i}{\partial s_j} = \frac{s_i^2(\mathbf{a}_j^T\mathbf{v}_i)^2}{d_i^2}$$ $$\frac{\partial}{\partial s_j}(\boldsymbol{\alpha}^T\mathbf{v}_i)^2 = 2(\boldsymbol{\alpha}^T\mathbf{v}_i)\boldsymbol{\alpha}^T\frac{\partial\mathbf{v}_i}{\partial s_j} = -2(\boldsymbol{\alpha}^T\mathbf{v}_i)(\boldsymbol{\alpha}^T\mathbf{v}_j)(\mathbf{a}_j^T\mathbf{v}_i)$$

Therefore:

$$\frac{\partial\sigma_{\Delta_i}}{\partial s_j}\bigg|_{j\neq i} = \frac{1}{2\sigma_{\Delta_i}}\!\left[\frac{s_i^2(\mathbf{a}_j^T\mathbf{v}_i)^2}{d_i^2}(\boldsymbol{\alpha}^T\mathbf{v}_i)^2 - \frac{2s_i}{d_i}(\boldsymbol{\alpha}^T\mathbf{v}_i)(\boldsymbol{\alpha}^T\mathbf{v}_j)(\mathbf{a}_j^T\mathbf{v}_i)\right]$$

For $j = i$:

$$\frac{\partial\sigma_{\Delta_i}}{\partial s_i} = \frac{1}{2\sigma_{\Delta_i}}\!\left[\frac{1}{d_i} + \frac{s_i(\mathbf{a}_i^T\mathbf{v}_i)}{d_i^2}\right](\boldsymbol{\alpha}^T\mathbf{v}_i)^2 - \frac{s_i}{d_i}(\boldsymbol{\alpha}^T\mathbf{v}_i)^2\frac{\mathbf{a}_i^T\mathbf{v}_i}{\sigma_{\Delta_i}}$$

7.4 Combined Gradient and Weight Update Rule

The complete gradient of the Model 1 objective with respect to $s_j$ is:

$$\boxed{\frac{\partial\mathcal{L}}{\partial s_j} = \underbrace{\tilde{r}^2_j}_{\geq 0,\ \text{excludes faults}} + \underbrace{\lambda_1\frac{(1-s_j)[-(s_j+2\varepsilon+1)]}{(s_j+\varepsilon)^2}}_{\leq 0,\ \text{resists exclusion}} + \underbrace{\lambda_2\sum_{i=1}^N w_i\!\left(K_{\text{FA}}\frac{\partial\sigma_{\Delta_i}}{\partial s_j} + K_{\text{IR}}\frac{\partial\sigma_i}{\partial s_j}\right)}_{\text{sign depends on geometry: integrity-aware signal}}}$$

Weight update with projection:

$$s_j \leftarrow \text{clip}\!\left(s_j - \eta\cdot\frac{\partial\mathcal{L}}{\partial s_j},\ \varepsilon,\ 1.0\right)$$

where $\eta = 0.05$ and $\text{clip}(x, a, b) = \max(a, \min(b, x))$.

Alternative factored update (more stable for moderate $\lambda_2$):

$$s_j \leftarrow \text{clip}\!\left(\underbrace{\frac{\mu}{\tilde{r}^2_j + \mu}}_{\text{GNC Welsch}} \cdot \underbrace{\exp\!\left(-\eta\lambda_2\frac{\partial\text{PL}_{\text{smooth}}}{\partial s_j}\right)}_{\text{integrity correction}},\ \varepsilon,\ 1.0\right)$$

This factored form explicitly separates the GNC exclusion (first factor, drives toward 0 for large residuals) from the integrity correction (exponential factor, can increase or decrease $s_j$ depending on the sign of $\partial\text{PL}/\partial s_j$).


8. GNC Annealing Schedule and Full Outer Loop

Annealing parameters

VariableRoleScheduleInitial valueTerminal condition
$\mu$GNC exclusion aggressiveness$\mu \leftarrow \mu/\mu_{\text{step}}$$\max_j\tilde{r}^2_j$$\mu < \mu_{\min} = 10^{-4}$
$\beta$Soft-max tightnessFixed or $\beta \leftarrow \min(\beta\cdot\beta_{\text{step}}, \beta_{\max})$5.0$\beta_{\max} = 50.0$
$s_j$Per-satellite weightGradient update$1.0\ \forall j$$\max_j|s_j^{t+1}-s_j^t| < 10^{-4}$

Full per-epoch outer loop

═══════════════════════════════════════════════════════════════
  MODEL 1 PER-EPOCH PROCESSING
═══════════════════════════════════════════════════════════════

INPUT:
  {z^PR_j, z^D_j, Οƒ_j}_{j=1}^N   β€” GNSS measurements
  IMU preintegration Ξ”ΜƒR, Ξ”Μƒv, Ξ”Μƒp, Ξ£_IMU
  Previous iSAM2/FLS graph state

INITIALIZE:
  s_j = 1.0  βˆ€j                   β€” start with full weight
  μ   = max_j(r̃²_j)               — GNC initial scale
  Ξ²   = Ξ²_init                     β€” soft-max temperature

ADD to graph (unchanged):
  CombinedImuFactor(X(k-1), V(k-1), B(k-1), X(k), V(k), B(k))

ADD to graph (GNC-weighted):
  PseudorangeFactor_j with Οƒ_eff,j = Οƒ_j / √(s_j + Ξ΅)  βˆ€j
  DopplerFactor_j with Οƒ_D,j (unchanged, Doppler is robust)

CALL isam2.update() β†’ xΜ‚^(0)      β€” initial estimate

───────────────────────────────────────────────────────────────
FOR iter = 1 to K_max:

  β”Œβ”€ LAYER 1: x-UPDATE (GTSAM) ─────────────────────────────┐
  β”‚  Remove GNSS pseudorange factors (store indices)         β”‚
  β”‚  Re-add with updated Οƒ_eff,j = Οƒ_j / √(s_j + Ξ΅)        β”‚
  β”‚  isam2.update(new_factors, removeIndices) β†’ xΜ‚^(t)       β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

  β”Œβ”€ LAYER 2: PL COMPUTATION ───────────────────────────────┐
  β”‚  Compute H_j at xΜ‚^(t) β†’ a_j = H_j^T / Οƒ_j             β”‚
  │  Compute r̃_j = |r^PR_j(x̂^(t))| / σ_j                  │
  β”‚  Build Ξ›(s) = Ξ£_j s_j a_j a_j^T                        β”‚
  β”‚  Compute Λ⁻¹(s) via LDLT (or GTSAM Marginals)          β”‚
  β”‚  FOR i = 1 to N:                                         β”‚
  β”‚    v_i   = Λ⁻¹ a_i                                      β”‚
  β”‚    d_i   = 1 - s_i (a_i^T v_i)                          β”‚
  β”‚    Λᡒ⁻¹  = Λ⁻¹ + (s_i/d_i) v_i v_i^T    [Woodbury]   β”‚
  β”‚    Οƒ_Ξ”i  = √(s_i/d_i) |Ξ±^T v_i|                        β”‚
  β”‚    Οƒ_i   = √(Ξ±^T Λᡒ⁻¹ Ξ±)                               β”‚
  β”‚    PL_i  = K_FA Οƒ_Ξ”i + K_IR Οƒ_i                         β”‚
  β”‚  m = max_i(Ξ² PL_i)                                      β”‚
  β”‚  PL_smooth = (1/Ξ²)[m + log Ξ£α΅’ exp(Ξ² PL_i - m)]         β”‚
  β”‚  w_i = exp(Ξ² PL_i) / Ξ£β‚– exp(Ξ² PL_k)                    β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

  β”Œβ”€ LAYER 3: s-UPDATE ─────────────────────────────────────┐
  β”‚  FOR j = 1 to N:                                         β”‚
  β”‚    Compute βˆ‚PL_smooth/βˆ‚s_j analytically (Sec 7.3)       β”‚
  │    grad_j = r̃²_j                         [Term 1]       │
  β”‚           + λ₁ βˆ‚R/βˆ‚s_j                   [Term 2]       β”‚
  β”‚           + Ξ»β‚‚ βˆ‚PL_smooth/βˆ‚s_j           [Term 3]       β”‚
  β”‚    s_j ← clip(s_j - Ξ· grad_j,  Ξ΅,  1.0)                β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

  β”Œβ”€ ANNEALING ─────────────────────────────────────────────┐
  β”‚  ΞΌ ← ΞΌ / ΞΌ_step                                         β”‚
  β”‚  Ξ² ← min(Ξ² Β· Ξ²_step, Ξ²_max)                             β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

  IF max_j|s_j^new - s_j^old| < Ο„: BREAK

═══════════════════════════════════════════════════════════════
OUTPUT per epoch:
  xΜ‚        β€” final state estimate (position, velocity, bias)
  ŝ        β€” final GNC weights {ŝ₁,...,ŝ_N}
  PL_smooth β€” final smooth protection level (metres)
  {PL_i}   β€” per-hypothesis protection levels
  PL ≀ AL  β€” integrity availability flag
  iter     β€” number of GNC iterations taken
  t_ms     β€” computation time in milliseconds
═══════════════════════════════════════════════════════════════

9. Comparison: Model 1 vs Sequential Pipeline

9.1 Mathematical Optimality Argument

Let $(\hat{\mathbf{x}}_{\text{seq}}, \hat{s}_{\text{GNC}})$ denote the sequential pipeline output and $(\hat{\mathbf{x}}_{\text{M1}}, \hat{s}_{\text{M1}})$ denote a local minimum of Model 1 with the same initialization.

Lemma: For any $\lambda_2 > 0$:

$$\mathcal{L}_1(\hat{s}_{\text{M1}}) + \lambda_1\mathcal{R}(\hat{s}_{\text{M1}}) + \lambda_2\text{PL}(\hat{s}_{\text{M1}}) \leq \mathcal{L}_1(\hat{s}_{\text{GNC}}) + \lambda_1\mathcal{R}(\hat{s}_{\text{GNC}}) + \lambda_2\text{PL}(\hat{s}_{\text{GNC}})$$

Proof: By definition of $\hat{s}_{\text{M1}}$ as a minimizer of the full objective. QED.

Rearranging:

$$\text{PL}(\hat{s}_{\text{M1}}) \leq \text{PL}(\hat{s}_{\text{GNC}}) + \frac{[\mathcal{L}_1(\hat{s}_{\text{GNC}}) - \mathcal{L}_1(\hat{s}_{\text{M1}})] + \lambda_1[\mathcal{R}(\hat{s}_{\text{GNC}}) - \mathcal{R}(\hat{s}_{\text{M1}})]}{\lambda_2}$$

The right-hand side is bounded above by $\text{PL}(\hat{s}_{\text{GNC}}) + C/\lambda_2$ where $C \geq 0$ is the residual cost increase incurred by Model 1. This inequality shows:

  1. Model 1 achieves a PL reduction proportional to $1/\lambda_2$ at the cost of a residual increase of at most $C$
  2. As $\lambda_2 \to 0$: $\hat{s}_{\text{M1}} \to \hat{s}_{\text{GNC}}$ and the solutions coincide
  3. As $\lambda_2 \to \infty$: Model 1 approaches $\arg\min_s \text{PL}(s)$ β€” purely integrity-optimal

The parameter $\lambda_2 = \sigma^2_{\text{pos}}/\text{AL}^2$ balances these extremes by normalizing the integrity cost to be dimensionally comparable to the positioning cost.

9.2 Integrity-Aware Fault Exclusion β€” Two Key Scenarios

Scenario A β€” Satellite with moderate residual but high PL leverage:

Sequential PipelineModel 1
SetupSatellite $i^*$ has NLOS bias $f = 5$ m, $\tilde{r}_{i^*} = 1.5$ (below GNC threshold), but unique low-elevation azimuth causing large $\sigma_{\Delta_{i^*}}$Same
GNC decision$\hat{s}^{\text{GNC}}_{i^*} \approx 1.0$ (kept, residual too small to exclude)Integrity gradient: $\partial\text{PL}/\partial s_{i^*} > 0$, drives $\hat{s}^{\text{M1}}_{i^*}$ down
Result$\text{PL}_{i^*} \gg \text{AL}$, system unavailable$\hat{s}^{\text{M1}}_{i^*} \approx 0.2$, PL reduced, system may be available
LessonGNC cannot detect integrity-harmful moderate faultsIntegrity gradient catches what residuals miss

Scenario B β€” Geometrically irreplaceable faulted satellite:

Sequential PipelineModel 1
SetupSatellite $j^*$ has large multipath $\tilde{r}_{j^*} = 8$ but is the only satellite at high elevation (unique zenith coverage)Same
GNC decision$\hat{s}^{\text{GNC}}_{j^*} \approx 0$ (fully excluded by GNC)Integrity gradient: $\partial\text{PL}/\partial s_{j^*} < 0$ (including $j^*$ reduces PL), counteracts residual gradient
Result$\boldsymbol{\Lambda}_{j^*}$ near-singular, $\sigma_{j^*} \to \infty$, PL $\to \infty$$\hat{s}^{\text{M1}}_{j^*} \approx 0.15$ (partial inclusion), finite PL
LessonGNC may exclude irreplaceable satellites, causing PL collapseIntegrity gradient prevents complete exclusion of geometrically critical satellites

9.3 Full Scenario Analysis

ScenarioSequentialModel 1Explanation
Large NLOS fault ($\tilde{r}_j \gg 1$)Excludes correctlySame, possibly more efficientlyBoth handle this case well
Moderate NLOS, high PL leverageKeeps satellite, large PLPartial exclusion via integrity gradientKey M1 advantage
False alarm (healthy, large residual from noise)May exclude, degrades geometryRegularizer + integrity gradient prevent exclusionM1 advantage
Geometrically irreplaceable faulted satelliteFull exclusion, PL β†’ ∞Partial inclusion, finite PLKey M1 advantage
Multiple simultaneous moderate faultsAll kept (residuals below threshold)Progressive down-weighting via cumulative integrity gradientM1 advantage
All satellites healthy$s_j = 1\ \forall j$, optimalSame ($\lambda_2$ correction negligible)Equivalent
Complete GNSS outageIMU propagation onlySameNeither handles this; handled by FLS/iSAM2 bias estimation

9.4 Summary Comparison Table

CriterionSequential PipelineModel 1Winner
FDE objective$\min_s\sum_j\rho_\mu(r^2_j)$ (residuals only)$\min_{x,s}\mathcal{L}_1+\mathcal{L}_2+\mathcal{L}_3$ (residuals + integrity)M1
FDE criterionResidual magnitude onlyResidual + PL contribution jointlyM1
PL optimalityNot minimized, just computedJointly minimized with residualsM1 tighter PL
Availability $P(\text{PL}\leq\text{AL})$Lower (unoptimized PL)Higher (PL minimized in objective)M1
FDE–integrity consistencyMay contradictUnified by constructionM1
Partial fault handlingNear-binary $s_j \in \{0,1\}$Continuous $s_j \in (\varepsilon, 1]$M1
Integrity-driven exclusionImpossibleVia $\lambda_2\partial\text{PL}/\partial s_j$M1
Geometrically critical faulted satelliteFull exclusion, PL inflatesPartial inclusion, finite PLM1
Theoretical PL certificationClean binary-weight ARAIM derivationRequires continuous-weight extensionSequential cleaner
Computational cost per epoch~2 ms~8–12 msSequential cheaper
Hyperparameter count$\mu_0, \mu_{\text{step}}$ only+ $\lambda_1, \lambda_2, \beta, \eta$Sequential simpler
GTSAM implementation changeNone neededOuter loop wrapping, no internals modifiedSequential simpler

10. Computational Load Analysis

Assumptions: $n = 15$, $N = 10$ GNSS satellites, $K = 8$ GNC iterations, 1 Hz GNSS.

StepOperationCost formulaOp countEst. time
iSAM2 baseline updateIncremental Bayes tree$O(n^2)$ amortized2251–2 ms
IMU preintegrationResidual + Jacobian$O(n^2)$2250.5 ms
GNSS factor evaluationPseudorange + Doppler per iter$O(Nn)\times K$$10\times15\times8=1{,}200$0.2 ms
Build $\boldsymbol{\Lambda}(s)$Outer product sum per iter$O(Nn^2)\times K$$10\times225\times8=18{,}000$0.5 ms
$\boldsymbol{\Lambda}^{-1}$ via LDLT per iter$n\times n$ decomposition$O(n^3)\times K$$3{,}375\times8=27{,}000$0.5 ms
Woodbury: compute $N$ vectors $\mathbf{v}_i$Matrix-vector products$O(Nn^2)\times K$$18{,}000\times8=144{,}000$1–2 ms
Woodbury: compute $N$ outer productsRank-1 updates$O(Nn^2)\times K$$18{,}000\times8=144{,}000$1 ms
$\sigma_i, \sigma_{\Delta_i}$ computationQuadratic forms per hyp.$O(Nn)\times K$$1{,}200\times8=9{,}600$0.2 ms
Soft-max PL (log-sum-exp)$N$ exponentials$O(N)\times K$$80\times8=640$0.05 ms
PL gradient analyticalChain rule through Woodbury$O(Nn^2)\times K$$18{,}000\times8=144{,}000$0.5–1 ms
PL gradient finite diff.$N$ extra PL evaluations$O(N^2n^2)\times K$$1{,}440{,}000\times8$3–5 ms
GNC weight updateGradient descent on $s$$O(N)\times K$$80\times8=640$0.1 ms
GNSS factor remove/re-addISAM2UpdateParams$O(N)\times K$$80\times8=640$1–2 ms
iSAM2 re-linearize per iterAffected cliques$O(n^2)\times K$$225\times8=1{,}800$4–8 ms
ConfigurationTotal per epochAt 1 Hz (budget 1000 ms)At 10 Hz (budget 100 ms)At 20 Hz (budget 50 ms)
Baseline (no Model 1)~2 msβœ“ 500Γ— marginβœ“ 50Γ— marginβœ“ 25Γ— margin
Model 1, finite diff. gradient~22–30 msβœ“ 33Γ— marginβœ“ 3.3Γ— margin⚠ marginal
Model 1, analytical gradient~8–12 msβœ“ 83Γ— marginβœ“ 8Γ— marginβœ“ 4Γ— margin
Model 1, $K=4$ iters, analytical~5–7 msβœ“ 143Γ— marginβœ“ 14Γ— marginβœ“ 7Γ— margin

Recommendation: Use the analytical gradient (Section 7.3) for all deployment scenarios. Finite differences are acceptable only for initial prototyping and verification.


11. Hyperparameters and Tuning Guidance

ParameterSymbolInitial valuePhysical meaningTuning guidance
GNC regularizer weight$\lambda_1$$0.1$Cost of excluding a measurementIncrease if weights collapse prematurely without evidence
Integrity penalty weight$\lambda_2$$\sigma^2_{\text{pos}}/\text{AL}^2$Trade-off between residuals and PL reductionIncrease for tighter PL (at cost of accuracy); decrease if positioning accuracy degrades
Soft-max temperature$\beta$$20.0$How closely soft-max approximates hard-maxIncrease for tighter PL approximation; decrease for smoother gradient landscape
Initial annealing param.$\mu_0$$\max_j\tilde{r}^2_j$Scale at which GNC starts (no exclusion)Data-driven initialization; ensures all weights start at ~1
Annealing rate$\mu_{\text{step}}$$1.4$Speed of annealing toward exclusionIncrease (e.g., 2.0) for faster convergence; decrease (e.g., 1.2) for stability
Termination threshold$\mu_{\min}$$10^{-4}$Final exclusion resolutionLower for sharper exclusion; increase if oscillation at convergence
Weight step size$\eta$$0.05$Gradient descent learning rateDecrease (e.g., 0.01) if $s_j$ oscillates; increase (e.g., 0.1) if convergence is slow
Numerical floor$\varepsilon$$10^{-6}$Prevents $s_j = 0$ exactlyDo not change in most cases
Max GNC iterations$K_{\max}$$10$Maximum per-epoch iterations5–8 sufficient for most epochs; increase for difficult geometries
Convergence tolerance$\tau$$10^{-4}$Early termination thresholdLower for more precise convergence; increase for faster computation
False alarm rate$P_{\text{FA}}$$10^{-5}$ARAIM standard valueFixed per aviation standard
Required integrity risk$P_{\text{IR}}$$10^{-7}$ARAIM standard valueFixed per application requirement
Alert limitAL10 m horizontalMaximum acceptable position errorApplication-dependent: 10 m AV, 50 m UAV, etc.
Soft-max annealing$\beta_{\text{step}}$$1.1$Rate of $\beta$ increase across itersOptional; set to 1.0 to fix $\beta$

$\lambda_2$ initialization formula:

$$\lambda_2 = \frac{\sigma^2_{\text{pos}}}{\text{AL}^2}$$

where $\sigma_{\text{pos}}$ is the expected 1-sigma horizontal position accuracy from the all-in-view solution (obtainable from $\sqrt{\boldsymbol{\alpha}^T\boldsymbol{\Lambda}^{-1}(\mathbf{1})\boldsymbol{\alpha}}$). This normalization ensures the integrity penalty is dimensionally comparable to the positioning residual term.


12. Theory Lineage

RAIM  (Parkinson & Axelrad, NAVIGATION 1988)
  β”‚   Single satellite fault detection via chi-squared test
  β”‚   Geometric Protection Level from satellite geometry
  β”‚   Binary fault model: one faulted vs. all healthy
  ↓
ARAIM  (Blanch, Walter, Enge et al., IEEE TAES 2012–2015)
  β”‚   Multiple simultaneous fault hypotheses {Hβ‚€,...,H_{nH}}
  β”‚   Formal probability bound: P(HMI) ≀ P_IR
  β”‚   Integrity Support Message for satellite fault priors
  β”‚   Separates false alarm rate and integrity risk
  ↓
Solution Separation  (Joerger & Pervan, NAVIGATION 2014)
  β”‚   N+1 parallel solutions: all-in-view + N subset solutions
  β”‚   Fault-magnitude-independent PL derivation (key theorem)
  β”‚   PL = T_Ξ”α΅’ + K_IRΒ·Οƒα΅’ β€” no worst-case fault search needed
  β”‚   Compared favorably to chi-squared RAIM
  ↓
SS for Fixed-Lag Smoothing  (Hafez, Joerger, Spenko, IEEE RA-L 2020)
  β”‚   Extended SS from snapshot WLS to sequential FLS estimators
  β”‚   Prior estimate treated as additional measurement
  β”‚   Compared SS vs. chi-squared for robot localization
  β”‚   SS preferred for sparse measurements (fewer landmarks)
  ↓
Integrity-Constrained FGO  (Xia & Wen, NAVIGATION 2024)
  β”‚   Integrity embedded inside FGO via switch variable factors
  β”‚   Chi-squared style consistency check as factor constraint
  β”‚   FDE and integrity coupled within single optimization
  β”‚   Limited to chi-squared approach, no continuous weight theory
  ↓
GNC for GNSS/IMU FGO  (Wen & Zhang, IEEE TVT 2022)
  β”‚   GNC-based FDE for tightly-coupled GNSS/IMU in GTSAM
  β”‚   Welsch/Geman-McClure kernels for pseudorange outliers
  β”‚   Evaluated on UrbanNav dataset
  β”‚   FDE and integrity still sequential
  ↓
Model 1 β€” This Work  (Wen, ION GNSS+ 2026)
      GNC weights as continuous optimization variables s ∈ (Ρ,1]^N
      PL(s) embedded as differentiable penalty via soft-max smoothing
      Integrity gradient βˆ‚PL/βˆ‚sβ±Ό drives integrity-aware FDE
      Woodbury identity enables O(NnΒ²) efficient PL computation
      Unified FDE + integrity in one optimization pass
      First work to jointly minimize residuals and protection level

13. References

[1]  F. Dellaert and M. Kaess, "Factor graphs for robot perception,"
     Foundations and Trends in Robotics, vol. 6, no. 1-2, pp. 1-139, 2017.

[2]  W. Wen, T. Pfeifer, and X. Bai, "Factor graph optimization
     for GNSS/INS integration: A comparison with the extended Kalman filter,"
     NAVIGATION, Journal of the ION, vol. 68, no. 2, pp. 315-331, 2021.

[3]  W. Wen and G. Zhang, "GNSS outlier mitigation via
     graduated non-convexity factor graph optimization," IEEE Transactions
     on Vehicular Technology, vol. 71, no. 1, pp. 297-310, 2022.

[4]  M. Kaess, H. Johannsson, R. Roberts, V. Ila, J. J. Leonard, and
     F. Dellaert, "iSAM2: Incremental smoothing and mapping using the
     Bayes tree," IJRR, vol. 31, no. 2, pp. 216-235, 2012.

[5]  V. Indelman, S. Williams, M. Kaess, and F. Dellaert, "Information
     fusion in navigation systems via factor graph based incremental
     smoothing," Robotics and Autonomous Systems, vol. 61, pp. 721-736,
     2013.

[6]  X. Xia and W. Wen, "Integrity-constrained factor graph
     optimization for GNSS positioning in urban canyons," NAVIGATION,
     vol. 71, no. 3, 2024.

[7]  O. A. Hafez, G. D. Arana, M. Joerger, and M. Spenko, "Quantifying
     robot localization safety: A new integrity monitoring method for
     fixed-lag smoothing," IEEE Robotics and Automation Letters, vol. 5,
     no. 2, pp. 3182-3189, 2020.

[8]  C. Forster, L. Carlone, F. Dellaert, and D. Scaramuzza,
     "On-manifold preintegration for real-time visual-inertial odometry,"
     IEEE Transactions on Robotics, vol. 33, no. 1, pp. 1-21, 2017.

[9]  J. Blanch, T. Walter, P. Enge, Y. Lee, B. Pervan, M. Rippl, and
     A. Spletter, "Baseline advanced RAIM user algorithm and possible
     improvements," IEEE TAES, vol. 51, no. 1, pp. 713-732, 2015.

[10] M. Joerger and B. Pervan, "Solution separation versus residual-based
     RAIM," NAVIGATION: Journal of the ION, vol. 61, no. 4,
     pp. 273-291, 2014.

[11] B. W. Parkinson and P. Axelrad, "Autonomous GPS integrity monitoring
     using the pseudorange residual," NAVIGATION, vol. 35, no. 2,
     pp. 255-274, 1988.

[12] R. Yang, H. Zhu, C. Fan, D. Choukroun, and M. Kaess, "Graduated
     non-convexity for robust spatial perception: From single weights to
     mixture of Gaussians," IEEE Robotics and Automation Letters, vol. 5,
     no. 2, pp. 1795-1802, 2020.

[13] W. Wen et al., "UrbanNav: An open-sourced multisensory dataset
     for benchmarking positioning algorithms designed for urban areas,"
     ION GNSS+ 2021, pp. 226-256, 2021.

[14] T. Takasu and A. Yasuda, "Development of the low-cost RTK-GPS
     receiver with an open source program package RTKLIB," ION GNSS/GPS
     2009, Jeju, Korea.

[15] S. Das, R. Watson, and J. Gross, "Review of factor graphs for robust
     GNSS applications," arXiv:2112.07794, 2022.

[16] W. Wen, X. Bai, and Y. C. Kan, "Tightly coupled GNSS/INS
     integration via factor graph and aided by fish-eye camera," IEEE
     Transactions on Vehicular Technology, vol. 68, no. 11, 2019.

For questions, issues, or collaboration inquiries, please open a GitHub issue or contact the authors at the Department of Aeronautical and Aviation Engineering, The Hong Kong Polytechnic University.