【实验目的】
【实验性质】
验证性实验。
【实验要求】
Matlab2020+软件。
【实验内容】
【实验步骤】
1、车辆运动控制建模学习
(1)打开的车辆纵向运动控制模型,如下图所示:
打开Simulink工具箱(即“Library Browser”),在工具箱中查找模型中的图形符号,学习工具箱中模型库的使用方法。
运行上面的模型,查看并保存运行结果,选取两个运行结果截图贴在下面区域。
模块(示波器)名称: scope2 |
模块(示波器)名称: scope3 |
![]() |
![]() |
2、高级驾驶辅助系统(ADAS)建模学习
展开自动驾驶工具箱,可以发现里面有很多Matlab自带的案例,选择其一打开,分析其组成及执行过程。
3、自动驾驶场景练习
(1)模拟一辆汽车在S形道路上运动
在Matlab命令行窗口输入以下命令,在表格右列补充完善代码注释(手工书写):
s=drivingScenario; roadCenters=[-35,20,0;-20,-20,0;0,0,0;20,20,0;35,-20,0]; lm=[laneMarking('Solid','Color','w'); ... laneMarking('Dashed','Color','y');... laneMarking('Dashed','Color','y');... laneMarking('Solid','Color','w')]; ls=lanespec(3,'Marking',lm); road(s, roadCenters, 'Lanes', ls); car=vehicle(s, 'ClassID',1,'Position',[-35,20,0]); waypoints=[-35,20,0;-20,-20,0; 0,0,0;20,20,0; 35,-20,0]; speed=10; trajectory(car, waypoints, speed); plot(s); while advance(s) lbdry=laneBoundaries(car); end |
%定义驾驶场景 %设置道路中心 %设置车道标线 %设置车道规范 %在驾驶场景中添加道路 %在驾驶场景中添加静止车辆 %在驾驶场景中添加运动车辆 %设置车辆航路点 %设置车速 %创建车辆轨迹 %绘制驾驶场景 %仿真循环开始 %显示车辆边界 %仿真结束 |
|
姿态: ActorID:参与者标识 Position:参与者位置(单位m) Velocity:速度(单位m/s) Roll:横滚角(度) Pitch:俯仰角(度) Yaw:偏航角(度) AngularVelocity:角速度(度/s) |
运行结果如下图所示:
(2)模拟静止车辆和运动车辆在道路上行驶。
在Matlab命令行窗口输入以下命令,在表格右列补充完善代码注释(手工书写):
运行结果如下图所
4、停车场路径规划
在Matlab安装目录中搜索 parkingLotCostmap.mat 文件所在路径,并将该目录在Matlab地址栏中打开(设为当前路径)
在Matlab命令行窗口输入以下命令,在表格右列补充完善代码注释(手工书写):
data = load('parkingLotCostmap.mat'); costmap = data.parkingLotCostmap; figure; plot(costmap); vehicleDims = vehicleDimensions(4.5, 1.7); numCircles = 3; ccConfig = inflationCollisionChecker(vehicleDims, numCircles); costmap.CollisionChecker = ccConfig; figure; plot(costmap); startPose = [11, 10, 0]; goalPose = [31.5, 17, 90]; planner = pathPlannerRRT(costmap); refPath = plan(planner, startPose, goalPose); hold on; plot(refPath); |
%加载停车场文件 %下载车辆成本图 %设置图形窗口 %绘制车辆成本图 %设置车辆尺寸 %圆圈数 %检测碰撞 %重新配置成本图 %设置图形窗口 %绘制车辆成本图 %设置初始姿态 %设置目的姿态 %绘制车辆成本图 %设置初始姿态 %设置目的姿态 %创建路径规划器 %路径规划 %保存图形 %绘制路径规划 |
运行结果如下图所示:
在Matlab安装目录中搜索 parkingLotCostmap.mat 文件所在路径,并将该目录在Matlab地址栏中打开(设为当前路径)。
在Matlab命令行窗口输入以下命令,在表格右列补充完善代码注释(手工书写):
data = load('parkingLotCostmap.mat'); costmap = data.parkingLotCostmap; plot(costmap); startPose = [4,4,90]; goalPose = [70,35,0]; planner = pathPlannerRRT(costmap); refPath = plan(planner, startPose, goalPose); isPathValid = checkPathValidity(refPath,costmap); transitionPoses = interpolate(refPath); hold on; plot(refPath,'DisplayName','Planned Path'); scatter(transitionPoses(:,1),transitionPoses(:,2),[],'filled', 'DisplayName','过渡姿态'); |
%加载停车场文件 %下载车辆成本图 %绘制车辆成本图 %设置初始姿态 %设置目的姿态 %创建路径规划器 %路径规划 %保存图形 %绘制路径规划 %绘制过渡姿态 |
运行结果如下图所示: