The state definition and general propagation equations are covered in the IMU Propagation Derivations page. Here we will cover a simplified discrete inertial model which does not include IMU intrinsic parameters. First we will cover how we can propagate our mean forward, afterwhich we cover how to derive the linearized discrete error-state system.
First we look at how to integrate our orientation equation forward in time. One could use the integration property of a 's matrix exponential or as we will do here, derive it for a quaternion orientation. The solution to the quaternion evolution has the following general form (see [Indirect Kalman Filter for 3D Attitude Estimation] [40] Section 1.6):
Differentiating and reordering the terms yields the governing equation for as
where we have defined:
and . If we take to be constant over the the period , then the above system is linear time-invariant (LTI), and can be solved as (see [31]):
where is the general matrix exponential which has a closed form solution, and the approximation assumes small . We can formulate the quaternion propagation from to using the estimated rotational velocity as:
We model the measurements as discrete-time over the integration period. To do this, the measurements can be assumed to be constant during the sampling period. We employ this assumption and approximate that the measurement at time remains the same until we get the next measurement at . For the quaternion propagation, it is the same as continuous-time propagation with constant measurement assumption . We use subscript to denote it is the measurement we get at time . Therefore the propagation of quaternion can be written as:
where . For the velocity and position propagation we have constant over . We can therefore directly solve for the new states as:
The propagation of each bias is likewise the continuous system:
Note that the noises used here are the discrete ones which need to be converted from their continuous-time versions. In particular, when the covariance matrix of the continuous-time measurement noises is given by and , then the discrete-time noise covariance can be computed as (see [Indirect Kalman Filter for 3D Attitude Estimation] [40] Eq. (129) and (130)):
where are the discrete IMU sensor noises which have been converted from their continuous representations. We define the stacked discrete measurement noise as follows:
In order to propagate the covariance matrix, we should derive the linearized error-state propagation, i.e., computing the system Jacobian and noise Jacobian . The method of computing Jacobians is to "perturb" each variable in the system and see how the old error "perturbation" relates to the new error state. That is, and can be found by perturbing each variable as:
For the orientation error propagation, we start with the perturbation using (which can be shown to be exactly equivalent to the state's quaternion error, see [40] and ov_type::JPLQuat):
where handles both the perturbation to the bias and measurement noise. is the right Jacobian of that maps the variation of rotation angle in the parameter vector space into the variation in the tangent vector space to the manifold [see ov_core::Jr_so3() and [3]]. By neglecting the second order terms from above, we obtain the following orientation error propagation:
where we have defined . This describes how tht error of the next orientation is related to the previous, gyroscope bias, and noise. Now we can do error propagation of position and velocity using the same scheme:
where . By neglecting the second order error terms, we obtain the following position and velocity error propagation:
The propagation of the two random-walk biases are as follows:
By collecting all the perturbation results, we can build and matrices as:
Now, with the computed and matrices, we can propagate the covariance from to :
Tab / T to search, Esc to close
…
Search for symbols, directories, files, pages or
modules. You can omit any prefix from the symbol or file path; adding a
: or / suffix lists all members of given symbol or
directory.
Use ↓
/ ↑ to navigate through the list,
Enter to go.
Tab autocompletes common prefix, you can
copy a link to the result using ⌘L while ⌘M produces a Markdown link.