4.1.9 Measurement Models
This page is the mathematical bridge between the physical sensor models and the estimation algorithms that use them. Earlier sections describe what each sensor measures and how its errors arise; here, those physical outputs are written as estimator-compatible equations so that they can be used consistently inside a Kalman filter, Extended Kalman Filter, Multiplicative EKF, Unscented Kalman Filter, particle filter, or relative-navigation estimator.
A good measurement model must answer six questions for every sensor: what quantity is measured, in which frame, at what time, with what uncertainty, how that quantity depends on the estimator state, and how invalid or degraded measurements are handled. The model is therefore more than a single equation; it includes the predicted measurement, covariance, timing, frame definition, validity logic, and—where required—the Jacobian or nonlinear transformation used by the estimator.
The central estimator relationship is \[ \boxed{\mathbf z_k = h(\mathbf x_k) + \mathbf v_k} \] but in real spacecraft software this expands into a complete chain involving calibration, frame transformations, time alignment, measurement prediction, innovation construction, covariance selection, gating, and state correction.
A measurement model mathematically relates the spacecraft state being estimated to the measurement produced by a sensor.
The fundamental estimator equation is
\[ \boxed{ \mathbf z_k = h(\mathbf x_k) + \mathbf v_k } \]where
\[ \mathbf z_k \]is the measurement vector,
\[ \mathbf x_k \]is the state vector,
\[ h(\cdot) \]is the sensor measurement function, and
\[ \mathbf v_k \]is measurement noise.
For linear measurements,
\[ \boxed{ \mathbf z_k = H_k\mathbf x_k + \mathbf v_k } \]where \(H_k\) is the measurement matrix.
For nonlinear spacecraft measurements such as magnetometer vectors, Sun vectors, ranges, bearings, pseudoranges, star-tracker attitude, or LiDAR measurements,
\[ \boxed{ \mathbf z_k = h(\mathbf x_k) + \mathbf v_k } \]must usually be linearized for an EKF:
\[ \boxed{ H_k = \left. \frac{\partial h}{\partial\mathbf x} \right|_{\hat{\mathbf x}_k^-} } \]This chapter therefore connects
\[ \boxed{ \text{Sensor Physics} \rightarrow \text{Measurement Equation} \rightarrow \text{Innovation} \rightarrow \text{Estimator Update} } \]and is the direct mathematical bridge from Sensor Models to Sensor Fusion and State Estimation.
4.1.9.1 What Is a Measurement Model?
A sensor does not usually measure every element of the spacecraft state directly.
Suppose
\[ \mathbf x = \begin{bmatrix} \mathbf r\\ \mathbf v\\ \mathbf q\\ \boldsymbol\omega\\ \mathbf b_g\\ \mathbf b_a \end{bmatrix}. \]A GNSS receiver may observe position and velocity.
A star tracker observes attitude.
A magnetometer observes a magnetic-field vector expressed in the body frame.
A Sun sensor observes the Sun direction.
A LiDAR may observe only range.
Therefore each sensor provides a different mapping
\[ \boxed{ \mathbf z_i=h_i(\mathbf x)+\mathbf v_i. } \]Sensor fusion works because all those measurements constrain the same underlying state.
4.1.9.2 Truth, Estimated State and Measurement
Three quantities must always be distinguished.
True state
\[ \boxed{ \mathbf x } \]represents the real spacecraft state.
Estimated state
\[ \boxed{ \hat{\mathbf x} } \]is the navigation system's current estimate.
Sensor measurement
\[ \boxed{ \mathbf z } \]is what the hardware reports.
The predicted measurement is
\[ \boxed{ \hat{\mathbf z} = h(\hat{\mathbf x}^-). } \]The difference between actual and predicted measurement is the innovation
\[ \boxed{ \mathbf y = \mathbf z-\hat{\mathbf z}. } \]4.1.9.3 Measurement Residual / Innovation
The innovation is fundamental to Kalman filtering:
\[ \boxed{ \mathbf y_k = \mathbf z_k - h(\hat{\mathbf x}_k^-). } \]It answers:
How different is the sensor measurement from what the current spacecraft-state estimate predicts?
If
\[ \mathbf y_k\approx0, \]the measurement agrees with the prediction.
A large innovation may indicate:
- genuine state-estimation error,
- sensor noise,
- underestimated covariance,
- sensor bias,
- incorrect dynamic model,
- bad frame transformation,
- timing error,
- measurement fault.
4.1.9.4 Linear Measurement Model
For a linear measurement,
\[ \boxed{ \mathbf z_k = H_k\mathbf x_k + \mathbf v_k. } \]Suppose
\[ \mathbf x= \begin{bmatrix} x\\y\\z\\v_x\\v_y\\v_z \end{bmatrix} \]and GNSS measures position only.
Then
\[ \boxed{ \mathbf z= \begin{bmatrix} x\\y\\z \end{bmatrix} + \mathbf v } \]with
\[ \boxed{ H= \begin{bmatrix} 1&0&0&0&0&0\\ 0&1&0&0&0&0\\ 0&0&1&0&0&0 \end{bmatrix}. } \]This matrix simply selects the states observed by the sensor.
4.1.9.5 Nonlinear Measurement Model
Many spacecraft sensors have nonlinear relationships.
For example, a range sensor measuring distance to a target gives
\[ \boxed{ \rho = \sqrt{ (x_C-x_T)^2+ (y_C-y_T)^2+ (z_C-z_T)^2 } + v_\rho. } \]This cannot be written exactly as
\[ H\mathbf x. \]Instead,
\[ \boxed{ z=h(\mathbf x)+v. } \]The EKF linearizes \(h\) about the current estimate.
4.1.9.6 Measurement Jacobian
For nonlinear measurement function
\[ \mathbf z=h(\mathbf x), \]small perturbations satisfy
\[ \boxed{ \delta\mathbf z \approx H\delta\mathbf x } \]with
\[ \boxed{ H = \frac{\partial h}{\partial\mathbf x}. } \]For a scalar measurement,
\[ H= \begin{bmatrix} \frac{\partial h}{\partial x_1} & \frac{\partial h}{\partial x_2} & \cdots & \frac{\partial h}{\partial x_n} \end{bmatrix}. \]The measurement Jacobian tells us how sensitive the sensor observation is to each estimated state.
4.1.9.7 Measurement Noise
The classical model assumes
\[ \boxed{ \mathbf v_k \sim \mathcal N(\mathbf0,R_k). } \]Here,
\[ R_k = E[ \mathbf v_k\mathbf v_k^T ] \]is the measurement-noise covariance.
For independent sensor axes,
\[ \boxed{ R = \operatorname{diag} ( \sigma_1^2, \sigma_2^2, \ldots ). } \]But this diagonal assumption is not always valid.
4.1.9.8 Measurement Covariance
For a three-axis sensor,
\[ R= \begin{bmatrix} \sigma_x^2&R_{xy}&R_{xz}\\ R_{yx}&\sigma_y^2&R_{yz}\\ R_{zx}&R_{zy}&\sigma_z^2 \end{bmatrix}. \]Off-diagonal terms represent correlation.
A good estimator therefore needs both
\[ \boxed{ \mathbf z } \]and
\[ \boxed{ R. } \]A measurement without credible uncertainty information is much less useful for optimal fusion.
4.1.9.9 Predicted Measurement Covariance
The uncertainty of the innovation is
\[ \boxed{ S = HP^-H^T+R } \]for a linearized measurement.
Here,
- \(P^-\) = predicted state covariance,
- \(H\) = measurement Jacobian,
- \(R\) = sensor covariance.
Thus measurement consistency depends on both navigation uncertainty and sensor uncertainty.
4.1.9.10 Kalman Gain
The Kalman gain is
\[ \boxed{ K = P^-H^T S^{-1}. } \]Substituting
\[ S=HP^-H^T+R, \]gives
\[ \boxed{ K = P^-H^T (HP^-H^T+R)^{-1}. } \]This determines how strongly the measurement corrects the predicted state.
4.1.9.11 Meaning of Measurement Covariance in Fusion
If
\[ R\downarrow, \]the sensor is treated as more trustworthy.
Generally,
\[ \boxed{ R\downarrow \Rightarrow K\uparrow } \]for the observed directions.
If
\[ R\uparrow, \]the filter relies more on its propagated state.
Thus tuning \(R\) is not cosmetic—it changes navigation behaviour directly.
4.1.9.12 Measurement Update
The EKF update is
\[ \boxed{ \hat{\mathbf x}^{+} = \hat{\mathbf x}^{-} + K\mathbf y. } \]where
\[ \mathbf y = \mathbf z-h(\hat{\mathbf x}^{-}). \]Covariance updates as
\[ \boxed{ P^{+} = (I-KH)P^{-} } \]in the simplest form.
A numerically robust Joseph form is
\[ \boxed{ P^+ = (I-KH)P^-(I-KH)^T + KRK^T. } \]4.1.9.13 Sensor Bias in a Measurement Model
Suppose a measurement contains bias:
\[ \boxed{ z_m = h(\mathbf x) + b + v. } \]There are three main choices.
Calibrate it beforehand
\[ z_{corr}=z_m-\hat b. \]Include it in the measurement covariance
Only appropriate when the residual bias behaves like an uncertain random error.
Estimate it as a state
For slowly varying biases,
\[ \boxed{ \mathbf x = [ \mathbf x_{vehicle}, b ]^T. } \]This is common for gyro and accelerometer biases.
4.1.9.14 Measurement Functions and Sensor Error States
Suppose
\[ \mathbf x = \begin{bmatrix} \mathbf r\\ \mathbf v\\ \mathbf q\\ \mathbf b_g\\ \mathbf b_a \end{bmatrix}. \]A measurement may depend directly on only some states.
For example, a magnetometer depends mainly on attitude:
\[ \mathbf B_m^B = C_I^B(\mathbf q)\mathbf B^I + \mathbf v_B. \]But because attitude propagation depends on gyro bias, repeated magnetometer updates may indirectly help estimate
\[ \mathbf b_g. \]This is an important distinction between direct measurement sensitivity and dynamic observability.
4.1.9.15 Direct and Indirect Measurements
A direct measurement can be represented approximately as
\[ \boxed{ z=x_i+v. } \]Example:
\[ \mathbf r_{GNSS} = \mathbf r+\mathbf v_r. \]An indirect measurement is
\[ \boxed{ z=h(\mathbf x)+v. } \]Example:
\[ \mathbf s^B = C_I^B(\mathbf q)\mathbf s^I+\mathbf v_s. \]The Sun sensor does not report a quaternion, yet it constrains attitude.
4.1.9.16 Gyroscope Measurement Model
A three-axis gyro model is
\[ \boxed{ \boldsymbol\omega_m = (I+S_g+M_g) \boldsymbol\omega + \mathbf b_g + \mathbf n_g. } \]For estimator propagation, a simplified form is usually
\[ \boxed{ \boldsymbol\omega_m = \boldsymbol\omega + \mathbf b_g + \mathbf n_g. } \]Thus corrected angular rate is
\[ \boxed{ \hat{\boldsymbol\omega} = \boldsymbol\omega_m - \hat{\mathbf b}_g. } \]4.1.9.17 Gyroscope as Process Input Rather Than Measurement Update
A gyro is often not used as a conventional EKF measurement update.
Instead,
\[ \boxed{ \boldsymbol\omega_m } \]drives attitude propagation.
Quaternion dynamics are
\[ \boxed{ \dot q = \frac12 \Omega(\boldsymbol\omega) q. } \]Using the gyro,
\[ \boxed{ \dot{\hat q} = \frac12 \Omega( \boldsymbol\omega_m-\hat{\mathbf b}_g ) \hat q. } \]This is why gyro noise often enters the process-noise model \(Q\) rather than only the measurement covariance \(R\).
4.1.9.18 Gyro Bias-State Model
A common bias model is
\[ \boxed{ \dot{\mathbf b}_g = \mathbf w_{bg} } \]or
\[ \boxed{ \dot{\mathbf b}_g = -\frac1{\tau_g}\mathbf b_g + \mathbf w_{bg}. } \]The first is a random walk.
The second is first-order Gauss-Markov.
These dynamics belong in the filter state-transition model.
4.1.9.19 Accelerometer Measurement Model
An accelerometer measures specific force, not total inertial acceleration.
The ideal relationship is
\[ \boxed{ \mathbf f^B = C_I^B ( \mathbf a^I-\mathbf g^I ). } \]A practical measurement is
\[ \boxed{ \mathbf f_m = (I+S_a+M_a)\mathbf f^B + \mathbf b_a + \mathbf n_a. } \]The simplified estimator model is
\[ \boxed{ \mathbf f_m = \mathbf f^B + \mathbf b_a + \mathbf n_a. } \]4.1.9.20 Accelerometer in Navigation Propagation
Corrected specific force is
\[ \boxed{ \hat{\mathbf f}^B = \mathbf f_m-\hat{\mathbf b}_a. } \]Transform to inertial/navigation frame:
\[ \boxed{ \hat{\mathbf f}^I = C_B^I(\hat q) \hat{\mathbf f}^B. } \]Then
\[ \boxed{ \dot{\hat{\mathbf v}} = \hat{\mathbf f}^I + \mathbf g^I + \mathbf a_{model}. } \]Position propagation follows:
\[ \boxed{ \dot{\hat{\mathbf r}} = \hat{\mathbf v}. } \]4.1.9.21 Accelerometer Bias-State Model
The filter may estimate
\[ \mathbf b_a. \]For random walk:
\[ \boxed{ \dot{\mathbf b}_a = \mathbf w_{ba}. } \]For Gauss-Markov:
\[ \boxed{ \dot{\mathbf b}_a = -\frac1{\tau_a}\mathbf b_a + \mathbf w_{ba}. } \]GNSS or other absolute navigation measurements can make accelerometer bias observable under suitable dynamics.
4.1.9.22 Magnetometer Measurement Model
The inertial/reference magnetic field is
\[ \mathbf B^I. \]Expected body-frame magnetic vector is
\[ \boxed{ \mathbf B^B = C_I^B(\mathbf q) \mathbf B^I. } \]The ideal measurement function is therefore
\[ \boxed{ h_B(\mathbf x) = C_I^B(\mathbf q) \mathbf B^I. } \]The measurement is
\[ \boxed{ \mathbf z_B = \mathbf B_m^B = h_B(\mathbf x) + \mathbf v_B. } \]4.1.9.23 Full Magnetometer Measurement Model
Including calibration errors,
\[ \boxed{ \mathbf B_m = A_B C_I^B(\mathbf q) \mathbf B^I + \mathbf b_B + \mathbf B_{sc} + \mathbf n_B. } \]where
- \(A_B\) includes scale factor and soft-iron effects,
- \(\mathbf b_B\) includes hard-iron offset,
- \(\mathbf B_{sc}\) is spacecraft-generated magnetic field.
After calibration,
\[ \boxed{ \mathbf z_B \approx C_I^B(\mathbf q)\mathbf B^I+\mathbf v_B. } \]4.1.9.24 Magnetometer Innovation
Predicted magnetic measurement:
\[ \boxed{ \hat{\mathbf B}^B = C_I^B(\hat q^-)\mathbf B^I. } \]Innovation:
\[ \boxed{ \mathbf y_B = \mathbf B_m^B - \hat{\mathbf B}^B. } \]This innovation carries attitude information.
4.1.9.25 Small-Angle Magnetometer Jacobian
For small attitude error
\[ \delta\boldsymbol\theta, \]approximately
\[ \delta\mathbf B^B \approx -[\hat{\mathbf B}^B\times] \delta\boldsymbol\theta \]for one error convention.
Therefore the MEKF measurement matrix includes
\[ \boxed{ H_B = \begin{bmatrix} -[\hat{\mathbf B}^B\times] & 0 & \cdots \end{bmatrix}. } \]Signs change with attitude-error definition, so convention consistency is essential.
4.1.9.26 Sun-Sensor Measurement Model
The inertial Sun direction is
\[ \mathbf s^I. \]Predicted body-frame Sun vector is
\[ \boxed{ \mathbf s^B = C_I^B(\mathbf q) \mathbf s^I. } \]The sensor measurement is
\[ \boxed{ \mathbf z_s = \mathbf s_m^B = C_I^B(\mathbf q)\mathbf s^I + \mathbf v_s. } \]4.1.9.27 Normalized Sun-Vector Measurement
Often only direction is important.
Therefore,
\[ \boxed{ \bar{\mathbf s}_m = \frac{\mathbf s_m} {\|\mathbf s_m\|}. } \]The predicted vector is similarly normalized.
This removes dependence on optical intensity from the attitude measurement.
4.1.9.28 Sun-Sensor Measurement Validity
The measurement model is conditional.
During eclipse,
\[ \boxed{ valid_{Sun}=0. } \]Near sensor FOV limits,
\[ R_{Sun} \]may increase.
Thus the practical model is
\[ \boxed{ \mathbf z_s= \begin{cases} h_s(\mathbf x)+\mathbf v_s, &valid=1\\ \text{no update}, &valid=0. \end{cases} } \]4.1.9.29 Sun-Sensor Jacobian
For small attitude error,
\[ \boxed{ \delta\mathbf s^B \approx -[\hat{\mathbf s}^B\times] \delta\boldsymbol\theta. } \]Therefore
\[ \boxed{ H_s = \begin{bmatrix} -[\hat{\mathbf s}^B\times]&0&\cdots \end{bmatrix}. } \]This has the same mathematical structure as other known-reference vector measurements.
4.1.9.30 General Reference-Vector Measurement Model
Magnetometers and Sun sensors can both be expressed as
\[ \boxed{ \mathbf z_i^B = C_I^B(\mathbf q) \mathbf r_i^I + \mathbf v_i. } \]where
\[ \mathbf r_i^I \]is a known inertial reference vector.
Examples:
\[ \mathbf r_1^I=\mathbf B^I \]and
\[ \mathbf r_2^I=\mathbf s^I. \]Thus a common vector-measurement update block can support multiple sensor types.
4.1.9.31 Cross-Product Innovation for Unit Vectors
Rather than subtracting two normalized vectors directly, some attitude estimators use
\[ \boxed{ \mathbf e_i = \mathbf z_i \times \hat{\mathbf z}_i. } \]For small angular errors,
\[ \mathbf e_i \]is approximately proportional to attitude error perpendicular to the reference vector.
This is useful in compact attitude filters and nonlinear observers.
4.1.9.32 Star-Tracker Measurement Model
A star tracker usually provides absolute attitude.
A high-level measurement model is
\[ \boxed{ q_m = \delta q_v \otimes q. } \]Quaternion noise should not generally be treated as four independent additive Gaussian components because the quaternion must satisfy
\[ \boxed{ \|q\|=1. } \]Instead attitude error is commonly represented by a three-component small-angle vector.
4.1.9.33 Star-Tracker Error Quaternion
Suppose
\[ q_m \]is the measured quaternion and
\[ \hat q^- \]is predicted attitude.
Define error quaternion as
\[ \boxed{ \delta q_m = q_m \otimes (\hat q^-)^{-1} } \]for one convention.
For small error,
\[ \boxed{ \delta q_m \approx \begin{bmatrix} 1\\ \frac12\delta\boldsymbol\theta \end{bmatrix}. } \]Then a three-component attitude residual can be extracted.
4.1.9.34 Star-Tracker Measurement Residual
A common MEKF residual is
\[ \boxed{ \mathbf y_{ST} \approx 2\, \operatorname{vec} ( q_m\otimes(\hat q^-)^{-1} ). } \]For small errors,
\[ \boxed{ \mathbf y_{ST} \approx \delta\boldsymbol\theta+\mathbf v_{ST}. } \]Thus
\[ \boxed{ H_{ST} = \begin{bmatrix} I_{3\times3}&0&\cdots \end{bmatrix} } \]for an attitude-error-state vector whose first three entries are \(\delta\boldsymbol\theta\).
4.1.9.35 Quaternion Sign Ambiguity
Quaternions satisfy
\[ \boxed{ q \equiv -q. } \]Therefore before forming the star-tracker residual, it is common to enforce
\[ \boxed{ q_m^T\hat q>0. } \]If not,
\[ q_m\leftarrow-q_m. \]Otherwise the filter may incorrectly interpret equivalent quaternions as a very large attitude error.
4.1.9.36 Star-Tracker Covariance
Star-tracker accuracy may not be isotropic.
For example,
\[ \boxed{ R_{ST} = \operatorname{diag} ( \sigma_x^2, \sigma_y^2, \sigma_z^2 ). } \]Some trackers provide different accuracy about the boresight compared with transverse axes.
Therefore a scalar attitude-noise value is not always adequate.
4.1.9.37 Star-Tracker Validity Model
Measurement availability can depend on:
- Sun exclusion,
- Earth/Moon exclusion,
- star count,
- image quality,
- slew rate,
- lost-in-space status.
Thus
\[ \boxed{ valid_{ST} = f( \text{stars}, \text{blinding}, \text{tracking}, \omega, \text{quality} ). } \]A rejected star-tracker solution should normally produce no update, rather than simply a very large noise term.
4.1.9.38 GNSS Position Measurement Model
At solution level,
\[ \boxed{ \mathbf r_m = \mathbf r + \mathbf b_r + \mathbf v_r. } \]After calibration/receiver processing,
\[ \boxed{ \mathbf z_r = \mathbf r + \mathbf v_r. } \]If state is
\[ \mathbf x = [ \mathbf r, \mathbf v, \ldots ]^T, \]then
\[ \boxed{ H_r = \begin{bmatrix} I&0&\cdots \end{bmatrix}. } \]4.1.9.39 GNSS Velocity Measurement Model
Similarly,
\[ \boxed{ \mathbf v_m = \mathbf v + \mathbf b_v + \mathbf n_v. } \]Simplified:
\[ \boxed{ \mathbf z_v = \mathbf v+\mathbf n_v. } \]Measurement matrix:
\[ \boxed{ H_v = \begin{bmatrix} 0&I&\cdots \end{bmatrix}. } \]4.1.9.40 Combined GNSS PVT Measurement
For position and velocity,
\[ \boxed{ \mathbf z_{GNSS} = \begin{bmatrix} \mathbf r_m\\ \mathbf v_m \end{bmatrix}. } \]Predicted measurement:
\[ \boxed{ h_{GNSS}(\mathbf x) = \begin{bmatrix} \mathbf r\\ \mathbf v \end{bmatrix}. } \]Therefore
\[ \boxed{ H_{GNSS} = \begin{bmatrix} I&0&0&\cdots\\ 0&I&0&\cdots \end{bmatrix}. } \]4.1.9.41 GNSS Measurement Covariance
A full covariance may be
\[ \boxed{ R_{GNSS} = \begin{bmatrix} R_r&R_{rv}\\ R_{vr}&R_v \end{bmatrix}. } \]Position and velocity errors may be correlated because both are produced by the same internal receiver estimator.
A diagonal covariance is only an approximation.
4.1.9.42 Raw GNSS Pseudorange Measurement Model
For satellite \(i\),
\[ \boxed{ \rho_i = \| \mathbf r_i-\mathbf r \| + c(\delta t_r-\delta t_i) + I_i + T_i + b_i + n_i. } \]After known corrections,
\[ \boxed{ \rho_i^{corr} = \| \mathbf r_i-\mathbf r \| + c\delta t_r + v_{\rho,i}. } \]This is nonlinear in receiver position.
4.1.9.43 GNSS Pseudorange Jacobian
Define
\[ \mathbf u_i = \frac{\mathbf r_i-\mathbf r} {\|\mathbf r_i-\mathbf r\|}. \]Then
\[ \boxed{ \frac{\partial\rho_i} {\partial\mathbf r} = -\mathbf u_i^T. } \]If clock bias is expressed in metres,
\[ b_c=c\delta t_r, \]the row becomes
\[ \boxed{ H_{\rho,i} = \begin{bmatrix} -\mathbf u_i^T&0&1&\cdots \end{bmatrix}. } \]4.1.9.44 GNSS Doppler / Range-Rate Model
A simplified range-rate measurement is
\[ \boxed{ \dot\rho_i = \mathbf u_i^T (\mathbf v_i-\mathbf v) + c(\dot{\delta t}_r-\dot{\delta t}_i) + n_{\dot\rho,i}. } \]After satellite-clock correction,
\[ \boxed{ \dot\rho_i \approx \mathbf u_i^T (\mathbf v_i-\mathbf v) + d_c + n_{\dot\rho,i}. } \]This constrains spacecraft velocity and receiver clock drift.
4.1.9.45 GNSS Carrier-Phase Measurement
Carrier phase in metres can be represented as
\[ \boxed{ L_i = R_i + c(\delta t_r-\delta t_i) - I_i + T_i + \lambda N_i + v_{\phi,i}. } \]The unknown integer ambiguity
\[ \boxed{ N_i\in\mathbb Z } \]may become part of the estimator state in precision relative navigation.
4.1.9.46 GNSS Clock States
An integrated raw-GNSS filter may include
\[ \boxed{ b_c=c\delta t_r } \]and
\[ \boxed{ d_c=c\dot{\delta t}_r. } \]Clock dynamics can be modeled as
\[ \boxed{ \dot b_c=d_c+w_b } \] \[ \boxed{ \dot d_c=w_d. } \]These states appear directly in pseudorange and Doppler measurement models.
4.1.9.47 Range Measurement Model
For target-relative position
\[ \delta\mathbf r = \mathbf r_C-\mathbf r_T, \]a range sensor measures
\[ \boxed{ \rho = \|\delta\mathbf r\| + v_\rho. } \]This is a fundamental RPO measurement.
4.1.9.48 Range Jacobian
Let
\[ \boxed{ \hat{\mathbf u} = \frac{\delta\mathbf r} {\|\delta\mathbf r\|}. } \]Then
\[ \boxed{ \frac{\partial\rho} {\partial\delta\mathbf r} = \hat{\mathbf u}^T. } \]For relative state
\[ \mathbf x_{rel} = \begin{bmatrix} \delta\mathbf r\\ \delta\mathbf v \end{bmatrix}, \] \[ \boxed{ H_\rho = \begin{bmatrix} \hat{\mathbf u}^T&0 \end{bmatrix}. } \]4.1.9.49 Range-Rate Measurement
Range rate is
\[ \boxed{ \dot\rho = \frac{ \delta\mathbf r^T\delta\mathbf v }{ \|\delta\mathbf r\| } + v_{\dot\rho}. } \]Equivalently,
\[ \boxed{ \dot\rho = \hat{\mathbf u}^T \delta\mathbf v. } \]This is useful for radar, LiDAR, and RF relative-navigation systems.
4.1.9.50 Range-Rate Jacobian
For
\[ \dot\rho = \hat{\mathbf u}^T \delta\mathbf v, \]the velocity derivative is
\[ \boxed{ \frac{\partial\dot\rho} {\partial\delta\mathbf v} = \hat{\mathbf u}^T. } \]The position derivative is
\[ \boxed{ \frac{\partial\dot\rho} {\partial\delta\mathbf r} = \frac{1}{\rho} \delta\mathbf v^T (I-\hat{\mathbf u}\hat{\mathbf u}^T). } \]Thus range-rate depends on both relative position and velocity.
4.1.9.51 Camera Bearing Measurement
Suppose the target position in camera frame is
\[ \mathbf r^C = \begin{bmatrix} x_C\\y_C\\z_C \end{bmatrix}. \]Azimuth and elevation may be
\[ \boxed{ \alpha = \tan^{-1} \left( \frac{y_C}{x_C} \right) } \]and
\[ \boxed{ \beta = \tan^{-1} \left( \frac{z_C} {\sqrt{x_C^2+y_C^2}} \right). } \]Then
\[ \boxed{ \mathbf z_C = \begin{bmatrix} \alpha\\ \beta \end{bmatrix} + \mathbf v_C. } \]4.1.9.52 Camera Unit-Line-of-Sight Measurement
An alternative is to use a unit LOS vector:
\[ \boxed{ \mathbf u_C = \frac{\mathbf r^C} {\|\mathbf r^C\|}. } \]Then
\[ \boxed{ \mathbf z_C = \mathbf u_C+\mathbf v_C. } \]This avoids angle singularities in some implementations.
4.1.9.53 Pinhole Camera Measurement Model
For camera-frame coordinates
\[ (X,Y,Z), \]ideal image coordinates are
\[ \boxed{ u = f_x\frac{X}{Z}+c_x } \] \[ \boxed{ v = f_y\frac{Y}{Z}+c_y. } \]Thus
\[ \boxed{ \mathbf z_{pixel} = \pi(\mathbf r^C) + \mathbf v_{pixel}. } \]A complete camera model may also include lens distortion.
4.1.9.54 Camera Measurement and Relative Pose
If a target feature has known target-frame location
\[ \mathbf p_j^T, \]its camera-frame coordinate is
\[ \boxed{ \mathbf p_j^C = C_T^C(\mathbf q_{rel}) \mathbf p_j^T + \mathbf r_{T/C}^C. } \]Projection gives image measurement
\[ \boxed{ \mathbf z_j = \pi( \mathbf p_j^C ) + \mathbf v_j. } \]This is the basis of feature-based relative pose estimation.
4.1.9.55 LiDAR Measurement Model
At simple range level,
\[ \boxed{ z_L = \|\delta\mathbf r\| + v_L. } \]A more advanced LiDAR can produce 3-D points.
For target point \(j\),
\[ \boxed{ \mathbf p_{L,j} = C_T^L \mathbf p_{T,j} + \mathbf r_{T/L}^L + \mathbf v_j. } \]This can constrain relative position and attitude.
4.1.9.56 Relative Position Measurement
A cooperative relative-navigation sensor may directly provide
\[ \boxed{ \mathbf z_r = \delta\mathbf r + \mathbf v_r. } \]Then
\[ \boxed{ H_r = \begin{bmatrix} I&0&\cdots \end{bmatrix}. } \]This is one of the simplest RPO measurement models.
4.1.9.57 Relative Velocity Measurement
Similarly,
\[ \boxed{ \mathbf z_v = \delta\mathbf v + \mathbf v_v. } \]Then
\[ \boxed{ H_v = \begin{bmatrix} 0&I&\cdots \end{bmatrix}. } \]Relative velocity is particularly important for approach and capture safety.
4.1.9.58 Relative Pose Measurement
For docking,
\[ \boxed{ \mathbf z_{pose} = \begin{bmatrix} \delta\mathbf r_m\\ q_{rel,m} \end{bmatrix}. } \]Because the quaternion portion is nonlinear/manifold constrained, it is normally converted into a three-component attitude residual before fusion.
4.1.9.59 Relative Angular-Rate Measurement
If available,
\[ \boxed{ \boldsymbol\omega_{rel,m} = \boldsymbol\omega_{rel} + \mathbf n_\omega. } \]A relative docking state may then be
\[ \boxed{ \mathbf x_{RPO} = \begin{bmatrix} \delta\mathbf r\\ \delta\mathbf v\\ \delta\boldsymbol\theta\\ \boldsymbol\omega_{rel} \end{bmatrix}. } \]4.1.9.60 Hill / LVLH Relative Measurement Model
Suppose relative measurements are expressed in Hill frame \(H\).
Then
\[ \boxed{ \delta\mathbf r^H = C_I^H ( \mathbf r_C^I-\mathbf r_T^I ). } \]A GNSS-derived relative position measurement becomes
\[ \boxed{ \mathbf z_H = C_I^H ( \mathbf r_C-\mathbf r_T ) + \mathbf v_H. } \]This measurement function depends on both spacecraft states and the target orbital frame.
4.1.9.61 Relative Velocity in Rotating Frame
Relative velocity transformation requires the rotating-frame correction:
\[ \boxed{ \delta\mathbf v^H = C_I^H \delta\mathbf v^I - \boldsymbol\omega_{H/I}^{H} \times \delta\mathbf r^H. } \]Therefore a Hill-frame velocity measurement should not generally be obtained by simply rotating inertial relative velocity.
4.1.9.62 Measurement Models for CW State
For
\[ \mathbf x = \begin{bmatrix} x\\y\\z\\\dot x\\\dot y\\\dot z \end{bmatrix}, \]a full relative-position measurement is
\[ \boxed{ \mathbf z_r = \begin{bmatrix} x\\y\\z \end{bmatrix} +\mathbf v_r. } \]Then
\[ \boxed{ H_r = \begin{bmatrix} I_3&0_3 \end{bmatrix}. } \]A full relative velocity measurement has
\[ \boxed{ H_v = \begin{bmatrix} 0_3&I_3 \end{bmatrix}. } \]4.1.9.63 Bearing-Only Relative Navigation
A camera may observe only LOS direction:
\[ \boxed{ \mathbf z = \frac{\delta\mathbf r} {\|\delta\mathbf r\|} + \mathbf v. } \]This does not directly measure range.
Therefore range becomes observable only through:
- spacecraft dynamics,
- relative motion,
- maneuvers,
- additional sensors.
This is a classic example of measurement observability.
4.1.9.64 Range-Only Navigation
Conversely, a ranging sensor gives
\[ \boxed{ \rho=\|\delta\mathbf r\|+v. } \]It does not independently provide LOS direction.
Multiple measurements over time or additional sensors are required to reconstruct the full relative state.
4.1.9.65 Multi-Sensor RPO Measurement Vector
Suppose GNSS, camera, and LiDAR are simultaneously available.
A stacked measurement vector can be
\[ \boxed{ \mathbf z = \begin{bmatrix} \delta\mathbf r_{GNSS}\\ \alpha_C\\ \beta_C\\ \rho_L \end{bmatrix}. } \]Then
\[ \boxed{ h(\mathbf x) = \begin{bmatrix} h_{GNSS}(\mathbf x)\\ h_{camera}(\mathbf x)\\ h_{LiDAR}(\mathbf x) \end{bmatrix}. } \]The combined Jacobian is
\[ \boxed{ H = \begin{bmatrix} H_{GNSS}\\ H_{camera}\\ H_{LiDAR} \end{bmatrix}. } \]4.1.9.66 Sequential vs Batch Measurement Updates
If multiple sensors arrive at the same epoch, they can be processed simultaneously:
\[ \boxed{ \mathbf z = \begin{bmatrix} \mathbf z_1\\ \mathbf z_2 \end{bmatrix}. } \]Or sequentially:
\[ \boxed{ \text{Update Sensor 1} \rightarrow \text{Update Sensor 2}. } \]For independent measurements and correct linearization, these can be equivalent in the linear case.
Sequential processing is often computationally convenient.
4.1.9.67 Block Measurement Covariance
For stacked measurements,
\[ \boxed{ R = \begin{bmatrix} R_1&R_{12}\\ R_{21}&R_2 \end{bmatrix}. } \]If sensors are independent,
\[ R_{12}=0. \]If they share common error sources, the off-diagonal blocks should not automatically be ignored.
4.1.9.68 Measurement Correlation
Suppose two GNSS receivers share satellite-clock and orbit errors.
Then
\[ \boxed{ E[ \mathbf v_1 \mathbf v_2^T ] \neq0. } \]Similarly, two optical sensors mounted on one thermally deforming panel may share alignment errors.
Naively fusing correlated measurements as independent causes overconfidence.
4.1.9.69 Measurement Preprocessing
The quantity entering the estimator may be different from raw sensor output.
Typical chain:
\[ \boxed{ \text{Raw Sensor Data} \rightarrow \text{Calibration} \rightarrow \text{Frame Transformation} \rightarrow \text{Validity Check} \rightarrow \text{Measurement Model}. } \]For example:
\[ \text{Raw magnetometer counts} \rightarrow \text{tesla/nT} \rightarrow \text{hard/soft-iron correction} \rightarrow \mathbf B^B. \]4.1.9.70 Calibration in Measurement Models
Suppose
\[ \mathbf z_{raw} = A\mathbf z_{true} + \mathbf b + \mathbf n. \]Corrected measurement is
\[ \boxed{ \mathbf z_{cal} = \hat A^{-1} ( \mathbf z_{raw}-\hat{\mathbf b} ). } \]Residual calibration uncertainty should remain represented in \(R\), or the calibration parameters may themselves be estimated.
4.1.9.71 Frame Transformations Before Fusion
Suppose sensor measurement is in sensor frame \(S\):
\[ \mathbf z^S. \]To fuse it in body frame,
\[ \boxed{ \mathbf z^B = C_S^B \mathbf z^S. } \]Its covariance transforms as
\[ \boxed{ R^B = C_S^B R^S (C_S^B)^T. } \]Both measurement and covariance must be transformed consistently.
4.1.9.72 Measurement Timing
The true measurement model is often
\[ \boxed{ \mathbf z_k = h( \mathbf x(t_k) ) + \mathbf v_k. } \]If the sensor has latency,
\[ \boxed{ \mathbf z_k = h( \mathbf x(t_k-\tau) ) + \mathbf v_k. } \]Using
\[ h(\mathbf x(t_k)) \]instead can create systematic innovation.
4.1.9.73 Timestamp Error
If measurement timestamp contains uncertainty
\[ \delta t, \]then
\[ \boxed{ \delta\mathbf z \approx \dot h(\mathbf x)\delta t. } \]For position,
\[ \boxed{ \delta\mathbf r \approx \mathbf v\delta t. } \]For attitude,
\[ \boxed{ \delta\boldsymbol\theta \approx \boldsymbol\omega\delta t. } \]Thus timing uncertainty can be represented as an additional effective measurement error.
4.1.9.74 Asynchronous Measurement Model
Sensors arrive at different epochs:
\[ t_{gyro}, \quad t_{ST}, \quad t_{GNSS}, \quad t_{LiDAR}. \]The filter should therefore follow:
\[ \boxed{ \text{Propagate to Measurement Time} \rightarrow \text{Update} \rightarrow \text{Continue Propagation}. } \]Measurements should not be artificially forced into one common rate unless resampling is explicitly designed.
4.1.9.75 Out-of-Sequence Measurements
Suppose
\[ t_m- discard the old measurement,
- update a stored historical state,
- repropagate after update,
- use delayed-state filtering.
The correct approach depends on accuracy requirements and latency magnitude.
4.1.9.76 Measurement Validity
A complete measurement packet should include
\[ \boxed{ \mathcal Z_i = \{ \mathbf z_i, t_i, R_i, valid_i, quality_i, status_i \}. } \]The estimator should update only if
\[ \boxed{ valid_i=1. } \]4.1.9.77 Measurement Gating
Before fusion, compare innovation with expected uncertainty.
Compute
\[ \boxed{ d^2 = \mathbf y^T S^{-1} \mathbf y. } \]If
\[ \boxed{ d^2>\gamma, } \]the measurement may be rejected.
This is called Mahalanobis or innovation gating.
4.1.9.78 Chi-Square Consistency Test
If assumptions are approximately Gaussian and the innovation has \(m\) dimensions,
\[ \boxed{ d^2 = \mathbf y^T S^{-1}\mathbf y } \]approximately follows a chi-square distribution with \(m\) degrees of freedom under nominal conditions.
Therefore \(\gamma\) can be selected from a desired confidence level.
4.1.9.79 Normalized Innovation Squared
The statistic
\[ \boxed{ NIS = \mathbf y^T S^{-1} \mathbf y } \]is useful for:
- measurement validation,
- filter consistency,
- covariance tuning,
- Monte Carlo verification.
Persistent excessive NIS may indicate underestimated \(R\), incorrect \(Q\), model error, or sensor problems.
4.1.9.80 Innovation Whiteness
In a consistent filter, innovations should approximately behave as zero-mean white sequences.
Ideally,
\[ \boxed{ E[\mathbf y_k]\approx0 } \]and
\[ \boxed{ E[ \mathbf y_k \mathbf y_{k-j}^T ] \approx0 \qquad j\neq0. } \]Strong temporal correlation indicates that the estimator or noise model may be missing important dynamics.
4.1.9.81 Adaptive Measurement Covariance
Instead of constant
\[ R_i, \]use
\[ \boxed{ R_i = R_i( \text{signal quality}, \text{geometry}, \text{environment}, \text{mode} ). } \]Examples:
\[ R_{GNSS}=R(PDOP,C/N_0), \] \[ R_{ST}=R(\omega,\text{star count}), \] \[ R_{Sun}=R(\theta_{incidence}), \] \[ R_{LiDAR}=R(\rho,\text{return quality}). \]4.1.9.82 Missing Measurements
If a measurement is unavailable,
\[ valid=0, \]the filter simply omits that update.
Propagation continues:
\[ \boxed{ \hat{\mathbf x}_{k+1}^- = f(\hat{\mathbf x}_k^+). } \]The covariance generally grows while absolute updates are unavailable.
4.1.9.83 Measurement Dropout
A dropout model can be written
\[ \boxed{ \mathbf z_k = \begin{cases} h(\mathbf x_k)+\mathbf v_k, &\delta_k=1\\ \emptyset, &\delta_k=0. \end{cases} } \]where
\[ \delta_k\in\{0,1\}. \]Dropouts can be deterministic or probabilistic.
4.1.9.84 Measurement Saturation
Suppose sensor output limits are
\[ z_{min},z_{max}. \]Then
\[ \boxed{ z_m = \operatorname{sat} ( h(\mathbf x)+v ). } \]A saturated measurement is not Gaussian around truth and should normally be flagged.
4.1.9.85 Measurement Quantisation
A quantized measurement is
\[ \boxed{ z_q = \Delta \operatorname{round} \left( \frac{z}{\Delta} \right). } \]For sufficiently fine quantization, the effect may be approximated as additional white noise with
\[ \boxed{ \sigma_q^2 \approx \frac{\Delta^2}{12}. } \]For coarse quantization, an explicit quantizer is preferable.
4.1.9.86 Outliers
A simple outlier model is
\[ \boxed{ z_m = h(\mathbf x)+v+o } \]where \(o\) is a large occasional error.
Gaussian Kalman filters are not inherently robust to large outliers.
Therefore gating and FDIR are important.
4.1.9.87 Heavy-Tailed Measurement Noise
Some sensor errors are better represented by heavy-tailed distributions than Gaussian noise.
Examples include:
- optical false detections,
- multipath,
- feature mismatches,
- occasional GNSS faults.
A robust estimator may use:
- Huber loss,
- mixture models,
- covariance inflation,
- outlier rejection.
4.1.9.88 Measurement Bias Estimation
If a sensor bias appears directly,
\[ z = h(\mathbf x)+b+v, \]augment the state:
\[ \boxed{ \mathbf x_a = \begin{bmatrix} \mathbf x\\ b \end{bmatrix}. } \]Then
\[ \boxed{ H_a = \begin{bmatrix} \frac{\partial h}{\partial\mathbf x} & 1 \end{bmatrix}. } \]The bias can only be estimated if it is observable relative to other states and sensors.
4.1.9.89 Scale-Factor Estimation
Suppose
\[ z = (1+s)h(\mathbf x)+v. \]If \(s\) is estimated,
\[ \boxed{ \frac{\partial z}{\partial s} = h(\mathbf x). } \]Thus scale factor may be poorly observable when the physical input remains close to zero.
This illustrates why calibration maneuvers are useful.
4.1.9.90 Alignment Error Estimation
If a sensor frame contains small misalignment
\[ \delta\boldsymbol\alpha, \]then approximately
\[ \boxed{ C_{S,true}^{B} \approx C_{S,nom}^{B} ( I-[\delta\boldsymbol\alpha\times] ). } \]The measurement Jacobian can then include derivatives with respect to alignment-error states.
This is useful in high-accuracy integrated navigation.
4.1.9.91 Measurement Observability
For linear systems, the observability matrix is
\[ \boxed{ \mathcal O = \begin{bmatrix} H\\ HF\\ HF^2\\ \vdots \end{bmatrix}. } \]If
\[ \operatorname{rank}(\mathcal O)=n, \]all \(n\) states are observable.
For nonlinear systems, local observability is more complicated, but the basic idea remains:
\[ \boxed{ \text{A State Can Be Estimated Only If Measurements Contain Information About It}. } \]4.1.9.92 One Vector Cannot Determine Full Attitude
A single known vector measurement satisfies
\[ \mathbf z=C_I^B\mathbf r^I. \]Rotation around that vector leaves the measurement unchanged.
Therefore one vector provides only two independent attitude constraints.
Thus
\[ \boxed{ \text{Sun Sensor Alone} \not\Rightarrow \text{Unique 3-Axis Attitude}. } \]4.1.9.93 Two-Vector Attitude Observability
With two non-collinear vectors
\[ \mathbf r_1^I,\mathbf r_2^I, \]three-axis attitude can be determined.
But as
\[ \boxed{ \|\mathbf r_1^I\times\mathbf r_2^I\| \rightarrow0, } \]the geometry becomes poorly conditioned.
Therefore measurement geometry directly influences observability and covariance.
4.1.9.94 Range and Bearing Observability
Range-only measurement provides radial information.
Bearing-only provides angular information.
Combining them gives much stronger relative-position observability:
\[ \boxed{ \text{Range} + \text{Bearing} \rightarrow \text{3-D Relative Geometry}. } \]This explains the strong complementarity of LiDAR and camera measurements.
4.1.9.95 State-Dependent Measurement Sensitivity
Measurement quality can vary with state.
For example, camera bearing sensitivity depends on range.
A small transverse displacement at short range causes a larger angle change than the same displacement at long range.
Therefore
\[ \boxed{ H=H(\mathbf x). } \]This is one reason nonlinear RPO filters have strongly geometry-dependent performance.
4.1.9.96 Measurement Singularities
Some parameterizations contain singularities.
For example,
\[ \alpha=\tan^{-1}(y/x) \]can become problematic near
\[ x=0. \]Elevation equations may also become ill-conditioned near poles.
Unit-vector or Cartesian residual formulations can avoid some angle-coordinate singularities.
4.1.9.97 Normalization-Induced Correlation
If a measured vector is normalized,
\[ \bar{\mathbf z} = \frac{\mathbf z}{\|\mathbf z\|}, \]its three components are no longer independent because
\[ \boxed{ \|\bar{\mathbf z}\|=1. } \]Therefore normalized-vector covariance lies primarily in the tangent plane perpendicular to the vector.
This matters in high-accuracy vector measurement modelling.
4.1.9.98 Quaternion Measurements Live on a Manifold
Quaternions satisfy
\[ \|q\|=1. \]Therefore treating quaternion error as
\[ q_m-q \]in four-dimensional Euclidean space can be misleading.
Attitude residuals should generally be defined through group composition:
\[ \boxed{ \delta q = q_m\otimes q^{-1}. } \]Then convert to a minimal three-component attitude error.
4.1.9.99 Measurement Models in MEKF
A typical MEKF error state is
\[ \boxed{ \delta\mathbf x = \begin{bmatrix} \delta\boldsymbol\theta\\ \mathbf b_g \end{bmatrix}. } \]Vector sensor measurement:
\[ \boxed{ \mathbf z_i = C_I^B(q)\mathbf r_i^I+\mathbf v_i. } \]Linearized residual:
\[ \boxed{ \mathbf y_i \approx -[\hat{\mathbf z}_i\times] \delta\boldsymbol\theta + \mathbf v_i. } \]Thus
\[ \boxed{ H_i = \begin{bmatrix} -[\hat{\mathbf z}_i\times]&0 \end{bmatrix}. } \]4.1.9.100 Measurement Models in UKF
The UKF does not require explicit Jacobians.
For sigma points
\[ \chi_i, \]evaluate
\[ \boxed{ \mathbf z_i = h(\chi_i). } \]The predicted measurement mean is
\[ \boxed{ \hat{\mathbf z} = \sum_iW_i^{(m)}\mathbf z_i. } \]Measurement covariance is
\[ \boxed{ P_{zz} = \sum_i W_i^{(c)} (\mathbf z_i-\hat{\mathbf z}) (\mathbf z_i-\hat{\mathbf z})^T + R. } \]Cross covariance is
\[ \boxed{ P_{xz} = \sum_i W_i^{(c)} (\chi_i-\hat{\mathbf x}) (\mathbf z_i-\hat{\mathbf z})^T. } \]4.1.9.101 UKF Measurement Update
The gain is
\[ \boxed{ K = P_{xz}P_{zz}^{-1}. } \]Update:
\[ \boxed{ \hat{\mathbf x}^{+} = \hat{\mathbf x}^{-} + K( \mathbf z-\hat{\mathbf z} ). } \]Covariance:
\[ \boxed{ P^+ = P^- - KP_{zz}K^T. } \]For attitude, special care is still required because quaternions do not behave like unconstrained Euclidean states.
4.1.9.102 Measurement Models in Particle Filters
A particle filter represents state distribution using particles
\[ \mathbf x^{(i)}. \]For each measurement,
\[ \boxed{ w_i \propto p( \mathbf z \mid \mathbf x^{(i)} ). } \]For Gaussian measurement noise,
\[ \boxed{ p(\mathbf z|\mathbf x) \propto \exp \left[ -\frac12 (\mathbf z-h(\mathbf x))^T R^{-1} (\mathbf z-h(\mathbf x)) \right]. } \]Thus the measurement model is still central even when no Jacobian is required.
4.1.9.103 Measurement Likelihood
The probability of a measurement given state is
\[ \boxed{ p(\mathbf z|\mathbf x). } \]For Gaussian noise,
\[ \boxed{ p(\mathbf z|\mathbf x) = \frac{ \exp [ -\frac12\mathbf y^TR^{-1}\mathbf y ] }{ \sqrt{ (2\pi)^m|R| } }. } \]This connects Kalman filtering to the broader Bayesian estimation framework.
4.1.9.104 Measurement Information Matrix
For linear Gaussian measurements,
\[ \boxed{ \Lambda_z = H^TR^{-1}H. } \]This matrix quantifies measurement information about the state.
Sensors with good geometry and low uncertainty contribute more information.
This is useful for sensor selection and observability studies.
4.1.9.105 Fisher Information Perspective
Measurement quality can also be studied through Fisher information.
For Gaussian observations,
\[ \boxed{ \mathcal I \approx H^TR^{-1}H. } \]This helps answer:
Which sensor geometry or measurement schedule best constrains the states we care about?
This is important in GNSS satellite geometry, optical navigation, and sensor placement.
4.1.9.106 Dynamic Measurement Covariance
A practical filter may use
\[ \boxed{ R_k = R( \text{sensor condition at }k ). } \]Examples:
GNSS:
\[ \boxed{ R_{GNSS} = R(DOP,C/N_0,N_{sat}). } \]Star tracker:
\[ \boxed{ R_{ST} = R(N_{stars},\omega,\text{blinding margin}). } \]LiDAR:
\[ \boxed{ R_L = R(\rho,\text{return strength}). } \]4.1.9.107 Covariance Inflation
If a sensor becomes degraded but remains usable,
\[ \boxed{ R_{degraded} = \lambda R_{nominal}, \qquad \lambda>1. } \]This reduces its influence without discarding it entirely.
Covariance inflation is useful when quality indicators indicate degraded confidence.
4.1.9.108 Measurement Rejection
When a measurement is clearly invalid,
\[ \boxed{ \text{Reject} \neq \text{Set Huge }R } \]conceptually.
A rejected measurement should normally generate no state update.
The distinction matters for software logic and fault reporting.
4.1.9.109 Measurement Age
Define
\[ \boxed{ t_{age} = t_{current} - t_{measurement}. } \]A measurement may be rejected if
\[ \boxed{ t_{age}>t_{max}. } \]This is particularly important for:
- GNSS,
- star trackers,
- inter-spacecraft data,
- vision processing.
4.1.9.110 Measurement Packet Architecture
A robust software measurement packet might contain
\[ \boxed{ \mathcal M_i = \{ type_i, \mathbf z_i, R_i, t_i, frame_i, valid_i, quality_i, status_i \}. } \]This prevents the estimator from assuming that every sensor has identical timing, frame, dimension, or covariance.
4.1.9.111 Frame Metadata
A measurement should identify its frame.
Examples include:
\[ \boxed{ BODY } \] \[ \boxed{ ECI } \] \[ \boxed{ ECEF } \] \[ \boxed{ LVLH } \] \[ \boxed{ CAMERA } \] \[ \boxed{ SENSOR. } \]A measurement without known frame definition is not mathematically usable.
4.1.9.112 Measurement Units
Likewise, units must be explicit.
Examples:
\[ rad/s \] \[ m/s^2 \] \[ T \] \[ m \] \[ m/s \] \[ rad. \]Measurement covariance must use the corresponding squared units.
For example,
\[ R_\theta \]has units
\[ rad^2. \]4.1.9.113 Converting Datasheet Noise to \(R\)
Suppose sensor noise density is
\[ N_d. \]If effective bandwidth is \(B\),
\[ \boxed{ \sigma \approx N_d\sqrt B } \]under appropriate PSD conventions.
Then
\[ \boxed{ R=\sigma^2. } \]But datasheet noise density, RMS noise, random walk, bias instability, and maximum accuracy are not interchangeable.
4.1.9.114 Measurement Noise vs Process Noise
A critical distinction is:
\[ \boxed{ R = \text{Measurement Uncertainty} } \]whereas
\[ \boxed{ Q = \text{State-Propagation Uncertainty}. } \]For example, gyro white noise used to propagate attitude often contributes to \(Q\).
Star-tracker attitude noise belongs in \(R_{ST}\).
Do not insert all sensor specifications blindly into \(R\).
4.1.9.115 Discrete Measurement Model
Measurements arrive at discrete epochs:
\[ \boxed{ \mathbf z_k = h_k(\mathbf x_k) + \mathbf v_k. } \]with
\[ \boxed{ \mathbf v_k \sim \mathcal N(0,R_k). } \]This equation is separate from the state propagation
\[ \boxed{ \mathbf x_{k+1} = f_k(\mathbf x_k) + \mathbf w_k. } \]4.1.9.116 Continuous Measurement Model
Some theoretical systems are described continuously:
\[ \boxed{ \mathbf y(t) = h(\mathbf x(t)) + \mathbf v(t). } \]Most digital spacecraft estimators ultimately discretize those measurements.
4.1.9.117 Multi-Rate Measurement Model
Different sensors satisfy
\[ \mathbf z_i(k_i) = h_i( \mathbf x(t_{i,k}) ) + \mathbf v_i. \]Therefore each sensor maintains its own time sequence:
\[ \boxed{ \{t_{gyro,k}\}, \quad \{t_{GNSS,k}\}, \quad \{t_{ST,k}\}, \ldots } \]This is the mathematically correct view of asynchronous fusion.
4.1.9.118 Sensor Measurement Simulator
A generic simulator should follow:
Truth State x(t)
|
v
Ideal Measurement h(x)
|
v
Sensor Frame Transformation
|
v
Calibration Errors
|
v
Bias / Drift
|
v
Random Noise
|
v
Bandwidth / Dynamics
|
v
Saturation
|
v
Quantisation
|
v
Sampling
|
v
Latency
|
v
Validity / Dropout
|
v
z, R, timestamp, status
The estimator should only see the measurement interface, not the truth signal.
4.1.9.119 Estimator Measurement Processing Chain
The estimator side should look like
Sensor Packet
|
v
Check Validity
|
v
Check Timestamp
|
v
Convert Units
|
v
Transform Frame
|
v
Select / Compute R
|
v
Predict Measurement h(x^-)
|
v
Innovation y
|
v
Compute H / Sigma Points
|
v
Innovation Covariance S
|
v
Gate Measurement
|
+---- Reject
|
v
Kalman Update
|
v
Updated State + Covariance
4.1.9.120 Simulink Architecture
A reusable Simulink implementation could use:
SPACECRAFT TRUTH
|
+-----------+----------+----------+
| | | |
v v v v
IMU Model GNSS Model ST Model Relative Sensors
| | | |
+-----------+----------+----------+
|
v
Sensor Measurement Bus
|
v
Timestamp / Frame Handling
|
v
Validity / FDIR
|
v
Measurement Router
|
v
EKF / MEKF / UKF
|
v
State + Covariance
4.1.9.121 Recommended Measurement Bus
Each sensor can use a bus containing
\[ \boxed{ \{ ID,\, z,\, R,\, timestamp,\, frame,\, valid,\, quality,\, status \}. } \]This makes the estimator reusable across different sensor types.
4.1.9.122 Example: Gyro + Star-Tracker MEKF
State error:
\[ \boxed{ \delta\mathbf x = \begin{bmatrix} \delta\boldsymbol\theta\\ \mathbf b_g \end{bmatrix}. } \]Gyro propagates quaternion:
\[ \boxed{ \dot{\hat q} = \frac12 \Omega( \omega_m-\hat b_g ) \hat q. } \]Star tracker gives attitude residual:
\[ \boxed{ \mathbf y_{ST} \approx \delta\boldsymbol\theta+\mathbf v_{ST}. } \]Then the MEKF updates both attitude error and gyro bias.
4.1.9.123 Example: IMU + GNSS EKF
State:
\[ \boxed{ \mathbf x = \begin{bmatrix} \mathbf r\\ \mathbf v\\ \delta\boldsymbol\theta\\ \mathbf b_a\\ \mathbf b_g \end{bmatrix}. } \]IMU propagates.
GNSS provides
\[ \boxed{ \mathbf z = \begin{bmatrix} \mathbf r_{GNSS}\\ \mathbf v_{GNSS} \end{bmatrix}. } \]Measurement model:
\[ \boxed{ h(\mathbf x) = \begin{bmatrix} \mathbf r\\ \mathbf v \end{bmatrix}. } \]Thus
\[ \boxed{ H= \begin{bmatrix} I&0&0&0&0\\ 0&I&0&0&0 \end{bmatrix}. } \]Biases are corrected indirectly through state covariance coupling.
4.1.9.124 Example: Sun Sensor + Magnetometer MEKF
Predicted vectors:
\[ \boxed{ \hat{\mathbf s}^B = C_I^B(\hat q)\mathbf s^I } \] \[ \boxed{ \hat{\mathbf B}^B = C_I^B(\hat q)\mathbf B^I. } \]Innovations:
\[ \boxed{ \mathbf y_s = \mathbf s_m^B-\hat{\mathbf s}^B } \] \[ \boxed{ \mathbf y_B = \mathbf B_m^B-\hat{\mathbf B}^B. } \]Stack them:
\[ \boxed{ \mathbf y = \begin{bmatrix} \mathbf y_s\\ \mathbf y_B \end{bmatrix}. } \]Then
\[ \boxed{ H= \begin{bmatrix} -[\hat{\mathbf s}^B\times]&0\\ -[\hat{\mathbf B}^B\times]&0 \end{bmatrix}. } \]4.1.9.125 Example: GNSS + Camera + LiDAR RPO EKF
Relative state:
\[ \boxed{ \mathbf x = \begin{bmatrix} \delta\mathbf r\\ \delta\mathbf v \end{bmatrix}. } \]GNSS:
\[ \boxed{ \mathbf z_G = \delta\mathbf r+\mathbf v_G. } \]Camera:
\[ \boxed{ \mathbf z_C = \begin{bmatrix} \alpha\\ \beta \end{bmatrix} + \mathbf v_C. } \]LiDAR:
\[ \boxed{ z_L = \|\delta\mathbf r\| + v_L. } \]The estimator combines Cartesian, angular, and scalar measurements of the same relative state.
4.1.9.126 Measurement Handover
During RPO,
\[ \boxed{ \text{GNSS} \rightarrow \text{GNSS + Camera} \rightarrow \text{Camera + LiDAR} } \]changes the active measurement vector with range.
The estimator should therefore support a variable measurement dimension.
At one epoch:
\[ \mathbf z_k=\mathbf z_{GNSS}. \]Later:
\[ \mathbf z_k= \begin{bmatrix} \mathbf z_C\\ z_L \end{bmatrix}. \]The state definition need not change simply because available sensors change.
4.1.9.127 Handover Covariance
During overlap, compare measurements using their uncertainties.
For two relative-position solutions,
\[ \mathbf d = \hat{\mathbf r}_1 - \hat{\mathbf r}_2. \]Combined covariance:
\[ \boxed{ P_d = P_1+P_2-P_{12}-P_{21}. } \]Then
\[ \boxed{ d_M^2 = \mathbf d^T P_d^{-1} \mathbf d. } \]This gives a covariance-aware handover consistency test.
4.1.9.128 Capture-Readiness Measurement Logic
For RPO capture,
\[ \|\delta\mathbf r\| \le r_{cap} \] \[ \|\delta\mathbf v\| \le v_{cap} \] \[ \theta_{rel} \le \theta_{cap} \] \[ \|\boldsymbol\omega_{rel}\| \le \omega_{cap}. \]But navigation covariance should also satisfy requirements:
\[ \boxed{ \sigma_r\le\sigma_{r,max} } \] \[ \boxed{ \sigma_v\le\sigma_{v,max}. } \]Then a dwell timer can be applied.
4.1.9.129 Measurement Model Verification
Each measurement model should be independently verified.
For truth state \(\mathbf x_{truth}\), calculate
\[ \boxed{ \mathbf z_{expected} = h(\mathbf x_{truth}). } \]Compare against independently generated ideal measurement.
Tests should include:
- zero-error conditions,
- known rotations,
- known translations,
- axis-aligned geometries,
- edge cases,
- singular geometry,
- invalid-sensor cases.
4.1.9.130 Jacobian Verification
Analytical Jacobians should be checked numerically.
For state component \(x_j\),
\[ \boxed{ \frac{\partial h}{\partial x_j} \approx \frac{ h(\mathbf x+\epsilon\mathbf e_j) - h(\mathbf x-\epsilon\mathbf e_j) }{ 2\epsilon }. } \]Compare this finite-difference result to the analytical \(H\).
This is one of the most important EKF software-verification tests.
4.1.9.131 Innovation Monte Carlo Verification
Under correct models,
\[ \boxed{ \mathbf y_k = \mathbf z_k-h(\hat{\mathbf x}_k^-) } \]should statistically agree with
\[ S_k. \]Across Monte Carlo runs, evaluate:
- mean innovation,
- covariance,
- NIS,
- whiteness,
- rejected-measurement rate.
This helps detect incorrect \(H\), \(R\), timing, or frame conventions.
4.1.9.132 Common Measurement-Model Errors
Frequent implementation mistakes include:
- wrong coordinate frame,
- reversed DCM direction,
- quaternion convention mismatch,
- incorrect quaternion multiplication order,
- incorrect LOS sign,
- ignoring rotating-frame velocity terms,
- treating specific force as acceleration,
- wrong measurement units,
- wrong covariance units,
- ignoring latency,
- assuming all sensors are synchronous,
- incorrect Jacobian signs,
- forgetting covariance rotation,
- using diagonal \(R\) despite strong correlation,
- using sensor noise density directly as per-sample standard deviation,
- not handling invalid measurements.
4.1.9.133 Measurement Model vs Sensor Model
This distinction is important.
A sensor model answers:
\[ \boxed{ \text{What does the physical sensor output?} } \]including bias, scale factor, sampling, saturation, etc.
A measurement model answers:
\[ \boxed{ \text{Given estimator state }\mathbf x, \text{ what measurement should this sensor produce?} } \]Thus:
\[ \boxed{ \text{Sensor Model} \rightarrow \text{Simulation} } \]while
\[ \boxed{ \text{Measurement Model} \rightarrow \text{Estimator}. } \]They must be consistent but are not identical.
4.1.9.134 Truth Model vs Measurement Model
In simulation:
\[ \boxed{ \mathbf z_{sim} = h_{truth}(\mathbf x_{truth}) + \text{sensor errors}. } \]Inside estimator:
\[ \boxed{ \hat{\mathbf z} = h_{est}(\hat{\mathbf x}). } \]If
\[ h_{truth}=h_{est} \]exactly, the simulation may be unrealistically optimistic.
Higher-fidelity validation can deliberately include modelling mismatch.
4.1.9.135 Measurement Model Fidelity Levels
Level 1 — Direct State Measurement
\[ \boxed{ z=x+n. } \]Level 2 — Physical Geometry
\[ \boxed{ z=h(x)+n. } \]Examples: vectors, range, bearing.
Level 3 — Sensor/System Effects
Include:
\[ \boxed{ \text{bias} + \text{alignment} + \text{latency} + \text{validity} + \text{geometry}. } \]Level 4 — Raw Observable
Examples:
- GNSS pseudorange,
- image centroids,
- star centroids,
- LiDAR point clouds.
Higher fidelity allows deeper algorithm verification but increases complexity.
4.1.9.136 Recommended State / Measurement Separation
For a spacecraft estimator, maintain clearly:
State definition
\[ \boxed{ \mathbf x } \]Propagation function
\[ \boxed{ \mathbf x_{k+1} = f(\mathbf x_k,\mathbf u_k) } \]Individual sensor models
\[ \boxed{ \mathbf z_i = h_i(\mathbf x)+\mathbf v_i } \]Measurement Jacobians
\[ \boxed{ H_i = \frac{\partial h_i}{\partial\mathbf x}. } \]This modular architecture makes sensors easier to add or remove.
4.1.9.137 Recommended Software Structure
A practical navigation codebase can have modules such as:
propagate_state() propagate_covariance() predict_gyro_related_state() predict_magnetometer_measurement() predict_sun_measurement() predict_star_tracker_measurement() predict_gnss_position() predict_gnss_velocity() predict_gnss_pseudorange() predict_camera_measurement() predict_lidar_measurement() compute_innovation() compute_jacobian() validate_measurement() kalman_update()
This avoids embedding sensor-specific mathematics directly inside one enormous estimator function.
4.1.9.138 Recommended Simulink Measurement Architecture
ESTIMATED STATE x^-
|
+------------------+------------------+
| | |
v v v
Magnetometer h_B(x) GNSS h_G(x) Camera/LiDAR h_R(x)
| | |
v v v
Predicted B Predicted PVT Predicted Relative
| | |
+---------+--------+------------------+
|
v
Measurement
Innovations
|
v
Jacobians
|
v
Covariance / Gating
|
v
EKF Update
|
v
State x^+
4.1.9.139 Complete Measurement-Model Table
| Sensor | Measurement | Typical \(h(\mathbf x)\) | Main States Observed | ||
|---|---|---|---|---|---|
| Gyro | Angular rate | \(\omega+b_g\) | Angular rate / gyro bias | ||
| Accelerometer | Specific force | \(C_I^B(a-g)+b_a\) | Translation / attitude / accel bias | ||
| Magnetometer | Magnetic vector | \(C_I^B(q)B^I\) | Attitude | ||
| Sun Sensor | Sun vector | \(C_I^B(q)s^I\) | Attitude | ||
| Star Tracker | Quaternion / attitude | \(q\) | Attitude | ||
| GNSS Position | Position | \(r\) | Position | ||
| GNSS Velocity | Velocity | \(v\) | Velocity | ||
| GNSS Pseudorange | Range + clock | `\\ | r_i-r\\ | +b_c` | Position / clock |
| GNSS Doppler | Range rate + clock drift | LOS velocity | Velocity / clock drift | ||
| Camera | Bearing / pixels | Perspective projection | Relative position / pose | ||
| LiDAR | Range / 3-D points | Relative geometry | Relative position / pose | ||
| Radar/RF | Range/range rate | Relative geometry | Relative position / velocity |
4.1.9.140 Complete Estimator Measurement Equation
A general spacecraft sensor measurement can be represented as
\[ \boxed{ \mathbf z_{i,k} = h_i \left[ \mathbf x(t_{i,k}-\tau_i), \mathbf p_i \right] + \mathbf b_i + \mathbf v_{i,k} } \]subject to
\[ \boxed{ valid_{i,k}=1. } \]Here,
- \(\mathbf p_i\) contains calibration or geometric parameters,
- \(\tau_i\) is sensor latency,
- \(\mathbf b_i\) represents residual bias,
- \(\mathbf v_i\) represents random uncertainty.
Predicted measurement is
\[ \boxed{ \hat{\mathbf z}_{i,k} = h_i( \hat{\mathbf x}_k^-, \hat{\mathbf p}_i ). } \]Innovation is
\[ \boxed{ \mathbf y_{i,k} = \mathbf z_{i,k} - \hat{\mathbf z}_{i,k}. } \]Jacobian is
\[ \boxed{ H_{i,k} = \left. \frac{\partial h_i} {\partial\mathbf x} \right|_{\hat{\mathbf x}_k^-}. } \]Innovation covariance is
\[ \boxed{ S_{i,k} = H_{i,k} P_k^- H_{i,k}^T + R_{i,k}. } \]Kalman gain is
\[ \boxed{ K_{i,k} = P_k^-H_{i,k}^T S_{i,k}^{-1}. } \]State update is
\[ \boxed{ \hat{\mathbf x}_k^+ = \hat{\mathbf x}_k^- + K_{i,k}\mathbf y_{i,k}. } \]4.1.9.141 Complete Measurement-to-Estimator Chain
True Physical State
|
v
Sensor Physics
|
v
Raw Sensor Measurement
|
v
Calibration
|
v
Frame Transformation
|
v
Timestamp / Latency Handling
|
v
Validity + Quality
|
v
Measurement z
|
+----------------------------+
| |
| Estimated State x^-
| |
| v
| Measurement Model h(x^-)
| |
| v
+--------------------> Predicted Measurement
|
v
Innovation y
|
v
Jacobian H
|
v
Innovation Covariance S
|
v
Measurement Gate
/ \
Reject Accept
|
v
Kalman Gain
|
v
State Update
|
v
Updated State x^+
|
v
Updated Covariance P^+
4.1.9.142 Measurement Model Development Procedure
For every new spacecraft sensor, use the same sequence:
- Define exactly what the sensor physically measures.
- Define the sensor output frame.
- Define measurement units.
- Define the estimator state.
- Derive the ideal measurement function
- Add relevant calibration parameters.
- Define measurement covariance
- Derive the measurement Jacobian
- Define timestamp and latency treatment.
- Define validity conditions.
- Define quality-dependent covariance.
- Define innovation residual.
- Define gating thresholds.
- Verify the equation numerically.
- Verify Jacobian by finite differences.
- Run Monte Carlo consistency tests.
This procedure should be followed for every sensor added to the estimator.
4.1.9.143 Final Engineering Perspective
The central idea of this chapter is
\[ \boxed{ \text{A Sensor Measurement Becomes Useful to an Estimator Only After We Can Predict It From the State}. } \]That prediction is
\[ \boxed{ \hat{\mathbf z} = h(\hat{\mathbf x}). } \]The difference between reality and prediction is
\[ \boxed{ \mathbf y = \mathbf z-h(\hat{\mathbf x}). } \]And the estimator uses this innovation, together with the uncertainty
\[ \boxed{ R } \]and the measurement sensitivity
\[ \boxed{ H } \]to correct the spacecraft state.
Therefore the complete logic is
\[ \boxed{ \text{Physical Sensor} \rightarrow \mathbf z } \] \[ \boxed{ \text{Estimated State} \rightarrow h(\hat{\mathbf x}) } \] \[ \boxed{ \mathbf z-h(\hat{\mathbf x}) \rightarrow \text{Innovation} } \] \[ \boxed{ H+P+R \rightarrow K } \] \[ \boxed{ K+\text{Innovation} \rightarrow \text{Updated Navigation State}. } \]For attitude sensors:
\[ \boxed{ \text{Gyro} + \text{Sun/Magnetic/Star Measurements} \rightarrow \text{MEKF Attitude + Bias Estimation}. } \]For translational navigation:
\[ \boxed{ \text{IMU} + \text{GNSS} \rightarrow \text{Position / Velocity / Bias Estimation}. } \]For RPO:
\[ \boxed{ \text{GNSS / DGNSS} + \text{Camera} + \text{LiDAR} \rightarrow \text{Relative Position / Velocity / Pose Estimation}. } \]So 4.1.9 Measurement Models should become the mathematical core of the entire Sensor Models chapter: 4.1.1–4.1.6 explain what each sensor is and how it behaves; 4.1.7 explains the errors; 4.1.8 explains how sensors are combined; and 4.1.9 explains exactly how every one of those measurements enters KF/EKF/MEKF/UKF estimation.
For this level, no hardware manual is required. Manuals become important later when we populate actual numerical \(R\), bias, update rate, latency, output coordinate frame, packet format, validity/status flags, and sensor-specific interface details.