分类于: Robotics
关键词: 概率机器人

概率机器人无迹卡尔曼滤波

在卡尔曼滤波和扩展卡尔曼滤波中。我们都是使用的一阶矩和二阶矩来表示状态的置信度。无迹卡尔曼滤波是采用的另一种 线性方法 来表示状态的置信度——加权统计线性回归。

无迹变换

个人理解,其实无迹卡尔曼滤波的目的是运用统计学的方法来表示。

无迹变换

利用概率机器人里面的图来说明,假设一维高斯分布的均值为 $\mu$$\sigma$ ,取 $\sigma$ 点来表示高斯分布。这些 $\sigma$ 点位千均值处及对称分布于主轴的协方差处(每维2个)。然后再经过函数 $g$ 进行变换。

对于具有均值 $\mu$ 和方差 $\Sigma$$n$ 维高斯分布,结果 $2n + 1$$\sigma$$\chi^{[i]}$ 根据如下规则进行选择:

$$ \begin{align} \chi^{[0]} &= \mu \\ \chi^{[i]} &= \mu + {(\sqrt{(n + \lambda) \Sigma})}_i & i&=1,...,n \\ \chi^{[i]} &= \mu + {(\sqrt{(n - \lambda) \Sigma})}_i & i&=n+1,...,2n \\ \lambda &= \alpha^2(n+\kappa)-n \end{align} $$

上式中 $\alpha$$\kappa$ 是确定 $\sigma$ 点分布在均值多远范围内的比例参数。

获得 $\chi$ 点后,通过函数 $g$ 可以获得对应的 $y$ 值。然后通过 $y$ 值,可以获取后验概率的均值矩阵和协方差矩阵。

$y$ 的获取可以通过下列的式子获得:

$$ \begin{align} y^{[i]} &= g(\chi^{[i]}) \end{align} $$

由获得的 $y^{[i]}$ 通过下面的式子,可以获得后验概率的均值矩阵和协方差矩阵。

$$ \begin{align} \mu^{'} &= \sum_{i=0}^{2n} w_m^{[i]} y^{[i]}\\ \Sigma^{'} &= \sum_{i=0}^{2n} w_c^{[i]} (y^{[i]} - \mu^{'})(y^{[i]} - \mu^{'})^T \end{align} $$

其中,参数 $w_m^{[i]}$$w_c^{[i]}$ 的计算按照下面的式子计算:

$$ \begin{align} w_m^{[0]} &= \frac{\lambda}{n+\lambda}\\ w_c^{[0]} &= \frac{\lambda}{n+\lambda} + (1- \alpha^2 + \beta)\\ w_m^{[i]} &= w_c^{[i]} = \frac{1}{2(n+\lambda)} & i = 1,...,2n \end{align} $$

选择参数 $\beta$ 对高斯表示的附加的分布信息进行编码。如果分布式精确的高斯分布,则 $\beta = 2$ 是最佳选择。

无迹卡尔曼滤波算法

$$ \begin{align} \chi_{t-1} &= (\mu_{t-1},\mu_{t-1}+\gamma\sqrt{\Sigma_{t-1}},\mu_{t-1}-\gamma \sqrt{\Sigma_{t-1}})\\ \chi_t^{ * } &= g(u_t, \chi_{t-1})\\ \overline{\mu}t &= \sum^{2n}w_m^{[i]}\overline{\chi}t^{ * } \\ \overline{\Sigma_t} &= \sum^{2n} w_c^{[i]}(\overline{\chi}t^{ [i]}-\overline{\mu}_t)(\overline{\chi}_t^{ [i]}-\overline{\mu}_t)^T+R_t\\ \overline{\chi} &= (\overline{\mu}{t-1},\overline{\mu}+\gamma\sqrt{\Sigma_{t-1}},\overline{\mu}{t-1}-\gamma\sqrt{\Sigma})\\ \overline{Z}t &= h(\overline{\chi}_t)\\ \hat{z}_t &= \sum^{2n} w_m^{[i]} \bar{Z_t^{[i]}}\\ S_t &= \sum_{i=0}^{2n} w_c^{[i]}(\bar{Z}t^{[i]} - \hat{z}_t)(\bar{Z}_t^{[i]} - \hat{z}_t)^T + Q_t\\ \bar{\Sigma}_t^{x,z} &= \sum^{2n} w_c^{[i]} (\bar{Z}_t^{[i]} - \hat{z}_t)(\bar{Z}_t^{[i]} - \hat{z}_t)^T\\ K_t &= \bar{\sum_t^{x,z}}S_t^{-1}\\ \mu_t &= \bar{\mu_t} + K_t(z_t - \hat{z}_t)\\ \Sigma_t &= \hat{\Sigma}_t - K_tS_tK_t^T \end{align} $$

概率机器人在这里只是说明了简单的算法,并没有对无迹卡尔曼滤波进行相关的数学推导。参考资料可以查找van der Merve(2004)的文献中找到相关的资料。

参考文献

[1]Julier S J.The scaled unscented transformation.In:Proceeding of the American Control Conference. Washington D. C., USA: IEEE, 2002. 4555-4559. [2]概率机器人。