来自系列:理解传感器融合和跟踪
布莱恩道格拉斯
本视频描述了我们如何通过使用交互多模型滤波器估计状态来改进对单个目标的跟踪。我们将建立一些关于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.
那么预测这一步呢?这就是区别所在。预测一个你无法控制的物体的未来状态要比预测一个你能控制的物体的未来状态困难得多。
让我们用一个例子来演示这个预测问题。想象一架飞机飞过一个每隔几秒钟更新一次的雷达站,你想预测下一个探测到它的位置。假设你是这里的过滤器。你猜猜看?大概就在这里,对吧?在此之前是一致的,所以它会沿着这个轨迹继续。现在,如果最后几个测量结果是这样的呢?你可能会假设飞机现在正在转弯,你会对持续这个趋势的预测更有信心。那么我们如何将这种直觉编码到过滤器中呢?
嗯,想想这个:运动来自三个东西。第一个是系统的动力学和运动学它将当前状态向前推进,所以飞机已经有了一定的速度所以它将以一种相当可预测的方式向前推进基于飞机在空中飞行的物理原理。第二,运动也来自于对系统的指令和已知的输入,这些输入增加或减少能量并改变状态;这将是像调整引擎或控制表面。如果飞行员向右旋转控制轮,那么你将是正确的假设飞机的状态也右移,,3、运动来自未知或随机的输入到系统环境,像阵风和空气密度的变化。这是我们在预测未来状态时需要考虑的三件事。
那么估计过滤器是如何做到的呢?我们用数学模型的形式让过滤器接触到动力学。如果这是一个你可以控制的系统,那么过滤器也可以访问控制输入。也就是说,你可以告诉过滤器,当你命令系统,它可以播放这些命令通过模型,以更好的预测。现在,系统中的未知输入,以及模型中的不确定性,从定义上讲是无法被知道的,因此它们只能降低预测。我们考虑这种退化与滤波过程噪声。过程噪声越高,你对预测的不确定性就越大。
如果你飞行的飞机,你知道你没有命令调整飞机,无法控制输入,然后你可以预期合理确定飞机将保持目前的速度和方向,所以红色的X的预测可能是相当接近。
但如果你不是在驾驶飞机,而是远程跟踪它呢?在这种情况下,我们如何解释控制输入?这取决于我们讨论的是合作跟踪还是非合作跟踪。合作对象与跟踪滤波器共享信息。所以飞机会分享它发送给引擎和控制表面的命令,因此跟踪一个合作的物体就像自己驾驶它一样。
然而,不合作的对象不会共享它们的控制输入,因此我们必须将它们视为额外的未知干扰。
让我们重新审视我们对飞机的预测,但这次它是不合作的。现在,我们该如何处理呢?当我们之前做预测的时候,我们假设飞机所做的任何运动都是最有可能持续到未来的运动。当然,飞行员可能会改变航线,但至少在短时间内,他们可能会保持同样的动作。因此,我们给滤波器的模型应该考虑到我们期望的运动。如果我们认为飞机是直线飞行,这个模型就应该预测未来的状态。如果我们认为飞机在旋转,模型应该预测一个或另一个方向的旋转状态。我们会说,选择正确的单一模型是一种预先预测的决定。
让我们回到Matlab示例,看看这个单一模型过滤器如何使用机动对象。该滤波器使用的模型是恒定的速度模型,因此在假设对象以固定速度前进的假设下预测未来状态。如果我们查看归一化距离,您可以看到当物体以恒定速度移动时,它可以看到它的工作很大,但可能约为5个错误左右,但在恒定转弯部分期间误差会显着增加。我甚至不知道它有多糟糕;它离图表。它在恒定加速度部分期间大约30个错误。因此,通过单一模型,如果对象实际执行该运动,则我们的预测很大,但如果模型与现实不匹配,则会崩溃。
然而,我们可能会说,我们太相信自己的预测了。我们增加了系统中未知数的数量,因此对我们的预测的信心就会降低。飞机可以转弯、减速或加速。我们只是不知道。所以我们应该通过在滤波器中增加过程噪声来解决这个问题。对预测的信任越少,对修正测量的信任就越多。这是有道理的。如果我们很难预测飞机的位置,为什么不直接相信雷达测量结果而忽略大部分无用的预测呢?让我们回到MATLAB仿真看看这个想法是如何实现的。
在这次运行中,我保留了恒定速度模型,但增加了过程噪声,你可以清楚地看到差异。当物体转动时,误差现在是30个单位左右,加速度部分也得到了改善。但这是有代价的:匀速部分,也就是我们最初建立模型的部分,变得更糟了。
这部分变得更糟,因为我们更多地依赖噪声测量。所以如果我们不能相信预测而我们主要依赖传感器测量,那么这个估计滤波器有什么用呢?整个要点是使用预测来解释一些测量噪声,降低整体的不确定性。
这就是我们剩下的问题。我们如何更好地估计机动目标的状态,而不是仅靠传感器就能测量的?
答案是:运行多个模型。基本上,我们可以把它想象成运行几个同时进行的估计滤波器,每个滤波器都有不同的预测模型和处理噪声。这个想法是为你希望被跟踪的物体进行的每一种运动都有一个模型。你知道,物体以恒定的速度运动,或恒定的加速度或恒定的转弯,等等。只要能涵盖所有可能的运动就行。
每个模型都能预测物体在遵循特定运动时的位置。然后,当我们得到一个测量值时,将它与每一个预测进行比较。由此,我们可以断言哪个模型最有可能代表真实的运动,我们可以在下一个预测周期中更相信那个模型。这就像人类做预测一样。如果飞机看起来是直线飞行,假设它会一直直线飞行。如果你看到它开始转向,假设这个转向将持续一段时间。用这种方法,当物体过渡到一个新的运动时,会有一些瞬态误差,但滤波器会很快意识到一个新的模型有更好的预测,并开始增加它的可能性。
这是多模型算法背后的一般思想,但仍有一个步骤来实现多模型的交互。
我们将使用当前设置过滤器的问题是每个人都是自己运行的,从其他方面孤立。这意味着对于一个不代表真实运动的模型,它将保持其自身对系统状态和州协方差的估计。然后,当物体改变运动时,并且存在转换到该模型,凭借其不良状态估计和协方差,过滤器将花一些时间再融合。因此,通过这种方式,每次过渡到新运动时,瞬态时段都会比滤波器试图赶上所需的时间。
为了解决这个问题,我们允许模型相互作用。在测量之后,整个过滤器得到更新的状态和基于最可能模型的混合状态协方差。在这一点上,每个过滤器都被重新初始化,并根据它们“切换到”或“混合”彼此的概率,对状态和协方差进行混合估计。这是在不断改进每个单独的过滤器,以减少其自身的残差,即使它不能代表物体的真实运动。通过这种方式,IMM滤波器可以切换到单个模型,而不必等待它首先收敛。
现在我们终于能理解IMM的结果了我在视频开始时给你们看的。这个IMM是由三个模型建立的:匀速、转弯和加速度,以匹配这个物体的三个预期运动。左边是我们讨论过的不同模型的归一化距离或误差。这样你就可以同时看到这三种方法的结果。右上方显示了物体的机动轮廓,右下方有一个新图表显示了IMM中每个模型代表真实运动的可能性。彩色叠加只是为了给你一个物体当前运动的视觉参考。
让我们开始吧。查看IMM结果。你可以看到总的归一化距离对于所有三种机动来说都很低。另外,当物体正在做它所预测的运动时,每个模型的可能性是如何飙升的,并且运动之间的瞬态时间非常低。因此,只要物体不是不断地、快速地改变运动,那么这个瞬态误差就不会对估计的整体质量产生太大的影响。
这就是我们在跟踪不合作对象时,弥补控制输入信息不足的方法。我们为每个预期的运动建立一个模型,然后建立一个IMM,根据它们代表真实运动的可能性将它们混合在一起。
现在在我结束这个视频之前,我要再次解决了一件事。您可能会试图刚刚使用一百万个模型,可以涵盖每种可能的运动场景的东西,对吧?好吧,这个问题是,对于你运行的每个模型,你必须支付价格。即,运行一堆预测的计算成本。如果它是一个高速实时跟踪情况,您可能只有毫秒才能运行完整过滤器。此外,还有必须突出所有这些过滤器并获得过程噪声右。让我们说计算速度不是问题;你只关心性能。好吧,即使那么有太多的模型也会伤害性能。对于一个,它增加了模型之间的转换次数,并且如果存在很多代表非常相似的动作的模型,则更难确定转换何时发生转换。 Both of these contribute to a less optimal estimation.
所以,不幸的是,您仍然必须以智能方式接近此过滤器,并尝试找到最小的模型,可以充分预测所谓的对象的可能运动。实际上,这往往少于10个型号,通常只有三到四个。
另外要记住的是,我刚才解释的所有东西都是跟踪单个物体所必需的。当我们将此扩展到同时跟踪多个对象时,我们的问题就变得更加困难了。这就是我们下个视频要讲的内容。
所以,如果你不想错过未来的Tech Talk视频,别忘了订阅这个频道。此外,如果你想看看我的频道,控制系统讲座,我也涵盖了更多的控制主题。下次见。
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。