12 #ifndef __SOT_KALMAN_H 13 #define __SOT_KALMAN_H 20 #include <dynamic-graph/entity.h> 30 #if defined(kalman_EXPORTS) 31 #define SOT_KALMAN_EXPORT __declspec(dllexport) 33 #define SOT_KALMAN_EXPORT __declspec(dllimport) 36 #define SOT_KALMAN_EXPORT 49 virtual const std::string &
getClassName(
void)
const {
return CLASS_NAME; }
73 return "Implementation of extended Kalman filter \n" 75 " Dynamics of the system: \n" 77 " x = f (x , u ) + w (state) \n" 80 " y = h (x ) + v (observation)\n" 86 " x = f (x , u ) (state) \n" 87 " k|k-1 k-1|k-1 k-1 \n" 90 " P = F P F + Q (covariance)\n" 91 " k|k-1 k-1 k-1|k-1 k-1 \n" 96 " F = --- (x , u ) \n" 97 " k-1 \\ k-1|k-1 k-1 \n" 109 " z = y - h (x ) (innovation)\n" 112 " S = H P H + R (innovation covariance)\n" 115 " K = P H S (Kalman gain)\n" 118 " x = x + K z (state) \n" 121 " P =(I - K H ) P \n" 125 " - input(vector)::x_pred: state prediction\n" 127 " - input(vector)::y_pred: observation prediction: h (x )\n" 129 " - input(matrix)::F: partial derivative wrt x of f\n" 130 " - input(vector)::y: measure \n" 131 " - input(matrix)::H: partial derivative wrt x of h\n" 132 " - input(matrix)::Q: variance of noise w\n" 134 " - input(matrix)::R: variance of noise v\n" 136 " - output(matrix)::P_pred: variance of prediction\n" 138 " - output(vector)::x_est: state estimation x\n" 143 Matrix &computeVarianceUpdate(
Matrix &P_k_k,
const int &time);
144 Vector &computeStateUpdate(
Vector &x_est,
const int &time);
147 stateEstimation_ = x0;
188 void display(std::ostream &os)
const;
void setStateVariance(const Matrix &P0)
SignalPtr< Vector, int > statePredictedSIN
SignalPtr< Matrix, int > modelMeasureSIN
SignalPtr< Matrix, int > noiseTransitionSIN
virtual const std::string & getClassName(void) const
SignalTimeDependent< Matrix, int > gainSINTERN
SignalPtr< Matrix, int > modelTransitionSIN
static const std::string CLASS_NAME
SignalTimeDependent< Matrix, int > varianceUpdateSOUT
SignalPtr< Vector, int > observationPredictedSIN
SignalTimeDependent< Vector, int > stateUpdateSOUT
virtual void recompute(const Time &t)
unsigned int size_measure
#define SOT_KALMAN_EXPORT
SignalTimeDependent< Matrix, int > innovationSINTERN
virtual std::string getDocString() const
SignalPtr< Matrix, int > noiseMeasureSIN
void setStateEstimation(const Vector &x0)
SignalPtr< Vector, int > measureSIN