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