使用 cv::Matx
的轻量级卡尔曼滤波器库
更多...
#include <rmvl/core/kalman.hpp>
|
| KalmanFilterX () |
| 构造新的 KalmanFilterX 对象 更多...
|
|
void | init (const cv::Matx< Tp, StateDim, 1 > &state, Tp error) |
| 初始化状态以及对应的误差协方差矩阵(常数对角矩阵) 更多...
|
|
void | init (const cv::Matx< Tp, StateDim, 1 > &state, const cv::Matx< Tp, StateDim, 1 > &error) |
| 初始化状态以及对应的误差协方差矩阵(对角矩阵) 更多...
|
|
void | setA (const cv::Matx< Tp, StateDim, StateDim > &_A) |
| 设置状态转移矩阵 A 更多...
|
|
void | setH (const cv::Matx< Tp, MeasureDim, StateDim > &_H) |
| 设置观测转换矩阵 H 更多...
|
|
void | setR (const cv::Matx< Tp, MeasureDim, MeasureDim > &measure_err) |
| 设置测量噪声协方差矩阵 R 更多...
|
|
void | setQ (const cv::Matx< Tp, StateDim, StateDim > &process_err) |
| 设置过程噪声协方差矩阵 Q 更多...
|
|
void | setP (const cv::Matx< Tp, StateDim, StateDim > &state_err) |
| 设置状态误差协方差矩阵 P 更多...
|
|
auto | predict () |
| 卡尔曼滤波的预测部分,包括状态向量的先验估计和误差协方差的先验估计 更多...
|
|
auto | correct (const cv::Matx< Tp, MeasureDim, 1 > &measurement) |
| 卡尔曼滤波器的校正部分,包括卡尔曼增益 K 的计算、状态向量的后验估计和误差协方差的校正 更多...
|
|
template<typename Tp, uint16_t StateDim, uint16_t MeasureDim>
class KalmanFilterX< Tp, StateDim, MeasureDim >
使用 cv::Matx
的轻量级卡尔曼滤波器库
- 模板参数
-
Tp | 数据类型 |
StateDim | 状态向量的维度,类型是 uint16_t |
MeasureDim | The 观测向量的维度,类型是 uint16_t |
◆ KalmanFilterX()
template<typename Tp , uint16_t StateDim, uint16_t MeasureDim>
◆ correct()
template<typename Tp , uint16_t StateDim, uint16_t MeasureDim>
auto KalmanFilterX< Tp, StateDim, MeasureDim >::correct |
( |
const cv::Matx< Tp, MeasureDim, 1 > & |
measurement | ) |
|
|
inline |
卡尔曼滤波器的校正部分,包括卡尔曼增益 K
的计算、状态向量的后验估计和误差协方差的校正
- 参数
-
- 返回
- 后验状态估计
◆ init() [1/2]
template<typename Tp , uint16_t StateDim, uint16_t MeasureDim>
void KalmanFilterX< Tp, StateDim, MeasureDim >::init |
( |
const cv::Matx< Tp, StateDim, 1 > & |
state, |
|
|
const cv::Matx< Tp, StateDim, 1 > & |
error |
|
) |
| |
|
inline |
初始化状态以及对应的误差协方差矩阵(对角矩阵)
- 参数
-
[in] | state | 初始化的状态向量 |
[in] | error | 状态误差矩阵的对角线元素 |
◆ init() [2/2]
template<typename Tp , uint16_t StateDim, uint16_t MeasureDim>
void KalmanFilterX< Tp, StateDim, MeasureDim >::init |
( |
const cv::Matx< Tp, StateDim, 1 > & |
state, |
|
|
Tp |
error |
|
) |
| |
|
inline |
初始化状态以及对应的误差协方差矩阵(常数对角矩阵)
- 参数
-
[in] | state | 初始化的状态向量 |
[in] | error | 状态误差系数 |
◆ predict()
template<typename Tp , uint16_t StateDim, uint16_t MeasureDim>
卡尔曼滤波的预测部分,包括状态向量的先验估计和误差协方差的先验估计
- 返回
- 先验状态估计
◆ setA()
template<typename Tp , uint16_t StateDim, uint16_t MeasureDim>
void KalmanFilterX< Tp, StateDim, MeasureDim >::setA |
( |
const cv::Matx< Tp, StateDim, StateDim > & |
_A | ) |
|
|
inline |
设置状态转移矩阵 A
- 注解
- 包含
x
方向位置、y
方向位置、x
方向速度和 y
方向速度的运动过程一般可以描述为
\[\left\{\begin{array}{rl}x_{n+1}&=&x_n+v_{x_n}t\\y_{n+1}&=&y_n+v_{y_n}t\\v_{x_{n+1}}&=& v_{x_n}\\v_{y_{n+1}}&=&v_{y_n}\end{array}\right.\]
Using the matrix formula denoted as
\[\begin{bmatrix}x_{n+1}\\y_{n+1}\\v_{x_{n+1}}\\v_{y_{n+1}}\end{bmatrix}= \begin{bmatrix}1&0&t&0\\0&1&0&t\\0&0&1&0\\0&0&0&1\end{bmatrix} \begin{bmatrix}x_n\\y_n\\v_{x_n}\\v_{y_n}\end{bmatrix}\]
Which is \(X_{n+1}=AX_n\). 在这条公式中,矩阵 \(A\) 被称为状态转移矩阵
- 参数
-
◆ setH()
template<typename Tp , uint16_t StateDim, uint16_t MeasureDim>
void KalmanFilterX< Tp, StateDim, MeasureDim >::setH |
( |
const cv::Matx< Tp, MeasureDim, StateDim > & |
_H | ) |
|
|
inline |
设置观测转换矩阵 H
- 注解
- 若状态向量包含以下内容: \([p, v, a]\) ,然而观测向量仅包含 \([p, v]\), 在这种情况下,需要使用一个观测转换矩阵 \(H_{2\times3}\)。在上述例子中克表示为
\[\begin{bmatrix}p\\v\end{bmatrix}=\begin{bmatrix}1&0&0\\0&1&0\end{bmatrix} \begin{bmatrix}p\\v\\a\end{bmatrix}\]
- 参数
-
◆ setP()
template<typename Tp , uint16_t StateDim, uint16_t MeasureDim>
void KalmanFilterX< Tp, StateDim, MeasureDim >::setP |
( |
const cv::Matx< Tp, StateDim, StateDim > & |
state_err | ) |
|
|
inline |
◆ setQ()
template<typename Tp , uint16_t StateDim, uint16_t MeasureDim>
void KalmanFilterX< Tp, StateDim, MeasureDim >::setQ |
( |
const cv::Matx< Tp, StateDim, StateDim > & |
process_err | ) |
|
|
inline |
设置过程噪声协方差矩阵 Q
- 参数
-
[in] | process_err | 过程噪声协方差矩阵 Q |
◆ setR()
template<typename Tp , uint16_t StateDim, uint16_t MeasureDim>
void KalmanFilterX< Tp, StateDim, MeasureDim >::setR |
( |
const cv::Matx< Tp, MeasureDim, MeasureDim > & |
measure_err | ) |
|
|
inline |
设置测量噪声协方差矩阵 R
- 参数
-
[in] | measure_err | 测量噪声协方差矩阵 R |
该类的文档由以下文件生成: