Aerospace Control Framework 1.0
sc_imm.h
Go to the documentation of this file.
1/*
2 * sc_imm.h
3 *
4 * Copyright 2011, Princeton Satellite Systems. All rights reserved.
5 *
6 * Unscented Kalman Filter object.
7 *
8 *
9 */
10
38#ifdef AS_OS_WINDOWS
39#include "matrixlib.h"
40#else
41#include <MatrixLib/MatrixLib.h>
42#endif
43
44#include <SCControl/sc_ukf.h>
45#include <SCControl/sc_math.h>
46
47#ifndef __SC_IMM__
48#define __SC_IMM__
49
50
52typedef ml_matrix (*jump_func) (void *context);
53
54
55
57class IMM {
58public:
60 IMM();
62 ~IMM();
64 void intialize_filter_bank (const int size_bank);
66 void set_filter_mode (const int n_filter, UKF_mode mode);
68 void set_filter_parameters (const int n_filter, const double alpha, const double kappa, const double beta);
70 void set_integrator_time_info (double t, double dt);
72 void set_initial_values (const ml_matrix &state0, const ml_matrix &covariance0, const ml_matrix &parameter0 = ml_matrix());
74 void set_noise_covariances (const int n_filter,const ml_matrix &Rp, const ml_matrix &Rm);
76 void set_state_function (const int n_filter,state_func state_fun);
78 void set_jump_function (jump_func jump_fun);
80 void set_integrator (const int n_filter,integ_func integ_fun);
82 void set_measurement_function (const int n_filter,meas_func meas_fun);
84 void set_context(void *context);
86 ml_matrix current_state (void) const { return state; }
88 ml_matrix current_covariance (void) const { return covariance; }
90 ml_matrix current_mode_probability (void) const {return mode_probability; }
92 void update_estimate (const ml_matrix &measurement);
93
94private:
96 IMM (const IMM &u);
98 IMM & operator= (const IMM &u);
99
101 void mix_estimate(void);
103 void combine_estimate(void);
105 void update_estimate_bank(ml_matrix measurement);
106
107
109 void combine_models (void);
110
112 ml_matrix jump_probabilities;
113
115 ml_matrix mode_probability;
116
118 ml_matrix state;
119
121 ml_matrix covariance;
122
124 int bank_count;
125
126 double current_dt;
127
129 jump_func jump_fp;
131 void *ctx;
133 ml_matrix predicted_mode_probability;
135 int max_bank_size;
137 UKF ukf_bank[50];
139 bool first_step;
140
141};
142
143#endif
Interactive Multiple Model Filter.
Definition: sc_imm.h:57
void intialize_filter_bank(const int size_bank)
Sets the number of models in the filter bank.
Definition: sc_imm.cc:58
void set_integrator(const int n_filter, integ_func integ_fun)
Sets the integrator function.
Definition: sc_imm.cc:150
ml_matrix current_mode_probability(void) const
Returns the current mode probability.
Definition: sc_imm.h:90
IMM()
Constructor.
Definition: sc_imm.cc:40
void set_filter_mode(const int n_filter, UKF_mode mode)
Sets the filter mode.
Definition: sc_imm.cc:79
void update_estimate(const ml_matrix &measurement)
Updates the current estimate.
Definition: sc_imm.cc:192
void set_jump_function(jump_func jump_fun)
Sets the jump function.
Definition: sc_imm.cc:169
void set_noise_covariances(const int n_filter, const ml_matrix &Rp, const ml_matrix &Rm)
Sets the noise covariance matrices.
Definition: sc_imm.cc:130
void set_filter_parameters(const int n_filter, const double alpha, const double kappa, const double beta)
Sets the filter parameters.
Definition: sc_imm.cc:91
void set_integrator_time_info(double t, double dt)
Sets the integrator time and time step.
Definition: sc_imm.cc:101
void set_initial_values(const ml_matrix &state0, const ml_matrix &covariance0, const ml_matrix &parameter0=ml_matrix())
Sets the initial state and covariance.
Definition: sc_imm.cc:117
void set_state_function(const int n_filter, state_func state_fun)
Sets the state function.
Definition: sc_imm.cc:140
ml_matrix current_covariance(void) const
Returns the current estimated covariance.
Definition: sc_imm.h:88
~IMM()
Destructor.
Definition: sc_imm.cc:48
void set_context(void *context)
Sets the context pointer for data needed by the state or measurement functions.
Definition: sc_imm.cc:178
ml_matrix current_state(void) const
Returns the current estimated state.
Definition: sc_imm.h:86
void set_measurement_function(const int n_filter, meas_func meas_fun)
Sets the measurement function.
Definition: sc_imm.cc:160
ml_matrix(* jump_func)(void *context)
A function used to provide the jump probabilities.
Definition: sc_imm.h:52