datetime:2024/6/16 16:07
author:nzb
Kalman Filtering(卡尔曼滤波)
入门
^表示估计值
-表示先验估计值
引入
适用系统:线性高斯系统
线性:满足叠加性和齐次性

高斯:噪声满足高斯分布(正态分布)
μ:均值σ:方差
宏观意义:滤波即加权
- 理想状态:信号 1 + 噪声 0
- 低通滤波:低频信号 1 + 高频信号 0
- 因为大多情况下高频信号一般为噪声
- 卡尔曼滤波:估计值 (权重) + 观测值 (权重)
进阶
状态空间表达式(跟卡尔曼滤波方程相似)
状态方程
- :当前状态的当前值
- :状态转移矩阵,即当前状态上一刻的值乘上某种关系作用到
- : 上一时刻该状态的值
- : 控制矩阵,即输入乘上某种关系作用到
- : 输入,给到 的输入
- : 过程噪声
观测方程
- : 要观察的量
- : 乘上某种关系得到你要观察的值
- : 状态量
- : 观测噪声
示例

举个例子看一下,这个是火炉对水加温, 那么这个蓝色的点呢就是水温的状态,这个红色是温度计,那么温度计是一个传感器, 输出是一个yk,就是水温的值,那么很明显,这个时候这个C就是1。 然后这边有一个误差,温度计也有误差,所以它输出的是观测方程下红色的那个方程, 然后这边水温假设它是一个线性变化的,那么这个时候b乘uk就相当于得塔,每一时刻会增加多少度的温度, 然后我们在这边的过程噪声也可以考虑进去,因为除了火炉对水加热之外, 还有外面的环境,会影响它,所以它的过程温度并不是那么理想,然后这个要加一个过程噪声, 然后这边是一个当前的水的温度值,温度值的话是基于之前的水温的,那么这个时候A只要取一个单位矩阵就好了。 所以这个为状态方程下红色的方程,那么用一个方框图来表示如上图所示。
高斯分布
直观图解

参数分析
- 高斯白噪声: 和
- ;过程噪声,符合正态分布,均值为0,方差为
- :观测噪声,符合正态分布,均值为0,方差为
- 示例:解释 和 定义
GPS检测到一辆车的position,开了1000m,但是GPS还是有精度误差的,所以为1000 ± δ mδ就为噪声(误差),则δ符合正态分布,方差为1m噪声(假设),所以
- 示例:解释 和 定义
- 假设有一个滑板,假设速度为
5m/s,由于风的作用,所以变成了5m/s ± δ m/s δ就为噪声(误差),则- 假设
δ符合正态分布,方差为1m/s噪声(假设),所以
- 假设有一个滑板,假设速度为
方差
- 一维方差
- 过程和观测方差: 和
- 状态(估计值)方差:,一个值,该状态也符合正态分布
- 二维协方差
- 多维协方差矩阵
C
- 一维方差
- 高斯白噪声: 和
超参数:
Q、R,相当于调PIDQ:过程噪声方差R:观测噪声方差- 主要就是调这两个参数
卡尔曼直观图解

x轴为位置,y轴为概率密度- :无横杆,表示最优估计值,也叫修正值,后验估计值,卡尔曼滤波输出的值
- :先验估值值,基于最优估计值得出的
- :观测值,相当于直接等于
x_{k},传感器直接测量出来的值 - :当前时刻的最优估计值,明显方差更小,因为滤波次数过多,方差变小,趋于稳定
- 当前的最优估计值是由:先验估计值 和 当前的观测值取公有的部分得到一个最优的值
放弃
卡尔曼公式理解
实现过程:使用上一次的最优结果(先验估计)预测当前的值,同时使用观测值(传感器的值)修正当前值,得到最优结果
- 预测
- 基于之前的最优估计推出当前阶段的先验估计
- 协方差公式,对应上面的 的协方差矩阵
更新
- 最优估计(估计值+观测值),先验估计 加上卡尔曼增益乘上观测值减去先验估计值, 为观测值
- 后验估计协方差矩阵更新,基于原来预测估计的协方差矩阵乘以一个因子得出
示例

先验估计
先验估计协方差:
- 是由上面先验估计得出的,
Q是上面先验估计的过程噪声- 通常:
cov(x, x) = Var(x) - 通常:
cov(Ax, Ax) = Acov(x,x)A^T - 通常:
cov(Ax+k, Ax+k) = Acov(x,x)A^T,k为常数 - 化简就是最初的先验估计协方差公式
- 通常:
- 是由上面先验估计得出的,
测量方程:
Z_v取0是为了凑维度,H和后面那个矩阵可以写成[[1,0][0,0]]
状态更新


调节超参数
Q与R的取值
- 公式层面理解
- 当需要更信任观测值(观测值也有噪声)的时候,K就需要增大,R越小,K越大,越相信观测值
- 当运动模型很完美,更相信估计值,需要K小,则Q小一点,R大一点
- 其他层面理解
- Q:过程噪声,如果运动模型非常完美,比如小车在光滑地面,没有风阻,这个时候运动模型基本没有噪声,则Q可以小一点,否则大一点
- R:观测噪声,根据传感器觉得,如果精度不高噪声大,R需要大一点
- 公式层面理解
和 的取值
- 比较随意,经过迭代后期会趋于稳定值
- 习惯取 ,P0往小的取,方便收敛(一般取1,不可为0)
卡尔曼滤波的使用
- 选择状态量,观测量
- 构建方程
- 初始化参数:
Q,R,P0,x0 - 代入公式迭代
- 调节超参数:
Q,R,需要多次人工调节
精通
卡尔曼滤波公式回顾

- 离散控制系统不需要滤波
机器人应用举例
陀螺仪滤波
- 选择状态量,观测量
- 明确一下参数
- 陀螺仪噪声协方差:
Q_angle,对应状态量的angle - 陀螺仪漂移噪声协方差:
Q_gyro,对应状态量的Q_bias - 角度测量噪声协方差:
R_angle,对应观测量的new_angle - 陀螺仪测得的角速度:
newGyro - 采样周期:
dt
- 陀螺仪噪声协方差:
- 明确一下参数
- 构建方程
- 预测当前角度
- 预测协方差矩阵
- 已知
Q和A了,怎么得出协方差方程?- 设上一次预测协方差矩阵P_k-1为
- 本次预测协方差矩阵P_k为
- 代入预测里面的协方差公式
- 代码:
P为2x2矩阵


- 预测当前角度
- 初始化参数:
Q,R,P0,x0 - 代入公式迭代
- 调节超参数:
Q,R,需要多次人工调节
视频目标跟踪器
选择状态量,观测量
状态方程
- 状态量
x:box中心点的x坐标y:box中心点的y坐标w:box宽h:box高dx:中心点x坐标变化量(速度)dy:中心点y坐标变化量(速度)
- 状态转移矩阵
A - 控制输入矩阵
B=0(零矩阵) - 过程噪声:来自于目标移动的不确定性(突然加速、减速、转弯等)
- 状态量
观测方程
t时刻的最优估计值与t+1时刻所有框,IOU最大的,最为t+1时刻的观测值- 得到所有观测值
x, y, w, h, dx, dydx = x - x^-(当前时刻 - 上一时刻)dy = y - y^-(当前时刻 - 上一时刻)
- 状态观测矩阵
H=E - 观测噪声:来自于检测框丢失、重叠、不准确等
- 如果
IOU匹配失败,使用上一次的最优估计值直接作为观测值- 此时每帧更新一次状态,直到在
t+n帧找到匹配框
- 此时每帧更新一次状态,直到在