主要内容

横向控制教程

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

概述

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

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

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

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

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

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

  3. 使用闭环Simulink®模型在场景中测试横向控制器。金宝app

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

横向控制器

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

根据推导控制律时使用的车辆模型,横向控制器Stanley块有两个构型[1]:

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

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

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

场景创建

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

  1. 从中间车道开始。

  2. 进入弯道后转到左车道。

  3. 换回中间车道。

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

模型设置

打开Simulin金宝appk教程模型。

open_system (“LateralControlTutorial”

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

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

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

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

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

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

HelperplotRoadandPath(方案,再发作)

模拟的场景

在模拟模型时,可以打开鸟瞰的范围仿真分析。打开作用域后,单击找到信号来设置信号。然后运行仿真来显示车辆、道路边界和车道标记。下图显示了这个例子中的Bird’s- eye Scope,时间为25秒。这时,那辆车已转到左边车道。

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

SIM(“LateralControlTutorial”);

您还可以使用Simulink®金宝app范围(金宝appSimulink)汽车与环境子系统检查控制器的性能作为车辆遵循计划的路径。该范围显示最大偏离路径小于0.3米,最大转向角度大小小于3度。

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

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

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

结论

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

参考文献

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

金宝app支持功能

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,'路和参考路径');结尾

也可以看看

应用

相关的话题