卡尔曼滤波器学习笔记(二):随机过程和线性卡尔曼滤波器
随机过程的模型建立 一般地,我们研究的随机过程是一个动态的系统(Dynamical Systems). $$ \frac{d\boldsymbol{x(t)}}{dt}=f(\boldsymbol{x}(t),t,\beta) $$ 其中,$\beta$是系统中设置的参数,$x(t)$是状态向量,加入时间$t$作为参数代表状态向量的取值随时间变化。 为了简化我们对系统的建模,首先把时间和系统参数对系统迭代的影响忽略掉,简化上面的等式: $$ \frac{d\boldsymbol{x}(t)}{dt}=f(\boldsymbol{x}(t)) \label{eq1}\tag{1} $$ ($\ref{eq1}$)是连续系统的描述,更常见的是离散系统,我们把时间离散化,得到: $$ \boldsymbol{x}_{k+1}=F(\boldsymbol{x}_k) \label{eq2}\tag{2} $$ 上面的等式仍然不是很理想,因为经常性的,$F$是一个非线性的函数,对计算机来说,很难迭代地处理这样的函数,而且我们也很难给出$F$准确的函数表达式。 那么,需要对($\ref{eq2}$)进行改写,在改写的过程中,考虑控制量的引入$\boldsymbol{u}$,如果系统建模方程中有高阶的导数,可以通过定义新的高阶导数作为变量组成维数更多的状态向量来降低阶数,最终得到个一阶的微分方程。这里具体怎么做就不展开了,并不属于这篇文章的重点内容,我们先直接使用结论。 $$ \boldsymbol{\dot x}=A\boldsymbol{x}+B\boldsymbol{u}+\boldsymbol{w} \label{eq3}\tag{3} $$ ($\ref{eq3}$)描述的是系统在当前状态下,下一时刻会如何改变,是一个一阶的微分方程组(因为状态向量是多维度的),但是这样的方程组也不是我们想要的,我们期望是可以根据前一时刻的状态直接线性运算得到后一时刻的预测状态。 状态转移方程 ($\ref{eq3}$) 描述的是下一时刻系统状态的增长或者是变化和当前的状态有什么关系,假如没有加入人为的控制,比如,让一个倒立摆自由运动,不提供平衡的直线运动单元,那么这个系统的一些特性,比如可控性,稳定性都可以通过研究$A$的特征值和特征向量来快速得到。 加入人为的控制量$\boldsymbol{u}$可以改变系统的特性,按照我们的期望来改造,Brunton老师说得是manipulate。在动态系统的控制领域,对矩阵$A$的研究会更多,$A$的学术用语为动态系统矩阵(System Dynamics Matrix),在状态估计领域,我们对状态转移方程更关心。实际系统经常是非线性的,但是在局部我们可以线性化。目前,从一阶微分方程组如何推导出状态转移方程是本次不讨论的内容,但是是有若干种技术去实现。 $$ \boldsymbol{x}_{k+1}=F\boldsymbol{x}_k+B\boldsymbol{u}_k + \boldsymbol{w}_k \label{eq4}\tag{4} $$ ($\ref{eq4}$)中的$F$叫做状态转移矩阵(State Transition Matrix)。 非线性的系统状态转移矩阵是根据系统的雅可比矩阵来确定的,每次迭代都会变。后续需要确认是不是这样。 到目前为止,根据系统的物理定律我们在没有测量的状态下得到系统状态是如何迭代的,但是需要注意($\ref{eq4}$)中的$\boldsymbol{w}_k$:系统噪声。随着时间迭代,我们仅仅使用状态转移方程估计系统状态会越来越不准,因为描述状态的协方差矩阵$Q$会变大。 随机过程的贝叶斯后验概率分布推导 根据第一讲贝叶斯滤波的基本思路,系统迭代的过程中,需要有测量数据做融合,从概率论角度讲就是测量数据$\boldsymbol{Y}$作为随机变量,根据传感器的特性,它的似然概率分布是已知的:$P(Y<y|X)$,那么在预测步骤之后,有状态向量的先验分布$P(X<x)$,那么我们的目标是得到基于两者的后验分布。 在推导之前,需要非常明确这几条: 状态向量迭代的过程虽然是离散的,例如$T_1$, $T_2$时刻的状态,但是在某一时刻的取值仍然是连续的随机变量,我们在第一篇里面得到的结论仍然适用于某一时刻的情况。 在不同的时刻下,先验、后验分布都在变化,先验分布变化是因为系统因为物理、化学等规律随之前的状态产生了新的变化 – 就是由状态转移方程描述的。 后面的公式当中,$f_0(X)$表示在$T=T_0$时刻也就初始时刻的概率密度函数,$P(X_1<x)$是第一次迭代之后的先验概率分布函数,$P(X_1<x|Y_1=y)$是融合了似然概率之后的后验概率分布函数。 状态转移的概率分布推导 第一个需要推导的是如何根据$P(X_0<x)$和($\ref{eq4}$)推导$P(X_1<x)$ 重写($\ref{eq4}$): $$ X_{k+1}=FX_k+Bu_k+W_k \label{eq5}\tag{5} $$ ($\ref{eq5}$)可以理解成对随机变量进行逻辑运算,后面会使用到。 对$P(X_1<x)$进行全概率公式展开: $$ P(X_1<x)=\lim_{\epsilon \to 0} \Sigma_{a=-\infty}^{a=x} P(a<X_1<a+\epsilon) \label{eq6}\tag{6} $$ $$ \lim_{\epsilon \to 0}P(a<X_1<a+\epsilon)=\lim_{\epsilon \to 0}\int_{v=-\infty}^{v=\infty} P(a<X_1<a+\epsilon|X_0=v)f_{X_0}(v)dv \label{eq7}\tag{7} $$ ...