Error-State Kalman Filter (ESKF)

Nominal-state propagation, error-state definition, inertial sensor error states, covariance propagation, measurement correction, error injection, reset operations, IMU bias estimation, multi-sensor fusion, RPO navigation, consistency testing, and practical ESKF implementation.

4.2.8 Error-State Kalman Filter (ESKF)

The Error-State Kalman Filter (ESKF) is a practical formulation of the Extended Kalman Filter that is especially useful when the physical system contains states that evolve naturally through nonlinear dynamics, while the estimation errors remain relatively small.

This situation appears constantly in spacecraft navigation.

A spacecraft may have a nominal state containing

\[ \mathbf r,\qquad \mathbf v,\qquad \mathbf q,\qquad \mathbf b_g,\qquad \mathbf b_a \]

representing position, velocity, attitude, gyroscope bias, and accelerometer bias.

The spacecraft itself must be propagated using the full nonlinear equations of motion. However, the difference between the true state and the current estimated state is often much smaller than the state itself.

The ESKF exploits this fact.

Instead of asking the Kalman filter to estimate the complete nonlinear state directly, we separate the navigation solution into

\[ \boxed{ \text{Nominal State} + \text{Small Error State} } \]

and write conceptually

\[ \boxed{ \mathbf x_{\text{true}} = \mathbf x_{\text{nominal}} \oplus \delta\mathbf x } \]

where

For ordinary Euclidean quantities such as position or velocity, \oplus may simply mean addition.

For attitude, however, the operation must respect rotation geometry and is normally performed using a small rotation or quaternion multiplication.

The fundamental ESKF philosophy is therefore

\[ \boxed{ \text{Propagate the Physical State Nonlinearly} \rightarrow \text{Estimate Only Small Errors with the Kalman Filter} } \]

After a measurement update, the estimated error is injected into the nominal state, and the error-state estimate is then reset close to zero.

That injection-and-reset operation is one of the defining features of the ESKF.

4.2.8.1 Why the Error-State Kalman Filter Is Needed

A conventional EKF may estimate the full physical state directly.

For example,

\[ \mathbf x= \begin{bmatrix} \mathbf r\\ \mathbf v\\ \mathbf q\\ \mathbf b_g\\ \mathbf b_a \end{bmatrix}. \]

The nonlinear state is propagated according to

\[ \boxed{ \mathbf x_k = f(\mathbf x_{k-1},\mathbf u_{k-1}) + \mathbf w_{k-1} } \]

and the EKF linearizes the dynamics and measurement equations around the current state estimate.

This works well for many problems.

However, certain spacecraft states are awkward to treat as ordinary additive Euclidean states.

Attitude is the clearest example.

A quaternion must satisfy

\[ \boxed{ \|\mathbf q\|=1 } \]

and two quaternions

\[ \mathbf q \]

and

\[ -\mathbf q \]

represent the same physical orientation.

Simply applying a correction of the form

\[ \mathbf q^+ = \mathbf q^- + \Delta\mathbf q \]

does not naturally respect quaternion geometry.

The ESKF avoids this problem by keeping the quaternion in the nominal state while the Kalman filter estimates only a small three-dimensional attitude error

\[ \boxed{ \delta\boldsymbol\theta } \]

rather than four quaternion components.

This gives

\[ \boxed{ \text{Nominal Quaternion} + \text{Small 3-D Attitude Error} } \]

instead of

\[ \boxed{ \text{Direct Additive Correction of Four Quaternion Elements} }. \]

The same philosophy is valuable for inertial navigation because the full position and velocity may be very large, while their estimation errors remain relatively small.

4.2.8.2 Core ESKF Idea

The ESKF maintains two related states.

The first is the nominal state

\[ \boxed{ \hat{\mathbf x} } \]

which represents the current best physical navigation solution.

The second is the error state

\[ \boxed{ \delta\mathbf x } \]

which describes the difference between the true state and the nominal state.

Conceptually,

\[ \boxed{ \mathbf x_{\text{true}} = \hat{\mathbf x} \oplus \delta\mathbf x }. \]

The nominal state is propagated continuously using sensor measurements and nonlinear system dynamics.

The error state is normally maintained near zero:

\[ \boxed{ E[\delta\mathbf x] \approx \mathbf 0 } \]

while its uncertainty is represented by the covariance

\[ \boxed{ \mathbf P = E[ \delta\mathbf x \delta\mathbf x^T ] }. \]

Thus the ESKF often has the unusual but important property that the Kalman filter's mean error state is approximately zero during propagation, while the covariance carries information about how uncertain that zero-error assumption is.

4.2.8.3 Nominal State and Error State Are Not the Same Thing

This distinction must be clear.

Suppose the nominal position estimate is

\[ \hat{\mathbf r} = \begin{bmatrix} 7000\\ 100\\ 20 \end{bmatrix} \text{ km}. \]

The filter does not need to estimate another state containing the full 7000-km position.

Instead, it may estimate an error such as

\[ \delta\mathbf r = \begin{bmatrix} 2\\ -1\\ 0.5 \end{bmatrix} \text{ m}. \]

Then

\[ \boxed{ \mathbf r_{\text{true}} \approx \hat{\mathbf r} + \delta\mathbf r }. \]

This has an important numerical interpretation:

\[ \boxed{ \text{Large Physical State} \quad\text{but}\quad \text{Small Estimation Error} } \]

which is often easier to linearize accurately.

4.2.8.4 Typical Spacecraft / Inertial-Navigation ESKF State

A common navigation nominal state is

\[ \boxed{ \mathbf x = \begin{bmatrix} \mathbf r\\ \mathbf v\\ \mathbf q\\ \mathbf b_g\\ \mathbf b_a \end{bmatrix} } \]

where

The corresponding error state may be

\[ \boxed{ \delta\mathbf x = \begin{bmatrix} \delta\mathbf r\\ \delta\mathbf v\\ \delta\boldsymbol\theta\\ \delta\mathbf b_g\\ \delta\mathbf b_a \end{bmatrix} } \]

which contains

\[ 3+3+3+3+3=15 \]

states.

Thus a very common configuration is called a 15-state ESKF.

Notice the difference:

the nominal attitude uses a four-element quaternion,

\[ \mathbf q\in\mathbb R^4, \]

while the attitude error uses only three components,

\[ \delta\boldsymbol\theta\in\mathbb R^3. \]

This is one of the central advantages of the error-state formulation.

4.2.8.5 Nominal-State Propagation

The nominal state is propagated using the actual nonlinear equations.

For position,

\[ \boxed{ \dot{\hat{\mathbf r}} = \hat{\mathbf v} } \]

and for velocity,

\[ \boxed{ \dot{\hat{\mathbf v}} = \mathbf a_{\text{model}} } \]

where \mathbf a_{\text{model}} may contain gravitational acceleration, inertial measurements, control accelerations, or other forces depending on the application.

For attitude,

\[ \boxed{ \dot{\hat{\mathbf q}} = \frac12 \Omega( \hat{\boldsymbol\omega} ) \hat{\mathbf q} } \]

with bias-corrected angular rate

\[ \boxed{ \hat{\boldsymbol\omega} = \boldsymbol\omega_m - \hat{\mathbf b}_g }. \]

Bias states may be propagated as constants,

\[ \dot{\hat{\mathbf b}}_g = \mathbf 0 \]

or using appropriate stochastic models.

Therefore,

\[ \boxed{ \text{Nominal State} \rightarrow \text{Full Nonlinear Propagation} } \]

while the Kalman equations are applied to the local error dynamics.

4.2.8.6 IMU Measurement Models

For an IMU, the gyroscope measurement may be written

\[ \boxed{ \boldsymbol\omega_m = \boldsymbol\omega + \mathbf b_g + \mathbf n_g } \]

where

Similarly, an accelerometer measures specific force:

\[ \boxed{ \mathbf f_m = \mathbf f + \mathbf b_a + \mathbf n_a }. \]

Therefore the nominal estimator uses

\[ \boxed{ \hat{\boldsymbol\omega} = \boldsymbol\omega_m - \hat{\mathbf b}_g } \]

and

\[ \boxed{ \hat{\mathbf f} = \mathbf f_m - \hat{\mathbf b}_a }. \]

Any remaining bias error appears in

\[ \delta\mathbf b_g \]

and

\[ \delta\mathbf b_a. \]

4.2.8.7 Why Bias States Matter

Gyroscope bias produces attitude drift.

Accelerometer bias produces velocity drift and eventually position drift.

For a roughly constant gyro bias,

\[ \delta\boldsymbol\theta \propto \mathbf b_g t. \]

For accelerometer bias,

\[ \delta\mathbf v \propto \mathbf b_a t \]

and

\[ \delta\mathbf r \propto \frac12 \mathbf b_a t^2. \]

Thus even small sensor biases can eventually dominate inertial-navigation error.

The ESKF therefore often includes

\[ \boxed{ \delta\mathbf b_g,\qquad \delta\mathbf b_a } \]

as explicit filter states.

4.2.8.8 Error-State Definition

The error state describes how the nominal state differs from truth.

For position,

\[ \boxed{ \mathbf r_{\text{true}} = \hat{\mathbf r} + \delta\mathbf r } \]

and velocity,

\[ \boxed{ \mathbf v_{\text{true}} = \hat{\mathbf v} + \delta\mathbf v }. \]

For biases,

\[ \boxed{ \mathbf b_{g,\text{true}} = \hat{\mathbf b}_g + \delta\mathbf b_g } \]

and

\[ \boxed{ \mathbf b_{a,\text{true}} = \hat{\mathbf b}_a + \delta\mathbf b_a. } \]

Attitude requires a multiplicative relationship rather than ordinary addition.

One possible convention is

\[ \boxed{ \mathbf q_{\text{true}} = \delta\mathbf q \otimes \hat{\mathbf q} } \]

while another convention may use

\[ \mathbf q_{\text{true}} = \hat{\mathbf q} \otimes \delta\mathbf q. \]

Both can be valid.

The important rule is:

\[ \boxed{ \text{Choose One Convention and Use It Everywhere} }. \]

The sign of several Jacobian terms depends on this choice.

4.2.8.9 Small-Angle Attitude Error

For small orientation error,

\[ \|\delta\boldsymbol\theta\| \ll1, \]

the error quaternion may be approximated as

\[ \boxed{ \delta\mathbf q \approx \begin{bmatrix} 1\\ \frac12\delta\boldsymbol\theta \end{bmatrix} } \]

for a scalar-first quaternion convention.

Thus the filter estimates only

\[ \boxed{ \delta\boldsymbol\theta = \begin{bmatrix} \delta\theta_x\\ \delta\theta_y\\ \delta\theta_z \end{bmatrix} }. \]

This is much easier to handle in a Gaussian Kalman-filter covariance than a constrained four-component quaternion.

4.2.8.10 Error-State Dynamics

The core mathematical model of the ESKF is

\[ \boxed{ \delta\dot{\mathbf x} = \mathbf F \delta\mathbf x + \mathbf G \mathbf w } \]

where

The key difference from full-state propagation is that \mathbf F describes

\[ \boxed{ \text{How Small Estimation Errors Evolve} } \]

not directly how the complete physical state evolves.

4.2.8.11 Example 15-State Error Dynamics

A common error state is

\[ \delta\mathbf x = \begin{bmatrix} \delta\mathbf r\\ \delta\mathbf v\\ \delta\boldsymbol\theta\\ \delta\mathbf b_g\\ \delta\mathbf b_a \end{bmatrix}. \]

A simplified structure is

\[ \delta\dot{\mathbf r} = \delta\mathbf v, \]

\[ \delta\dot{\mathbf v} = \mathbf F_{vr}\delta\mathbf r + \mathbf F_{v\theta} \delta\boldsymbol\theta + \mathbf F_{vb_a} \delta\mathbf b_a + \text{noise}, \]

\[ \delta\dot{\boldsymbol\theta} = \mathbf F_{\theta\theta} \delta\boldsymbol\theta + \mathbf F_{\theta b_g} \delta\mathbf b_g + \text{noise}, \]

\[ \delta\dot{\mathbf b}_g = \mathbf w_{bg}, \]

\[ \delta\dot{\mathbf b}_a = \mathbf w_{ba}. \]

These equations show how an IMU error can propagate through the complete navigation solution.

For example,

\[ \boxed{ \text{Accelerometer Bias Error} \rightarrow \text{Velocity Error} \rightarrow \text{Position Error} } \]

and

\[ \boxed{ \text{Gyro Bias Error} \rightarrow \text{Attitude Error} \rightarrow \text{Wrong Acceleration Direction} \rightarrow \text{Velocity/Position Error} }. \]

This coupling is one reason attitude accuracy is crucial for inertial navigation.

4.2.8.12 Skew-Symmetric Matrix

Cross products appear frequently in ESKF derivations.

For a vector

\[ \mathbf a= \begin{bmatrix} a_x\\ a_y\\ a_z \end{bmatrix}, \]

define

\[ \boxed{ [\mathbf a]_\times = \begin{bmatrix} 0 & -a_z & a_y\\ a_z & 0 & -a_x\\ -a_y & a_x & 0 \end{bmatrix} } \]

such that

\[ \boxed{ [\mathbf a]_\times\mathbf b = \mathbf a\times\mathbf b }. \]

Terms such as

\[ -[\boldsymbol\omega]_\times \]

and

\[ -[\mathbf f]_\times \]

often appear in ESKF attitude and velocity error dynamics.

Their exact signs depend on frame and attitude-error convention.

4.2.8.13 Continuous Error-State Matrix

The continuous error dynamics may be written

\[ \boxed{ \delta\dot{\mathbf x} = \mathbf F_c \delta\mathbf x + \mathbf G_c \mathbf w_c }. \]

For a 15-state inertial filter, \mathbf F_c has a block structure approximately of the form

\[ \mathbf F_c = \begin{bmatrix} 0 & I & 0 & 0 & 0\\ F_{vr} & F_{vv} & F_{v\theta} & 0 & F_{vb_a}\\ 0 & 0 & F_{\theta\theta} & F_{\theta b_g} & 0\\ 0 & 0 & 0 & F_{bg} & 0\\ 0 & 0 & 0 & 0 & F_{ba} \end{bmatrix}. \]

The exact matrix depends on

The important conceptual point is

\[ \boxed{ \mathbf F_c = \text{Local Dynamics of Estimation Error} }. \]

4.2.8.14 Error Covariance

The ESKF covariance describes uncertainty in the error state:

\[ \boxed{ \mathbf P = E[ \delta\mathbf x \delta\mathbf x^T ] }. \]

For the 15-state example,

\[ \mathbf P \in \mathbb R^{15\times15}. \]

It contains not only variances such as

\[ \sigma_r^2,\quad \sigma_v^2,\quad \sigma_\theta^2,\quad \sigma_{b_g}^2,\quad \sigma_{b_a}^2 \]

but also correlations such as

\[ \operatorname{cov}( \delta\mathbf r, \delta\mathbf v ) \]

or

\[ \operatorname{cov}( \delta\boldsymbol\theta, \delta\mathbf b_g ). \]

Those cross-correlations are essential because a measurement of one quantity can indirectly correct another state.

4.2.8.15 Covariance Propagation

For continuous dynamics,

\[ \boxed{ \dot{\mathbf P} = \mathbf F_c\mathbf P + \mathbf P\mathbf F_c^T + \mathbf G_c \mathbf Q_c \mathbf G_c^T }. \]

For discrete propagation,

\[ \boxed{ \mathbf P_{k+1}^{-} = \mathbf\Phi_k \mathbf P_k^{+} \mathbf\Phi_k^T + \mathbf Q_{d,k} } \]

where

\[ \boxed{ \mathbf\Phi_k = e^{\mathbf F_c\Delta t} } \]

is the discrete error-state transition matrix.

For sufficiently small \Delta t,

\[ \mathbf\Phi \approx \mathbf I + \mathbf F_c\Delta t \]

may be used as a first-order approximation.

4.2.8.16 Continuous-to-Discrete Process Noise

The discrete covariance should not always be created by simply multiplying a continuous covariance by \Delta t.

In general,

\[ \boxed{ \mathbf Q_d = \int_0^{\Delta t} \mathbf\Phi(\tau) \mathbf G \mathbf Q_c \mathbf G^T \mathbf\Phi(\tau)^T \,d\tau }. \]

This matters because process noise passes through the error dynamics before appearing in the state covariance.

For high-rate IMU systems, an approximate discretization may be acceptable.

For demanding navigation applications, more accurate discretization may be required.

4.2.8.17 Nominal State vs Covariance Propagation

The complete prediction stage therefore contains two parallel processes.

### Nominal propagation

\[ \boxed{ \hat{\mathbf x}_{k+1}^{-} = f( \hat{\mathbf x}_k^{+}, \mathbf u_k ) } \]

### Error covariance propagation

\[ \boxed{ \mathbf P_{k+1}^{-} = \mathbf\Phi_k \mathbf P_k^{+} \mathbf\Phi_k^T + \mathbf Q_{d,k} }. \]

Conceptually,

\[ \boxed{ \text{Nominal State} \rightarrow \text{Nonlinear Dynamics} } \]

while

\[ \boxed{ \text{State Uncertainty} \rightarrow \text{Linearized Error Dynamics} }. \]

This is the same core principle introduced in the EKF, but the ESKF makes the separation much more explicit.

4.2.8.18 Measurement Model

Suppose a sensor provides

\[ \boxed{ \mathbf z_k = h( \mathbf x_{\text{true},k} ) + \mathbf v_k. } \]

The estimator predicts the measurement from the nominal state:

\[ \boxed{ \hat{\mathbf z}_k = h( \hat{\mathbf x}_k^{-} ) }. \]

Then define the innovation

\[ \boxed{ \mathbf y_k = \mathbf z_k - \hat{\mathbf z}_k. } \]

The measurement is linearized with respect to the error state, giving approximately

\[ \boxed{ \mathbf y_k \approx \mathbf H_k \delta\mathbf x_k + \mathbf v_k. } \]

Here,

\[ \boxed{ \mathbf H_k = \frac{\partial h} {\partial\delta\mathbf x} } \]

is the error-state measurement Jacobian.

4.2.8.19 Why the Measurement Jacobian Is Different Conceptually

In a full-state EKF, one often writes

\[ \mathbf H = \frac{\partial h} {\partial\mathbf x}. \]

In an ESKF, the measurement update asks:

If the nominal state contains a small error \delta\mathbf x, how does that error change the predicted sensor measurement?

Thus

\[ \boxed{ \mathbf H = \text{Sensitivity of Measurement Residual to Error State} }. \]

This distinction becomes especially important for attitude.

4.2.8.20 Innovation Covariance

The innovation covariance is

\[ \boxed{ \mathbf S_k = \mathbf H_k \mathbf P_k^{-} \mathbf H_k^T + \mathbf R_k. } \]

It represents the expected uncertainty in the measurement residual.

Physically,

\[ \boxed{ \mathbf S = \text{Predicted Measurement Uncertainty} + \text{Sensor Measurement Uncertainty}. } \]

4.2.8.21 Kalman Gain

The ESKF Kalman gain is

\[ \boxed{ \mathbf K_k = \mathbf P_k^{-} \mathbf H_k^T \mathbf S_k^{-1}. } \]

This has the same uncertainty-weighting interpretation as in the KF and EKF.

If the nominal estimate is uncertain while the sensor is accurate,

\[ \mathbf K \]

becomes larger.

If the sensor is highly uncertain,

\[ \mathbf K \]

becomes smaller.

4.2.8.22 Error-State Measurement Update

The Kalman correction estimates the error:

\[ \boxed{ \delta\hat{\mathbf x}_k = \mathbf K_k \mathbf y_k. } \]

This is the defining difference from a conventional full-state EKF update.

The Kalman filter does not directly replace the nominal navigation state.

Instead it estimates

\[ \boxed{ \text{How Wrong the Nominal State Is} }. \]

4.2.8.23 Error Injection

The estimated error must now be injected into the nominal state.

For position,

\[ \boxed{ \hat{\mathbf r}^{+} = \hat{\mathbf r}^{-} + \delta\hat{\mathbf r}. } \]

For velocity,

\[ \boxed{ \hat{\mathbf v}^{+} = \hat{\mathbf v}^{-} + \delta\hat{\mathbf v}. } \]

For biases,

\[ \boxed{ \hat{\mathbf b}_g^{+} = \hat{\mathbf b}_g^{-} + \delta\hat{\mathbf b}_g } \]

and

\[ \boxed{ \hat{\mathbf b}_a^{+} = \hat{\mathbf b}_a^{-} + \delta\hat{\mathbf b}_a. } \]

Attitude requires multiplicative injection.

4.2.8.24 Attitude Error Injection

Construct a correction quaternion from

\[ \delta\hat{\boldsymbol\theta}. \]

For small errors,

\[ \delta\hat{\mathbf q} \approx \begin{bmatrix} 1\\ \frac12 \delta\hat{\boldsymbol\theta} \end{bmatrix}. \]

Then, depending on the selected convention,

\[ \boxed{ \hat{\mathbf q}^{+} = \delta\hat{\mathbf q} \otimes \hat{\mathbf q}^{-} } \]

or

\[ \boxed{ \hat{\mathbf q}^{+} = \hat{\mathbf q}^{-} \otimes \delta\hat{\mathbf q}. } \]

The updated quaternion should be normalized:

\[ \boxed{ \hat{\mathbf q}^{+} \leftarrow \frac{ \hat{\mathbf q}^{+} }{ \|\hat{\mathbf q}^{+}\| }. } \]

Again, quaternion convention must remain consistent throughout propagation, Jacobians, measurement models, and injection.

4.2.8.25 Why Injection Is Important

Suppose the ESKF determines

\[ \delta\hat{\mathbf r} = \begin{bmatrix} 0.2\\ -0.1\\ 0.05 \end{bmatrix} \text{ m}. \]

The nominal position is corrected.

After that correction, retaining the same error state would mean counting the correction twice.

Therefore,

\[ \boxed{ \text{Estimate Error} \rightarrow \text{Inject Error} \rightarrow \text{Reset Error State}. } \]

4.2.8.26 Error-State Reset

After injection,

\[ \boxed{ \delta\hat{\mathbf x} \leftarrow \mathbf 0. } \]

This does not mean uncertainty suddenly becomes zero.

The state correction has been transferred into the nominal state, but uncertainty remains.

Therefore the covariance must be retained and, for some state definitions, transformed consistently with the reset.

4.2.8.27 Covariance Reset

A simplified reset is sometimes written

\[ \mathbf P \leftarrow \mathbf P^{+}. \]

But in a rigorous ESKF, resetting the attitude error changes the local coordinates in which the error state is expressed.

Therefore a reset Jacobian

\[ \boxed{ \mathbf G_{\text{reset}} } \]

may be required:

\[ \boxed{ \mathbf P \leftarrow \mathbf G_{\text{reset}} \mathbf P^{+} \mathbf G_{\text{reset}}^T. } \]

For very small corrections the difference may be small, but for high-quality attitude estimation the reset transformation should be handled correctly.

4.2.8.28 Complete ESKF Measurement-Correction Cycle

The complete correction process is

\[ \boxed{\text{Sensor Measurement}} \]

\[ \downarrow \]

\[ \boxed{\text{Predicted Measurement from Nominal State}} \]

\[ \downarrow \]

\[ \boxed{\text{Innovation}} \]

\[ \downarrow \]

\[ \boxed{\text{Kalman Gain}} \]

\[ \downarrow \]

\[ \boxed{\text{Estimate Error State}} \]

\[ \downarrow \]

\[ \boxed{\text{Inject Error into Nominal State}} \]

\[ \downarrow \]

\[ \boxed{\text{Reset Error State}} \]

\[ \downarrow \]

\[ \boxed{\text{Transform / Continue Covariance}}. \]

This injection-and-reset process is the fundamental ESKF loop.

4.2.8.29 Posterior Covariance

Before reset, the covariance update may use

\[ \boxed{ \mathbf P^{+} = (\mathbf I-\mathbf K\mathbf H) \mathbf P^{-} } \]

or preferably the Joseph form,

\[ \boxed{ \mathbf P^{+} = (\mathbf I-\mathbf K\mathbf H) \mathbf P^{-} (\mathbf I-\mathbf K\mathbf H)^T + \mathbf K\mathbf R\mathbf K^T. } \]

The Joseph form has useful numerical properties and helps preserve symmetry and positive semidefiniteness.

4.2.8.30 Complete ESKF Algorithm

A practical ESKF cycle can be summarized as follows.

4.2.8.30.1 Nominal-State Propagation

\[ \boxed{ \hat{\mathbf x}_{k}^{-} = f( \hat{\mathbf x}_{k-1}^{+}, \mathbf u_{k-1} ) } \]

4.2.8.30.2 Error-Dynamics Linearisation

\[ \boxed{ \delta\dot{\mathbf x} = \mathbf F \delta\mathbf x + \mathbf G\mathbf w } \]

4.2.8.30.3 Discretize Error Dynamics

\[ \boxed{ \mathbf\Phi = e^{\mathbf F\Delta t} } \]

4.2.8.30.4 Covariance Prediction

\[ \boxed{ \mathbf P^{-} = \mathbf\Phi \mathbf P^{+} \mathbf\Phi^T + \mathbf Q_d } \]

4.2.8.30.5 Predict Measurement

\[ \boxed{ \hat{\mathbf z} = h( \hat{\mathbf x}^{-} ) } \]

4.2.8.30.6 Compute Innovation

\[ \boxed{ \mathbf y = \mathbf z - \hat{\mathbf z} } \]

4.2.8.30.7 Compute Error-State Measurement Jacobian

\[ \boxed{ \mathbf H = \frac{\partial h} {\partial\delta\mathbf x} } \]

4.2.8.30.8 Innovation Covariance

\[ \boxed{ \mathbf S = \mathbf H \mathbf P^{-} \mathbf H^T + \mathbf R } \]

4.2.8.30.9 Kalman Gain

\[ \boxed{ \mathbf K = \mathbf P^{-} \mathbf H^T \mathbf S^{-1} } \]

4.2.8.30.10 Estimate the Error

\[ \boxed{ \delta\hat{\mathbf x} = \mathbf K\mathbf y } \]

4.2.8.30.11 Update Covariance

\[ \boxed{ \mathbf P^{+} = (\mathbf I-\mathbf K\mathbf H) \mathbf P^{-} } \]

or use the Joseph form.

4.2.8.30.12 Inject Error

\[ \boxed{ \hat{\mathbf x}^{+} = \hat{\mathbf x}^{-} \oplus \delta\hat{\mathbf x} } \]

4.2.8.30.13 Reset Error State

\[ \boxed{ \delta\hat{\mathbf x} \leftarrow 0 } \]

4.2.8.30.14 Reset Covariance Coordinates

\[ \boxed{ \mathbf P \leftarrow \mathbf G_{\text{reset}} \mathbf P \mathbf G_{\text{reset}}^T. } \]

4.2.8.31 Why the Error State Remains Small

After every measurement update,

\[ \delta\hat{\mathbf x} \]

is injected into the nominal state.

Therefore the estimator repeatedly moves the nominal state toward its best estimate.

The error coordinates are then re-centered around zero.

Thus,

\[ \boxed{ \text{Small Error} \rightarrow \text{Better Linearisation} } \]

which is one major practical advantage over directly linearizing around a potentially large full-state correction.

4.2.8.32 ESKF vs Standard EKF

The distinction can be summarized as follows.

Feature Standard EKF ESKF
Main state Full estimated state Nominal physical state
Kalman state Full-state correction Small error state
Nonlinear propagation Full state Nominal state
Covariance Full-state local uncertainty Error-state uncertainty
Attitude correction Can be awkward if direct Naturally multiplicative
After update Correct full state Inject error into nominal state
Error reset Normally not explicit Explicit
IMU navigation Possible Particularly convenient

The ESKF is not fundamentally a completely different Bayesian estimator.

It is best understood as

\[ \boxed{ \text{An EKF Organized Around Local Estimation Errors}. } \]

4.2.8.33 Position Measurement Example

Suppose GNSS provides

\[ \mathbf z_{GNSS} = \mathbf r + \mathbf v_r. \]

The nominal prediction is

\[ \hat{\mathbf z} = \hat{\mathbf r}^{-}. \]

Therefore

\[ \mathbf y = \mathbf z_{GNSS} - \hat{\mathbf r}^{-}. \]

The measurement is primarily sensitive to the position error:

\[ \mathbf y \approx \delta\mathbf r + \mathbf v_r. \]

Thus the measurement Jacobian for a 15-state system may contain

\[ \boxed{ \mathbf H = \begin{bmatrix} \mathbf I_3 & \mathbf 0 & \mathbf 0 & \mathbf 0 & \mathbf 0 \end{bmatrix}. } \]

But because the covariance contains cross-correlations, position measurements can also indirectly correct velocity, attitude, and biases.

4.2.8.34 Velocity Measurement Example

If GNSS provides velocity,

\[ \mathbf z_v = \mathbf v + \mathbf n_v, \]

then

\[ \mathbf y_v = \mathbf z_v - \hat{\mathbf v}^{-} \]

and the direct sensitivity is

\[ \boxed{ \mathbf H_v = \begin{bmatrix} 0&I&0&0&0 \end{bmatrix}. } \]

Again, correlations in \mathbf P allow this measurement to update more than velocity alone.

4.2.8.35 Why GNSS Can Help Estimate IMU Biases

A GNSS position measurement does not directly measure gyro bias or accelerometer bias.

Yet an ESKF can estimate them.

Why?

Because the dynamics create correlation.

For example,

\[ \delta\mathbf b_a \rightarrow \delta\mathbf v \rightarrow \delta\mathbf r. \]

Therefore GNSS position residuals contain indirect information about accelerometer bias over time.

Similarly,

\[ \delta\mathbf b_g \rightarrow \delta\boldsymbol\theta \rightarrow \text{wrong acceleration projection} \rightarrow \delta\mathbf v \rightarrow \delta\mathbf r. \]

Thus

\[ \boxed{ \text{A State Need Not Be Directly Measured to Be Estimated} } \]

provided the system dynamics and measurements make it observable.

4.2.8.36 ESKF for IMU/GNSS Fusion

One of the classic ESKF applications is

\[ \boxed{ \text{IMU} + \text{GNSS} }. \]

The IMU provides high-rate propagation:

\[ \boxed{ \text{Gyro} + \text{Accelerometer} \rightarrow \text{High-Rate Nominal Navigation State} } \]

while GNSS provides absolute or globally referenced corrections:

\[ \boxed{ \text{GNSS Position/Velocity} \rightarrow \text{Low-Rate Error-State Correction}. } \]

The complete flow becomes

\[ \boxed{ \text{IMU} \rightarrow \text{Nominal Propagation} \rightarrow \hat{\mathbf r}, \hat{\mathbf v}, \hat{\mathbf q} } \]

while

\[ \boxed{ \text{ESKF} \rightarrow \delta\mathbf r, \delta\mathbf v, \delta\boldsymbol\theta, \delta\mathbf b_g, \delta\mathbf b_a } \]

and then

\[ \boxed{ \text{Inject} \rightarrow \text{Improved Nominal Navigation State}. } \]

4.2.8.37 ESKF for Spacecraft RPO

For rendezvous and proximity operations, a nominal relative state may contain

\[ \boxed{ \mathbf x_{rel} = \begin{bmatrix} \mathbf r_{rel}\\ \mathbf v_{rel}\\ \mathbf q_{rel}\\ \boldsymbol\omega_{rel}\\ \mathbf b_g\\ \mathbf b_a \end{bmatrix}. } \]

The error state may contain

\[ \boxed{ \delta\mathbf x_{rel} = \begin{bmatrix} \delta\mathbf r_{rel}\\ \delta\mathbf v_{rel}\\ \delta\boldsymbol\theta_{rel}\\ \delta\boldsymbol\omega_{rel}\\ \delta\mathbf b_g\\ \delta\mathbf b_a \end{bmatrix}. } \]

Sensors may include

The ESKF then provides a unified mechanism for fusing these measurements with the predicted relative dynamics.

4.2.8.38 Relative-GNSS Update

Relative GNSS may provide

\[ \mathbf r_{rel} \]

and

\[ \mathbf v_{rel}. \]

The corresponding residuals are approximately

\[ \boxed{ \mathbf y_r = \mathbf r_{rel,m} - \hat{\mathbf r}_{rel} } \]

and

\[ \boxed{ \mathbf y_v = \mathbf v_{rel,m} - \hat{\mathbf v}_{rel}. } \]

These measurements directly constrain translational error states and indirectly improve correlated states.

4.2.8.39 Camera Update

A camera may measure bearing rather than Cartesian position.

For example,

\[ \alpha = \tan^{-1} \left( \frac{y}{x} \right) \]

and

\[ \beta = \tan^{-1} \left( \frac{z} {\sqrt{x^2+y^2}} \right). \]

The nominal state predicts

\[ \hat\alpha, \qquad \hat\beta \]

and innovation becomes

\[ \boxed{ \mathbf y_{cam} = \begin{bmatrix} \alpha_m-\hat\alpha\\ \beta_m-\hat\beta \end{bmatrix}. } \]

The corresponding Jacobian maps relative-position errors into angular measurement errors.

4.2.8.40 LiDAR Update

For range,

\[ \boxed{ \rho = \sqrt{x^2+y^2+z^2}. } \]

The predicted range is

\[ \hat\rho = \sqrt{ \hat x^2+ \hat y^2+ \hat z^2 }. \]

Innovation:

\[ \boxed{ y_\rho = \rho_m - \hat\rho. } \]

The local sensitivity is

\[ \boxed{ \mathbf H_\rho = \begin{bmatrix} \frac{x}{\rho} & \frac{y}{\rho} & \frac{z}{\rho} & \cdots \end{bmatrix}. } \]

A single range measurement mainly constrains line-of-sight error.

Other sensors or changing geometry are required to obtain full relative-state observability.

4.2.8.41 Attitude Measurements

Suppose a star tracker provides absolute attitude.

Direct quaternion subtraction is generally inappropriate.

Instead, construct an attitude residual using quaternion composition:

\[ \boxed{ \delta\mathbf q_m = \mathbf q_m \otimes (\hat{\mathbf q}^{-})^{-1} } \]

for one convention.

For a small mismatch,

\[ \delta\mathbf q_m \approx \begin{bmatrix} 1\\ \frac12\mathbf y_\theta \end{bmatrix}. \]

Then

\[ \boxed{ \mathbf y_\theta } \]

becomes a three-dimensional attitude innovation used by the error-state Kalman filter.

This is closely related to the MEKF formulation developed next.

4.2.8.42 Multi-Rate Operation

Spacecraft sensors normally operate at different rates.

For example,

\[ f_{IMU} \gg f_{GNSS} \]

and perhaps

\[ f_{camera} \neq f_{LiDAR} \neq f_{star}. \]

The ESKF handles this naturally.

At high rate:

\[ \boxed{ \text{IMU} \rightarrow \text{Nominal Propagation} + \text{Covariance Propagation} } \]

while measurement corrections occur only when a valid measurement arrives.

Thus

\[ \boxed{ \text{Predict Continuously} + \text{Correct Asynchronously}. } \]

4.2.8.43 Sensor Dropout

During GNSS or vision dropout, no measurement correction is available.

The nominal state continues propagating.

Meanwhile,

\[ \mathbf P \]

generally grows because process uncertainty accumulates.

Thus

\[ \boxed{ \text{Sensor Dropout} \rightarrow \text{Continued Navigation} + \text{Increasing Uncertainty}. } \]

When the sensor returns, the measurement can reduce accumulated error if the residual remains within a valid convergence region.

4.2.8.44 Time Synchronization

Measurement timing is critical.

Suppose the nominal state corresponds to

\[ t_k \]

but the measurement was generated at

\[ t_k-\tau. \]

Comparing them directly produces a residual partly caused by time misalignment.

Therefore,

\[ \boxed{ \text{Correct Measurement} + \text{Wrong Timestamp} = \text{Incorrect Innovation}. } \]

Practical ESKF implementations need

4.2.8.45 Innovation Gating

The innovation is

\[ \mathbf y = \mathbf z - h( \hat{\mathbf x}^{-} ). \]

Its covariance is

\[ \mathbf S = \mathbf H\mathbf P^{-}\mathbf H^T + \mathbf R. \]

A normalized innovation statistic is

\[ \boxed{ \epsilon = \mathbf y^T \mathbf S^{-1} \mathbf y. } \]

This can be used to reject measurements inconsistent with the predicted state.

A practical chain is

\[ \boxed{ \text{Measurement} \rightarrow \text{Preprocessing} \rightarrow \text{Innovation} \rightarrow \text{NIS/Gating} \rightarrow \text{Accept or Reject} \rightarrow \text{ESKF Update}. } \]

4.2.8.46 Angle and Quaternion Residual Handling

Angular quantities require special care.

If

\[ \hat\alpha = 179^\circ \]

and

\[ \alpha_m = -179^\circ, \]

the naive difference is

\[ -358^\circ. \]

The correct physical residual is approximately

\[ 2^\circ. \]

Therefore angular innovations must be wrapped consistently.

Similarly, quaternion sign ambiguity must be handled because

\[ \boxed{ \mathbf q \equiv -\mathbf q. } \]

4.2.8.47 Process Noise Q

The ESKF process covariance represents uncertainty driving the error dynamics.

Typical noise sources include

A useful physical workflow is

\[ \boxed{ \text{Sensor / Dynamic Uncertainty} \rightarrow \mathbf Q_c \rightarrow \mathbf G \rightarrow \mathbf Q_d. } \]

4.2.8.48 Measurement Noise R

The matrix

\[ \boxed{ \mathbf R } \]

belongs to the measurement space.

For GNSS position,

\[ R \]

contains position measurement covariance.

For camera angles,

\[ R \]

contains angular measurement uncertainty.

For LiDAR range,

\[ R_\rho = \sigma_\rho^2. \]

For relative pose, R may include both translation and attitude uncertainty.

Therefore,

\[ \boxed{ R \neq \text{State Covariance}. } \]

4.2.8.49 Observability

Adding a state to the filter does not guarantee it can be estimated.

For example, adding

\[ \delta\mathbf b_g \]

does not automatically make gyro bias observable.

Measurements and system dynamics must contain enough information to distinguish bias from other errors.

Likewise,

\[ \boxed{ \text{State Included in Filter} \neq \text{State Observable}. } \]

Observability depends on

4.2.8.50 Motion Can Improve Observability

Suppose a camera measures only bearing.

At one instant, range may be weakly observable.

But if the spacecraft moves and viewing geometry changes, successive measurements can constrain range.

Thus

\[ \boxed{ \text{Vehicle Motion} + \text{Changing Measurement Geometry} \rightarrow \text{Improved Observability}. } \]

This creates an important GNC connection:

\[ \boxed{ \text{Guidance Manoeuvre} \rightarrow \text{Measurement Geometry} \rightarrow \text{Navigation Performance}. } \]

4.2.8.51 Initialization

The ESKF needs both a nominal initial state and covariance.

Nominal initialization may include

\[ \hat{\mathbf r}_0, \quad \hat{\mathbf v}_0, \quad \hat{\mathbf q}_0, \quad \hat{\mathbf b}_{g,0}, \quad \hat{\mathbf b}_{a,0}. \]

The initial error covariance is

\[ \boxed{ \mathbf P_0 = E[ \delta\mathbf x_0 \delta\mathbf x_0^T ]. } \]

If initial uncertainty is unrealistically small, the filter may reject valid measurements or correct too weakly.

If it is unrealistically large, convergence may be noisy or unnecessarily aggressive.

Thus

\[ \boxed{ \text{Good Initial State} + \text{Realistic }P_0 } \]

are both essential.

4.2.8.52 Why ESKF Linearisation Is Usually Well Behaved

The ESKF linearizes the dynamics with respect to

\[ \delta\mathbf x \]

rather than the complete state.

After each update,

\[ \delta\hat{\mathbf x} \rightarrow0. \]

Therefore the local linear model is repeatedly re-centered around the updated nominal trajectory.

Conceptually,

\[ \boxed{ \text{Inject Correction} \rightarrow \text{Re-Center Error Coordinates} \rightarrow \text{Keep Linearisation Local}. } \]

This is one of the main reasons ESKF formulations are attractive for nonlinear navigation.

4.2.8.53 ESKF and Quaternion Geometry

Attitude does not live in ordinary Euclidean space.

It belongs to

\[ SO(3). \]

A quaternion lies on the unit hypersphere

\[ S^3. \]

The ESKF handles this by placing the global attitude representation in the nominal state while expressing uncertainty locally in a three-dimensional tangent space.

Therefore,

\[ \boxed{ \text{Global Nonlinear Attitude} + \text{Local Linear Error Coordinates}. } \]

This idea extends beyond quaternions and appears in modern manifold-based state estimation.

4.2.8.54 ESKF vs MEKF

The ESKF and MEKF are closely related.

The ESKF is a general error-state formulation that may include

\[ \delta\mathbf r, \delta\mathbf v, \delta\boldsymbol\theta, \delta\mathbf b_g, \delta\mathbf b_a, \ldots \]

while the MEKF is especially associated with quaternion attitude estimation using multiplicative attitude error.

Conceptually,

\[ \boxed{ \text{MEKF} \subset \text{Error-State / Multiplicative Estimation Philosophy}. } \]

The next section focuses specifically on the attitude-estimation case.

4.2.8.55 ESKF vs Full-State EKF

A full-state EKF may use

\[ \hat{\mathbf x}^{+} = \hat{\mathbf x}^{-} + \mathbf K\mathbf y. \]

The ESKF instead uses

\[ \boxed{ \delta\hat{\mathbf x} = \mathbf K\mathbf y } \]

followed by

\[ \boxed{ \hat{\mathbf x}^{+} = \hat{\mathbf x}^{-} \oplus \delta\hat{\mathbf x}. } \]

Then

\[ \delta\hat{\mathbf x} \leftarrow0. \]

This is the essential operational distinction.

4.2.8.56 Advantages of the ESKF

4.2.8.56.1 Small Error Variables

Linearisation occurs around small local errors.

4.2.8.56.2 Natural Quaternion Handling

Attitude uncertainty can be represented using three states.

4.2.8.56.3 Good IMU Integration

Gyro and accelerometer biases fit naturally into the state.

4.2.8.56.4 Numerical Interpretation

Large physical states do not have to be treated as small additive corrections.

4.2.8.56.5 Modular Navigation Architecture

The nominal propagator and uncertainty estimator can be designed and tested separately.

4.2.8.56.6 Multi-Sensor Fusion

GNSS, camera, LiDAR, star tracker, and other sensors can correct the same error-state covariance.

4.2.8.57 Limitations of the ESKF

The ESKF is not automatically superior in every problem.

Important limitations include

In particular,

\[ \boxed{ \text{Small-Error Assumption} } \]

must remain sufficiently valid.

4.2.8.58 Common ESKF Implementation Errors

Typical mistakes include:

The last point is particularly important:

\[ \boxed{ \text{Simulation Truth} \neq \text{Estimator Input}. } \]

Truth should be used only for verification.

4.2.8.59 Simulink / Software Architecture

A clean implementation should separate the following modules:

\[ \boxed{\text{IMU Preprocessing}} \]

\[ \downarrow \]

\[ \boxed{\text{Nominal-State Propagation}} \]

\[ \downarrow \]

\[ \boxed{\hat{\mathbf x}^{-}} \]

while in parallel,

\[ \boxed{\mathbf F,\mathbf G} \rightarrow \boxed{\text{Covariance Propagation}} \rightarrow \boxed{\mathbf P^{-}}. \]

For measurements:

\[ \boxed{\text{Sensor Measurement}} \]

\[ \downarrow \]

\[ \boxed{\text{Time Alignment + Validation}} \]

\[ \downarrow \]

\[ \boxed{\text{Measurement Prediction}} \]

\[ \downarrow \]

\[ \boxed{\text{Innovation}} \]

\[ \downarrow \]

\[ \boxed{\mathbf H,\mathbf S,\mathbf K} \]

\[ \downarrow \]

\[ \boxed{\delta\hat{\mathbf x}} \]

\[ \downarrow \]

\[ \boxed{\text{Error Injection}} \]

\[ \downarrow \]

\[ \boxed{\text{Reset}}. \]

This modular architecture is easier to debug than one monolithic ESKF block.

4.2.8.60 Verification Strategy

A good ESKF should be verified progressively.

4.2.8.60.1 Zero-Noise Test

Remove all sensor noise and model error.

Verify that

\[ \hat{\mathbf x} \rightarrow \mathbf x_{\text{truth}}. \]

4.2.8.60.2 Initial Error Test

Introduce known initial position, velocity, and attitude offsets.

Verify convergence.

4.2.8.60.3 Gyro Bias Test

Inject known

\[ \mathbf b_g \]

and verify bias estimation.

4.2.8.60.4 Accelerometer Bias Test

Inject known

\[ \mathbf b_a \]

and verify its effect on velocity and position is corrected.

4.2.8.60.5 GNSS Dropout Test

Disable GNSS and observe covariance growth.

4.2.8.60.6 Sensor Reacquisition Test

Restore GNSS and verify smooth convergence.

4.2.8.60.7 Attitude Sensor Dropout

Verify inertial attitude propagation and resulting drift.

4.2.8.60.8 Outlier Test

Inject invalid measurements and verify gating.

4.2.8.60.9 Timing Test

Introduce sensor delay and confirm handling.

4.2.8.60.10 Frame Test

Verify every residual in the correct coordinate frame.

4.2.8.61 Innovation Consistency

The innovation is

\[ \mathbf y_k. \]

Its expected covariance is

\[ \mathbf S_k. \]

A properly tuned estimator should produce residuals statistically consistent with this covariance.

The normalized innovation squared is

\[ \boxed{ NIS_k = \mathbf y_k^T \mathbf S_k^{-1} \mathbf y_k. } \]

NIS can be used for

4.2.8.62 NEES

When truth is available in simulation,

\[ \delta\mathbf x_k = \mathbf x_{\text{true}} \ominus \hat{\mathbf x}_k \]

can be compared with the filter covariance.

The normalized estimation error squared is

\[ \boxed{ NEES_k = \delta\mathbf x_k^T \mathbf P_k^{-1} \delta\mathbf x_k. } \]

If the actual errors are consistently much larger than predicted by \mathbf P, the estimator is overconfident.

If much smaller, it may be overly conservative.

4.2.8.63 Monte Carlo Verification

Because ESKF performance depends on random noise and nonlinear coupling, Monte Carlo analysis is highly valuable.

Randomize parameters such as

Evaluate distributions of

\[ \boxed{RMSE} \]

\[ \boxed{NIS} \]

\[ \boxed{NEES} \]

\[ \boxed{\text{Convergence Time}} \]

\[ \boxed{\text{Maximum Error}} \]

\[ \boxed{\text{Divergence Rate}}. \]

4.2.8.64 ESKF for RPO Mission Phases

An RPO system may change sensors with range.

### Far Range

\[ \boxed{ \text{Relative GNSS} } \]

may dominate.

### Mid Range

\[ \boxed{ \text{Relative GNSS} + \text{Camera} } \]

may be fused.

### Close Range

\[ \boxed{ \text{Camera} + \text{LiDAR} } \]

may dominate.

### Capture

\[ \boxed{ \text{Precision Relative Pose} + \text{Relative Velocity} + \text{Relative Attitude} } \]

may be required.

The ESKF's nominal state remains continuous across these phases while measurement models and measurement covariance can change.

4.2.8.65 Sensor Handover

Sensor handover should not mean resetting the complete estimator.

Suppose the system transitions from GNSS-dominated navigation to camera/LiDAR navigation.

The existing posterior uncertainty becomes the prior for the next sensor regime.

Thus

\[ \boxed{ \text{Previous Navigation Knowledge} \rightarrow \text{Prior} \rightarrow \text{New Sensor Correction}. } \]

This preserves state continuity across mission phases.

4.2.8.66 Capture and Handover Conditions

For proximity operations, the navigation system may need to evaluate

\[ \|\hat{\mathbf r}_{rel}\| < r_{\text{capture}} \]

and

\[ \|\hat{\mathbf v}_{rel}\| < v_{\text{capture}}. \]

But an ESKF also provides

\[ \mathbf P. \]

Therefore, it is possible to consider not only estimated relative position and velocity but also confidence in those estimates.

Conceptually,

\[ \boxed{ \text{Capture Readiness} = \text{Estimated State} + \text{Navigation Confidence}. } \]

This is a major advantage over deterministic navigation alone.

4.2.8.67 Relationship to Guidance and Control

The estimator outputs

\[ \hat{\mathbf r}, \quad \hat{\mathbf v}, \quad \hat{\mathbf q}, \quad \hat{\boldsymbol\omega}, \]

which are used by guidance and control.

The complete loop is

\[ \boxed{ \text{Sensors} \rightarrow \text{ESKF} \rightarrow \text{Navigation Estimate} \rightarrow \text{Guidance} \rightarrow \text{Control} \rightarrow \text{Vehicle Dynamics}. } \]

Estimator latency, noise, bias, and covariance therefore influence closed-loop GNC performance directly.

4.2.8.68 Key Equations at a Glance

### Nominal State

\[ \boxed{ \mathbf x_{\text{true}} = \hat{\mathbf x} \oplus \delta\mathbf x } \]

### Error Dynamics

\[ \boxed{ \delta\dot{\mathbf x} = \mathbf F \delta\mathbf x + \mathbf G\mathbf w } \]

### State Transition

\[ \boxed{ \mathbf\Phi = e^{\mathbf F\Delta t} } \]

### Covariance Prediction

\[ \boxed{ \mathbf P^{-} = \mathbf\Phi \mathbf P^{+} \mathbf\Phi^T + \mathbf Q_d } \]

### Innovation

\[ \boxed{ \mathbf y = \mathbf z - h( \hat{\mathbf x}^{-} ) } \]

### Innovation Covariance

\[ \boxed{ \mathbf S = \mathbf H \mathbf P^{-} \mathbf H^T + \mathbf R } \]

### Kalman Gain

\[ \boxed{ \mathbf K = \mathbf P^{-} \mathbf H^T \mathbf S^{-1} } \]

### Estimated Error

\[ \boxed{ \delta\hat{\mathbf x} = \mathbf K\mathbf y } \]

### Error Injection

\[ \boxed{ \hat{\mathbf x}^{+} = \hat{\mathbf x}^{-} \oplus \delta\hat{\mathbf x} } \]

### Error Reset

\[ \boxed{ \delta\hat{\mathbf x} \leftarrow 0 } \]

### Covariance Reset

\[ \boxed{ \mathbf P \leftarrow \mathbf G_{\text{reset}} \mathbf P \mathbf G_{\text{reset}}^T }. \]

4.2.8.69 Complete ESKF Conceptual Flow

The entire ESKF can be summarized as

\[ \boxed{\text{Previous Nominal State}} \]

\[ \downarrow \]

\[ \boxed{\text{IMU / Nonlinear Dynamics}} \]

\[ \downarrow \]

\[ \boxed{\text{Propagated Nominal State}} \]

while in parallel,

\[ \boxed{\text{Previous Error Covariance}} \]

\[ \downarrow \]

\[ \boxed{\text{Linearized Error Dynamics}} \]

\[ \downarrow \]

\[ \boxed{\text{Predicted Error Covariance}}. \]

Then

\[ \boxed{\text{External Measurement}} \]

\[ \downarrow \]

\[ \boxed{\text{Measurement Residual}} \]

\[ \downarrow \]

\[ \boxed{\text{Estimate Error State}} \]

\[ \downarrow \]

\[ \boxed{\text{Inject Error into Nominal State}} \]

\[ \downarrow \]

\[ \boxed{\text{Reset Error State}} \]

\[ \downarrow \]

\[ \boxed{\text{Continue Propagation}}. \]

The central philosophy is therefore

\[ \boxed{ \text{Propagate the State} \quad \text{Estimate the Error} \quad \text{Correct the State} \quad \text{Reset the Error} }. \]

4.2.8.70 Key Takeaways

The Error-State Kalman Filter should be understood through the following points:

\[ \delta\mathbf r,\; \delta\mathbf v,\; \delta\boldsymbol\theta,\; \delta\mathbf b_g,\; \delta\mathbf b_a. \]

The most important concept is

\[ \boxed{ \text{ESKF} = \text{Nonlinear Nominal-State Propagation} + \text{Linearized Small-Error Estimation} + \text{Error Injection} + \text{Error Reset}. } \]

Or, physically:

\[ \boxed{ \text{Do not continuously re-estimate the entire spacecraft state from scratch; estimate how wrong the current navigation state is.} } \]

Next: 4.2.9 Multiplicative Extended Kalman Filter (MEKF)

The ESKF introduced the idea

\[ \boxed{ \mathbf x_{\text{true}} = \mathbf x_{\text{nominal}} \oplus \delta\mathbf x. } \]

For spacecraft attitude estimation, this becomes especially powerful.

Instead of estimating quaternion components additively, maintain a nominal quaternion

\[ \boxed{ \hat{\mathbf q} } \]

and estimate only a small attitude-error vector

\[ \boxed{ \delta\boldsymbol\theta. } \]

The corresponding correction is applied multiplicatively:

\[ \boxed{ \mathbf q_{\text{true}} = \delta\mathbf q \otimes \hat{\mathbf q}. } \]

This leads naturally to 4.2.9 Multiplicative Extended Kalman Filter (MEKF), where the focus should shift specifically to quaternion attitude estimation, multiplicative attitude-error representation, gyro-bias estimation, star-tracker/Sun-sensor/magnetometer measurements, attitude residuals, covariance propagation, quaternion correction, reset, observability, initialization, and spacecraft attitude-determination applications.