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