主要内容

横向控制教程

此示例显示如何控制在更换泳道的同时遵循计划路径的车辆的转向角度,使用该方法横向控制器斯坦利块。

概述

车辆控制是导航系统的最后一步,通常使用两个独立的控制器来完成:

  • 横向控制器:调整转向角,使得车辆遵循参考路径。控制器最小化当前车辆位置和参考路径之间的距离。

  • 纵向控制器:在参考路径之后,通过控制节气门和制动器来保持所需的速度。控制器最小化车辆的标题角和参考路径的方向之间的差异。

该示例在恒定纵向速度方案中的路径上下文中侧重于横向控制。在该示例中,您将:

  1. 了解算法背后的横向控制器斯坦利块。

  2. 使用。创建一个驱动场景驾驶场景设计师应用程序并生成用于车辆的参考路径。

  3. 使用闭环Simulink®模型在场景中测试横向控制器。万博1manbetx

  4. 使用该方案和相关的仿真结果可视化鸟瞰的范围

横向控制器

斯坦利横向控制器[1]使用非线性控制定律,以最小化前轮相对于参考路径的交叉轨道误差和标题角。这横向控制器斯坦利块计算调整车辆当前姿势以匹配参考姿势的转向角命令。

根据用于推导控制律的车辆模型,侧向控制器Stanley块有两种配置[1]:

  • 运动自行车模型:运动模型假设车辆惰性可忽略不计。这种配置主要适用于低速环境,惯性效应是最小的。基于参考姿势,电流姿势和车辆的速度来计算转向命令。

  • 动态的自行车模型动力学模型包括惯性效应:轮胎滑移和转向伺服驱动。这个更复杂但更精确的模型允许控制器处理真实的动态。在这种配置中,控制器还需要路径曲率、车辆当前横摆率和当前转向角来计算转向指令。

您可以通过该配置设置配置车辆模型参数。

场景创建

使用该方案创建驾驶场景设计师应用程序。这种情况包括单个,三车道道路和自助车辆。有关加入道路,车道和车辆的详细步骤,请参阅以交互方式创建驱动场景并生成合成传感器数据.在这种情况下,车辆:

  1. 从中间车道开始。

  2. 进入弯曲路段后转左车道。

  3. 转回中间车道。

在整个模拟过程中,车辆以10米/秒的恒定速度运行。这个场景是从应用程序导出的MATLAB®函数使用导出>导出MATLAB功能按钮。导出的函数命名为Helpercreatedrivingscenario..这个场景中的道路和角色被保存到场景文件中lateralControl.mat.

模型设置

打开Simulin万博1manbetxk教程模型。

open_system (“LateralControlTutorial”

该模型包含以下主要组件:

  • 一种横向控制器变体子系统,变体模型(万博1manbetxSimulink)它包含两个横向控制器斯坦利块,一个配置一个动态自行车模型,另一个配置一个动态自行车模型。它们都可以控制车辆的转向角度。您可以从命令行指定活动的。例如,要选择横向控制器斯坦利运动块,使用以下命令:

变体='侧面连接/横向控制器';set_param(变体,“LabelModeActivechoice”“运动”);
  • 一种HelperPathanalyzer.块,为横向控制器提供参考信号。给定车辆的当前姿态,它通过在参考路径上搜索距离车辆最近的点来确定参考姿态。

  • 一种汽车与环境子系统,该子系统使用车辆身体3自由度(车辆动力学Blockset)块。该子系统还通过使用情景读者块从jourtalOntrolOl.MAT方案文件中读取道路和演员。

打开模型也可以运行helperLateralControlTutorialSetup脚本初始化模型使用的数据。该脚本加载Simulink模型所需的某些常量,例如车辆参数,控制器参数,道路场景和参考姿势。万博1manbetx特别是,脚本调用先前导出的函数Helpercreatedrivingscenario.来构建场景。该脚本还通过调用来设置模型所需的总线helperCreateLaneSensorBuses

你可以使用以下方法绘制道路和规划路径:

HelperplotRoadandPath(方案,再发作)

模拟的场景

在模拟模型时,可以打开鸟瞰的范围分析仿真结果。打开作用域后,单击找到信号来设置信号。然后运行模拟程序,显示车辆、道路边界和车道标记。下图显示了这个例子的25秒鸟瞰镜。此时,车辆已转到左车道。

您可以使用以下命令运行完整的模拟并探索结果:

SIM(“LateralControlTutorial”);

您还可以使用Simulink®万博1manbetx范围(万博1manbetxSimulink)汽车与环境当车辆沿计划路径行驶时,检查控制器的性能。范围显示最大偏离路径小于0.3米,最大转向角幅度小于3度。

范围='侧面抵挡/车辆和环境/范围';Open_System(范围)

为了减少转向命令中的横向偏差和振荡,请使用横向控制器斯坦利动态块并再次模拟模型:

set_param(变体,“LabelModeActivechoice”“动态”);SIM(“LateralControlTutorial”);

结论

此示例显示了如何使用Simulink在车道更改场景中模拟车辆的横向控制。万博1manbetx与横向控制器斯坦利运动块相比,横向控制器斯坦利动态块在路径中提供了改进的性能,随着来自参考路径的较小横向偏差。

参考文献

Hoffmann, Gabriel M., Claire J. Tomlin, Michael Montemerlo和Sebastian Thrun。《越野驾驶自动汽车轨迹跟踪:控制器设计、实验验证与竞赛》。美国控制会议.2007年,页2296 - 2301。

万博1manbetx支持功能

HelperplotroadandPath.绘制道路和参考路径

函数refPoses helperPlotRoadAndPath(场景)%helperplotroadandpath绘制道路和参考路径h =图(“颜色”'白色的');ax₁=轴(h,'盒子''在');
情节(场景中,“父”ax₁)举行情节(ax₁,refPoses (: 1), refPoses (:, 2),'B')XLIM([150,300])ylim([0 150])ax1.title =文本(0.5,0.5,'路和参考路径');结尾

也可以看看

应用

相关的话题