理解传感器融合和跟踪,第4部分:用IMM滤波器跟踪单个对象
从系列中:理解传感器融合和跟踪
布莱恩•道格拉斯
本视频描述了我们如何通过相互作用的多模型过滤器估计状态来改进跟踪单个对象。我们将建立一些关于IMM滤波器的直觉,并展示它是如何比单一模型卡尔曼滤波器更好的跟踪算法。
我们讨论了跟踪比定位和定位更难的问题,因为跟踪过滤器可用的信息较少。我们解释了IMM如何弥补信息的不足,并展示了一些模拟结果。
在这个视频中,我们将把我们的重点从估计我们自己系统的状态转移到估计一个远程对象的状态。所以我们从定位和定位的想法转换到单个目标跟踪。弄清楚另一个物体的位置和弄清楚你在哪里并没有什么不同。我们只是试图通过融合传感器和模型的结果来确定状态,比如位置或速度。让跟踪变得更加困难的部分是,我们通常必须用更少的信息来做这件事。但是为了处理一些信息的缺乏,我们可以升级一个单一模型估计滤波器,比如我们在上个视频中使用的标准卡尔曼滤波器,到一个交互的多模型滤波器。在这个视频中,我们将通过展示IMM在跟踪不确定对象时如何实现状态估计来建立一些关于IMM的直觉。如果您以前没有听说过IMM,我希望您能坚持下去,因为我认为这是解决跟踪问题的一种非常棒的方法。我是Brian,欢迎来到MATLAB技术讲座。
在整个视频中,我将展示一些模拟结果,以便在构建IMM过滤器时,您可以看到更改如何影响估计的质量。我用MathWorks的传感器融合和跟踪工具箱中的跟踪机动目标的例子来生成结果。这个例子的基本思想是模拟跟踪一个经过三种不同操作的物体:它在开始时以恒定的速度运动,然后是恒定的转弯,最后以恒定的加速度结束。在脚本中,我们可以设置不同的单个和多个模型过滤器来跟踪这个对象。
为了让你们了解我们的工作方向,我将向你们展示最终结果。左边是典型单模型过滤器的结果,右边是交互多模型过滤器的结果。下图显示了物体的真实位置和估计位置之间的归一化距离。正如你所看到的,IMM在跟踪这个机动物体方面做得更好;通过所有三种机动的归一化距离远低于单一模型解。问题是为什么?是什么让IMM如此特别?为了回答这个问题,我们需要一些背景信息。
估计滤波器,如卡尔曼滤波器,通过预测系统的未来状态,然后用测量纠正该状态来工作。所以我们预测,然后测量和修正。为了进行预测,我们必须给过滤器一个系统模型,它可以用这个模型来估计系统在未来某个时候的位置。然后在未来的某一时刻,系统状态的测量是由一个或多个传感器完成的。我们使用测量状态来修正预测状态基于它和预测的相对置信度。这个混合的结果就是过滤器的输出。
无论我们是估计我们自己系统的状态,还是估计我们跟踪的远程对象的状态,预测和纠正这两步过程都是一样的。然而,对于一个被跟踪的对象,这些步骤中的一个并不像另一个那么容易。
让我们从测量步骤中的差异开始。在上个视频中,我们使用GPS和IMU来测量状态。这些是嵌入在系统中的传感器,我们可以访问它们。通过跟踪,我们通常无法访问系统内的传感器,因此测量需要来自雷达跟踪站或摄像机视觉系统等远程传感器。但是你所使用的传感器并不会改变测量步骤的性质。我们的想法是,我们希望将传感器融合在一起,通过结合每个传感器的优势来相互补充,从而获得良好的整体测量。因此,您可以想象,只要您有正确的传感器组合(远程或本地),那么测量您所控制的系统的状态几乎与测量远程对象的状态完全相同。然而,至少有一个主要的区别,那就是假阳性结果的概念。你得到了一个测量值,但它不是你所追踪的物体;是为了附近的其他东西。 This gets into a data association problem that we’ll talk more about in the next video. For now, assume that we know that we are measuring the object we’re tracking and there’s no confusion there.
那么预测步骤呢?这就是区别所在。预测一个你无法控制的对象的未来状态比预测一个你可以控制的对象要难得多。
让我们用一个例子来演示预测问题。想象一下,一架飞机飞过每隔几秒更新一次的雷达站,你想预测下一次探测到它的位置。假设你是这里的过滤器。你猜猜看?可能就在这里,对吧?在此之前,它是相当一致的,所以它将继续沿着这个轨迹发展是有道理的。现在,如果最后几个测量结果是这样的呢?你可能会假设飞机目前正在转弯,你对继续这种趋势的预测更有信心。那么我们如何将这种直觉编码到过滤器中呢?
好吧,想想这个:运动来自三个方面。第一个是系统的动力学和运动学它将当前状态向前推进,所以飞机已经有了一些速度,所以它将以一种相当可预测的方式向前移动基于飞机在空中飞行的物理特性。第二,运动也来自指令和已知输入系统,增加或删除能量和改变状态;比如调整引擎或控制面。如果飞行员将控制轮向右旋转,那么你就可以正确地假设飞机的状态也向右移动,第三,运动来自于输入到系统中的未知或随机的环境,比如阵风和空气密度的变化。这是我们在预测未来状态时需要考虑的三件事。
那么估计过滤器是如何做到这一点的呢?我们让过滤器以数学模型的形式访问动态。如果这是一个你可以控制的系统,那么过滤器也可以访问控制输入。也就是说,你可以告诉过滤器当你命令系统时,它可以通过模型播放这些命令来更好地预测。现在,系统中的未知输入,以及模型中的不确定性,根据定义是无法知道的,因此它们只会降低预测。我们将这种退化与滤波器过程噪声考虑在内。过程噪声越高,预测的不确定性就越大。
所以如果你是驾驶飞机的人,你知道你不需要对飞机进行任何调整,没有任何控制输入,那么你可以合理地预期飞机将保持当前的速度和方向,所以在红色X处的预测可能非常接近。
但如果你不是在驾驶飞机,而是远程跟踪呢?在这种情况下,我们如何解释控制输入?这取决于我们讨论的是合作跟踪还是非合作跟踪。协作对象与跟踪过滤器共享信息。因此,飞机会将发送给引擎和控制面的命令共享,因此跟踪一个合作对象非常类似于我们自己驾驶它。
然而,不合作的对象不共享它们的控制输入,因此我们必须将它们视为额外的未知干扰。
让我们回顾一下飞机的预测,但这次它不合作。现在,我们怎么处理这个呢?好吧,当我们之前做预测的时候,我们假设不管飞机在做什么运动都是最有可能持续到未来的运动。当然,飞行员可能会改变航线,但至少在很短的时间内,他们可能会保持相同的运动。因此,我们给过滤器的模型应该考虑到我们所期望的运动。如果我们认为飞机是直线飞行,那么模型就应该预测飞机前进的状态。如果我们认为飞机在转弯,模型就应该预测飞机向某个方向旋转的状态。我们会说,选择正确的单一模型是一种预预测决策。
让我们回到MATLAB的例子,看看这个单模型过滤器对机动物体的表现如何。这个过滤器使用的模型是一个匀速模型,所以它是在假设物体继续以固定速度前进的前提下预测未来的状态。如果我们看一下归一化距离,你可以看到当物体以恒定速度运动时,它做得很好,大约有5个单位的误差,但误差在恒定旋转部分急剧增加。我甚至不知道情况有多糟;这是史无前例的。在恒加速度部分大约有30个单位的误差。因此,使用单一模型,如果物体确实进行了运动,我们的预测就很好,但如果模型与现实不符,我们的预测就会失败。
然而,我们可能会说,我们太相信自己的预测了。我们增加了系统中未知的数量,因此对我们的预测应该没有信心。飞机可以转向、减速或加速。我们只是不知道。因此,我们应该通过增加过滤器中的过程噪声来解决这个问题。对预测的信任越少,其副产品就是对修正测量的信任越强。这是有道理的。如果我们很难预测飞机的位置,为什么不直接相信雷达测量结果,而忽略大部分无用的预测呢?让我们回到MATLAB仿真看看这个想法是如何实现的。
在这次运行中,我离开了匀速模型,但提高了过程噪声,你可以清楚地看到有区别。当物体转弯时,误差现在大大改善了30个单位左右,加速度部分也得到了改善。但这是有代价的:匀速部分,也就是我们的模型一开始设定的部分,变得更糟了。
这部分变得更糟了,因为我们更多地依赖于噪声测量。所以如果我们不能相信预测,我们主要依靠传感器测量,那么这个估计滤波器有什么用呢?关键是使用预测来解释一些测量噪声,降低总体不确定性。
这就是我们剩下的问题。我们如何更好地估计一个机动物体的状态比传感器单独测量的能力更好?
答案是:运行不止一个模型。基本上,我们可以认为这是同时运行几个估计滤波器,每个滤波器都有不同的预测模型和过程噪声。其思想是为您期望被跟踪对象参与的每种类型的运动建立一个模型。比如匀速运动,匀速加速度,匀速转弯,等等。只要能涵盖所有可能的动作。
每个模型都预测如果物体跟随特定的运动,它将会在哪里。然后,当我们得到一个测量值时,将它与每一个单一的预测进行比较。由此,我们可以断言哪个模型最有可能代表真实的运动,我们可以在下一个预测周期中更加信任这个模型。这就像人类做预测一样。如果飞机看起来是直线飞行,假设它会一直直线飞行。如果你看到它开始转向,假设这个转向还会持续一段时间。使用这种方法,每当对象转换到新的运动时,都会有一些短暂的误差,但过滤器会很快意识到新模型具有更好的预测,并开始增加其可能性。
这是多模型算法背后的一般思想,但要实现多个模型的交互,还需要一个步骤。
我们目前设置过滤器的方式存在的问题是,每个过滤器都是独立运行的,与其他过滤器隔离开来。这意味着,对于一个不代表真实运动的模型,它将维持自己对系统状态和状态协方差的糟糕估计。然后,当对象改变运动,并且有一个过渡到这个模型,它的坏状态估计和协方差,滤波器将需要一段时间才能再次收敛。因此,通过这种方式,每当有一个过渡到一个新的运动时,当滤波器试图追赶时,暂态周期将比必要的要长。
为了解决这个问题,我们允许模型相互作用。在测量之后,整体过滤器根据最可能模型的混合得到更新的状态和状态协方差。在这一点上,每个过滤器都被重新初始化,并根据状态和协方差的“切换”或“混合”的概率进行混合估计。这是不断改进每个单独的滤波器,以减少其自身的残余误差,即使它不代表物体的真实运动。通过这种方式,IMM过滤器可以切换到单个模型,而不必等待它首先收敛。
现在我们终于可以理解我在视频开始时展示的IMM结果了。这个IMM设置了三个模型:匀速、转弯和加速度,以匹配该物体的三种预期运动。左边的图显示了我们讨论过的不同模型的标准化距离,或误差。这样你就可以同时看到这三种方法的结果。右上方显示了物体的机动轮廓,右下方有一个新的图表显示了IMM中每个模型代表真实运动的可能性。彩色的覆盖只是给你一个视觉上的参考,对象当前正在进行的运动。
让我们开始吧。检查IMM结果。你可以看到三种动作的标准化距离都很低。此外,当物体在做它所预测的运动时,每个模型的可能性是如何飙升的,而运动之间的瞬态时间非常低。因此,只要物体不是不断快速变化的运动,那么这个短暂的误差就不会对估计的整体质量有太大贡献。
这就是我们在追踪不合作的对象时弥补控制输入信息缺失的方法。我们为每个预期的运动建立一个模型,然后建立一个IMM,根据它们代表真实运动的可能性将它们混合在一起。
在结束这个视频之前,我想再讲一件事。你可能会想运行一个有一百万个模型的IMM,它可以覆盖所有可能的运动场景,对吧?问题是,对于你运行的每一个模型,你都必须付出代价。也就是说,运行一堆预测的计算成本。如果是高速实时跟踪情况,您可能只有几毫秒的时间来运行完整的过滤器。此外,还必须设置所有这些过滤器并正确处理过程噪声,这是一种痛苦。假设计算速度不是问题;你只关心性能。即便如此,拥有太多的模型也会损害性能。首先,它增加了模型之间转换的数量,如果有很多模型表示非常相似的运动,就很难确定何时应该发生转换。 Both of these contribute to a less optimal estimation.
因此,不幸的是,你仍然需要以一种聪明的方式来处理这个过滤器,并试图找到最小的模型集,可以充分预测你所跟踪的对象的可能运动。实际上,这往往是少于10个模型,通常只有三到四个。
还有一点需要记住的是,我刚才所解释的一切只是跟踪单个物体所必需的。当我们将此扩展到同时跟踪多个对象时,问题就变得更加困难了。这就是我们下个视频要讲的内容。
所以,如果你不想错过未来的Tech Talk视频,不要忘记订阅这个频道。此外,如果你想看看我的频道,控制系统讲座,我在那里介绍了更多的控制主题。下次见。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。