主要内容

横向控制教程

此示例显示如何使用横向控制器斯坦利块。

概述

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

  • 横向控制器:调整转向角度,使车辆沿着参考路径行驶。该控制器使当前车辆位置与参考路径之间的距离最小化。

  • 纵向控制器:当沿着参考路径行驶时,通过控制油门和刹车来保持所需的速度。该控制器使车辆的航向角和参考路径的方向之间的差异最小化。

这个例子的重点是横向控制在一个恒定的纵向速度场景下的路径跟随。在这个例子中,你将:

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

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

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

  4. 方法可视化场景和相关的仿真结果鸟瞰的范围

横向控制器

Stanley横向控制器[1]采用非线性控制律来最小化交叉轨迹误差和前轮相对于参考路径的航向角。的横向控制器斯坦利模块计算转向角度命令,调整车辆的当前姿态以匹配参考姿态。

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

  • 运动自行车模型:运动学模型假定车辆的惯量可以忽略不计。这种配置主要适用于低速环境,其中惯性影响最小。转向指令是根据参考姿态、当前姿态和车辆的速度计算出来的。

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

可以通过汽车模型参数在块对话框中。

场景创建

该场景是使用驾驶场景设计师这个场景包括一条三条车道的道路和一辆自我车。有关添加道路、车道和车辆的详细步骤,请参见交互式创建驾驶场景和生成合成传感器数据.在这个场景中,车辆:

  1. 从中间车道开始。

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

  3. 换回中间车道。

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

模型设置

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

open_system (“LateralControlTutorial”

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

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

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

  • 一个汽车与环境子系统,它使用一个车辆身体3自由度(车辆动力学Blockset)块。子系统还使用一个场景的读者block来读取侧向控制的道路和角色。垫场景文件。

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

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

refPoses helperPlotRoadAndPath(场景)

模拟的场景

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

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

sim卡(“LateralControlTutorial”);

您也可以使用Simulink®万博1manbetx范围(万博1manbetx模型)汽车与环境子系统在车辆按照规划路径行驶时,检查控制器的性能。该范围显示,与路径的最大偏差小于0.3米,最大转向角度值小于3度。

范围=“LateralControlTutorial /车辆和环境/范围”;open_system(范围)

为了减少转向指令中的横向偏移和振荡,使用侧向控制器Stanley Dynamic块,再次模拟模型:

set_param(变种“LabelModeActivechoice”“动态”);sim卡(“LateralControlTutorial”);

结论

这个例子展示了如何使用Simulink在变道场景下模拟车辆的横向控制。万博1manbetx与横向控制器斯坦利运动模块相比,横向控制器斯坦利动态模块提供了更好的路径跟踪性能,与参考路径的横向偏差更小。

参考文献

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

万博1manbetx支持功能

helperPlotRoadAndPath画出道路和参考路径

函数refPoses helperPlotRoadAndPath(场景)绘制道路和参考路径h =图(“颜色”“白色”);ax₁=轴(h,“盒子”“上”);
情节(场景中,“父”ax₁)举行情节(ax₁,refPoses (: 1), refPoses (:, 2),“b”[0 150], [0 150];Title =文本(0.5,0.5,“道路及参考路径”);结束

另请参阅

应用程序

相关的话题