I am trying to model a Kalman Filter for an IMU (inertial measurement unit) with the method described by Zhou (2004) and Filippeschi (2017, pp.11-12).
In this method, the state vector is:
$$ X = \begin{bmatrix}g_x\\g_y\\g_z\\m_x\\m_y\\m_z\end{bmatrix} $$
Where $g$ is the gravity vector and $m$ is the magnetic vector.
The process model is as follows:
$$ X_{j+1}=(\dot X_jT+I_6)X_{j}+w_j $$
Where $\dot X_j$ is a vector containing the rate of change of $g$ and $m$, $T$ is the sample time, $I_6$ being the 6x6 identity matrix, and $w_j$ measurement noise.
$\dot X_j$ can be obtained from the raw measurements of the sensors.
$$ \dot X = \begin{bmatrix}\dot g\\ \dot m\end{bmatrix} $$
$$ \dot g = g x w $$
$$ \dot m = m x w $$
Where g is the accelerometer output, m is the magnetometer output, and w is the gyroscope output.
The measurement model is simple:
$$ Z_j = X_j + \delta_j $$
With $\delta_j$ being the white measurement noise.
I am not very familiar with kalman filters, but from what I have gathered, there's five main equations:
- State extrapolation
- Covariance extrapolation
- State update
- Covariance update
- Kalman gain
My issue comes from the fact that most literature has the state extrapolation equation as follows (I'm ommiting the control vector):
$$ X_{j+1} = AX_j + w_j $$
However, I am confused about deriving the state extrapolation and covariance extrapolation equations, since the process model doesn't really have a state transition matrix). Can I simply substitute $A$ with $(\dot X_jT+I_6)$?
For instance, this would mean the state extrapolation eq ends up like this:
$$ X_{j+1} = \dot X_jTX_j + X_j $$
And perhaps the covariance extrapolation like this (which I have no idea how to solve):
$$ P_{j+1} = (\dot X_jT+I_6)P_j(\dot X_jT+I_6)^T + Q$$$$ $$