Measurement Models

Mathematical measurement equations for spacecraft sensors and navigation filters: linear and nonlinear models, Jacobians, covariance, innovation, KF/EKF/MEKF/UKF updates, gyroscope and accelerometer propagation, vector sensors, star trackers, GNSS observables, camera/LiDAR RPO models, timing, gating, observability, verification, and estimator implementation.

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:

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,

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

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:

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:

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 Possible solutions include:

  • 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:

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:

A robust estimator may use:

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:

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:

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:

This helps detect incorrect \(H\), \(R\), timing, or frame conventions.

4.1.9.132 Common Measurement-Model Errors

Frequent implementation mistakes include:

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:

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,

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:

  1. Define exactly what the sensor physically measures.
  2. Define the sensor output frame.
  3. Define measurement units.
  4. Define the estimator state.
  5. Derive the ideal measurement function
\[ h(\mathbf x). \]
  1. Add relevant calibration parameters.
  2. Define measurement covariance
\[ R. \]
  1. Derive the measurement Jacobian
\[ H. \]
  1. Define timestamp and latency treatment.
  2. Define validity conditions.
  3. Define quality-dependent covariance.
  4. Define innovation residual.
  5. Define gating thresholds.
  6. Verify the equation numerically.
  7. Verify Jacobian by finite differences.
  8. 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.