这个例子展示了如何在Simulink®中使用自动驾驶工具箱构建一个自动泊车代客系统。金宝app它紧随着自动停车员MATLAB®的例子。
把停在停车场前的车自动停车是一个具有挑战性的问题。车辆的自动系统预计将接管并引导车辆到一个可用的停车位。本例着重于通过环境规划一条可行路径,从该路径生成一条轨迹,并使用可行控制器执行该轨迹。这个例子中不包括地图创建和动态避障。
在仿真之前,helperSLCreateCostmap
函数在PreLoadFcn
模型的回调函数。回调函数的使用请参见模型的回调(金宝app模型).的helperSLCreateCostmap
函数创建停车场的静态地图,其中包含关于静止障碍物、道路标记和停放的车辆的信息。这个地图用a表示
对象。vehicleCostmap
使用
对象在Simulin金宝appk®中vehicleCostmap
helperSLCreateUtilityStruct
函数转换
在块的掩码初始化中放入struct数组。有关详细信息,请参见初始化的面具(金宝app模型).vehicleCostmap
全局路线计划被描述为一个车道段序列,以穿越到达一个停车位。在仿真之前,PreLoadFcn
模型的回调函数加载一个路由计划,该计划以表的形式存储。该表指定了段的起始和结束姿态,以及段的属性,如速度限制。
routePlan = 5×3表StartPose EndPose属性 ________________ ____________________ __________ 4 12 0 56 11 0 1×1 struct 56 11 0 70 19 90 1×1 struct 70 19 32 90 70 90 1×1 struct 70 32 90 52 38 180 1×1 struct 53 38 180 36.3 44 90 1×1结构
本例中许多块的输入和输出是Simulink总线(金宝app
类)。在金宝app仿真软件。公共汽车
(金宝app模型)PreLoadFcn
模型的回调函数helperSLCreateUtilityBus
函数创建这些总线。
规划是一个分层的过程,每个连续的层负责一个更细粒度的任务。行为层[1]位于这个堆栈的顶部。的行为计划块通过为全局路径规划提供一个中间目标和配置来触发一个导航任务序列运动规划和轨迹生成块。每个路径段使用以下步骤导航:
运动规划:使用最优快速探索随机树(RRT*)算法通过环境地图规划可行路径(
).pathPlannerRRT
轨迹生成:平滑参考路径通过拟合样条[2]到它使用路径平滑样条块。然后将平滑的路径转换为一个轨迹生成速度轮廓使用速度分析器块。
车辆控制:HelperPathAnalyzer
为控制车辆转向和速度的车辆控制器子系统提供参考信号。
目标检测:检查车辆是否达到了使用部分的最后姿势helperGoalChecker
.
车辆控制器子系统包含一个横向控制器斯坦利块和一个纵向控制器斯坦利分别调节挡块的姿态和速度。为了处理真实的车辆动力学[3],汽车模型参数设置为动态的自行车模型
.在这种配置下,需要额外的输入,如路径曲率、车辆当前的横摆率和当前的转向角度来计算转向指令。纵向控制器Stanley块使用一个切换比例积分控制器来计算加速和减速命令,以启动车辆的刹车和油门。
为了演示其性能,将车辆控制器应用到车辆模型模块中,该模块包含一个简化的转向系统[3],该转向系统被建模为一阶系统车辆身体3自由度(车辆动力学Blockset)区块共享于自动驾驶工具箱™和车辆动力学区块集™之间。并与运动自行车模型进行了比较自动停车员以MATLAB®为例,该车辆模型块由于考虑了轮胎打滑和转向伺服驱动等惯性效应而更加精确。
可视化块显示了车辆如何跟踪参考路径。它还显示车辆的速度和转向指令在一个范围内。下面的图片是这个例子的模拟结果:
模拟在45秒左右停止,此时车辆到达目的地。
这个例子展示了如何在Simulink中实现一个自动泊车代客。金宝app
Buehler, Martin, Karl Iagnemma和Sanjiv Singh。DARPA城市挑战:城市交通中的自动驾驶车辆(第1版)。施普林格出版公司,2009。
[2] Lepetic, Marko, Gregor Klancar, Igor Skrjanc, Drago Matko, Bostjan Potocnik,《考虑加速度限制的时间最优路径规划》。机器人技术与自主系统,第45卷,第3-4期,2003年,199-210页。
Hoffmann, Gabriel M., Claire J. Tomlin, Michael Montemerlo和Sebastian Thrun。《越野驾驶自动汽车轨迹跟踪:控制器设计、实验验证与竞赛》。美国控制会议, 2007, pp. 2296-2301。