RMVL  1.0.0
RoboMaster Vision Library
Public 成员函数 | 所有成员列表
KalmanFilterX< Tp, StateDim, MeasureDim > 模板类 参考

使用 cv::Matx 的轻量级卡尔曼滤波器库 更多...

#include <rmvl/core/kalman.hpp>

类 KalmanFilterX< Tp, StateDim, MeasureDim > 继承关系图:
KalmanFilterX< Tp, StateDim, MeasureDim > 的协作图:

Public 成员函数

 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
MeasureDimThe 观测向量的维度,类型是 uint16_t

构造及析构函数说明

◆ KalmanFilterX()

template<typename Tp , uint16_t StateDim, uint16_t MeasureDim>
KalmanFilterX< Tp, StateDim, MeasureDim >::KalmanFilterX ( )
inline

构造新的 KalmanFilterX 对象

成员函数说明

◆ 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 的计算、状态向量的后验估计和误差协方差的校正

参数
[in]measurement观测向量
返回
后验状态估计

◆ 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>
auto KalmanFilterX< Tp, StateDim, MeasureDim >::predict ( )
inline

卡尔曼滤波的预测部分,包括状态向量的先验估计和误差协方差的先验估计

返回
先验状态估计

◆ 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\) 被称为状态转移矩阵
参数
[in]_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}\]

参数
[in]_H观测转换矩阵

◆ 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

设置状态误差协方差矩阵 P

参数
[in]state_err状态误差协方差矩阵 P

◆ 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

该类的文档由以下文件生成: