学习如何使用自动驾驶工具箱™和导航工具箱™为高速公路驾驶场景开发自动变道机动(LCM)系统。自动化LCM系统使自动驾驶车辆能够自动从一个车道移动到另一个车道。了解如何设计和集成自动化LCM系统中使用的以下子系统:
你好,每个人。我是Mihir Acharya, MathWorks导航工具箱的产品经理。我的工作是机器人和自主系统应用。今天的网络研讨会由Pitambar主持。
嘿,每一个人。我叫皮坦巴尔·达亚尔。我是MathWorks公司自动驾驶工具箱的产品经理。今天我将和Mihir一起主持这次网络研讨会。
好了,我们开始吧。在本课程中,您将学习如何设计和模拟自动驾驶车辆在高速公路上行驶的变道机动系统。我们将了解如何为模拟开发虚拟世界、设计运动规划器和控制器、运行模拟测试,并最终在硬件平台上部署代码。
变道是自动驾驶汽车的众多复杂过程之一。在这节课中,我们将展示如何使用基于模型的设计来构建一个变道机动系统。但在讨论具体问题之前,我想跟大家分享一下总体情况。
在MathWorks,我们特别关注行业趋势,以及如何通过为这些趋势提供算法和工具来支持我们的客户。万博1manbetx我们现在看到的第一个趋势是对虚拟世界的需求。为了减少车辆测试,汽车行业继续在模拟方面做得更多,并探索在现实世界中再现可能难以或不安全的场景。MathWorks提供了允许您设计和模拟场景、场景、传感器和动态的工具。
推动MathWorks投资的第二个趋势是对多学科技能的需求。开发自主系统应用程序需要各种技能,包括用于目标检测或跟踪的感知算法、定位和脉冲估计,以及用于运动规划和控制的算法。现在你可能是其中一个或多个领域的专家,但也想使用开箱即用的解决方案来解决其他难题。
现在MathWorks提供了专门的工具箱来帮助您学习和应用这些规程。这些工具箱包括您可以在整个开发过程中使用的度量和分析功能。推动投资的第三个趋势是对软件的需求。我们在这里的投资集中在加强我们的平台工具,使您能够设计、部署和测试嵌入式软件。今天,我们将说明计划和控制功能以及此工作流的其他部分。现在让我们看一下变道机动的例子。
将该仿真试验台模型应用于高速公路变道机动系统。让我们快速浏览一下模拟输出。2级或3级高速公路自动驾驶需要一个运动规划器和一个用于变道机动的鲁棒控制器。在这个模拟中,蓝色汽车被称为Ego车辆或Ego演员。在自我车前面的车被称为先导车或目标车。当前导车辆减速时,规划器为Ego车辆生成最佳轨迹以改变车道。这个例子还展示了如何使用基于动态胶囊的对象执行碰撞检查。
该测试台包括六个主要子系统:场景和环境、变道规划器和规划器配置、变道控制器、车辆动力学、度量评估和可视化。从左到右,我们将介绍这个模型的每个子系统,现在我将把它交给Pitambar来介绍这个模型的场景和规划子系统。
这是我们的试验台模型。第一个子系统是场景和环境块。这个子系统从基本工作空间读取地图数据。并输出车道和参考路径信息。让我们点击进去看看。
现在,这里有两个主要的块——Scenario Reader块和Vehicle to World块。让我们从第一个开始。因此,Scenario Reader块从工作区中读取一个驾驶场景。你可以看到这个块的参数,你可以在这里改变。我们将使用一个预先加载的场景,您在前面的演示中看到过。
现在让我把这个结束。该模块将获取Ego车辆信息进行闭环模拟。并在Ego车辆坐标中输出有关参与者和车道边界的地面真相。
另一个block是Vehicle to World block。这将目标车辆位置从车辆坐标转换为世界坐标。现在,我们看到右边这个子系统的输出。让我们回到我们的测试平台,看看这些输出映射到什么。
我们可以看到系统时间、地图信息和目标角色世界,都映射到我们的下一个子系统,即高速公路车道变化规划器。我们的车道边界和我们的目标参与者自我映射到我们的指标评估。目标角色世界也映射到可视化。
这就把我们带到了下一个子系统,也就是高速公路变道规划器。现在我点击这里,你会看到这是一个相当复杂的子系统。因此,在我深入研究我们在这里看到的不同块之前,我将使用一个原理图来说明发生了什么。
好,现在让我们来看看运动规划器是如何在高层次上工作的。然后我们把它映射回刚才看到的子系统。运动规划器的主要操作是由三个函数驱动的dynamicCapsuleList,用于碰撞检查。这是referencePathFrenet。这个函数处理坐标转换。我们有global2frenet和frenet2global。第三个是trajectoryGeneratorFrenet,我们马上就会讲到。
但首先,这里,我们有一张地图。任务规划者定义了到达目的地的路径点。现在任务计划已经超出了今天的话题范围。我们假设路径点是给定的。
我们要做的第一件事是从global2Frenet空间为Ego飞行器和周围最重要的物体(mio)执行坐标转换。现在,有了周围的交通状况和地图信息,终端状态采样器为巡航控制、前车跟踪和变道定义终端状态。
轨迹生成器frenet生成Ego飞行器可以采取的满足终端状态的多个候选轨迹。我们对每个候选轨迹进行成本评估和可行性检查,以找到具有最小成本价值的可行候选轨迹。同时,我们也预测每个周围目标的目标轨迹。因此,每个候选自我轨迹都被检查是否与这些目标轨迹发生碰撞。
最后,我们可以确定一个无碰撞的最优轨迹。因此我们在Frenet空间中进行了轨迹生成和运动预测。现在让我们看下一张幻灯片,看看这些项目是如何映射到我们的子系统的。
好的,这里我们可以看到这个示意图是如何映射到我们的子系统的。我们看到前两个块将Ego和MIO转换为Frenet坐标。然后我们看到终端状态采样器,运动预测和运动规划器。让我们更详细地讲讲终端状态采样器和运动规划器。
我们从终端状态采样器开始。终端状态采样器根据周围的交通状况和地图信息定义轨迹生成的终端状态。因此,终端状态采样器读取Ego和周围的MIOs Frenet状态,以及地图信息,并找到首选车道。它为三种不同的驾驶机动模式生成终端状态——巡航控制、前车跟踪和变道。
例如,这里我们有三种不同的交通情况。首先,我们根据碰撞时间分析确定哪些目标是安全的,哪些目标是不安全的。如果当前Ego车道是安全的,并且左右车道都检测到不安全的目标,那么首选车道将是当前Ego车道。在这种情况下,理想的机动将是巡航控制或领先汽车跟踪模式。
我们将确定每种模式的终端Frenet状态。如果当前车道是不安全的,而左车道或右车道中有一个是安全的,那么理想的机动应该是变道模式。因此,我们再一次根据变道方向定义终端弗莱内状态。
现在让我们来看看Motion Planner Block。在此块中,我们评估所有终端状态的成本值。终端状态按成本排序并输入到trajectoryGenerateFrenet中。这个函数生成多个候选Ego轨迹。我们通过可行性检查删除了一些候选轨迹——例如,过高的曲率或偏航率会让我们有理由删除一些轨迹。
现在,我们根据预测的目标轨迹检查每个可行的碰撞候选。最后,我们可以确定一个无碰撞的最优轨迹。这是一个找到最优轨迹的例子。
在这种驾驶情况下,我们首先确定哪个目标是安全的,哪个目标是不安全的。我们预测目标轨迹,并检查与之碰撞的情况。红色的表示碰撞轨迹。白线表示候选轨迹的代价很高。浅蓝色虚线表示由于过度的曲率或偏航率而不可行的轨迹。
绿线就是我们要找的。它表示无碰撞的最优轨迹。如果当前车道变得不安全,则优先车道切换到下一个车道。因此,在这种情况下,右变道成为成本最小的最优轨迹。
现在让我们回到Simulink模型,并展示运动规划万博1manbetx器的输出如何馈送到下一个子系统。好了,这是规划子系统。回头看,我们有两个输出。第一个输出RefPointOnPath,输入我们的变道控制器。
第二个输出与可视化有关。稍后我们将在可视化子系统中看到这一点。现在,我把它交给Mihir,他会讲一下变道控制器。
谢谢,Pitambar。正如Pitambar所示,我们将无碰撞最优轨迹作为车道变化规划子系统的输入。现在我们需要一个变道控制器来跟踪这个参考轨迹。
控制器的输入是路径上的一个参考点。另一个来自车辆动力学子系统的输入是纵向速度。控制器的输出输入车辆动力学,这使得这是一个闭环系统。
现在让我们看看变道控制器子系统的内部。路径跟踪控制器块保持车辆在高速公路的标记车道内行驶,同时保持用户设置的速度。现在让我们看看它是如何工作的。
规划器的输入由几个参数组成。在这些参数之外,我们还需要参考速度、参考曲率、相对偏航角和横向偏置偏差。我们考虑轨迹
由规划器提供虚拟车道。虚拟车道中心子系统根据路径点创建一个虚拟车道。
控制器需要知道与虚拟车道相关的横向偏差和相对偏航角。预览曲率子系统将轨迹转换为曲率输入。这是必需的,因为Ego车辆需要跟踪曲率,同时它的纵向速度也在变化。因此,预览曲率块合并曲率、曲率导数和纵向速度,将轨迹转换为路径跟踪控制器块所需的曲率输入。
现在让我们学习更多关于路径跟踪控制器块。变道的路径跟随首先需要横向控制,通过调整Ego车辆的转向,使Ego车辆沿其车道的中心线行驶。单独来说,这个任务也被称为车道保持辅助。
其次,纵向控制维持了Ego车辆的用户设定速度。你也可以称之为巡航控制。路径跟随控制结合了横向和长度纵向控制,采用自适应模型预测控制。您可以使用这个开箱即用的Simulink块生成纵向加速度和转向角度输出。万博1manbetx
现在你可能会想,为什么我不能使用其他控制方法,比如PID控制器。原因是在PID控制器期间,像这样的大型系统变得很有挑战性。MPC或模型预测控制比PID有很多优点。我在这里要强调的其他一些原因是,它可以处理多个输入,多个输出,允许控制器响应来自各种传感器的数据。它还可以考虑这些传感器的约束条件,比如如果提前检测到拐角或停车标志,就会让车辆减速。这也被称为预览能力,在这种情况下非常重要。
现在让我们看看路径跟踪控制器块如何遵循车道的中心线。当Ego车辆驶离中心车道时,横向偏差和相对偏航角发生变化。横向控制通过调整Ego汽车的前转向角度,使Ego汽车沿着道路上车道的中心车道行驶。车道保持控制的目标是使横向偏差和相对偏航角都接近于0。
我们之前看到了如何得到预览的车道曲率。现在,这三个输入完成了路径跟踪控制器块的横向控制部分。纵向控制跟踪用户设定的速度,通过调整违章车辆的纵向加速度与前导车辆保持安全距离,并将违章车辆的纵向速度作为车辆动力学块的输入。这个我们以后再讲。这里的目标是在满足安全距离、速度和加速度约束的同时计算最优控制动作。
现在我想在这里强调如果它只是两个中的一个,无论是横向控制还是纵向控制我们需要做的,我们可以只用一个模型预测控制器。但是我们想要自动驾驶一辆由于纵向速度的变化而导致横向动力学随时间变化的汽车。传统的模型预测控制器使用的是一个固定的内部计划模型,不能有效地处理动态变化。这就是我们使用自适应模型预测控制的原因。
现在让我们看看路径跟踪控制器块内部。回到我们的Simulink模型,我们万博1manbetx可以在路径跟踪控制器块中单击。这里,我们看到有三个标签。参数选项卡提供自行车模型参数。您可以使用间距控制复选框启用或禁用距离保持。
“控制器”选项卡包括执行器限制,如最小和最大转向角度和纵向加速度。它还包括大使馆设置,允许您调优控制器性能。最后一个标签包括一个有趣的部分。在这里,您可以创建自己的控制器子系统,并根据应用程序对其进行定制。这种类型的自定义和灵活性是我喜欢这些工具的原因。
好的,我们讨论了变道控制器子系统包括路径跟随控制器块。我提到过我们稍后会讨论车辆动力学模块。现在是时候了。我将把它交给Pitambar来讨论车辆动力学模块。
谢谢,Mihir。现在我们来讨论下一个子系统,也就是飞行器动力学。我们要关注的主要部分是这个。这是车身3个自由度的积木。它计算纵向,横向和偏航运动的刚性,两轴车辆模型。
在这个例子中,我们使用的是一个简单的自行车模型,它需要力的输入。输入值来自转向角度和加速度,经过变换后输入到模型中。现在,在我开始输出之前,我想简要地谈谈车辆动力学块集。
我们使用的3自由度自行车模型是一个简单的模型,适用于翻滚、俯仰和反弹不那么重要的场景。但是当你真正关心这些效果时,我们在车辆动力学模块中有其他模型可以帮助你以更高的保真度捕捉它们。所以现在让我们跳到其他车辆动力学块集提供什么。
车辆动力学模块集具有开放的、文档化的组件和子系统模型库。它有预先构建的车辆模型,您可以参数化和定制,快速运行的模型,为硬件在循环部署做好准备,并在接口虚幻引擎。所以如果你对探索更多关于车辆动力学的知识感兴趣并且你有这个工具箱,这是值得研究的东西。
现在回到我们的子系统。我想稍微讲一下输出。我们有三个,自我行动者,纵向速度,和横向速度。Ego参与者包含关于Ego车辆的许多方面的信息。我们在这里看到这个Pack Ego块,它包含关于位置、速度、偏航、偏航率和Ego actor ID的信息。所有这些都被打包到一个名为Ego actor的结构体中。
现在让我们回到我们的测试平台,看看这些输出如何馈送到其他模型中。我们可以看到Ego参与者在我们的测试台中输入了许多子系统。横向速度是我们指标评估的一部分。纵向速度输入到我们的指标中,也输入到我们的变道控制器中。所以说到参数,我现在要把它传给Mihir,他将谈论参数和可视化
谢谢,Pitambar。现在,我们的测试台中已经有了所有的组件。我们的Ego车可以跟在后面变道。但是当我们在高速公路上开车时不监控速度会发生什么呢?我不需要回答这个问题,对吧?
对于自动驾驶汽车,我们需要监控很多指标,我们在手动驾驶中非常自然地做到了这些。指标评估块帮助我们监视各种指标,我们将看到一点。该子系统将纵向速度、横向速度和自我actor动态作为车辆动力学子系统的输入。并将车道边界和目标参与者作为场景和环境子系统的输入。
然后,它生成一个仪表板,在模拟运行时显示所有这些指标。但是首先,让我们看一看子系统内部,以及正在回忆哪些不同的度量。所以我们必须进行探测
共谋和探测铅车方块在这里。检测碰撞块检测车辆与其他车辆的碰撞,并在检测到碰撞时停止模拟。检测前导车辆块计算自我与前导车辆之间的车头时距,也用于计算时间间隔。
时间差距是通过与领先车辆的距离或车头时距,以及Ego车辆的纵向速度来计算的。纵突是用纵向速度计算的。用横向速度计算横向突升值。
当我们运行模拟时,我们可以看到车道变化可视化和指标仪表板并排。注意仪表板上的Ego加速度读数在变道机动执行时是如何变化的。现在你一定在想,我们如何生成这种我们在这个演示中看到的可视化。这就引出了这个测试台的最后一部分。这就是形象化。
不像这个测试台上的其他子系统,这里的可视化块是一个MATLAB函数。此块使用来自场景和环境以及规划子系统的输入创建MATLAB绘图。MATLAB源代码为您提供了更改任何可视化参数的灵活性。这个MATLAB函数的高级块为您提供了快速更改视图设置的控制。
您可以启用或禁用胶囊对象或轨迹。然后你可以看到只有变道操作没有任何其他突出显示的轨迹或物体。接下来,我们将看到如何使用这个测试台来分析和测试变道机动系统。
出于分析和测试的目的,我们创建了15个不同的测试场景,您可以通过编程方式编辑它们。示例场景包括直线道路、弯曲道路和从高清地图导入的道路。我们可以使用Setup功能选择所需的测试场景。让我给你们看一个例子,这是列表中的第14个场景。
我们添加了几个仪表板块来可视化模拟期间的计划器行为。我们可以监控当前的机动模式和首选车道。试验台模型根据周围的交通状况自动确定首选车道。司机可以在任何时候推翻首选车道的决定。
本视频中当前驾驶机动模式为巡航控制。当检测到一辆缓慢行驶的前车时,首选车道从第二车道切换到第三车道,如图所示。机动模式是从巡航控制转变为变道模式。现在,驾驶员将覆盖当前的首选车道,并更改到第四车道。然后车辆相应地移动到断层线。
另一辆缓慢移动的领先车被检测到,它改变车道回到第三车道。现在,在当前Ego车道上检测到一辆残疾汽车。它会改变车道以避免碰撞。然而,与橙色汽车的距离太近,它再次改变车道到第一车道。所以我们可以看到这是一个相当复杂的情况。然而,计划和控制人员能够处理这些情况。
下面的示例展示了来自另一个场景的闭环系统仿真。在模拟过程中,您可以看到参考轨迹的曲率。横向偏差和相对偏航角体现了弹道跟踪性能。转向角是跟随参考轨迹的控制动作。最后,你会看到横向和纵向的抽搐。如果超出限制,评估块持续监测这些混蛋。
你会注意到,在变道过程中,参考曲率发生了变化,横向颠簸增加。现在我们已经看到了各种模拟场景。如果我们想将这些代码部署到目标硬件上呢?因此,一旦我们在测试这些算法和模拟后感到有信心,我们就可以在目标硬件上部署它们,或者使用生成的c++代码在循环的软件中测试它们。
我们的产品附带的这个运输示例将引导您完成车道变更规划器的热电联产过程。您可以配置车道变更规划器模型,以生成用于模型实时实现的c++代码。这段代码显示了模型配置参数的列表。您可以对生成的代码应用常见的优化,也可以创建一个报告来研究生成的代码。
在为高速公路车道变更规划器生成c++代码之后,您可以使用软件在循环模拟中访问代码功能。它提供了在循环中使用软件的早期见解。您可以了解已部署应用程序的行为。您可以比较普通仿真模式和软件在环仿真模式的输出。您可以绘制并验证这些运行之间的差异是否在公差范围内。
在软件在循环模拟期间,您可以记录生成代码的执行时间度量。这是我们在这里看到的一个代码执行分析报告,它提供了基于从软件在循环执行中收集的数据的度量。您可以看到包含代码概要部分和CPU利用率的摘要。您可以绘制高速公路变更规划器模型的阶跃函数所花费的执行时间。我们通过使用示例中提供的helper函数来实现这一点。
这个图可以作为生成代码性能的早期指示器。为了精确地测量执行时间,您可以在退化代码集成到外部环境时对其进行概要分析。现在,您还可以为车道变更控制器生成c++代码。与计划器示例类似,有一个专门的运输示例来展示如何生成代码并报告控制器的功能和执行时间。现在让Pitambar来总结一下今天所学的内容。
让我们继续快速回顾一下整个测试平台。我们讨论了场景和环境子系统。我们讲过变道规划器,变道控制器。我们讨论了车辆动力学,度量评估,最后是可视化。现在我想把这个完整的循环回到你们开始看到的一些幻灯片上。
我们讨论了几个行业趋势是如何推动MathWorks投资于自动驾驶系统的。人们需要虚拟世界。因此,为了减少车辆测试,汽车行业继续在模拟方面做得更多,并探索在现实世界中再现可能难以或不安全的场景。所以我们在这个场景的模型中看到了这个环境子系统,以及车辆动态子系统。
第二件事是对多学科技能的需求。开发自动驾驶应用程序需要多种技能,从规划和控制到检测、定位、跟踪和融合等感知学科。在我们的特定示例中,我们主要关注计划决策和控制。推动投资的第三个趋势是对软件的需求。所以在这里我们看到了设计、测试和部署我们的高速公路变道系统的各个方面。
因此,让我们来总结一下一些关键的要点。首先,我们紧紧跟着这个例子从码头叫高速公路变道。所以如果你想尝试一下,你需要自动驾驶工具箱、导航工具箱和模型预测控制工具箱。
在这个例子中,我们讲了一些东西。首先,我们讨论了为模拟开发虚拟世界。我们用场景和环境子系统以及车辆动力学子系统来做这个。然后我们讨论了运动规划器和控制器的设计。Mihir和我讲了很多关于这个例子的细节。
最后,我们运行模拟测试并部署代码。在我们结束这节课之前,我会给你们一些额外的资源。在左边,我们有自动驾驶解决方案页面。万博 尤文图斯本文将讨论如何将MathWorks工具用于各种自动驾驶应用程序。
在中间,我们有一本运动规划电子书。最后,在右边,我们有一个模型预测控制系列视频。所以如果这些是你感兴趣的资源,你可以扫描这些二维码,它会带你去那个页面。这就是这集视频的结尾。我把这一页留几秒钟。但是谢谢你的收看。
您也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。