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,相当于调PID

    • Q:过程噪声方差
    • 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^Tk为常数
          • 化简就是最初的先验估计协方差公式
    • 测量方程:Z_v取0是为了凑维度,H和后面那个矩阵可以写成[[1,0][0,0]]

    • 状态更新

调节超参数

  • QR的取值

    • 公式层面理解
      • 当需要更信任观测值(观测值也有噪声)的时候,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
  • 构建方程
    • 预测当前角度
    • 预测协方差矩阵
      • 已知QA了,怎么得出协方差方程?
        • 设上一次预测协方差矩阵P_k-1为
        • 本次预测协方差矩阵P_k为
        • 代入预测里面的协方差公式
        • 代码:P2x2矩阵
  • 初始化参数:Q,R,P0,x0
  • 代入公式迭代
  • 调节超参数:Q,R,需要多次人工调节

视频目标跟踪器

选择状态量,观测量
  • 状态方程

    • 状态量
      • xbox中心点的x坐标
      • ybox中心点的y坐标
      • wbox
      • hbox
      • dx:中心点x坐标变化量(速度)
      • dy:中心点y坐标变化量(速度)
    • 状态转移矩阵 A
    • 控制输入矩阵B=0(零矩阵)
    • 过程噪声:来自于目标移动的不确定性(突然加速、减速、转弯等)
  • 观测方程

    • t时刻的最优估计值与t+1时刻所有框,IOU最大的,最为t+1时刻的观测值
    • 得到所有观测值x, y, w, h, dx, dy
      • dx = x - x^-(当前时刻 - 上一时刻)
      • dy = y - y^-(当前时刻 - 上一时刻)
    • 状态观测矩阵H=E
    • 观测噪声:来自于检测框丢失、重叠、不准确等
    • 如果IOU匹配失败,使用上一次的最优估计值直接作为观测值
      • 此时每帧更新一次状态,直到在t+n帧找到匹配框

代码请看

results matching ""

    No results matching ""