截至目前,我们已经讲述了预测部分的算法,即两个卡尔曼滤波预测方程:
现在开始,我们将讲述当前时刻的算法。先从测量方程开始。
在“一维卡尔曼滤波”一章中,我们把测量值记为 \( z_{n} \).
测量值表示一个真实系统状态值和测量设备引入的随机测量噪声 \( v_{n} \) 的叠加。
测量噪声方差 \( r_{n} \) 对每次测量可以是常量 - 比如,精度为0.5kg的秤(标准差)。另一方面方差也可能是变化的 - 例如一个0.5%精度的温度计,其测量噪声方差依赖于当前的测量值(越大越不准)。
矩阵形式的一般情况测量方程如下:
\( \boldsymbol{z}_{n} \) | 是测量向量 |
\( \boldsymbol{x}_{n} \) | 是真实系统状态量(隐藏状态) |
\( \boldsymbol{v}_{n} \) | 是随机噪声向量 |
\( \boldsymbol{H} \) | 是 观测矩阵 |
在许多场景中,测量值不是希望获取的系统状态。例如一个数字电子温度计测量到是电流,而系统状态是温度,这隐含了一个从系统状态(输入)到测量值(输出)的变换。
观测矩阵 \( \boldsymbol{H} \) 的意义就是以线性变换的形式,将系统状态变换到测量输出。后面章节会涉及到观测矩阵的使用。
测距仪向目标发射一个信号并接收对应的回波,测量值是发送和接收之间的时间差,系统状态是距离。
这个场景中,我们需要对状态做比例运算(乘以系数):
\[ \boldsymbol{z}_{n} = \left[ \begin{matrix} \frac{2}{c}\\ \end{matrix} \right] \boldsymbol{x}_{n} + \boldsymbol{v}_{n} \]
\[ \boldsymbol{H} = \left[ \begin{matrix} \frac{2}{c}\\ \end{matrix} \right] \]
式中:
\( c \) 是光速
\( \boldsymbol{x}_{n} \) 是距离
\( \boldsymbol{z}_{n} \) 是测量的时间差
有时只有部分状态可被测量(能观测),而其余的不行。例如下面例子中,第1、3、5个状态是可观的,而第2、4个状态不可观:
\[ \boldsymbol{z}_{n} = \boldsymbol{Hx}_{n} + \boldsymbol{v}_{n} = \left[ \begin{matrix} 1 & 0 & 0 & 0 & 0\\ 0 & 0 & 1 & 0 & 0\\ 0 & 0 & 0 & 0 & 1\\ \end{matrix} \right] \left[ \begin{matrix} {x}_{1}\\ {x}_{2}\\ {x}_{3}\\ {x}_{4}\\ {x}_{5}\\ \end{matrix} \right] + \boldsymbol{v}_{n} = \left[ \begin{matrix} {x}_{1}\\ {x}_{3}\\ {x}_{5}\\ \end{matrix} \right] + \boldsymbol{v}_{n} \]
有时只能测量部分状态的组合,而不能单独测量每一个状态。例如,一个三角形的三边长是系统状态,但只有其周长可以被测量:
\[ \boldsymbol{z}_{n} = \boldsymbol{Hx}_{n} + \boldsymbol{v}_{n} = \left[ \begin{matrix} 1 & 1 & 1 \\ \end{matrix} \right] \left[ \begin{matrix} {x}_{1}\\ {x}_{2}\\ {x}_{3}\\ \end{matrix} \right] + \boldsymbol{v}_{n} = ({x}_{1} + {x}_{2} + {x}_{3}) + \boldsymbol{v}_{n} \]
下表明确了测量方程中各个量的维度:
变量 | 描述 | 维度 |
---|---|---|
\( \boldsymbol{x} \) | 状态向量 | \( n_{x} \times 1 \) |
\( \boldsymbol{z} \) | 输出向量 | \( n_{z} \times 1 \) |
\( \boldsymbol{H} \) | 观测矩阵 | \( n_{z} \times n_{x} \) |
\( \boldsymbol{v} \) | 测量噪声向量 | \( n_{z} \times 1 \) |