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