自主导航,第6部分:系统评估的度量
从系列中:Navigazione自治
布莱恩•道格拉斯
现在您了解了整个系统,看看如何使用不同类型的度量来描述自动导航系统。
采用系统工程方法来端到端验证自主导航系统,并了解模拟和物理测试如何相互补充。该视频还涵盖了一些不同的路径规划指标,如平滑度和最小间隙,以及跟踪指标,如OSPA和GOSPA。
在本系列的早些时候,我们讨论了自主导航系统所需的功能。我们必须感知环境,然后使用这些测量来构建地图,在地图中进行本地化,并建模和跟踪本地动态对象。然后,我们必须计划一条通往目标的道路,最后,按照计划行动。
在前几个视频中,我们从概念上介绍了本地化、映射、路径规划和跟踪的含义。现在我们了解了整个系统,在这个视频中,我们将讨论不同类型的度量我们可以用来描述自动导航系统的特征。我希望你能坚持下去。我是Brian,欢迎来到MATLAB技术讲座。
我们希望自动导航系统能正常工作,对吧?但这到底意味着什么呢?因为工作不仅仅是在一系列不同的环境条件下自主地达到一个目标,而且是安全、稳健地做到这一点——如果人们必须与之互动,那么就是舒适和可预测的——还有其他副词。但这正是指标可以发挥作用的地方。
我们可以将这些模糊的想法转化为我们可以测量的东西,我们可以通过测试或模拟来验证的东西,或者至少,我们可以作为基准来与其他算法和方法进行比较。但正如我们所看到的,自动导航不仅仅是一个算法或一个组件,而是一个算法和组件的集合。因此,不仅每个单独的组件需要工作,而且它们还必须一起工作,首尾相连,以满足更大的目标或目的。最终,就像任何复杂的工程项目一样,这是一个系统工程问题。
让我绕个小圈子谈谈系统工程。等等,等等,等等。请不要离开。我保证会很快的。
系统工程的一部分涉及到把一个复杂的系统分解成越来越小的组件,直到你有了某种可以设计和实现的细节。每一级都由一组需求或规范定义,为了满足更高一级系统的需要,它必须完成这些需求或规范。一旦有了一组定义充分的低级组件,就可以开始实现设计并构建它。
组件构建为子系统。系统中内置的子系统。在每个层次上,您都在验证实现是否满足定义过程中指定的需求。
这就是所谓的系统工程v模型——至少,这是一个非常快速的介绍。但它直接适用于我们的自主导航问题。这里的顶层系统可能是一辆自动驾驶汽车,自动导航是许多子系统中的一个。
在自动导航中,我们已经将其分解为感知、映射、定位、路径规划、跟踪和行动。所以作为系统工程师,我们目前的工作就是思考我们想要整个导航系统做什么,然后指定每个功能需要完成什么才能实现它。这也是指标可以发挥重要作用的地方,因为它们提供了系统或组件的客观特征。
为了说明在自动导航中可能与您有关的一些指标,让我们看看指定路径规划组件的几种方法。我们问自己,我们希望路径规划算法具有哪些特征?举个例子,让我们看看规划一条穿过停车场的路径。
显然,我们想要一种算法,它可以生成一条通往目标的路径,前提是它是可达的,并且可以避免环境中任何现有的障碍。这是它的主要目的。这就是完整性的概念,在某些情况下可以通过算法来确定。
然而,仅仅找到一个解决方案可能在所有情况下都不够。我们可能希望算法具有特定的特征。例如,我们可能会限制算法可以使用多少内存或找到解决方案所需的时间。
但除了算法,我们还关心结果路径的特征。例如,我们可能想要一个距离最优路径,或者至少,在给定计算能力约束的情况下,接近最优解。在模拟中,我们可以将规划路径与最优路径进行比较,并计算两者之间的标准偏差或路径长度增加的百分比等指标。我们可以设置它们的上界。
现在,为了乘客的舒适,我们可能会要求道路足够平坦。你知道,如果你的自动驾驶汽车突然向左转,那就不是一次愉快的旅程了。因此,我们可以根据路径在特定间隔内偏离直线的程度来分配平滑度值。
这个指标越大,整个过程就越不平稳。如果返回的路径不符合平滑性规范,我们可能不得不重新计划,希望找到一个更平滑的解决方案。或者我们可能需要完全改变算法。
现在,即使道路是平坦的,它达到了目标,如果它经过另一辆车或其他障碍几英寸的地方,可能就不好了。这对居住者和外部观察者来说都可能是可怕的。因此,我们还可以指定最小间隙。保证清除障碍的一种方法是在计划时使用一个膨胀的障碍表示。
如果我们看一下原始地图,最终的路径,现在至少清除了膨胀量的障碍。我们可能还需要定义和验证大量其他指标。但现在,让我们跳过路径规划,快速查看跟踪算法的可能指标。
首先,我想介绍两种假设的跟踪情况。在第一个例子中,假设在本地环境中有两个我们应该跟踪的真实目标。我在二维平面上把它们标为x。
一个跟踪算法返回三个估计的目标轨迹,用圆圈表示。如果我们知道目标的真实状态——这是x,我们可以从模拟中得到——那么我们就可以确定这个目标被跟踪了,有一定的误差。
这个目标没有实现,因为在距离c内没有估算值。顺便说一下,c被称为截断距离。这是一个可调参数,你可以设置它来表示估计的轨道与真实轨道之间的距离在你声称它们不是同一物体之前。
另外两条估计的轨迹都是假的,因为在它们c的距离内没有真正的目标。在第二个例子中,真正的目标是相同的,但是这次跟踪算法返回这两个估计的轨迹。这样就不会出现误迹和漏迹,被跟踪物体的定位误差也更小。
所以我们可以看看这两种情况,很容易就能断言右边的跟踪算法比左边的要好得多。在这里,更好的工作被定义为更低的定位误差和更少的遗漏和错误轨道。所以我们可以开发三种不同的指标,一种用于定位错误,一种用于遗漏轨道,一种用于错误轨道。但是,将所有这些数据汇总成一个度量值是很有用的,这个度量值可以告诉我们实际情况和估计目标集之间的相似性,数值越大表示估计和真实值之间的偏差越大。
只要有一个数字,我们就可以用它来设定一个需求,然后在数千个模拟测试用例中很快得到一个通过/失败的结果。这将使我们能够立即看到跟踪算法在大量场景中的表现。此外,这个指标可以在每个时间步骤中生成,为我们提供跟踪算法的引用“良度”的时间历史。
现在,将定位错误、遗漏和错误轨迹捕捉到一个数字中是OSPA(最优子模式分配指标)及其广义版本GOSPA背后的思想。现在,这些算法的细节以及为什么你可以选择其中一个,可以在我在这个视频的描述中链接到的参考文献中找到。下面是对GOSPA的一个非常基本的介绍。
非正式地,GOSPA可以定义为被检测到的目标的定位误差之和,加上每个错过和错误轨道的截断距离的一半的惩罚。这就是GOSPA对参数alpha = 2和p = 1的简化,这在这个视频中不重要,但描述中的参考解释了这一切。
现在的底线是,通过将错过和错误的轨迹描述为距离误差,有方法将它们与定位距离误差结合起来,并得出一个单一的度量标准,我们可以使用它来评估跟踪性能或设置跟踪系统的要求。现在,对于跟踪系统,我们还需要考虑很多其他指标,例如,当一个对象进入本地环境时,建立一个新的跟踪需要多长时间,或者当一个对象离开时,删除一个跟踪需要多长时间。就像我在这里谈论的一切一样,我留下了一些资源,你可以在那里找到更多关于跟踪指标的信息。总是有更多的信息。
现在,为这样一个组件开发指标就像为整个自主导航系统开发指标一样。我们首先考虑我们希望系统在什么样的环境条件下完成什么。它需要多健壮?如何安全吗?等等。
然后我们需要找出我们可以用来定义或描述期望行为的指标。这些可能与您在较低级别测量的指标非常相似,但是在系统级别上通过所有其他组件相互交互再次确认。举一个可能的例子,我们讨论了生成的路径应该有最小的障碍物间隙。然而,这并不意味着车辆不会比这个距离更接近障碍物。因为一旦你把整个系统放在一起,在跟踪算法和映射算法中会有错误,所以你不太知道环境是什么样子的。
在定位中也有错误,所以你不知道你在环境中的位置。控制系统中有错误试图让飞行器沿着这条路径前进。所有这些都有助于车辆在真实环境中体验到的总体最小间隙。
现在,如果系统的定义是正确的——这是V的左边——那么我们就会有一个系统层面的总体最低要求。对所有这些组件的要求都是这样设定的,当它们都组合成整个系统时,就能满足高层次的要求。因此,当我们进行测试或模拟时,我们会验证每个组件都满足要求,然后验证系统是否满足要求。
好了,在我结束这个视频之前,我想简单地谈谈我们如何验证一个需求或计算一个特定的度量。例如,为了验证系统级别的最小间隙,我们可以将软件部署到车辆上,让它在真实环境中放松,并测量它与障碍物的距离。如果距离太近就会失败。进行这样一个真实的测试是绝对必要的。然而,在许多情况下,模拟可能是首选,特别是在验证系统的早期阶段,因为验证通常需要蒙特卡罗方法,其中包含数千个模拟,这些模拟考虑到传感器噪声和过程噪声的变化以及环境复杂性,以及系统必须在其中运行的所有不同场景。
现在很明显为什么模拟比物理测试更受欢迎,但让我列举一些原因。首先,在模拟中控制环境通常更容易,因此您可以确保在所需的条件和输入下分析系统。第二,通常模拟比硬件测试更快、更便宜,并且可以运行更多的模拟。第三,你通常可以从模拟中得到比物理测试更多的诊断信息。例如,在模拟中,您可以知道系统的真实状态,或者被跟踪的对象,然后将其与导航系统所声称的进行比较。
然而,话虽如此,在模拟中做所有事情,然后声称你的自动导航系统工作并不是一个好主意。这是因为模拟环境会有误差,导致它偏离真实环境。例如,有些错误来自于必须对物理属性建模,而你对这些物理属性并不是100%有信心,或者来自于未建模的、对系统很重要的真实动态。或者仅仅是因为在数字计算机上对连续动力学建模时存在局限性,还有很多很多其他的错误来源。
这些错误可能会给您一种错误的感觉,即您的算法或组件工作正常。但您真正知道的是,它在模拟硬件的模拟环境中工作。所以一个典型的方法,特别是基于模型的设计,我们花了很多时间来建立一个高保真的模型——一个我们很有信心的模型——是使用模拟来验证系统,或者只是它的一个组件,在广泛的条件下,比你可能的物理测试要多。然后确认您的模型是充分的,并且通过测试现实世界中条件的一个子集,集成的硬件和软件满足设计意图。
此时,您可以将这些物理测试的输出与您的模型产生的结果进行比较。如果差异很小或者是预期的,那么你对模拟的结果就更有信心。否则,你就回去更新你的模型,重新运行那些条件。
好了,这就是我要讲到的地方。希望这个视频能让你快速了解自主导航系统的特点。如果它激起了你学习更多的兴趣,请查看我链接到的所有参考文献以及MATLAB示例,它们演示了其中的一些操作。
如果你不想错过未来的Tech Talk视频,不要忘记订阅这个频道。如果你想看看我的频道,控制系统讲座,我也会介绍更多的控制理论主题。感谢收看,我们下期见。
相关产品s manbetx 845
了解更多
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。