高级驾驶辅助系统中前方碰撞预警系统需求分析

weixin_41894390 2021-12-28 00:29:59

1概述

以来,自动驾驶技术都是人工智能化发展的重要方向之一,根据2020年3月中国工信部发布的《汽车驾驶自动化分级》,自动驾驶以5个要素为主要依据,被划分为0级(应急辅助)、1级(部分驾驶辅助)、2级(组合驾驶辅助) 、3 (有条件自动驾驶) 、4 级(高度自动驾驶) 、5 级(完全自动驾驶) 共6个不同的等级。高级驾驶辅助系统(ADAS)功能主要覆盖了L0-L2级别范围。

ADAS(Advanced Driver Assistance System),高级驾驶辅助系统,借助安装在汽车上的毫米波雷达、激光雷达、摄像头、超声波雷达等传感器设备来感知车身周围环境并收 集数据,在进行静、动态物体辨识、侦测与追踪后通过系统的运算与分析,使司乘人员预先察觉可能发生的情况与危险,从而有效增加汽车驾驶的舒适性与安全性,减少交通事故出现的可能性。

 

ADAS可以分为信息辅助与控制辅助两大类,前向碰撞预警系统(FCW)属于信息辅助类,是通过雷达系统来时刻监测前方车辆,判断本车与前车之间的距离、方位及相对速度,当存在潜在碰撞危险时对驾驶者进行警告。FCW系统本身不会采取任何制动措施去避免碰撞或控制车辆。

 

2需求分析

·需求就是对用户期望的软件行为的表述;     

·获取需求就是需求分析师通过关注用户的期望和需要,从而获得用户期望的软件行为,然后对其进行表述的工作;     

·需求分析是在获取需求的基础上进一步对软件涉及的对象或实体的状态、特征和行为进行准确描述或建模的工作。

本系统的主要参与者包括传感器,数据处理系统,驾驶员

功能性需求

·传感器检测前车速度,加速度,本车速度,加速度,本车与前方障碍物距离等数据,并发送到数据处理系统

·数据处理系统监听传感器发送来的数据,采用PID,MPC等算法计算出与前方障碍物距离,判断本车与前方障碍物距离是否小于安全距离,如果小于安全距离则发出警报

·驾驶员侦听汽车是否发出前方碰撞警报,如果接收到警报,则采取相应措施,如制动,并反馈给数据处理系统

非功能性需求

·及时性,能在最短的时间内接受计算数据并反馈给驾驶员,确保在碰撞发生前发出警报

·准确性,提供的数据与计算结果准确无误,减少误报,提高系统的可信度

·安全性,确保系统没有被侵入及被篡改数据的风险,系统的各个部分能够正常运行

 

3用例建模

用例(Use Case)的核心概念中首先它是一个业务过程(business process),经过逻辑整理抽象出来的一个业务过程,这是用例的实质。什么是业务过程?在待开发软件所处的业务领域内完成特定业务任务(business task)的一系列活动就是业务过程。

3.1用例建模基本步骤

  1. 从需求表述中找出用例,往往是动名词短语表示的抽象用例;
  2. 描述用例开始和结束的状态,用TUCBW和TUCEW表示的高层用例;
  3. 对用例按照子系统或不同的方面进行分类,描述用例与用例、用例与参与者之间的上下文关系,并画出用例图;
  4. 进一步逐一分析用例与参与者的详细交互过程,完成一个两列的表格将参与者和待开发软件系统之间从用例开始到用例结束的所有交互步骤都列举出来扩展用例。

3.2用例图

3.2.1传感器用例图

3.2.2数据处理系统用例图

 3.2.3驾驶员用例图

 

4业务领域建模

业务领域建模是开发团队用于获取业务领域知识的过程。因为软件工程师往往需要工作在不同的业务领域或者不同项目中,他们需要业务领域知识来开发软件系统。软件工程师往往来自不同的专业背景,这可能会影响他们对业务领域的认知。因此业务领域建模有助于开发团队获取业务领域知识形成统一的业务认知。

4.1业务领域建模步骤

(1)收集应用业务领域的信息。聚焦在功能需求层面,也考虑其他类型的需求和资料;

(2)头脑风暴。列出重要的应用业务领域概念,给出这些概念的属性,以及这些概念之间的关系;

(3)给这些应用业务领域概念分类。分别列出哪些是类、哪些属性和属性值、以及列出类之间的继承关系、聚合关系和关联关系。

(4)将结果用 UML 类图画出来。

4.2业务领域概念分类

·数据处理系统接受传感器发送的数据

这里数据处理系统,传感器,数据都可以独立存在,所以都是类

·数据处理系统根据计算的预期距离与安全距离,向驾驶员发出预警信息

这里驾驶员是类,预期距离与安全距离是数据处理系统的属性,警告表示驾驶员与数据处理系统间的关联关系

4.3类图

 

 

5.数据建模

数据建模(Data modeling)是为要存储在数据库中的数据创建数据模型的过程。有助于数据的可视化和数据业务的实施。数据模型可确保命名约定、默认值、语义、安全性和一致性,同时确保数据质量。数据模型强调的是数据的选择和数据的组织形式,不关注需要对数据执行的操作。 

本系统涉及的数据模型如下:

sensor

字段类型描述
idint 主键
namestring传感器名称
typestring类型
enabledbool是否使能

 

 

 

 

 

 

carstate(本车状态数据)

字段类型描述
vegofloat速度
aegofloat加速度
gasfloat油门
gaspressedbool油门状态
breakfloat刹车
breakpressedbool刹车状态

 

 

 

 

 

 

 

 

radarstate(传感器检测的前车状态数据) 

字段类型描述
v_leadfloat速度
a_leadfloat加速度
d_leadfloat前车与本车当前距离

 

 

 

 

 

warnings 

字段类型描述
idint代码,主键
levelchar警报级别
typestring类型
logstring日志

 

 

 

 

 

 

6 概念原型 

概念原型是一种虚拟的、理想化的软件产品形式。

概念原型=用例+数据模型

从之前的项目用例和数据模型中可得出项目的概念原型工作过程:

传感器检测到前方车辆信息数据与本车状态信息,并将这些数据发布到汽车数据处理系统。汽车数据处理系统接收数据并进行计算得到与前车预期距离,根据与安全距离比较决策是否发出前方碰撞预警。驾驶员接受预警后做出决策,结果反馈给汽车处理系统。

7 设计模式

7.1 介绍

设计模式的本质是面向对象设计原则的实际运用总结出的经验模型。采用设计模式的目的就是为了软件的重用,因此采用关注点分离的思想,区分软件中变化的部分和不变的部分,在不变的部分使用设计模式,以提高软件的重用性和可维护性。

功能分解是处理复杂问题的一种自然的方法,但是需求总是在发生变化,功能分解不能帮助我们为未来可能的变化做准备,也不能帮助我们的代码优雅地演化。

用模块化来包容变化,使用模块化封装的方法,按照模块化追求的高内聚低耦合目标,借助于抽象思维对模块内部信息的隐藏并使用封装接口对外只暴露必要的可见信息,利用多态、闭包、lamda函数、回调函数等特殊的机制方法,将变化的部分和不变的部分进行适当隔离。这些都是设计模式的拿手好戏。此外在设计模式的基础上,可以更加方便地用增量、迭代和不断重构等开发过程来进一步应对总是变化的需求和软件本质上的模型不稳定特质。

7.2 设计模式分类

根据模式是主要用于类上还是主要用于对象上来划分的话,可分为类模式和对象模式两种类型的设计模式;
根据设计模式可以完成的任务类型来划分的话,可以分为创建型模式、结构型模式和行为型模式 3 种类型的设计模式;
常见的设计模式有:单例(Singleton)模式,原型(Prototype)模式,建造者(Builder)模式,代理(Proxy)模式,适配器(Adapter)模式,装饰(Decorator)模式,外观(Facade)模式,享元(Flyweight)模式,策略(Strategy)模式,命令(Command)模式。

7.3 FCW系统的设计模式

在FCW系统中,传感器发布消息,数据处理系统订阅消息,具体到不同的部分,订阅的消息也不相同,例如纵向规划需要前方障碍物的速度,加速度等消息,横向规划需要车道线消息,车身控制系统需要当前车辆的一些状态消息等,所以本系统使用的是观察者模式,当一个对象的状态发生改变时,把这种改变通知给其他多个对象,从而影响其他对象,这样所有依赖于它的对象都得到通知并被自动更新。

 

8 软件架构

8.1 软件架构风格

大型软件系统的软件架构模型在整个项目中起到至关重要的作用。

首先,软件架构模型有助于项目成员从整体上理解整个系统;

其次,给复用提供了一个高层视图,既可以辅助决定从其他系统中复用设计或组件,也给我们构建的软件架构模型未来的复用提供了更多可能性;

再次,软件架构模型为整个项目的构建过程提供了一个蓝图,贯穿于整个项目的生命周期;

最后,软件架构模型有助于理清系统演化的内在逻辑、有助于跟踪分析软件架构上的依赖关系、有助于项目管理决策和项目风险管理等。

常见的软件架构有三层架构,MVC架构,MVVM架构。常见的软件架构风格有管道-过滤器、客户端-服务、P2P(如区域链)、发布订阅、CRUD、层次化架构。本系统使用发布-订阅风格的软件架构。在发布-订阅架构中,有两类构件:发布者和订阅者。如果订阅者订阅了某一事件,则该事件一旦发生,发布者就会发布通知给该订阅者。观察者模式体现了发布-订阅架构的基本结构。

8.2项目视图

分解视图

分解是构建软件架构模型的关键步骤,分解视图也是描述软件架构模型的关键视图,一般分解视图呈现为较为明晰的分解结构(breakdown structure)特点。分解视图用软件模块勾划出系统结构,往往会通过不同抽象层级的软件模块形成层次化的结构。

 

依赖视图

依赖视图展现了软件模块之间的依赖关系。比如一个软件模块A调用了另一个软件模块B,那么我们说软件模块A直接依赖软件模块B。如果一个软件模块依赖另一个软件模块产生的数据,那么这两个软件模块也具有一定的依赖关系。

 

执行视图

执行视图展示了系统运行时的时序结构特点,比如流程图、时序图等。执行视图中的每一个执行实体,一般称为组件(Component),都是不同于其他组件的执行实体。如果有相同或相似的执行实体那么就把它们合并成一个。在设计与实现过程中,我们一般将执行视图转换为伪代码之后,再进一步转换为实现代码。

 

9 总结

本文以高级驾驶辅助系统中的前方碰撞预警系统为需求场景,进行了分析需求和建模,形成了业务概念原型。同时结合软件设计模式、软件架构等给出项目的设计方案。在整个过程中对软件需求分析有了初步了解,理解了设计模式背后蕴含的提高软件可重用性的目标,加深了对软件架构内在的一致性和完整性的理解。

 

 

作者:427

...全文
246 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文研究了基于蜣螂优化算法(DBO)的无线传感器网络(WSN)覆盖优化问题,提出了一种创新的智能优化方法以提升网络覆盖率和整体性能。文详细阐述了蜣螂优化算法的核心原理及其在WSN节点部署的应用机制,结合Matlab实现了算法仿真,并与标准PSO、自适应PSO、量子PSO、PSO-GA、PSO-GSA等多种智能优化算法进行了对比实验,验证了DBO在解决NP难问题(如TSP、QAP、背包问题)方面的优越性。研究聚焦于通过优化节点布局最大化感知覆盖范围,延长网络生命周期,提高监测效率,同时提供了完整的代码实现与仿真结果分析,展示了该方法在实际场景的有效性与可行性。; 适合人群:具备一定编程能力和优化算法基础的科研人员、研究生及工程技术人员,特别适用于从事无线传感器网络、智能优化算法、物联网系统设计及相关领域研究的专业人士。; 使用场景及目标:①用于无线传感器网络节点部署的优化设计,提升网络空间覆盖率与资源利用率;②作为智能优化算法的教学与科研案例,比较不同元启发式算法在复杂组合优化问题上的性能差异;③为相关科研项目提供可复现的Matlab代码支持和技术实现参考,推动算法在实际工程的推广应用。; 阅读建议:建议读者结合提供的Matlab代码进行动手实践,深入理解算法实现细节与参数调优过程,重点关注仿真结果的对比分析,并尝试将该算法迁移至其他优化问题以拓展其应用边界。
内容概要:本文针对电网故障下分布式能源系统的多目标无功优化问题,聚焦并网转换器(GCC)在复杂工况下的高性能控制策略研究。基于Matlab/Simulink平台,构建了以ANPC三电平逆变器为拓扑的并网系统模型,提出了一种融合双极性倍频脉宽调制(DPWMA)、正负序分离锁相环(PLL)与电网电压前馈控制的一体化控制方案。该方案旨在综合提升系统在电压对称、不平衡及动态扰动工况下的电能质量、电压稳定性与功率平衡能力。研究通过多场景仿真验证,证实所提策略能有效抑制低次谐波、降低总谐波畸变率(THD),精准分离并抑制负序分量以维持三相电流对称,并通过前馈机制显著改善动态响应速度,快速抑制电压骤升/骤降及负载切换引起的电流畸变与功率冲击,从而实现系统在恶劣电网条件下的稳定、高质量并网运行。; 适合人群:具备电力电子、新能源并网或自动控制等相关专业背景,熟悉Matlab/Simulink仿真环境,从事科研或工程开发1-5年的研究人员、高校研究生及工程技术人员。; 使用场景及目标:①深入研究高渗透率新能源背景下,电网故障时的无功优化与系统稳定控制技术;②掌握ANPC三电平逆变器的先进调制(DPWMA)与复杂电网适应性控制(正负序分离、前馈补偿)技术;③在Simulink实现并验证不平衡、电压波动等复杂工况下的高性能并网控制算法;④为提升分布式能源系统在实际电网的并网友好性与运行可靠性提供理论依据和技术解决方案。; 阅读建议:建议结合提供的Matlab代码与Simulink模型进行动手实践,重点剖析DPWMA调制、正负序分离锁相及电网电压前馈三大核心模块的协同工作机制,通过调整电网故障参数和控制器增益,对比分析不同控制策略下的仿真波形,深刻理解各技术环节对系统稳态与动态性能的关键影响。

571

社区成员

发帖
与我相关
我的任务
社区描述
软件工程教学新范式,强化专项技能训练+基于项目的学习PBL。Git仓库:https://gitee.com/mengning997/se
软件工程 高校
社区管理员
  • 码农孟宁
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧