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