![]() |
Visual Servoing Platform version 3.7.0
|
#include <vpKalmanFilter.h>
Public Member Functions | |
| vpKalmanFilter () | |
| VP_EXPLICIT | vpKalmanFilter (unsigned int n_signal) |
| vpKalmanFilter (unsigned int size_state, unsigned int size_measure, unsigned int n_signal) | |
| vpKalmanFilter (const vpKalmanFilter &)=default | |
| virtual | ~vpKalmanFilter ()=default |
| void | setNumberOfSignal (unsigned int n_signal) |
| void | init (unsigned int size_state, unsigned int size_measure, unsigned int n_signal) |
| void | prediction () |
| void | filtering (const vpColVector &z) |
| unsigned int | getStateSize () |
| unsigned int | getMeasureSize () |
| unsigned int | getNumberOfSignal () |
| long | getIteration () |
| vpKalmanFilter & | operator= (const vpKalmanFilter &)=default |
| void | verbose (bool on) |
Public Attributes | |
| vpColVector | Xest |
| vpColVector | Xpre |
| vpMatrix | F |
| vpMatrix | H |
| vpMatrix | R |
| vpMatrix | Q |
| double | dt |
| vpMatrix | Ppre |
| vpMatrix | Pest |
Protected Attributes | |
| long | iter |
| unsigned int | size_state |
| unsigned int | size_measure |
| unsigned int | nsignal |
| bool | verbose_mode |
| vpMatrix | W |
| vpMatrix | I |
This class provides a generic Kalman filtering algorithm along with some specific state model (constant velocity, constant acceleration) which are implemented in the vpLinearKalmanFilterInstantiation class.
The state evolution equation is given by:
where
is the unknown state at iteration
.
The measurement equation is given by:
where
is the measure (also named observation) at iteration
.
The predicted state is obtained by:
where
Filtering equation are:
where
is the filter gain.
Notice that there is a recursion for the inverse covariance
where
is the inverse of the covariance matrix.
ViSP provides different state evolution models implemented in the vpLinearKalmanFilterInstantiation class.
Definition at line 105 of file vpKalmanFilter.h.
| vpKalmanFilter::vpKalmanFilter | ( | ) |
Construct a default Kalman filter.
The verbose mode is disabled by default
Definition at line 87 of file vpKalmanFilter.cpp.
References dt, F, H, I, iter, nsignal, Pest, Ppre, Q, R, size_measure, size_state, verbose_mode, W, Xest, and Xpre.
Referenced by operator=(), vpKalmanFilter(), and ~vpKalmanFilter().
| vpKalmanFilter::vpKalmanFilter | ( | unsigned int | n_signal | ) |
Construct a default Kalman filter by setting the number of signal to filter.
The verbose mode is disabled by default
| n_signal | : Number of signal to filter. |
Definition at line 99 of file vpKalmanFilter.cpp.
References dt, F, H, I, iter, nsignal, Pest, Ppre, Q, R, size_measure, size_state, verbose_mode, W, Xest, and Xpre.
| vpKalmanFilter::vpKalmanFilter | ( | unsigned int | size_state_vector, |
| unsigned int | size_measure_vector, | ||
| unsigned int | n_signal ) |
Construct a Kalman filter.
The verbose mode is disabled by default
| size_state_vector | : Size of the state vector |
| size_measure_vector | : Size of the measure vector |
| n_signal | : Number of signal to filter. |
Definition at line 117 of file vpKalmanFilter.cpp.
References dt, F, H, I, init(), iter, nsignal, Pest, Ppre, Q, R, size_measure, size_state, verbose_mode, W, Xest, and Xpre.
|
default |
Destructor that does noting.
References vpKalmanFilter().
|
virtualdefault |
References vpKalmanFilter().
| void vpKalmanFilter::filtering | ( | const vpColVector & | z | ) |
Update the Kalman filter by applying the filtering equations and increment the filter iteration (vpKalmanFilter::iter).
| z | : Measure (or observation) |
The filtering equation is given by:
where
is the filter gain computed using the formula:
and where the updated covariance of the state is given by
or in a symmetric form
with
Definition at line 197 of file vpKalmanFilter.cpp.
References H, iter, Pest, Ppre, R, verbose_mode, W, Xest, and Xpre.
Referenced by vpLinearKalmanFilterInstantiation::filter().
|
inline |
|
inline |
Return the size of the measure vector
for one signal.
Definition at line 151 of file vpKalmanFilter.h.
References size_measure.
|
inline |
Return the number of signal to filter.
Definition at line 155 of file vpKalmanFilter.h.
References nsignal.
|
inline |
Return the size of the state vector
for one signal.
Definition at line 147 of file vpKalmanFilter.h.
References size_state.
| BEGIN_VISP_NAMESPACE void vpKalmanFilter::init | ( | unsigned int | size_state_vector, |
| unsigned int | size_measure_vector, | ||
| unsigned int | n_signal ) |
Initialize the Kalman filter.
| size_state_vector | : Size of the state vector |
| size_measure_vector | : Size of the measure vector |
| n_signal | : Number of signal to filter. |
Definition at line 56 of file vpKalmanFilter.cpp.
References dt, F, H, I, iter, nsignal, Pest, Q, R, size_measure, size_state, Xest, and Xpre.
Referenced by vpLinearKalmanFilterInstantiation::initStateConstAccWithColoredNoise_MeasureVel(), vpLinearKalmanFilterInstantiation::initStateConstVel_MeasurePos(), vpLinearKalmanFilterInstantiation::initStateConstVelWithColoredNoise_MeasureVel(), and vpKalmanFilter().
|
default |
References vpKalmanFilter().
| void vpKalmanFilter::prediction | ( | ) |
Update the Kalman filter by applying the prediction equations.
The predicted state is given by
and the state prediction covariance by
Definition at line 140 of file vpKalmanFilter.cpp.
References F, vpException::fatalError, nsignal, Pest, Ppre, Q, size_state, verbose_mode, Xest, and Xpre.
Referenced by vpLinearKalmanFilterInstantiation::filter().
|
inline |
Set the number of signal to filter.
Definition at line 138 of file vpKalmanFilter.h.
|
inline |
Sets the verbose mode.
| on | : If true, activates the verbose mode which consists in printing the Kalman filter internal values. |
Definition at line 169 of file vpKalmanFilter.h.
References verbose_mode.
| double vpKalmanFilter::dt |
Sampling time
in second between two successive iterations. Only used in some specific state models implemented in vpLinearKalmanFilterInstantiation.
Definition at line 197 of file vpKalmanFilter.h.
Referenced by vpLinearKalmanFilterInstantiation::filter(), init(), vpLinearKalmanFilterInstantiation::initStateConstAccWithColoredNoise_MeasureVel(), vpLinearKalmanFilterInstantiation::initStateConstVel_MeasurePos(), vpKalmanFilter(), vpKalmanFilter(), and vpKalmanFilter().
| vpMatrix vpKalmanFilter::F |
Transition matrix
that describes the evolution of the state.
Definition at line 185 of file vpKalmanFilter.h.
Referenced by init(), vpLinearKalmanFilterInstantiation::initStateConstAccWithColoredNoise_MeasureVel(), vpLinearKalmanFilterInstantiation::initStateConstVel_MeasurePos(), vpLinearKalmanFilterInstantiation::initStateConstVelWithColoredNoise_MeasureVel(), prediction(), vpKalmanFilter(), vpKalmanFilter(), and vpKalmanFilter().
| vpMatrix vpKalmanFilter::H |
Matrix
that describes the evolution of the measurements.
Definition at line 188 of file vpKalmanFilter.h.
Referenced by filtering(), init(), vpLinearKalmanFilterInstantiation::initStateConstAccWithColoredNoise_MeasureVel(), vpLinearKalmanFilterInstantiation::initStateConstVel_MeasurePos(), vpLinearKalmanFilterInstantiation::initStateConstVelWithColoredNoise_MeasureVel(), vpKalmanFilter(), vpKalmanFilter(), and vpKalmanFilter().
|
protected |
Identity matrix
.
Definition at line 222 of file vpKalmanFilter.h.
Referenced by yolo-centering-task-afma6.VSPlot::generate_anim(), yolo-centering-task.VSPlot::generate_anim(), init(), yolo-centering-task-afma6.VSPlot::on_iter(), yolo-centering-task.VSPlot::on_iter(), vpKalmanFilter(), vpKalmanFilter(), and vpKalmanFilter().
|
protected |
Filter step or iteration. When set to zero, initialize the filter.
Definition at line 111 of file vpKalmanFilter.h.
Referenced by visp.python.rbt.xfeat.XFeatVisualOdometry.XFeatVisualOdometry::compute(), vpLinearKalmanFilterInstantiation::filter(), filtering(), getIteration(), init(), vpLinearKalmanFilterInstantiation::initStateConstAccWithColoredNoise_MeasureVel(), vpLinearKalmanFilterInstantiation::initStateConstVel_MeasurePos(), vpLinearKalmanFilterInstantiation::initStateConstVelWithColoredNoise_MeasureVel(), visp.python.rbt.xfeat.RBXFeatFeatureTracker.RBXFeatFeatureTracker::reset(), visp.python.rbt.xfeat.XFeatVisualOdometry.XFeatVisualOdometry::reset(), vpKalmanFilter(), vpKalmanFilter(), and vpKalmanFilter().
|
protected |
Number of signal to filter.
Definition at line 118 of file vpKalmanFilter.h.
Referenced by vpLinearKalmanFilterInstantiation::filter(), getNumberOfSignal(), init(), vpLinearKalmanFilterInstantiation::initStateConstAccWithColoredNoise_MeasureVel(), prediction(), vpKalmanFilter(), vpKalmanFilter(), and vpKalmanFilter().
| vpMatrix vpKalmanFilter::Pest |
The updated covariance of the state
where
.
Definition at line 211 of file vpKalmanFilter.h.
Referenced by filtering(), init(), vpLinearKalmanFilterInstantiation::initStateConstAccWithColoredNoise_MeasureVel(), vpLinearKalmanFilterInstantiation::initStateConstVel_MeasurePos(), vpLinearKalmanFilterInstantiation::initStateConstVelWithColoredNoise_MeasureVel(), prediction(), vpKalmanFilter(), vpKalmanFilter(), and vpKalmanFilter().
| vpMatrix vpKalmanFilter::Ppre |
The state prediction covariance
where
.
Definition at line 204 of file vpKalmanFilter.h.
Referenced by filtering(), prediction(), vpKalmanFilter(), vpKalmanFilter(), and vpKalmanFilter().
| vpMatrix vpKalmanFilter::Q |
Process noise covariance matrix
.
Definition at line 193 of file vpKalmanFilter.h.
Referenced by init(), vpLinearKalmanFilterInstantiation::initStateConstAccWithColoredNoise_MeasureVel(), vpLinearKalmanFilterInstantiation::initStateConstVel_MeasurePos(), vpLinearKalmanFilterInstantiation::initStateConstVelWithColoredNoise_MeasureVel(), prediction(), vpKalmanFilter(), vpKalmanFilter(), and vpKalmanFilter().
| vpMatrix vpKalmanFilter::R |
Measurement noise covariance matrix
.
Definition at line 191 of file vpKalmanFilter.h.
Referenced by filtering(), init(), vpLinearKalmanFilterInstantiation::initStateConstAccWithColoredNoise_MeasureVel(), vpLinearKalmanFilterInstantiation::initStateConstVel_MeasurePos(), vpLinearKalmanFilterInstantiation::initStateConstVelWithColoredNoise_MeasureVel(), vpKalmanFilter(), vpKalmanFilter(), and vpKalmanFilter().
|
protected |
Size of the measure vector
.
Definition at line 116 of file vpKalmanFilter.h.
Referenced by vpLinearKalmanFilterInstantiation::filter(), getMeasureSize(), init(), vpLinearKalmanFilterInstantiation::initStateConstAccWithColoredNoise_MeasureVel(), vpLinearKalmanFilterInstantiation::initStateConstVel_MeasurePos(), vpLinearKalmanFilterInstantiation::initStateConstVelWithColoredNoise_MeasureVel(), vpLinearKalmanFilterInstantiation::setStateModel(), vpKalmanFilter(), vpKalmanFilter(), and vpKalmanFilter().
|
protected |
Size of the state vector
.
Definition at line 114 of file vpKalmanFilter.h.
Referenced by vpLinearKalmanFilterInstantiation::filter(), getStateSize(), init(), vpLinearKalmanFilterInstantiation::initStateConstAccWithColoredNoise_MeasureVel(), vpLinearKalmanFilterInstantiation::initStateConstVel_MeasurePos(), vpLinearKalmanFilterInstantiation::initStateConstVelWithColoredNoise_MeasureVel(), prediction(), vpLinearKalmanFilterInstantiation::setStateModel(), vpKalmanFilter(), vpKalmanFilter(), and vpKalmanFilter().
|
protected |
When set to true, print the content of internal variables during filtering() and prediction().
Definition at line 122 of file vpKalmanFilter.h.
Referenced by filtering(), prediction(), verbose(), vpKalmanFilter(), vpKalmanFilter(), and vpKalmanFilter().
|
protected |
Filter gain
where
.
Definition at line 219 of file vpKalmanFilter.h.
Referenced by filtering(), vpKalmanFilter(), vpKalmanFilter(), and vpKalmanFilter().
| vpColVector vpKalmanFilter::Xest |
The updated state estimate
where
.
Definition at line 177 of file vpKalmanFilter.h.
Referenced by vpLinearKalmanFilterInstantiation::filter(), filtering(), init(), vpLinearKalmanFilterInstantiation::initStateConstAccWithColoredNoise_MeasureVel(), vpLinearKalmanFilterInstantiation::initStateConstVel_MeasurePos(), vpLinearKalmanFilterInstantiation::initStateConstVelWithColoredNoise_MeasureVel(), prediction(), vpKalmanFilter(), vpKalmanFilter(), and vpKalmanFilter().
| vpColVector vpKalmanFilter::Xpre |
The predicted state
where
.
Definition at line 182 of file vpKalmanFilter.h.
Referenced by filtering(), init(), prediction(), vpKalmanFilter(), vpKalmanFilter(), and vpKalmanFilter().