自动驾驶 9-6: EKF 的替代方案 - 无迹卡尔曼滤波器
Posted AI架构师易筋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动驾驶 9-6: EKF 的替代方案 - 无迹卡尔曼滤波器相关的知识,希望对你有一定的参考价值。
在上一个视频中,我们看到了线性化误差是如何产生的 导致 EKF 产生状态估计, 与国家的真正价值大相径庭, 和协方差不 准确捕捉状态的不确定性。
当我们依赖时,这可能是一个大问题 安全关键应用中的 EKF 比如自动驾驶汽车。
在本课中,您将了解 无迹卡尔曼滤波器, 这是一种替代方法 到非线性卡尔曼滤波, 依赖于一种叫做 Unscented Transform 的东西, 通过概率分布 通过非线性函数。
正如我们将看到的 Unscented Transform 给我们的 准确率远高于 分析 EKF 风格的线性化, 对于类似的计算量, 并且不需要计算任何雅可比行列式。
所以在这个视频的最后, 您将能够使用 Unscented Transform 通过概率分布 通过非线性函数, 描述无迹卡尔曼滤波器或 UKF 如何 使用 Unscented Transform 预测和校正步骤, 并解释 UKF 相对于 EKF 的优势, 以及将该 UKF 应用于 一个简单的非线性跟踪问题。
Unscented Transform 背后的直觉很简单。
通常更容易 近似概率分布, 比近似 任意非线性函数。
让我们考虑一个简单的例子,其中 一维高斯分布, 就像左边那个 通过非线性函数转化为 更复杂的一维分布 就像右边那个。
我们已经知道均值和标准差 输入高斯的, 我们想弄清楚 均值和标准差 输出分布使用 这个信息和非线性函数。
Unscented Transform 为我们提供了一种方法。
基本思想在 Unscented Transform 分为三个步骤。
- 首先,我们选择一组 来自我们输入分布的样本点。 现在这些不是随机样本, 它们是选择的确定性样本 一定数量的标准差 远离平均值。 出于这个原因,样本被称为西格玛点, 无味变换是 有时称为 Sigma 点变换。 一旦我们有了一组精心挑选的西格玛点,
- 第二步也是最简单的一步是通过 通过我们的非线性函数的每个 sigma 点, 产生一组新的 sigma 点属于输出分布。
- 最后,我们可以计算样本均值和协方差 输出西格玛点 用一些精心挑选的重量, 这些将给我们一个很好的均值近似值 和真实输出分布的协方差。
现在你已经看到了基本的想法 无味变换的, 让我们详细看看这些步骤中的每一个。
你可能想知道的第一件事是, 我们需要多少西格玛点, 哪些点实际上是西格玛点?
一般来说,对于 N维概率分布, 我们需要 2N 加 1 个西格玛点。
一为中庸, 其余部分围绕均值对称分布。
左图显示了 sigma 点 一维和二维的例子。
在 1D 中,我们需要三个 sigma 点, 而在 2D 中,我们需要五个。
确定位置的第一步 西格玛点应该是拿东西 称为 Cholesky 分解 协方差矩阵相关联 与输入分布。
Cholesky 分解基本上是 一个平方根运算 在对称正定矩阵上 比如协方差矩阵。
事实上,如果输入的PDF是一维的, Cholesky 分解真的 只是方差的平方根, 这也称为标准偏差。
我们不会详细介绍如何 计算 Cholesky 分解, 但是你可以在 MATLAB 中使用 chol 函数, 或 NumPy 中的 Cholesky 函数。
一旦我们分解了协方差矩阵, 我们可以选择我们的第一个 sigma 点 是分布的平均值, 剩下的就是 平均加减某个因素 每列的时间 我们从 Cholesky 分解得到的矩阵 L。
这里的 N 值再次是 概率分布的维度。
参数 kappa 是 您可以自由设置的调谐参数。
对于高斯分布 是我们将要处理的, 设置 N 加 kappa 等于 3 是一个不错的选择。
首先,我们需要重绘 我们的信号点使用预测的协方差矩阵。
我们需要第二次这样做,因为我们添加了 在最后一步结束时处理噪音, 这将修改 一些西格玛点的位置。
接下来,我们将插入这些新的 sigma 一一分为 我们的非线性测量模型得到另一组 用于预测测量的 sigma 点。 好的。
所以现在我们有了我们的一组西格玛点。
下一步很简单。 只需通过每个西格玛点 我们的非线性函数得到 一组新的转换后的 sigma 点。
现在剩下的就是重新组合 转换后的西格玛点找到 我们的输出均值和输出协方差。
我们使用标准来做到这一点 样本均值的公式和 你会看到的协方差 你的介绍性统计课程。
诀窍是每个点都得到 平均值中的特定权重 和协方差计算, 这个重量取决于 参数 kappa 和维度 输入分布 N。
这就是它的全部内容。
要查看 Unscented Transform 的实际效果, 让我们回到上一个视频中的示例, 我们对均匀分布进行非线性变换 将极坐标转换为笛卡尔坐标。
让我们看看 Unscented Transform 如何 与分析线性化方法相比。
所以在这里我们又得到了真正的平均值和 绿色的两个分布的协方差。
现在让我们应用 Unscented 变换。
我们输入分布的维度是两个, 所以我们需要五个西格玛点 我们已将其显示为橙色星星。
通过这些西格玛点 我们的非线性函数把它们放在这里。
我们计算的均值和协方差 转换后的 sigma 点 看起来像这样以橙色显示。
请注意,我们对 使用 Unscented 变换的平均值 几乎与真正的非线性均值完全相同, 我们对协方差的估计几乎 完全匹配真正的协方差。
将其与分析线性化变换进行比较 红色的均值和协方差, 两者都非常不同 真实均值和真实协方差。
从这个例子很容易看出, 无味变换给出 我们更好地近似 输出PDF而不需要 比工作多得多 分析线性化方法。
现在我们已经了解了 Unscented 变换的工作原理, 我们可以在卡尔曼滤波中轻松使用它 使用非线性模型的框架, 卡尔曼滤波器的这种变体称为 无味卡尔曼滤波器或 UKF, 你也可能听到它叫 西格玛点卡尔曼滤波器。
UKF 的主要思想是,而不是近似 通过线性化系统方程 他们像 EKF 那样, 我们使用 Unscented Transform 来 直接近似 PDF。
我们来看看UKF的预测步骤。
将状态和协方差传播到 从时间 k 减 1 到时间 k 的运动模型, 我们使用 Uncented Transform 目前最好的猜测 状态的均值和协方差。
首先,我们分解估计的状态协方差 从时间 k 减 1, 然后我们计算我们的西格玛点, 以估计为中心 从时间 k 减去 1 的平均状态。
其次,我们通过传播我们的西格玛点 我们的非线性运动模型得到一个新的集合 预测状态的西格玛点数 在时间 k。
最后,我们计算预测的均值和协方差 时刻 k 的状态。
这一点,重要的是要考虑 通过将其协方差添加到过程噪声 变换后的 sigma 点的协方差 得到最终预测的协方差。
这个等式看起来有点不同,如果 过程噪声不是加性的, 但大多数时候你会处理 在您的模型中添加噪声, 除非有充分的理由不这样做。
对于校正步骤,我们将 遵循类似的程序, 这次使用非线性测量模型。
首先,我们将获取我们得到的一组 sigma 点 从我们的非线性运动模型并将它们插入 我们的非线性测量模型得到另一组 用于预测测量的 sigma 点, 然后我们可以估计均值和 预测测量的协方差, 使用样本均值和协方差公式。
再次注意,我们正在添加 测量噪声协方差得到 预测测量的最终协方差, 还要记住这个公式 仅适用于加性噪声。
为了计算卡尔曼增益, 我们还需要交叉协方差 预测状态之间 和预测的测量值, 它告诉我们如何测量 与国家有关。
您可以使用标准公式计算此值 交叉协方差和使用 和以前一样的重量。
然后,剩下的就是使用 卡尔曼增益以优化校正 的均值和协方差 预测的状态,就是这样。
UKF 也遵循同样的原则 预测校正模式作为 EKF, 但我们刚刚替换了分析线性化步骤 与无味变换。
让我们尝试将 UKF 应用于相同的示例 我们使用 EKF 完成的驾驶场景。
我们再次尝试跟踪 我们正在控制的一辆移动的汽车 踩油门或刹车, 汽车上有一个传感器,可以测量角度 在遥远的地标和地平线之间。
运动模型是线性的,但 测量模型是非线性的, 尝试使用这里给出的数据来估计位置 车辆在时间 1 使用 UKF。
这是 Cholesky 分解 的初始协方差矩阵, 五个西格玛点用于 表示状态及其协方差。
这是预测步骤的结果 为状态的均值。
最后,预测的协方差。
请注意,预测均值和 协方差与我们所拥有的相同 用线性卡尔曼滤波器发现 和扩展卡尔曼滤波器, 这是因为运动模型实际上是线性的。
对于校正步骤, 这些是西格玛点 预测的测量值和 该分布的均值和协方差。
最后,交叉协方差卡尔曼增益和我们的 立场的最终答案 车辆在时间 k 等于 1。
总结一下这个视频, 我们研究了 Uncented Kalman Filter 或 UKF, 它使用 Unscented Transform 来 使卡尔曼滤波器适应非线性系统。
正如我们所见,无味变换 通过传递一小组 通过精心挑选的样品 非线性系统和计算 输出的均值和协方差, 它通常做得更好 近似输出分布比 使用的局部分析线性化技术 EKF 用于类似的计算成本。
让我们回顾一下我们在这个模块中学到的东西。
我们首先讨论线性卡尔曼滤波器, 这是递归最小二乘估计的一种形式 这使我们能够结合来自 带有信息的运动模型 传感器测量以估计车辆状态。
卡尔曼滤波器如下 预测校正架构, 运动模型用于 对状态进行预测, 测量结果用于 对这些预测的修正。
我们还看到卡尔曼滤波器是 最佳线性无偏估计器或蓝色, 那是卡尔曼滤波器是 最好的无偏估计量 仅使用测量值的线性组合。
但当然,线性系统 现实中并不存在, 所以我们需要开发技术 用于处理非线性系统。
在这个模块中,我们看了 非线性卡尔曼滤波的三种不同方法;
扩展卡尔曼滤波器或 EKF, EKF 的错误状态公式, 和无迹卡尔曼滤波器或 UKF。
正如我们所讨论的, 主要区别在于 EKF 依赖于 局部分析线性化为 通过非线性函数传播 PDF, 是否使用完整状态 或错误状态公式。
相比之下,UKF 依赖于 Uncented 变换来处理非线性函数。
对于大多数只是轻微非线性的系统, EKF 会给出准确的结果, 但 UKF 在以下情况下会更准确 线性化误差是 EKF 的一个问题。
错误状态卡尔曼滤波器 介于两者之间。
UKF的最大优势之一 在任何 EKF 公式之上的是 UKF 不要求您 计算非线性模型的任何导数, 这可能容易出现人为错误 或数值不稳定。
最后,在速度方面, EKF 胜出 典型估计问题的一小部分余量, 但总的来说,EKF 和 UKF 需要非常相似的计算量。
由于其准确性和简单性, 我们建议使用 UKF 尽可能在您的项目中使用 EKF。
如果您必须使用 EKF, 我们的建议是使用错误状态公式, 警惕线性化误差, 并格外小心以确保您的雅可比行列式是正确的, 一个很好的口头禅。
现在您已经了解了基本工具 我们需要状态估计, 我们可以开始考虑类型 我们可能会发现的传感器 一辆自动驾驶汽车以及如何 我们可以使用它们来定位车辆。
在下一个模块中, 我们将讨论一对常见的传感器, 惯性测量单元或 IMU 和 全球导航卫星系统或 GNSS。
第 6 课补充阅读:EKF 的替代方案 - 无迹卡尔曼滤波器
补充阅读:EKF 的替代方案 - 无迹卡尔曼滤波器
要了解有关无迹卡尔曼滤波器的更多信息,请查看以下资源:
-
俄勒冈科技研究生院关于非线性估计的无迹卡尔曼滤波器的研究论文(免费)
-
阅读布法罗大学的 Gabriel A. Terejanu 编写的Unscented Kalman 滤波器教程(免费提供)。
-
深入了解Simon Julier 和 Jeffrey Uhlmann 介绍无味卡尔曼滤波器的原始文章。
参考
https://www.coursera.org/learn/state-estimation-localization-self-driving-cars/lecture/voRRb/lesson-6-an-alternative-to-the-ekf-the-unscented-kalman-filter
以上是关于自动驾驶 9-6: EKF 的替代方案 - 无迹卡尔曼滤波器的主要内容,如果未能解决你的问题,请参考以下文章
自动驾驶 9-5: EKF 的局限性 Limitations of the EKF
自动驾驶 9-5: EKF 的局限性 Limitations of the EKF
自动驾驶 9-4: 改进的 EKF - 错误状态扩展卡尔曼滤波器 An Improved EKF - The Error State Extended Kalman Filter
自动驾驶 9-4: 改进的 EKF - 错误状态扩展卡尔曼滤波器 An Improved EKF - The Error State Extended Kalman Filter