全流程设计自动驾驶「AI工程落地」

关注:决策智能与机器学习,深耕AI脱水干货

作者:Aimee  来源:焉知自动驾驶
转载请联系作者

提要:面向自动驾驶,本文用基于模型的系统工程思维梳理了从需求到产品、从逻辑架构到物理架构的设计全过程。

正文

当前已有不少文章对自动驾驶功能软件设计逻辑进行详细介绍,其中包含传感器感知设计原理,控制器运动规划、决策控制等原理设计,文章均着重于对提升自动驾驶功能中的性能指标设计。关于系统开发设计层面,传统的汽车工程设计已有涉及,但是由于其开发结果较为单一(如设计发动机管理系统EMS控制车辆加速、制动控制系统ESC控制车辆减速、打滑等),目标相对明确、客观评价指数涵盖度高,且由于很多都是开发成熟产品,其工程开发过程更多的是关注其实现标定以优化,而并非重新建模开发。

因此,其系统工程设计过程并不被重视,也不完善,一般会存在如下问题:
①以机械制造为特征的传统开发过程在产品转型中成为了应对更大规模复杂性的瓶颈;
②文档化的过程和资产管理饱受不一致和低接受度困扰;
③人、流程和信息犹如孤岛,相互之间交互性低。

然而,自动驾驶系统作为新兴汽车产业模式,由于其更多的关注用户使用度反馈,其开发过程并非像传统车型那样按部就班,而是需要根据用户对驾驶体验的需求定义不同的系统建模语言来满足,并且该需求是按照定时或不定时的方式获取售后用户的抱怨点,从而在开发端设计时充分考虑到位,这种设计过程相对来说需要更加标准化、一体化的开发方式。标准化即是为了开发出更高质量的自动驾驶产品,需要在前期充分收集客户需求,并分类整理。随后需要将客户需求整理成开发工程语言(这里我们称之为系统需求),然后由系统语言分类整理成相应的设计语言(或称开发文档)。如上这一系列过程正是本文将要介绍的基于模型的开发过程。

如上所述,“系统”是一组相互作用的元素,共同实现自动驾驶功能的特定目的。系统具有典型的涌现性,系统部件组合后具有的能力大于单个部件的能力之和。“模型”是结构化的数据,易于可视化,将系统描述捕获为模型元素,各领域、各学科人员可以面对一个共同的模型开展工作,提供功能安全视角、信息安全视角、用户体验视角、架构视角,提供仿真驱动数据、模型转换数据、文档生成数据等。基于模型的系统工程(MBSE)概念正在逐渐被接受和实践。

如上图概要表示了我们提出“基于模型的系统工程,MBSE”开发方式,旨在从顶层开发模式上满足Automotive SPICE的开发过程要求,在开始系统设计前仿真需求来发现错误的、缺失的、矛盾的需求,测试系统并自动与其需求规格进行比较。同时满足Automotive SPICE的双向追溯要求,ISO 26262的功能安全要求以及基于组件的车载软件开发要求。

如上图以ASPICE整体开发流程为例,描绘了基于模型的开发方式在其中所占据的重要地位。对于整车开发来讲,设计之初建立较好的基于模型工程的数据可以增强数据的结构化和关联性,同时也可以为产品开发增强早期验证能力。

自动驾驶系统需求与架构开发流程

在基于系统工程模型为蓝本进行开发的过程中,其重要解决如下两个重要的开发要素:系统需求和架构。如下图中可以看出,在系统工程学设计中,主要包含“需求+架构设计”、“需求+验证反馈”两个关联步骤:“需求”是占据整个设计阶段的,即架构以需求为蓝本进行设计,而验证则是以需求进行逐条反馈追溯,需求的设计关系到整个系统架构设计。

其中需求阶段主要进行如下操作:
1)收集用户使用反馈,形成客户级需求;
2)梳理客户级需求,并利用系统语言生成系统需求;
3)根据生成的系统需求定义设计约束;
4)根据设计约束条件定义模块化宏观软硬件产品需求;

此外,是针对系统需求,生成系统架构,其总体包含如下一些子类;

功能架构:功能架构可以用树状结构表示层级关系,其中顶层为系统级,其下为子系统级(或称域级),最下面为零部件级。比如自动驾驶系统可以作为该顶层系统,而旗下子系统则包含交通拥堵辅助TJP、高速自动巡航HWP;高速自动巡航HWP又包含自动换道ALC、脱眼EyesOff脱手Handsoff驾驶以及对中巡航控制SCC等;而继续往下分层,则可以将SCC功能细分为纯横向控制的车道持续保持功能以及纯纵向控制的自适应巡航功能。最下层则到达零部件级,则表示对实现某项功能需要对应的零部件实现该种对应的功能,比如通过雷达识别前方目标距离和速度、通过摄像头识别目标类型、大小以及道路车道线信息等。

逻辑架构:一般情况下,逻辑结构包含有软件构设计和连接关系,同时链接关系中需要准确地用相应的符号表示出连接线类型及关系。

对于每一层逻辑结构表示对对如上功能架构中的每一个功能模块或子模块按照系统功能分类进行的架构设计。其设计结果是能够轻而易举的从结构中看出各控制器总成、部件、关联系统之间的逻辑关系,逻辑架构是将功能架构中某一条功能链路,从上之下筛选出来作为单链进行连接关系分析。例如对于车道对中控制链路HWP——SCC——ACC可以从逻辑层进行的从上至下的分析。最后可以根据其高低层不同的特性分解成可实现的软件架构和硬件架构。

软件架构:系统设计对于软件开发来说需要提前定义软件架构模型,该模型是对于软件的输入输出定义明确地架构框架,注意这里的软件架构是指从系统层面上进行概要设计的粗略开发模型,不包含模型内部的实现算法及变量定义。

部署架构:系统部署架构可以认为是系统中所需零部件的布置位置及连接关系,也可以将这种部署架构看成系统实际的物理架构。

由以上基于用户体验-用例-场景-功能的架构开发方法可以生成系统工程设计中相应的模块设计结果。最后利用相应的工具进行快速原型开发及虚拟验证工作,如下图表示了相应的系统开发工具及验证步骤。其中,E/E架构开发采用正向开发流程,并结合PREEvision架构建模工具和Rhapsody仿真工具联合开发。其中Rhapsody为辅助工具,PREEvision做为主工具。

  • 文档解决先期思路整理,仅撰写初稿

  • Rhapsody解决图形化建模和仿真验证、用于辅助确定逻辑、接口

  • PREEvision作为主平台维护设计结果,所有评审数据、下发供应商规范均从该工具导出MA工具用于完成功能安全HARA、功能安全概念分析

本文主要对系统工程学开发过程中的利用Rhapsody进行系统原型开发及仿真的过程进行讲解,其中设计过程包括使用场景(设计用例图+用例规约时序)、需求分析(设计功能+功能时序图)、功能设计(子系统接口+子系统状态设计),架构设计(快速原型仿真+架构生成),且与后续EE架构设计有着紧密的逻辑关系。

1)设计用例图;

用例图实际就是从用户的角度对某一个功能所需要满足的所有项目进行罗列,这里我们又将设计用例称之为(UseCase,UC),其中,从系统设计角度讲应该是基于正面UC进行的,即先设计系统应有的功能,再优化阶段在进行失效反推。

2)用例规约时序;

即将用例设计中的某个UC所涉及的所有关系端都罗列出来,并参照实现该用例UC建立各个关系端的动作执行顺序图。

a)用例图                          b)用例规约时序

3)功能需求

功能需求建立过程实际是需要将每一个UC进行功能拆解,最终拆解为子功能层、零部件层、信号层,其目的是可以利用其解析的信号交互进行后续仿真测试。一般的,每一个用例对应着多条功能需求。举例如下:

用户需求:车辆进行自动驾驶;
系统需求:则是分解用户需求到实现层面上,包含如下子状态;
实现自动对中脱手驾驶:其中包含准确发起横向控制扭矩,准确发起纵向加减速指令;
实现自动换道脱手驾驶:其中包含准确发起换道控制指令,准确发起换道控制扭矩,准确响应驾驶员换道/回退指令等。

4)功能实现时序

功能实现时序与用户规约时序虽然均为系统时序图,但是两者有明显的不同之处。其中,用户规约时序实际是一种从用户层面上能够明显感知的流程图,是对用户使用每个功能的整个流程的表达。而系统功能实现时序图则是对系统功能设计过程中,其底层调用各个功能所需子模块或执行端程序的过程。其覆盖范围包括系统逻辑架构中的所有层面的控制器(ECU)、执行器(ESP、EMS、EPS、IP等)。

c)功能分解图                          b)功能时序图

5)子系统接口

子系统接口主要是对之前功能实现时序中几个关联交互部分画出关联组件的相关接口。比如设计子系统自动对中巡航系统与ESP的减速度、与EMS的扭矩控制信号、与EPS的转向角控制信号以及与IP的显示交互信号等。

6)子系统状态设计

这一步就是大家比较熟悉的设计系统状态机了,即针对性的对自动驾驶某个子系统画出相应的状态跳转图。其状态跳转图包含从关闭、待机、激活、退出等系统所有状态的集合,最终输出的状态机控制的所有信号的集合。例如,自动换道系统需要根据自身实际状态从状态跳转过程中输出如下信号:

ALC系统状态信号(包含失效状态);
自动开启转向灯信号;
ALC状态系统提示信号;
ALC立即接管信号;
ALC危险报警灯信号;

这里需要注意的是在设计状态跳转图时需要在每一个状态跳转流中附上相应的跳转条件,且状态条件需要以信号逻辑组合的方式进行表达。

e)子系统接口                     f)子系统状态机

7)快速原型仿真

对于以上生成的系统设计原型,其每一个子系统都生成的子系统状态机都可以采用功能仿真选项进行仿真设计,设计的结果时可以生成每个子系统功能定义文档和功能设计接口,同时仿真后对相应的时序图进行逻辑一致性校验。

g)逻辑校验仿真图

8)生成报告原型

对于如上过程完成后,可以通过手动编译的方式生成相应的系统开发报告,报告内容包括设计阶段的所有用例图、用例规约时序图、系统功能分解图、系统功能时序图、子系统接口、子系统状态机等。同时,还包括系统阶段定义的接口信号及生成的软件代码等,这些代码可以用于后续软件开发的过程输入。

g)仿真生成报告               h)仿真生成C++代码

通过如上几个步骤的系统设计+仿真后,便可以生成相应的系统功能规范和系统与软件接口。

总 结

由于MBSE的思想将深重的影响到主机厂对于完善APICE的整车开发流程,本文详细介绍了什么是基于模型开发的系统工程设计,并以实例充分讲解了如何利用有效的工具进行模型化系统设计,可以有效的帮助解答自动驾驶系统工程学将如何用于工程设计和软件开发等相关工作。

自动驾驶系统开发是MBSE在当前应用的潜力领域,单一来源描述性系统模型,帮助数据集成,打破协同壁垒,支撑不同视角和应用。高效的运用MBSE的方法进行系统设计,秉持过程驱动、数据集成的理念,以应用生命周期管理解决方案作为基础平台,可以有效的整合过程可视化平台、变体管理平台、设计开发工具、测试工具等业界优秀方案。同时,面向软件密集型车载产品开发过程和资产管理,可以充分构建面向多用户、界面统一的完整汽车电子协同研发平台,实现协同研发过程数据和知识资产的充分定义、分享和使用。

历史精华好文

交流合作

请加微信号:yan_kylin_phenix注明姓名+单位+从业方向+地点,非诚勿扰。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于人工智能的自动语音识别交换机的设计流程图如下所示: 1. 用户语音输入: ┌─────────────────────┐ │ 用户语音输入 │ └─────────────────────┘ 2. 语音信号预处理: ┌─────────────────────┐ │ 语音信号预处理模块 │ └─────────────────────┘ 3. 特征提取与语音识别: ┌─────────────────────┐ │ 特征提取与语音识别模块 │ └─────────────────────┘ 4. 文字转语义理解: ┌─────────────────────┐ │ 文字转语义理解模块 │ └─────────────────────┘ 5. 意图识别与交互控制: ┌─────────────────────┐ │ 意图识别与交互控制模块 │ └─────────────────────┘ 6. 执行操作与反馈输出: ┌─────────────────────┐ │ 执行操作与反馈输出模块 │ └─────────────────────┘ 7. 语音合成与输出: ┌─────────────────────┐ │ 语音合成与输出模块 │ └─────────────────────┘ 8. 用户语音输出: ┌─────────────────────┐ │ 用户语音输出 │ └─────────────────────┘ 以上是基于人工智能的自动语音识别交换机的设计流程图,每个模块都有特定的功能,包括语音信号预处理、特征提取与语音识别、文字转语义理解、意图识别与交互控制、执行操作与反馈输出、语音合成与输出等。整个流程从用户的语音输入开始,经过一系列处理和分析,最终将结果以语音输出的形式反馈给用户。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值