我在搜索示例,但所有示例都太难理解了。如何通过一个简单的示例(例如位置估计,传感器融合或其他方法)逐步进行工作?
#1 楼
我将不带太多数学知识就为您提供高级概述。这样做的目的是使您对正在发生的事情有一个直观的了解,希望这将有助于更多的数学资源更有意义。我将主要关注无味的转换以及它与UKF的关系。随机变量
好吧,首先需要了解的是现代(移动)机器人技术是概率性的;也就是说,我们用随机变量表示不确定的事物。我已经在我的个人网站上写过关于这个主题的文章,强烈建议您查看一下以进行审查。我将在这里简单介绍一下。
以机器人的(一维)位置为例。通常,我们使用传感器(例如车轮编码器,激光扫描仪,GPS等)来估算位置,但是所有这些传感器都是有噪声的。换句话说,如果我们的GPS告诉我们在$ x = 10.2 $ m处,则该测量存在一些不确定性。我们对这种不确定性建模的最常见方法是使用高斯(也称为正态)分布。高斯分布的概率密度函数(现在不必担心这意味着什么)如下所示:
在$ x $轴上是不同的值为您的随机变量。例如,这可能是机器人的一维位置。平均位置用$ \ mu $表示,标准偏差用$ \ sigma $表示,这是应用于平均值的一种“加/减”。因此,我们不是说“机器人的位置是$ x = 9.84 $ m”,而是说“我们估计的机器人位置的平均值是$ x = 9.84 $ m,标准偏差为$ 0.35 $ m”。 。
在$ y $轴上是该值出现的相对可能性。例如,请注意,$ x = \ mu $的相对可能性约为$ 0.4 $,而$ x = \ mu-2 \ sigma $的相对可能性约为$ 0.05 $。并像上面的示例一样,假设$ \ mu = 9.84 $ m和$ \ sigma = 0.35 $ m。这意味着
$$
\ mu = 9.84 \ text {m},\ quad \ mu-2 \ sigma = 9.84-2(0.35)= 9.14 \ text {m}
$$
$ y $轴值告诉您的是,机器人到达$ 9.84 $的可能性是$ 9.14 $的八倍,因为它们的可能性之比为$ 0.4 / 0.05 = 8 $。
本节的重点是我们最感兴趣的东西(例如位置,速度,方向)是随机变量,最经常用高斯分布表示。 />
通过函数传递随机变量
高斯随机变量的一个有趣特性是,将一个线性函数传递给线性函数的结果是一个高斯随机变量。因此,如果我们有一个像
$$
y = 12x-7
$$
的函数,并且$ x $是一个高斯随机变量,那么$ y $也是高斯随机变量(但均值和标准差不同)。另一方面,此属性不适用于非线性函数,例如
$$
$$
在这里,通过函数传递高斯随机变量$ x $会导致非高斯分布$ y $。换句话说,$ y $的PDF形状看起来不像上面的图。但是,“通过函数传递高斯随机变量”是什么意思。换句话说,我在上面的方程式中为$ x $输入什么?如上图所示,$ x $具有许多可能的值。
和以前一样,假设$ x $的均值$ \ mu = 9.84 $ m,标准偏差$ \ sigma = 0.35 $ m。我们对将$ y $近似为高斯随机变量感兴趣。一种方法是针对不同的$ x $ s计算一整堆$ y $ s。让我们为$ x = \ mu $,$ x = \ mu + 0.1 \ sigma $,$ x = \ mu-0.1 \ sigma $,$ x = \ mu + 0.2 \ sigma $等计算$ y $。 ve在下面列出了一些结果。
$$
\ begin {array} {| c | c |}
x&y = 3 \ sin(x)-2x ^ 2 \\
\ hline
\ mu&-194.5 \\
\ mu + 0.1 \ sigma&-195.9 \\
\ mu-0.1 \ sigma&-193.0 \\
\ mu + 0.2 \ sigma和-197.3 \\
\ mu-0.2 \ sigma和-191.6 \\
\ vdots和\ vdots \\
\ mu + 10 \ sigma &-354.5 \\
\ mu-10 \ sigma和-80.3
\ end {array}
$$
尽管$ y $的值不形成高斯分布,我们通过取所有$ y $值的均值来创建一个以得到$ \ mu_y $(在这种情况下,$ \ mu_y = -201.8 $),然后我们以通常的方式计算标准差:
$$
\ sigma_y = \ sqrt {\ frac {1} {n-1} \ sum_ {i = 1} ^ n(y_i- \ mu_y)^ 2} = 81.2。
$$$
太好了!我们提出了一种通过非线性函数传递高斯随机变量的方法。问题解决了吧?嗯不一定。我们的解决方案需要大量的计算,因此当我们的数据每秒流传输很多次时,以这种方式解决问题是不可能的。我们如何选择$ x $的价值分布如何?为什么我们停在$ \ mu \ pm 10 \ sigma $?
无味变换
无味变换是一种通过非线性函数传递高斯分布的方法。它与我上面描述的蛮力方法没有什么不同。实际上,它使用完全相同的方法,但是对于如何选择要通过非线性函数传递的$ x $值确实很聪明。
实际上,对于我描述的问题,无味转换要求您通过非线性函数恰好传递三个点(称为sigma点):
$$
x = \ mu,\ quad x = \ mu + \ alpha \ mu,\ quad x = \ mu-\ alpha \ mu,
$$$
其中$ \ alpha $取决于随机变量的维数(一个在这种情况下)和其他比例因子。换句话说,您通过非线性函数传递平均值和平均值两侧的一个点。然后,您可以计算结果的平均值和标准差,以随机变量的形式近似$ y $。回顾一下卡尔曼滤波器,您会回想起基本上有两个步骤:预测和校正。在预测步骤中,您将拥有一个运动模型,该模型可以及时传播状态。它可能看起来像
$$
x_ {k + 1} = f(x_k,u_k)
$$
其中$ u_k $是输入,$ x_k $和$ u_k $都是(高斯)随机变量。现在在常规卡尔曼滤波器中,$ f(x_k,u_k)$是线性函数,其结果是$ x_ {k + 1} $是高斯随机变量。但是,$ f(x_k,u_k)$通常是非线性的。那么我们该怎么办?我们计算sigma点,将它们传递到运动模型中,然后计算结果的均值和方差。这为我们提供了作为高斯随机变量的$ x_ {k + 1} $的近似估计值。
校正步骤的工作方式大致相同。这次您有一个类似如下的测量模型:
摘要
状态(我们正在估计)和测量值来自“真实”传感器,这些传感器都有噪声。我们通过将其表示为高斯随机变量来对这种不确定性进行建模。
通过线性函数传递高斯随机变量会导致其他高斯随机变量。不能通过非线性函数传递它们。
一种近似估计将高斯随机变量作为非线性非线性函数传递给高斯随机变量的结果的方法是在多个不同点对输入变量进行采样,然后将它们传递给非线性函数,然后将结果输出的均值和标准差视为高斯分布。
无味变换从输入变量的分布中策略性地选择了点,这些点保留了有关分布的最多信息,并将它们传递给非线性函数,然后计算输出的平均值和标准偏差。
无味卡尔曼滤波器使用无味变换将高斯随机变量传递给运动和测量模型。
评论
$ \ begingroup $
非常有帮助的直觉。我希望对无味变换估计的高斯分布如何导致状态更新的估计有进一步的处理。 (即,根据对高斯分布的变换来解释卡尔曼滤波器。)
$ \ endgroup $
–于申
17年7月27日在13:24