Block 7 Flashcards#
Click a question to reveal the answer.
1. Distinguish loose-coupling and tight-coupling GPS/filter integration.
Loose coupling: the GPS NLLS solver runs first and outputs a solved position, which feeds the filter as a linear position measurement. Standard linear KF applies. Tight coupling: raw pseudoranges go straight into the filter, which estimates position, velocity, and clock bias jointly. Tight coupling requires an Extended Kalman Filter because the pseudorange equation is nonlinear in user position.
2. Why is tight coupling preferred in operational navigation?
Three reasons. (1) Graceful degradation: an EKF can update on whatever satellites it sees; a loose-coupling solver needs at least four. (2) Clock bias becomes part of the navigation state, so the filter learns the clock dynamics over time. (3) Honest error model: the filter uses the real pseudorange uncertainty rather than the post-solve smoothed position uncertainty.
3. Write the loose-coupling measurement model and observation matrix for the 4-state filter from Block 5.
\(\mathbf{z}_k = \hat{\mathbf{p}}_k + \mathbf{v}_k\) with \(\mathbf{H} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \end{bmatrix}\). Same \(\mathbf{H}\) as the position-only sensor in Block 5. \(\mathbf{R} \approx (\mathrm{HDOP}\times\sigma_\rho)^2\,\mathbf{I}\).
4. Why can't the standard linear Kalman filter ingest pseudoranges directly?
The pseudorange equation contains \(\lVert\mathbf{p} - \mathbf{s}^{(i)}\rVert\), a Euclidean norm. There is no constant matrix \(\mathbf{H}\) that exactly represents a range measurement, so the standard KF assumption \(\mathbf{z} = \mathbf{H}\mathbf{x} + \mathbf{v}\) does not hold. The fix is to linearize \(h_i(\mathbf{x})\) around the current best estimate at every step.
5. Write the EKF linearization of \(h(\mathbf{x})\) around \(\hat{\mathbf{x}}^-\).
First-order Taylor expansion: \(h(\mathbf{x}) \approx h(\hat{\mathbf{x}}^-) + \mathbf{H}(\mathbf{x} - \hat{\mathbf{x}}^-)\) where \(\mathbf{H} = \partial h / \partial \mathbf{x}\) evaluated at \(\hat{\mathbf{x}}^-\). The Jacobian is recomputed every cycle as \(\hat{\mathbf{x}}^-\) changes; that re-linearization is the EKF's defining feature.
6. In the EKF, what does the innovation use — the linearized model or the nonlinear function?
The innovation uses the nonlinear function: \(\boldsymbol{\nu}_k = \mathbf{z}_k - h(\hat{\mathbf{x}}_k^-)\). The gain and covariance updates use the linearized \(\mathbf{H}\). This split is what keeps the EKF accurate; computing the innovation against the linearized model would discard valuable information about the nonlinearity.
7. Write the tight-coupling state vector for a 2D navigation filter using GPS pseudoranges.
\(\mathbf{x} = [p_x, p_y, v_x, v_y, b]^\top\). Five states: 2D position, 2D velocity, plus the receiver clock bias \(b\) in meters of range-equivalent timing error. The full 3D version adds \(p_z\) and \(v_z\) for a 7-state filter.
8. Why is the receiver clock bias added as a state in a tight-coupling EKF?
Every pseudorange contains the same clock-bias term \(b\), so the bias is a shared unknown that has to be estimated alongside position. Modeling it as a state — typically a random walk or slow Gauss-Markov — lets the EKF estimate the bias automatically and gracefully handle clock drift between updates.
9. Write the pseudorange Jacobian \(\mathbf{H}_i\) for the 5-state 2D filter.
\(\mathbf{H}_i = [\hat{e}_x,\ \hat{e}_y,\ 0,\ 0,\ 1]\), a \(1 \times 5\) row vector. \(\hat{e}_x = (\hat{p}_x - s_x^{(i)})/\rho_i\) and \(\hat{e}_y = (\hat{p}_y - s_y^{(i)})/\rho_i\) are the components of the unit line-of-sight from receiver to satellite. Velocity entries are zero; the clock-bias entry is exactly 1.
10. What does each entry of the pseudorange Jacobian mean, physically?
The first two entries (\(\hat{e}_x, \hat{e}_y\)) are the unit line-of-sight: how a small move in user position changes the predicted pseudorange. Velocity entries are zero because pseudoranges depend instantaneously on position, not velocity (range-rate / Doppler measurements would have non-zero velocity entries). The clock-bias entry is 1 because \(b\) adds linearly to every pseudorange.
11. State the EKF predict step.
Identical to the linear KF: \(\hat{\mathbf{x}}^- = \mathbf{F}\,\hat{\mathbf{x}}^+\) and \(\mathbf{P}^- = \mathbf{F}\,\mathbf{P}^+\,\mathbf{F}^\top + \mathbf{Q}\). The state-transition \(\mathbf{F}\) can also be a Jacobian if the dynamics are nonlinear, but for the constant-velocity + random-walk clock model used in this block, \(\mathbf{F}\) is constant.
12. Write the per-satellite EKF measurement update.
For each satellite \(i\): nonlinear innovation \(\nu_i = \tilde{\rho}_i - h_i(\hat{\mathbf{x}}^-)\); gain \(\mathbf{K}_i = \mathbf{P}^-\mathbf{H}_i^\top(\mathbf{H}_i\mathbf{P}^-\mathbf{H}_i^\top + \sigma_\rho^2)^{-1}\); state update \(\hat{\mathbf{x}}^+ = \hat{\mathbf{x}}^- + \mathbf{K}_i\,\nu_i\); covariance update \(\mathbf{P}^+ = \mathbf{P}^- - \mathbf{K}_i\,\mathbf{H}_i\,\mathbf{P}^-\). The posterior of one satellite becomes the prior for the next.
13. What is the innovation variance \(S\) for a single pseudorange update?
\(S = \mathbf{H}_i\,\mathbf{P}^-\,\mathbf{H}_i^\top + \sigma_\rho^2\). This scalar plays two roles: it appears in the gain denominator, and it is the Mahalanobis test statistic against which the innovation magnitude is compared in fault detection (Block 8).
14. Quick numeric: \(\hat{\mathbf{x}}^- = [0, 0, 10, -5, 20]^\top\), \(\mathbf{s} = [3000, 4000]^\top\). Compute \(\rho\), the predicted pseudorange, and the unit line-of-sight.
\(\rho = \sqrt{3000^2 + 4000^2} = 5000\) m. Predicted pseudorange \(h(\hat{\mathbf{x}}^-) = \rho + b = 5000 + 20 = 5020\) m. Unit line-of-sight: \(\hat{e}_x = -3000/5000 = -0.6\), \(\hat{e}_y = -4000/5000 = -0.8\). So \(\mathbf{H} = [-0.6, -0.8, 0, 0, 1]\).
15. With the same numbers and \(\tilde{\rho} = 5035\), \(\mathbf{P}^- = 100\,\mathbf{I}_5\), \(\sigma_\rho^2 = 100\), which states change after one update?
Innovation \(\nu = +15\) m. \(S = 200 + 100 = 300\). Gain \(\mathbf{K} = (100/300)[-0.6, -0.8, 0, 0, 1]^\top\). State update \(\hat{\mathbf{x}}^+ = [-3, -4, 10, -5, 25]^\top\). Position moves along the negative line-of-sight (the measurement was longer than expected, so push the receiver away from the satellite or increase clock bias). Velocity does not change because the pseudorange Jacobian has zero velocity entries. The clock bias moves up because the same longer-than-expected pseudorange could equivalently be explained by a larger \(b\).
16. Why does an EKF process satellites one at a time rather than stacking them into a single matrix update?
Three practical reasons. (1) Each satellite can be on a different cadence (some at 1 Hz, others at 5 Hz), and sequential processing handles that naturally. (2) The matrix to invert at each update is scalar (\(S\)), so the whole update is cheap. (3) The Jacobian for satellite \(i+1\) is re-evaluated at the posterior from satellite \(i\), which is in fact a tighter linearization than evaluating all Jacobians at the same prior. Mathematically the two approaches are equivalent in expectation; the sequential one is operationally cleaner.