这个例子演示了如何控制车辆的转向角度,当车辆正沿着计划的路径改变车道时,使用横向控制器斯坦利块。
车辆控制是导航系统的最后一步,通常使用两个独立的控制器来完成:
横向控制器:调整转向角度,使车辆遵循参考路径。控制器使当前车辆位置和参考路径之间的距离最小。
纵向控制器:当跟随参考路径时,通过控制油门和刹车保持所需的速度。该控制器使车辆的航向角和参考路径的方向之间的差异最小。
本例重点介绍在恒定纵向速度下的路径跟踪情况下的横向控制。在这个例子中,你会:
Stanley横向控制器[1]采用非线性控制律来最小化交叉轨迹误差和前轮相对于参考路径的航向角。的横向控制器斯坦利块计算转向角度命令,调整车辆的当前姿态以匹配参考姿态。
根据用于推导控制律的车辆模型,侧向控制器Stanley块有两种配置[1]:
运动自行车模型运动学模型假设车辆的惯性可以忽略不计。这种配置主要适用于低速环境,那里的惯性影响是最小的。转向指令是基于参考位姿、当前位姿和车辆速度来计算的。
动态的自行车模型动力学模型包括惯性效应:轮胎滑移和转向伺服驱动。这个更复杂但更精确的模型允许控制器处理真实的动态。在这种配置中,控制器还需要路径曲率、车辆当前横摆率和当前转向角来计算转向指令。
您可以通过汽车模型参数。
该场景是使用驾驶场景设计师这个场景包括一条三车道的道路和一辆自我汽车。有关添加道路、车道和车辆的详细步骤,请参见交互式创建驾驶场景,生成合成传感器数据。在这个场景中,车辆:
从中间车道开始。
进入弯曲路段后转左车道。
转回中间车道。
在整个模拟过程中,车辆以10米/秒的恒定速度运行。这个场景是从应用程序导出的MATLAB®函数使用导出>导出MATLAB函数按钮。导出的函数被命名helperCreateDrivingScenario
。这个场景中的道路和角色被保存到场景文件中LateralControl.mat
。
打开Simulin金宝appk教程模型。
open_system (“LateralControlTutorial”)
模型包含以下主要组件:
一个横向控制器变种子系统,变种模型(金宝app模型)它包含两个横向控制器斯坦利块,一个配置一个动态自行车模型,另一个配置一个动态自行车模型。它们都可以控制车辆的转向角度。您可以从命令行指定活动的。例如,要选择横向控制器斯坦利运动块,使用以下命令:
变量=“LateralControlTutorial /侧控制器”;set_param(变种“LabelModeActivechoice”,“运动”);
一个HelperPathAnalyzer
块,为横向控制器提供参考信号。给定车辆的当前姿态,它通过在参考路径上搜索距离车辆最近的点来确定参考姿态。
一个汽车与环境子系统,该子系统使用车辆身体3自由度(车辆动力学Blockset)块。该子系统还通过使用场景的读者block读取横向控制中的道路和角色。垫场景文件。
打开模型也可以运行helperLateralControlTutorialSetup
脚本,该脚本初始化模型使用的数据。脚本加载Simulink模型所需的某些常量,如车辆参数、控制器参数、道路场景和参考姿态。金宝app特别是,脚本调用前面导出的函数helperCreateDrivingScenario
来构建场景。该脚本还通过调用来设置模型所需的总线helperCreateLaneSensorBuses
。
你可以使用以下方法绘制道路和规划路径:
refPoses helperPlotRoadAndPath(场景)
在模拟模型时,可以打开鸟瞰的范围分析仿真结果。打开作用域后,单击找到信号来设置信号。然后运行模拟程序,显示车辆、道路边界和车道标记。下图显示了这个例子的25秒鸟瞰镜。此时,车辆已转到左车道。
您可以使用以下命令运行完整的模拟并探索结果:
sim卡(“LateralControlTutorial”);
你也可以使用Simulink®金宝app范围(金宝app模型)在汽车与环境当车辆沿计划路径行驶时,检查控制器的性能。范围显示最大偏离路径小于0.3米,最大转向角幅度小于3度。
范围=“LateralControlTutorial /车辆和环境/范围”;open_system(范围)
为了减小转向指令中的横向偏差和振荡,使用横向控制器斯坦利动态块,再次对模型进行仿真:
set_param(变种“LabelModeActivechoice”,“动态”);sim卡(“LateralControlTutorial”);
这个例子展示了如何使用Simulink在变道场景中模拟车辆的横向控制。金宝app与横向控制器斯坦利动态块相比,横向控制器斯坦利动态块提供了更好的路径跟踪性能,与参考路径的横向偏差更小。
Hoffmann, Gabriel M., Claire J. Tomlin, Michael Montemerlo和Sebastian Thrun。《越野驾驶自动汽车轨迹跟踪:控制器设计、实验验证与竞赛》。美国控制会议。2007年,页2296 - 2301。
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,“道路及参考路径”);结束