从系列:改进赛车开发
转向Alakshendra, MathWorks
了解如何在自主车辆上实施纯粹的追求控制器,以跟踪计划的路径。VEER介绍了纯追踪控制器的基础知识,并显示了使用使用的车辆的步骤自动驾驶工具箱™,车辆动力学Blockset™,机器人系统工具箱™和导航工具箱™.他实现了纵向和横向控制器,以高速跟踪路径,并提取路径点,以驾驶车辆通过一个美国城市场景。他还演示了模型可视化的车辆运动在3D环境和鸟瞰视图。
您可以在本视频中找到示例模型MATLAB中央文件交换.
欲了解更多信息,请访问以下资源:
大家好,欢迎来到MATLAB和Simulink赛车休息室。万博1manbetx在这个视频中,我们将展示如何在车辆上实现一个纯追踪控制器来进行路径跟踪。我们将看到如何在Simulink中构建一个车辆路径跟踪模型,并在各种环境中可视化运动。万博1manbetx我们将通过一些纯追求的其他基础知识,控制器,然后我们将有一节使用Simulink实现,最后,我们将去关键的要点。万博1manbetx
现在,让我们开始吧。Pure Pursuit控制器是一种路径跟踪算法,我们在前方固定距离处放置一个路点、一个参考点和一条路径,也称为车辆的前视距离,并计算在此点相交的转向指令。当车辆转向参考点时,参考点继续向前移动,减少转向角度,慢慢地使车辆行驶在道路上。
前瞻距离是控制器的主要调谐特性。该图显示了前方距离对行驶中的车辆的影响。对于一个较小的向前看距离,路径是振荡的和准确的。从更大的距离来看,这部分的振荡比较小,但跟踪效果很差。
此外,这是一个计算车轮转向角度的公式,其中L是自行车的长度,ld是向前看的距离,alpha是目标方向角度,图中也可以看到。接下来,我们将介绍使用Simulink实现Pure Pursuit控制器所涉及的步骤。万博1manbetx作为第一步,我们生成路径点或参考点,然后我们在Simulink中建立模型,最后,我们可视化车辆在各种环境中的运动,如2D、3D和鸟瞰范围。万博1manbetx
所以现在让我们切换到Matlab并详细检查这些步骤。要生成航点,我们使用驾驶场景设计器,我们已经定义了路线,并添加了车辆的航点以恒定的速度移动。有关驾驶场景设计人员的各种其他功能的更多信息,请查看描述中提供的链接。
此外,场景被设置为包含参考点数据的.mat文件。为了提取数据,我们创建了一个脚本,其中可以看到定义参考点的命令。此外,该脚本还包含用于定义引用提交时间、车辆参数和控制器初始调优参数的数据。
一旦我们拥有这些参考点和初始参数集,让我们看看我们如何在Simulink中建立模型。万博1manbetx对于Simul万博1manbetxink空白画布,我们从车辆动力学块集中引入“车身3D轨道”块,然后定义某些初始值以实现车身模型。接下来,我们在x和y方向上定义参考点。要实现纯追踪控制器,我们使用纯粹的追踪块从机器人系统工具箱,我们定义了向前距离并检查目标方向以输出目标角度。
随着航点板的输入以n×2阵列的形式接受信号,我们使用连接块转换不同的信号。接下来,我们使用总线选择器从车辆3D块中提取车辆电流姿势,并使用MUX信号将其转换为由姿势输入板接受的向量中。此外,我们使用一些基本块来装配车轮转向角,参考前面所示的公式。
这里alpha是Pure Pursuit block提供的目标方向角,然后用一个连接块将前车轮转向角与车辆block连接,完成模型。请注意,作为替代,我们也可以连接Pure Pursuit block的输出线速度端口,以恒定速度移动车辆。然而,由于在后面的模型中我们将添加更多的动态和纵向控制器,我们将坚持使用一个常量块来定义速度。要了解关于实现纯追求控制器差速驱动报告的更多信息,只需检查描述中的链接。
简而言之,这是一个演示如何在Simulink中轻松连接块来构建模型的过程。万博1manbetx现在,我们已经重新构建了相同的模型,我们已经在一个子系统中包含了方向盘转向角度的制定,并添加了一个遮罩来定义自行车的长度和向前看的距离。此外,我们还添加了一个2D可视化块,并使用一些子系统清理模型。
所以让我们运行模型并获取结果。正如我们所看到的,通过正确选择前瞻性距离,车辆成功地跟踪了参考点。我们还可以可视化转向角,这在乘用车的限度范围内。
现在,让我们看看改变向前看距离的效果。当我们减少前视距离时,车辆确实跟踪了路径,但路径是振荡的,然而,增加前视距离消除了振荡运动,但以较差的跟踪为代价。因此,应适当选择前瞻距离,以保持跟踪和车辆稳定性之间的平衡。
现在,让我们增加速度,看看运动中的飞行器的效果。所以我们把速度增加到15m / s我们看到在转弯处的有效跟踪更低。现在改善跟踪的一种方法是降低转弯时的速度,并添加一个纵向控制器来跟踪速度差。
所以让我们看看那个模型。因此,如果我们向我们添加更多动态和纵向控制器的下一个模型,与最后一个模型相比,在此模型中,我们已经为动力系和动力传动系统添加了简化块。为此,我们提到了场景询问差异应用程序。要了解更多信息,请转到视频描述,我们提供了该链接。
在控制器子系统中,我们添加了纵向驱动器来跟踪参考速度。基于控制器的类型和选择的双控制参数,在参考速度,纵向车速,纵向速度,纵向车辆速度,并创建作为输入信号并输出加速度和减速命令。接下来,我们将速度划分为不同的区域。例如,匝数的低速度和内置查找表,它们看起来像这样。并且该块基于X和Y坐标计算该区域中的速度。除此之外,模型没有重大变化。
现在让我们运行模拟。正如我们所看到的,因为纵向控制器,我们在转弯时更好地跟踪。在高速度下看过纵向和横向控制器的模型,让我们将车辆送到城市场景。到目前为止,我们使用驾驶场景设计师生成参考点。
然而,我们不是从头开始创建场景,而是使用预构建的场景,在那里我们可以看到各种预构建的场景。在这里,我们选择一个美国城市街区的场景。当我们选择这个时,场景就可以在场景画布上用不同的角色显示出来。
所以到这个场景,我们已经添加了车辆并定义了移动车辆而不与任何障碍碰撞的方式。现在,我们已经建立了一个新的模型,指的是我们在修改的前面的型号。Waypoint子系统包含美国城市场景的数据。
然后,我们更改了速度的查找表,将速度划分为5个区域。我们从12m / s开始,在转弯时,速度减少到5m / s。同样的,不同区域的速度也不同。最后,我们为可视化添加了一些额外的块。
具有地面的模拟3D车辆在3D可视化环境中实现了一种车辆,我们需要定义车辆参数。此外,仿真3D场景配置块配置3D仿真环境,我们可以选择场景源和场景名称。对于此模型,正如我们在驾驶场景中提取了来自驾驶场景的参考点,我们将选择相同的场景以可视化3D环境中的车辆运动。
配置完3D场景后,现在让我们运行模拟。正如你所看到的,车辆成功地跟踪了参考点而没有与任何障碍发生碰撞。现在,为了在鸟瞰范围内可视化路径,我们已经添加了一个子系统,其中MATLAB函数将Ego信息封装到单个egoActor总线中,一个驾驶场景读取器块读取场景文件。
要激活Bird'e-Eye范围,请单击此处的选项卡,该选项卡显示,显示空白范围画布,没有信号。要查看信号,请单击“查找信号”。范围更新框图并自动查找模型中的信号。因此,当我们运行模拟时,我们可以在鸟眼范围内可视化车辆运动,其中车辆成功跟踪参考点而不与任何演员碰撞。
这是我们的最终模型,我们看到了如何使用Pure Pursuit和纵向控制器驾驶车辆通过预制场景。如果您有兴趣了解其他管制员,如Stanley和MBC,请查看描述中的链接。
现在让我们前进并查看关键的外卖。正如我们所看到的那样,前瞻距离是纯追踪控制器的主要调谐特性。也就是说,我们调整前瞻距离的方式将影响车辆运动中的车辆。然后在较高的速度和变化的曲率下,组合横向和纵向控制器提供更好的部件跟踪结果。最后,Matlab和Simulink提供了用于生万博1manbetx成航点,建筑车辆和控制器模型的各种算法和工具,以及在各种环境中可视化车辆运动。
和往常一样,这些是赛车休息室资源。如果您有任何疑问,请联系到racinglounge@mathworks.com,我们还会鼓励您加入我们的Facebook集团,查看最新的更新,并查看我们的学生教程和赛车休息室博客。
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。