实验六 自动驾驶建模与仿真

【实验目的】

  1. 了解Matlab/Simulink软件环境,熟悉Simulink建模步骤;
  2. 了解车辆运动控制的基本原理,学会简单的车辆运动控制建模及仿真;
  3. 了解自动驾驶建模的基本过程,了解典型ADAS系统模型的应用特点。
  4. 了解自动驾驶相关函数,认识自动驾驶函数的功能及用途。

【实验性质】

验证性实验。

【实验要求】

Matlab2020+软件。

【实验内容】

  1. 操作Matlab软件,学会进行Simulink图形化建模。
  2. 调试车辆运动控制模型。
  3. 学习典型ADAS系统,分析其功能模块组成。
  4. 调用自动驾驶函数进行自动驾驶场景仿真。

【实验步骤】

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命令行窗口输入以下命令,在表格右列补充完善代码注释(手工书写):

s=drivingScenario;

roadCenters=[0,0; 10,0; 53,-20];

road(s, roadCenters, 'Lanes', lanespec(2));

stationaryCar=vehicle(s, 'Position',[25,-5.5,0], 'Yaw',-22);

passingCar=vehicle(s);

waypoints=[1,-1.5; 16.4,-2.5; 17.4,-2.8; 23.8,-2; 25,-2.5; 50,-16];

speed=5;

trajectory(passingCar, waypoints, speed);

plot(s, 'Waypoints', 'on');

rec=record(s);

rec(1).ActorPoses(2);

rec(end).ActorPoses(2);

ans

%while advance(s)

%   pause(0.01);

%end

%poses=actorPoses(s);

%定义驾驶场景

%设置道路中心

%在驾驶场景中添加道路

%在驾驶场景中添加静止车辆

%在驾驶场景中添加运动车辆

%设置车辆航路点

%设置车速

%创建车辆轨迹

%绘制驾驶场景

%运行场景并记录

%显示车辆模拟开始姿态

%显示车辆模拟结束姿态

%姿态结构

%仿真循环开始

%停顿时间

%仿真结束

%获取交通参与者姿态

姿态:

ActorID:参与者标识

Position:参与者位置(单位m)

Velocity:速度(单位m/s)

Roll:横滚角(度)

Pitch:俯仰角(度)

Yaw:偏航角(度)

AngularVelocity:角速度(度/s)

 

  运行结果如下图所

 

 

4、停车场路径规划

  1. 停车场停车路径规划(基于碰撞的路径规划)

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);                                                                                 

%加载停车场文件

%下载车辆成本图

%设置图形窗口

%绘制车辆成本图

%设置车辆尺寸

%圆圈数

%检测碰撞

%重新配置成本图

%设置图形窗口

%绘制车辆成本图

%设置初始姿态

%设置目的姿态

%绘制车辆成本图

%设置初始姿态

%设置目的姿态

%创建路径规划器

%路径规划

%保存图形

%绘制路径规划

运行结果如下图所示:

 

  1. 驶出停车场路径规划(验证路径规划)

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','过渡姿态');

%加载停车场文件

%下载车辆成本图

%绘制车辆成本图

%设置初始姿态

%设置目的姿态

%创建路径规划器

%路径规划

%保存图形

%绘制路径规划

%绘制过渡姿态

运行结果如下图所示:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/22455.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

老司机解读香农定理、奈奎斯特定理、编码与调制

工程师都会考虑一个问题:信道上到底可以传输多大的数据,或者指定的信道上的极限传输率是多少。这就是信道容量的问题。例如,在xDSL系统中,我们使用的传输介质是仅有几兆带宽的电话线,而上面要传送几兆、十几兆甚至几十…

用 Python 写 3D 游戏

vizard介绍 Vizard是一款虚拟现实开发平台软件,从开发至今已走过十个年头。它基于C/C,运用新近OpenGL拓展模块开发出的高性能图形引擎。当运用Python语言执行开发时,Vizard同时自动将编写的程式转换为字节码抽象层(LAXMI),进而运行…

WorkPlus AI助理 | 将企业业务场景与ChatGPT结合

近年来,人工智能成为了企业数字化转型的热门话题,作为被训练的语言模型,ChatGPT具备模拟对话、回答问题、写代码、写小说、进行线上内容创作的能力,还能根据聊天的上下文进行互动。作为一款新兴的人工智能应用程序,对于…

【IDEA】DeBug(图文并茂)

文章目录 01_Debug简介和意义02_IDEA中的Debug步骤03_跳转到当前代码执行的行04_步过调试的使用05_步入调试的使用06_强制步入调试的使用07_步出调试的使用08_回退断点调试的使用09_运行到光标处10_计算表达式11_条件断点12_多线程调试 IDAEA(Interactive Data Anal…

【Linux高级 I/O(3)】如何使用阻塞 I/O 与非阻塞 I/O?——poll()函数

poll()函数介绍 系统调用 poll()与 select()函数很相似,但函数接口有所不同。在 select()函数中,我们提供三个 fd_set 集合,在每个集合中添加我们关心的文件描述符;而在 poll()函数中,则需要构造一个 struct pollfd 类…

分享18个好用的ChatGPT插件

上周ChatGPT又进化了,支持联网还有70几种第三方插件,不过还是老样子,只服务氪金玩家,免费端可能还得等等。之前只开放了俩插件,网络浏览器和代码解释器,只能说是真的不够用。 ChatGPT:不够&…

(一)before initialization of D3D(初始化D3D之前你需要了解的D3D基础知识)

什么是D3D? D3D全称Direct X 3D,即一组API可以用来针对GPU编程,不过他最主要的作用是用来渲染(不过现在也有很多其他应用比如d3d11va[Direct X 3D 11 Video API]用来进行硬件加速解码) Tips:Direct X 3D主要用来渲染,既然我们说到可以针对GPU编程了,当然不只是渲染的工作可以…

布隆过滤器和布谷鸟过滤器

过滤器使用场景: 比如有如下几个需求: 1.原本有10亿个号码,现在又来了10万个号码,要快速准确判断这10万个号码是否在10亿个号码库中?   解决办法一:将10亿个号码存入数据库中,进行数据库查询&…

iptables防火墙

iptables防火墙 一、iptables概述1.netfilter 与 iptables 的关系1)netfilter2)iptables 2.四表五链1)四表2)五链3)表的匹配优先级4)规则链之间的匹配顺序5)规则链内的匹配顺序 二、iptables防火…

CodeForces.1806A .平面移动.[简单][判断可达范围][找步数规律]

题目描述: 题目解读: 给定移动规则以及起始点,终点;分析终点是否可达,可达则输出最小步数。 解题思路: 首先要判定是否可达。画图可知,对于题目给定的移动规则,只能到达起始点(a,b…

AWD竞赛全流程解析

AWD(Attack With Defense,攻防兼备)是一个非常有意思的模式,你需要在一场比赛里要扮演攻击方和防守方,攻者得分,失守者会被扣分。也就是说,攻击别人的靶机可以获取 Flag 分数时,别人会被扣分,同…

【数据分享】我国地级市绿地利用现状数据(9个指标\Shp格式)

绿地是城市生态的重要组成部分,在很多分析中都会用到绿地数据!之前我们分享过Shp和Excel格式的全国地级市2003-2020年绿地面积数据(可查看之前文章获悉详情),以及中国31个主要城市的绿地空间分布的栅格数据&#xff08…

ARM的读写内存指令与栈的应用

1.基础读写指令 写内存指令:STR MOV R1, #0xFF000000 MOV R2, #0x40000000 STR R1, [R2] 将R1寄存器中的数据写入到R2指向的内存空间 需注意,此命令是将R1中的数据写给R2所指向的内存空间,而不是直接把R1的数据赋给R2,R2寄存器…

华为、思科、Juniper 三厂商NAT配置详解

大家好,这里是网络技术联盟站。 本文给大家介绍华为、思科、Juniper 三大厂商NAT配置详解。 1. 华为(Huawei) 华为是一家全球领先的信息与通信技术解决方案供应商,其网络设备提供了强大的NAT功能。 下面是华为设备上的NAT配置示…

【软考中级】软件设计师选择题题集(一)

海明校验码是在n个数据位之外增设k个校验位,从而形成一个k+n位的新的码字, 使新的码字的码距比较均匀地拉大。n与k的关系是(1)。 (1)A.2k - 1≥n + k  B.2n - 1≤ n + k   C.n = k  D.n-1≤k 【答案】A 【解析】 【答案】B A 【解析】 在采用结构化方法进行系统分析时,…

这才是CSDN最系统的网络安全学习路线(建议收藏)

01 什么是网络安全 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面…

ChatGPT 的议论文究竟写的怎么样?111 位高中教师告诉你答案

夕小瑶科技说 原创 作者 | 小戏、Python 在 OpenAI GPT-4 发布时发布的《GPT-4 Technical Report》中,其中很吸引人眼球的一部分是 GPT-4 应用于教育领域的出色表现,通过让 GPT-4 去完成美国的 AP 课程及考试,来评估 GPT-4 在多个学科中的性…

AtCoder Beginner Contest 302(A-D)

TOYOTA MOTOR CORPORATION Programming Contest 2023#2 (AtCoder Beginner Contest 302) Contest Duration: 2023-05-20(Sat) 20:00 - 2023-05-20(Sat) 21:40 (local time) (100 minutes) 暴搜场,1个小时出了4道,以为很有机会,结果E交了十发没…

python+django基于爬虫系统的世界历史时间轴历史事件大事记6ouj9

随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&#xf…

Mit6.006-lecture09-Breadth-First-Search

一、新单元:图 Quiz 1包含lecture01到lecture08,关注数据结构和排序 今天开始新单元,lecture09-lecture14,关注图算法 二、图应用 图无处不在 任何网络系统都存在有向连接图 比如:路网、计算机网络、社交网络 任…