mad-location-manager-lib 1.0
Library for fusing GPS and ENU accelerometer data
Loading...
Searching...
No Matches
Public Member Functions | Private Member Functions | Private Attributes | List of all members
gps_acc_fusion_filter Class Reference

gps_acc_fusion_filter - Kalman filter implementation for GPS and accelerometer fusion More...

#include <gps_acc_fusion_filter.h>

Inheritance diagram for gps_acc_fusion_filter:
kalman_filter< 4, 4, 2 >

Public Member Functions

 gps_acc_fusion_filter ()
 
void reset (double x, double y, double ts, double x_vel, double y_vel, double acc_sigma_2, double pos_sigma_2)
 
void predict (double x_acc, double y_acc, double ts_sec)
 
void update (const kf_state &state, double pos_sigma_2, double vel_sigma_2=1e-6)
 
const kf_state current_state () const
 

Private Member Functions

void rebuild_F (double dt_sec)
 gps position sigma^2
 
void rebuild_U (double xAcc, double yAcc)
 
void rebuild_B (double dt_sec)
 
void rebuild_Q (double dt_sec)
 
void rebuild_R (double pos_sigma_2, double vel_sigma_2)
 

Private Attributes

double m_last_predict_sec
 
double m_acc_sigma_2
 timestamp (in seconds) of last predict() call
 
double m_pos_sigma_2
 accelerometer sigma^2
 

Additional Inherited Members

- Protected Member Functions inherited from kalman_filter< 4, 4, 2 >
 kalman_filter ()
 
void estimate ()
 
void correct ()
 
- Protected Attributes inherited from kalman_filter< 4, 4, 2 >
mtx_t< double, state_d, state_dF
 
mtx_t< double, measure_d, state_dH
 state transition model
 
mtx_t< double, state_d, control_dB
 observation model
 
mtx_t< double, state_d, state_dQ
 control matrix
 
mtx_t< double, measure_d, measure_dR
 process noise covariance
 
mtx_t< double, control_d, 1 > Uk
 observation noise covariance
 
mtx_t< double, measure_d, 1 > Zk
 control vector
 
mtx_t< double, state_d, 1 > Xk_km1
 actual measured values vector
 
mtx_t< double, state_d, state_dPk_km1
 predicted state estimate
 
mtx_t< double, measure_d, 1 > Yk
 predicted estimate covariance
 
mtx_t< double, measure_d, measure_dSk
 measurement innovation
 
mtx_t< double, state_d, measure_dK
 innovation covariance
 
mtx_t< double, state_d, 1 > Xk_k
 Kalman gain.
 
mtx_t< double, measure_d, 1 > Yk_k
 updated (current) state
 
mtx_t< double, state_d, state_dPk_k
 post fit residual
 
mtx_t< double, state_d, state_dI
 updated estimate covariance
 

Detailed Description

gps_acc_fusion_filter - Kalman filter implementation for GPS and accelerometer fusion

Template Parameters
state_dDimension of state vector (number of state variables)
measure_dDimension of measurement vector (number of measurements)
control_dDimension of control vector (number of control inputs)

Specialized Kalman filter for fusing GPS position data with accelerometer measurements to estimate 2D position and velocity. Uses kalman_filter<4, 4, 2> configuration:

State Vector (4D): [X, Y, X', Y']

Measurement Vector (4D): [GPS_X, GPS_Y, GPS_VX, GPS_VY]

Control Vector (2D): [ACC_X, ACC_Y]

This filter provides improved position and velocity estimation by combining the absolute positioning from GPS with the high-frequency acceleration data, resulting in smoother tracking with reduced GPS noise and better dynamics.

Constructor & Destructor Documentation

◆ gps_acc_fusion_filter()

gps_acc_fusion_filter::gps_acc_fusion_filter ( )

Member Function Documentation

◆ current_state()

const kf_state gps_acc_fusion_filter::current_state ( ) const

◆ predict()

void gps_acc_fusion_filter::predict ( double  x_acc,
double  y_acc,
double  ts_sec 
)

◆ rebuild_B()

void gps_acc_fusion_filter::rebuild_B ( double  dt_sec)
private

◆ rebuild_F()

void gps_acc_fusion_filter::rebuild_F ( double  dt_sec)
private

gps position sigma^2

◆ rebuild_Q()

void gps_acc_fusion_filter::rebuild_Q ( double  dt_sec)
private

◆ rebuild_R()

void gps_acc_fusion_filter::rebuild_R ( double  pos_sigma_2,
double  vel_sigma_2 
)
private

◆ rebuild_U()

void gps_acc_fusion_filter::rebuild_U ( double  xAcc,
double  yAcc 
)
private

◆ reset()

void gps_acc_fusion_filter::reset ( double  x,
double  y,
double  ts,
double  x_vel,
double  y_vel,
double  acc_sigma_2,
double  pos_sigma_2 
)

◆ update()

void gps_acc_fusion_filter::update ( const kf_state state,
double  pos_sigma_2,
double  vel_sigma_2 = 1e-6 
)

Member Data Documentation

◆ m_acc_sigma_2

double gps_acc_fusion_filter::m_acc_sigma_2
private

timestamp (in seconds) of last predict() call

◆ m_last_predict_sec

double gps_acc_fusion_filter::m_last_predict_sec
private

◆ m_pos_sigma_2

double gps_acc_fusion_filter::m_pos_sigma_2
private

accelerometer sigma^2


The documentation for this class was generated from the following files: