高速公路车道与智能车辆后
这个例子展示了如何模拟后巷的应用程序在一个场景中包含智能目标车辆。智能目标车辆non-ego车辆的场景和程序调整其轨迹是基于周边车辆的行为。在本例中,您将:
1。模型的行为目标车辆动态地适应他们的轨迹来执行下列行为之一:速度保持,或车道改变后巷。
2。模拟和测试车道后应用程序的动态行为目标车辆直路和弯曲的道路场景。
你也可以应用建模模式中使用这个例子来测试自己的车道跟踪算法。
介绍
高速公路车道跟踪系统开发在这个例子引导自我明显车道内车辆旅行。系统测试后的车道功能在其他non-ego车辆的存在,目标车辆。回归测试,它通常是足够的为目标车辆跟随一个预定义的轨迹。随机行为和确定边界情况像激进的车道改变前的自我,它有利于增加情报到目标车辆。
这个例子构建的高速公路车道后例子,演示了在目标车辆的存在后巷预定义轨迹。这个示例修改场景仿真的框架高速公路车道后例子通过添加功能模型和模拟智能目标车辆。智能目标车辆添加到这个例子适应他们的轨迹基于相邻车辆和环境的行为。作为回应,车道后系统自动反应以确保自我车辆保持在车道。
在本例中,您通过集成实现系统级仿真与虚幻引擎从史诗游戏®®。3 d仿真环境需要一个Windows®64位平台。
如果~ ispc错误([不真实的模拟是只支持微软的char (174),“窗口”char (174),“。”]);结束
保证仿真结果的再现性,设置随机种子。
rng (0);
在其他例子中,您将:
探索试验台模型:探索系统级试验台的功能模型,用来评估与智能目标车辆后巷。
车辆行为:探索车辆行为模型,您可以使用智能目标车辆。
模型的智能目标车辆:模型场景中的目标车辆有三个不同的行为:速度保持,后巷,车道改变。
模拟与智能目标车辆后巷直路:模拟速度保持,后巷,车道改变行为的目标车辆在测试后巷直路。
模拟与智能目标车辆后巷在弯曲的道路:模拟速度保持,后巷,车道改变行为的目标车辆在测试后巷弯曲的道路。
测试与其他场景:测试可用的模型与其他场景与这个例子。
探索试验台模型
探索试验台模型,打开一个工程实例文件的工作副本。MATLAB®将文件复制到一个文件夹中,这样您就可以编辑它们。
目录(fullfile (matlabroot,“工具箱”,“开车”,“drivingdemos”));helperDrivingProjectSetup (“HLFIntelligentVehicles.zip”,“workDir”pwd);
开放的系统级仿真试验台模型后巷的应用程序。
open_system (“HighwayLaneFollowingWithIntelligentVehiclesTestBench”)
试验台模型包含这些模块:
模拟3 d场景:自我车辆子系统,用于指定道路智能目标车辆,相机,用于模拟和雷达传感器。
车道标记探测器:算法模型来检测车道边界的框架被相机传感器。
车辆检测器:算法模型来检测来检测车辆的框架被相机传感器。
提出车辆传感器融合:算法模型融合检测的车辆前的自我从视觉和雷达传感器获得的车辆。
后巷决策逻辑:算法模型,指定横向,纵向的决策逻辑,并提供巷中心信息和绪相关信息的控制器。
后巷控制器:算法模型,指定控件。
车辆动力学:指定自我车辆的动力学模型。
指标的评估:评估系统级的行为。
车道标记检测器、车辆检测器、汽车传感器融合,决策逻辑后巷,车道控制器后,车辆动力学和指标评估子系统是基于使用的子系统高速公路车道后(自动驾驶工具箱)。如果你有仿真软件许可证®编码器™和嵌入式编码™,您可以生成deployable-ready巷嵌入式实时代码标记探测器,车辆检测器,提出车辆传感器融合、决策逻辑后巷,和车道控制器算法模型。这个例子只关注了模拟3 d场景子系统。一个智能目标车辆子系统的块添加到模拟3 d场景子系统,以配置场景中的目标车辆的行为。车道标记检测器、车辆检测器、汽车传感器融合,决策逻辑后巷,车道控制器后,车辆动力学和指标评估子系统引导自我车辆在回应的行为目标车辆的配置模拟3 d场景子系统。
打开模拟3 d场景子系统和突出智能目标车辆子系统。
open_system (“HighwayLaneFollowingWithIntelligentVehiclesTestBench /模拟3 d场景”)hilite_system (“HighwayLaneFollowingWithIntelligentVehiclesTestBench /模拟3 d场景/智能目标车辆”)
的模拟3 d场景子系统配置道路网络模型目标车辆,集车辆位置,综合传感器。子系统是通过使用初始化的helperSLHighwayLaneFollowingWithIntelligentVehiclesSetup
脚本。这个脚本定义了驾驶场景测试后的高速公路车道。这个设置脚本定义了道路网络和设置为每个目标车辆行为的场景。
的场景的读者块读取道路和演员(自我和目标车辆)从一个场景文件指定的使用
helperSLHighwayLaneFollowingWithIntelligentVehiclesSetup
脚本。块输出目标车辆和车道边界的姿势对自我的坐标系统。的智能目标车辆是一个函数调用子系统块,模特演员的行为驱动的场景。这个子系统的初始值设定的参数
helperSLHighwayLaneFollowingWithIntelligentVehiclesSetup
脚本。的长方体3 d仿真和模拟3 d车辆与地面块组的演员带来了3 d仿真环境。的模拟3 d场景配置块实现了3 d仿真环境使用道路网络和演员的位置。
这也设置脚本配置控制器的设计参数,车辆模型参数,仿真软件®总线信号所需的HighwayLaneFollowingWithIntelligentVehiclesTestBench
模型。这个脚本分配的数组结构,targetVehicles
,基本工作空间,其中包含为每个目标车辆的行为类型。
车辆行为
这个例子使您能够使用四个模式的车辆配置目标车辆使用的行为targetVehicles
结构。
默认的
:在这种模式下,场景中的目标车辆按照预定义的轨迹。目标车辆非自适应性和不配置智能行为。VelocityKeeping
:在这种模式下,配置目标车辆在车道旅行以恒定速度。每个目标车辆维护一组速度不管的存在导致车辆在当前车道,不检查碰撞。LaneFollowing
:在这种模式下,目标车辆配置旅游巷的适应反应导致车辆的速度。如果一个目标当前车道,车辆遇到一个领头车模型进行碰撞检查和调整目标车辆的速度。碰撞检查确保目标车辆保持安全距离的车辆。LaneChange
:在这种模式下,配置目标车辆在车道旅行在一个特定的速度和效仿。如果目标车辆太靠近车辆,然后执行一个车道改变。之前改变车道,模型检查潜在的前进和侧面碰撞和适应目标车辆的速度保持一定的安全距离其他车辆的场景。
模型智能目标车辆
的智能目标车辆子系统动态更新所有目标车辆的车辆提出了基于预定义的车辆行为。正如已经提到的,helperSLHighwayLaneFollowingWithIntelligentVehiclesSetup
脚本定义了场景和场景中的行为为每个目标车辆。设置脚本存储车辆行为和其他属性的数组结构,targetVehicles
基本工作空间。结构存储这些属性:
ActorID
位置
速度
卷
球场
偏航
AngularVelocity
InitialLaneID
BehaviorType
的智能目标车辆加载配置子系统使用一个面具targetVehicles
从基础工作空间。你可以设置这些属性的值修改位置,方向,速度,和行为目标车辆。打开智能目标车辆子系统。
open_system (“HighwayLaneFollowingWithIntelligentVehiclesTestBench /模拟3 d场景/智能目标车辆”)
的汽车世界块将预定义的演员(自我和目标车辆)姿态和轨迹从ego-vehicle坐标到世界坐标。的目标车辆行为子系统块计算目标车辆的下一个状态通过使用预定义的目标车辆的姿势,ego-vehicle姿势,和目标车辆的当前状态。子系统输出目标车辆导航的车辆带来了在世界坐标系的三维仿真环境。
打开目标车辆行为子系统。
open_system (“HighwayLaneFollowingWithIntelligentVehiclesTestBench /模拟3 d场景/智能车辆目标/目标车辆行为”,“标签”)
的目标车辆行为子系统可以切换默认和其他车辆的行为。如果目标车辆的行为类型设置默认的
子系统配置目标车辆按照预定义的轨迹。否则,车辆的位置是动态计算和更新使用智能车辆子系统。的智能车辆子系统配置块VelocityKeeping
,LaneFollowing
,LaneChange
行为为目标车辆。
开放智能车辆子系统。
open_system (“HighwayLaneFollowingWithIntelligentVehiclesTestBench /模拟3 d场景/智能车辆目标/目标车辆行为/智能车辆”)
的智能车辆子系统计算目标车辆的姿势使用相邻的车辆和车辆信息的行为。子系统是相似的车道改变计划组件的高速公路车道改变的例子。的智能车辆子系统有这些块:
的环境更新器块计算铅和后方车辆信息、当前车道数,和相邻车道的存在(
NoLeftLane
,NoRightLane
)对目标车辆的当前状态。这个街区™系统配置的对象HelperEnvironmentUpdater
。的速度保持取样器块定义了所需的终端状态
VelocityKeeping
的行为。这组块读取速度参数从面罩规范(TargetVehicle.Velocity)
。的车道后取样器块定义了所需的终端状态
LaneFollowing
的行为。这组块读取速度参数从面罩规范(TargetVehicle.Velocity)
。的车道改变取样器块定义了所需的终端状态
LaneChange
的行为。这阻止还定义了偏差补偿参考路径保持车辆在一个特定的后巷巷的变化。这个块读取TargetVehicle.Velocity
,laneInfo
,TargetVehicle.InitialLaneID
从基地工作区使用掩模参数。
表显示终端的配置状态和参数不同的车辆行为:
的检查碰撞块检查与其他车辆相撞的场景。如果检测到碰撞仿真停止。
的脉冲发生器块定义的重新计划时期运动规划子系统。默认值设置为1秒。重新规划可以触发每个脉冲周期,或如果任何采样的状态更新,或运动规划子系统。
的MotionPlanner子系统生成轨迹为目标车辆使用终端状态定义的车辆行为。它使用
trajectoryOptimalFrenet
(导航工具箱)从导航工具箱™来生成一个轨迹。子系统估计车辆沿着它的轨迹的位置在每个模拟步骤。这个子系统内部使用HelperTrajectoryPlanner
系统对象™实现回退机制时,对不同的车辆行为trajectoryOptimalFrenet
函数不能产生一个可行的轨迹。如果设置为车辆的行为
LaneChange
,轨迹规划试图生成轨迹LaneFollowing
的行为。如果它不能生成轨迹,那么它停止车辆使用其停止行为。如果设置为车辆的行为
LaneFollowing
或VelocityKeeping
轨迹规划停止车辆使用停止行为。
系统实现了停止行为通过构造一个轨迹与前面的车辆状态,导致立即停止目标车辆。
在直路模拟智能目标车辆的行为
这个例子使用一个测试场景,有三个目标车辆(红色轿车,黑色肌肉车,和橙色掀背车)和一个自我车辆(蓝色轿车)在直路有两个车道。
红色的轿车是第一目标车辆和旅行在车道毗邻自我车道上。
橙色的掀背车是一款领先汽车自我自我车辆的车道。
黑色的肌肉车缓慢移动,导致车辆的红色轿车在相邻车道上自我。图中显示这些车辆的初始位置。
您可以运行仿真任意次数为每辆车通过改变行为类型在每次运行。这个例子仿真运行三次,在每次运行的行为类型修改为第一目标车辆。
配置所有目标速度保持和运行模拟车辆的行为
运行安装脚本配置VelocityKeeping
所有目标车辆的行为。
helperSLHighwayLaneFollowingWithIntelligentVehiclesSetup (…“scenarioFcnName”,…“scenario_LFACC_01_Straight_IntelligentVelocityKeeping”);
显示BehaviorType
所有的目标车辆。
disp ([targetVehicles (:) .BehaviorType]);
VelocityKeeping VelocityKeeping VelocityKeeping违约的违约
运行仿真和可视化结果。场景中的目标车辆旅行在各自道在一个恒定的速度。红色的轿车和黑色肌肉车保持速度和不检查碰撞。
减少输出命令窗口,关闭模型预测控制(MPC)更新消息。
mpcverbosity (“关闭”);%运行模型simout = sim卡(“HighwayLaneFollowingWithIntelligentVehiclesTestBench”,“StopTime”,“9”);
情节自我和第一个目标车辆的速度概要(红色轿车)分析结果。
hFigVK = helperPlotEgoAndTargetVehicleProfiles (simout.logsout);
关闭图
关闭(hFigVK);
的偏航角的目标车辆(红色轿车)图显示了偏航角的红色轿车。没有变化的偏航角直车道上的车辆旅行道路。
的目标车辆的绝对速度(红色轿车)图显示了红色轿车的绝对速度。车辆的速度剖面和车辆配置为常数
VelocityKeeping
的行为。
的自我的绝对速度车辆(蓝色轿车)图显示,没有效果的红色轿车在自我车辆都在相邻车道的车辆。
配置第一个目标车辆行为和运行仿真后巷
第一目标车辆配置行为类型(红色轿车)执行后巷。显示更新后的值BehaviorType
目标车辆。
targetVehicles (1)。BehaviorType= VehicleBehavior.LaneFollowing; disp([targetVehicles(:).BehaviorType]');
LaneFollowing VelocityKeeping VelocityKeeping违约的违约
运行仿真和可视化结果。场景中的目标车辆在各自的车道。第一目标车辆(红色轿车)减慢,以避免碰撞的行动迟缓的黑色肌肉车的车道。
sim卡(“HighwayLaneFollowingWithIntelligentVehiclesTestBench”);
情节自我和第一个目标车辆的速度概要(红色轿车)分析结果。
hFigLF = helperPlotEgoAndTargetVehicleProfiles (logsout);
关闭图
关闭(hFigLF);
的偏航角的目标车辆(红色轿车)情节是一样的在前面获得的一个模拟。没有变化的偏航角直车道上的车辆旅行道路。
的目标车辆的绝对速度(红色轿车)从以前的模拟图发散。红色轿车的速度逐渐降低13 m / s 5米/秒,以避免碰撞与黑色的“肌肉车”和维护一个安全缺口。
的自我的绝对速度车辆(蓝色轿车)情节是一样的在前面的模拟。自我车辆不受红色轿车的行为的变化。
配置第一个目标车辆车道改变行为和运行模拟
targetVehicles (1)。BehaviorType= VehicleBehavior.LaneChange;
显示BehaviorType
所有的目标车辆。
disp ([targetVehicles (:) .BehaviorType]);
LaneChange VelocityKeeping VelocityKeeping违约的违约
运行仿真和可视化结果。橙色的掀背车和黑色肌肉车是以恒定速度在各自的航线。第一个目标车辆(红色轿车)执行一个车道改变,因为它接近黑色的“肌肉车”。它也另一个车道改变当它接近橙色掀背车。
sim卡(“HighwayLaneFollowingWithIntelligentVehiclesTestBench”);
情节自我的速度剖面和第一个目标车辆(红色轿车)分析结果。
hFigLC = helperPlotEgoAndTargetVehicleProfiles (logsout);
关闭图
关闭(hFigLC);
的偏航角的目标车辆(红色轿车)情节与前面的仿真结果。第一个目标车辆的偏航角剖面显示偏差作为车道改变车辆执行。
的目标车辆的绝对速度(红色轿车)情节是相似的
VelocityKeeping
的行为。红色轿车保持一个恒定的速度甚至在车道改变。
的自我的绝对速度车辆(蓝色轿车)图显示了自我车辆响应车道改变第一个目标机动的车辆(红色轿车)。自我车辆的速度降低,红色轿车变更车道。红色轿车转向自我巷和旅行前的自我。自我车辆通过减少反应速度为了旅行在同一车道上。关闭所有的数据。
模拟智能目标弯曲的道路上车辆的行为
测试场景的模型与弯曲的道路。车辆的车辆配置和地位类似于前面的仿真。测试场景包含一个弯曲的道路和第一个目标车辆配置(红色轿车)LaneChange
的行为。其他两个目标车辆配置VelocityKeeping
的行为。下图展示了在弯曲的道路车辆的初始位置的场景。
运行安装脚本配置模型参数。
helperSLHighwayLaneFollowingWithIntelligentVehiclesSetup (…“scenarioFcnName”,…“scenario_LFACC_04_Curved_IntelligentLaneChange”);
运行仿真和可视化结果。情节的偏航角和速度概要自我和目标车辆。
sim卡(“HighwayLaneFollowingWithIntelligentVehiclesTestBench”);hFigCurvedLC = helperPlotEgoAndTargetVehicleProfiles (logsout);
的偏航角的目标车辆(红色轿车)情节变化资料显示为红色的轿车执行巷变化在弯曲的道路。道路的曲率也影响偏航角的目标车辆。
的目标车辆的绝对速度(红色轿车)情节是相似的
VelocityKeeping
行为,红色轿车保持一个恒定的速度在车道变化在弯曲的道路。
的自我的绝对速度车辆(蓝色轿车)情节展示了自我的反应车辆车道变化机动的红色轿车。自我车辆通过减少反应速度为了旅行在同一车道上。
关闭图。
关闭(hFigCurvedLC);
探索其他场景
这个示例提供了额外的场景兼容的HighwayLaneFollowingWithIntelligentVehiclesTestBench
模型。下面是一个列表的兼容场景提供了这个例子。
scenario_LFACC_01_Straight_IntelligentVelocityKeeping
功能配置测试场景,这样所有目标车辆配置来执行VelocityKeeping
直路的行为。scenario_LFACC_02_Straight_IntelligentLaneFollowing
功能配置测试场景,红色轿车执行LaneFollowing
尽管所有其他目标车辆执行行为VelocityKeeping
直路的行为。scenario_LFACC_03_Straight_IntelligentLaneChange
功能配置测试场景,红色轿车执行LaneChange
尽管所有其他目标车辆执行行为VelocityKeeping
直路的行为。scenario_LFACC_04_Curved_IntelligentLaneChange
功能配置测试场景,红色轿车执行LaneChange
尽管所有其他目标车辆执行行为VelocityKeeping
行为在弯曲的道路。这是配置为默认的场景。scenario_LFACC_05_Curved_IntelligentDoubleLaneChange
功能配置测试场景,红色轿车执行LaneChange
尽管所有其他目标车辆执行行为VelocityKeeping
行为在弯曲的道路。其他车辆的位置在这个场景中,红色轿车在仿真执行双车道改变。
为更多的细节在路上和目标车辆配置在每个场景中,查看每个文件中的注释。您可以配置仿真软件模型和模拟这些场景使用工作区helperSLHighwayLaneFollowingWithIntelligentVehiclesSetup
函数。
helperSLHighwayLaneFollowingWithIntelligentVehiclesSetup (“scenarioFcnName”,“scenario_LFACC_05_Curved_IntelligentDoubleLaneChange”);
结论
这个案例展示了如何测试后巷的功能的应用程序在一个场景中自我车辆和多个智能目标车辆。
使货币政策委员会再次更新消息。
mpcverbosity (“上”);
另请参阅
场景的读者|长方体3 d仿真|模拟3 d车辆与地面|模拟3 d场景配置|汽车世界|trajectoryOptimalFrenet
(导航工具箱)