横向控制教程
此示例演示如何在改变车道时控制沿计划路径行驶的车辆的转向角度横向控制人斯坦利块。
概述
车辆控制是导航系统的最后一步,通常由两个独立的控制器完成:
横向控制器:调整转向角度,使车辆沿参考路径行驶。控制器最小化当前车辆位置和参考路径之间的距离。
纵向控制器:在遵循参考路径的同时,通过控制油门和刹车来保持所需的速度。该控制器使车辆的航向角度和参考路径的方向之间的差异最小化。
本例重点讨论恒定纵向速度下路径跟踪的横向控制。在这个例子中,你将:
横向控制器
斯坦利横向控制器[1]采用非线性控制律,使交叉轨迹误差和前轮相对于参考路径的航向角最小化。的横向控制人斯坦利Block计算转向角度命令,调整车辆的当前姿势以匹配参考姿势。
根据推导控制律所用的车辆模型,横向控制器斯坦利块有两种配置[1]:
运动自行车模型运动学模型假设车辆的惯性可以忽略不计。这种配置主要适用于惯性影响最小的低速环境。转向指令是根据参考姿态、当前姿态和车辆的速度计算的。
自行车动态模型:动力学模型包括惯性效应:轮胎滑移和转向伺服作动。这个更复杂但更精确的模型使控制器能够处理真实的动态。在这种配置中,控制器还需要路径曲率、车辆当前偏航速率和当前转向角度来计算转向命令。
您可以通过汽车模型参数。
场景创建
创建该场景时使用驾驶场景设计师这个场景包括一条三车道的单车道道路和自我车辆。有关添加道路、车道和车辆的详细步骤,请参见交互式创建驾驶场景并生成合成传感器数据.在这个场景中,车辆:
从中间车道开始。
进入弯道后转到左车道。
换回中间车道。
在整个模拟过程中,车辆以10米/秒的恒定速度运行。该场景从应用程序导出为MATLAB®函数使用导出MATLAB函数按钮。导出的函数被命名helperCreateDrivingScenario
.这个场景中的道路和演员被保存到场景文件中LateralControl.mat
.
模型设置
打开Simulink教程模型。
open_system (“LateralControlTutorial”)
该模型包含以下主要组件:
一个横向控制器可变子系统,可变模型,可变装配子系统(模型)它包含两个横向控制人斯坦利两个模块,一个配置了运动学自行车模型,另一个配置了动态自行车模型。它们都可以控制车辆的转向角度。您可以从命令行指定活动的一个。例如,要选择横向控制器Stanley运动学块,使用以下命令:
变量=“LateralControlTutorial /侧控制器”;set_param(变种“LabelModeActivechoice”,“运动”);
一个
HelperPathAnalyzer
块,为横向控制器提供参考信号。给定车辆的当前姿态,它通过搜索参考路径上离车辆最近的点来确定参考姿态。一个车辆与环境子系统,该子系统使用车身3DOF(车辆动力学组)块。子系统还通过使用场景的读者块从横向控制中读取道路和角色。Mat场景文件。
打开模型还运行helperLateralControlTutorialSetup
脚本,它初始化模型使用的数据。该脚本加载Simulink模型所需的某些常量,如车辆参数、控制器参数、道路场景和参考姿势。特别是,脚本调用前面导出的函数helperCreateDrivingScenario
构建场景。该脚本还通过调用来设置模型所需的总线helperCreateLaneSensorBuses
.
你可以使用以下方法绘制道路和规划路径:
refPoses helperPlotRoadAndPath(场景)
模拟的场景
在模拟模型时,可以打开鸟瞰的范围进行仿真分析。打开范围后,单击找到信号设置信号。然后运行模拟以显示车辆、道路边界和车道标记。下图显示了这个例子中的鸟瞰瞄准镜在25秒时的情况。这时,车辆已转入左车道。
您可以运行完整的模拟并使用以下命令查看结果:
sim卡(“LateralControlTutorial”);
您也可以使用Simulink®范围(模型)在车辆与环境子系统检查控制器的性能,因为车辆遵循计划的路径。瞄准镜显示与路径的最大偏差小于0.3米,最大转向角震级小于3度。
范围=“横向控制教程/车辆和环境/范围”;open_system(范围)
为了减少转向指令中的横向偏差和振荡,使用横向控制器斯坦利动态块重新模拟模型:
set_param(变种“LabelModeActivechoice”,“动态”);sim卡(“LateralControlTutorial”);
结论
本例展示了如何使用Simulink模拟车辆在变道场景下的横向控制。与横向控制器斯坦利运动学块相比,横向控制器斯坦利动态块提供了更好的路径跟踪性能,与参考路径的横向偏差更小。
参考文献
[1]霍夫曼,加布里埃尔M,克莱尔J.汤姆林,迈克尔蒙特默洛,塞巴斯蒂安特龙。越野驾驶自动驾驶汽车轨迹跟踪:控制器设计、实验验证和赛车。美国控制会议.2007,第2296-2301页。
支持功能
helperPlotRoadAndPath画出道路和参考路径
函数refPoses helperPlotRoadAndPath(场景)绘制道路和参考路径H = figure(“颜色”,“白色”);Ax1 =坐标轴(h,“盒子”,“上”);
情节(场景中,“父”ax₁)举行在情节(ax₁,refPoses (: 1), refPoses (:, 2),“b”) xlim([150, 300]) ylim([0 150]) ax1。Title = text(0.5,0.5,“道路及参考径”);结束