pub struct KalmanFilterXY {
pub state: KalmanStateXY,
pub P: Matrix3x3xM2x2f32,
pub Q_velocity: f32,
pub Q_bias: f32,
}Expand description
Linear Kalman Filter in 2 dimensions.
Fields§
§state: KalmanStateXY2D Kinematic State Vectors.
P: Matrix3x3xM2x2f32P: Prediction error covariance (aka state covariance matrix, the system’s internal uncertainty).
Q_velocity: f32Process Noise spectral density mapping to Velocity variance.
Q_bias: f32Process Noise spectral density mapping to Sensor Drift variance.
Implementations§
Source§impl KalmanFilterXY
impl KalmanFilterXY
pub fn pos(&self) -> Vector2f32
pub fn vel(&self) -> Vector2f32
pub fn acc_bias(&self) -> Vector2f32
Source§impl KalmanFilterXY
impl KalmanFilterXY
Sourcepub fn predict_state(&mut self, acc_measurement: Vector2f32, dt: f32)
pub fn predict_state(&mut self, acc_measurement: Vector2f32, dt: f32)
Integrates raw IMU accelerometer data to predict new position and velocity vectors.
This forms the continuous dead reckoning pipeline driving vehicle kinetics forward.
§Physical Mechanics
pos_k = pos_k₋₁ + vel_k₋₁ * dt + 0.5 * acc * dt²
vel_k = vel_k₋₁ + acc * dtSourcepub fn predict_covariance(&mut self, dt: f32)
pub fn predict_covariance(&mut self, dt: f32)
Predict covariance:
P = F * P * Fᵀ + Q.
P: State covariance matrix F: State transition matrix Q: Process noise covariance.
Source§impl KalmanFilterXY
impl KalmanFilterXY
Sourcepub fn correct_position_standard_form(
&mut self,
measurement: Vector2f32,
predicted_measurement: Vector2f32,
R: Vector2f32,
)
pub fn correct_position_standard_form( &mut self, measurement: Vector2f32, predicted_measurement: Vector2f32, R: Vector2f32, )
Covariance correction step.
S = H * P * Hᵀ + R
K = P * Hᵀ * S⁻¹
P = (I - K * H) * P.
R is measurement noise covariance.
Sourcepub fn correct_position_joseph_stabilized_form(
&mut self,
measurement: Vector2f32,
predicted_measurement: Vector2f32,
R: Vector2f32,
)
pub fn correct_position_joseph_stabilized_form( &mut self, measurement: Vector2f32, predicted_measurement: Vector2f32, R: Vector2f32, )
Joseph’s Stabilized Form for the covariance update step:
P{k} = (I - KH) * P{k-1} * (I - KH)ᵀ + KRKᵀ).
While computationally more expensive, it guarantees the result remains positive-definite. That is it ensures the covariance matrix has positive eigenvalues and remains valid and invertible for future updates.