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