主要内容

横向控制教程

控件,显示如何在改变车道时,控制沿计划路径行驶的车辆的转向角度横向控制人Stanley块。

概述

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

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

  • 纵向控制器:在遵循参考路径的同时,通过控制油门和刹车来保持所需的速度。该控制器使车辆的航向角与参考路径的方向之间的差值最小化。

本例侧重于在恒定纵向速度场景下路径跟踪的背景下的横向控制。在本例中,您将:

  1. 方法背后的算法横向控制人Stanley块。

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

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

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

横向控制器

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

根据推导控制律所使用的车辆模型,横向控制器斯坦利块有两个配置[1]:

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

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

可以通过汽车模型参数。

场景创建

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

  1. 从中间车道开始。

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

  3. 变回中间车道。

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

模型设置

打开Simulink教程模型。

open_system (“LateralControlTutorial”

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

变量=“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模拟车辆在变道场景下的横向控制。与横向控制器Stanley运动学块相比,横向控制器Stanley动态块具有更好的路径跟踪性能,且与参考路径的横向偏差较小。

参考文献

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

支持功能

helperPlotRoadAndPath画出道路和参考路径

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

另请参阅

应用程序

相关的话题

Baidu
map