智能驾驶是一个交叉学科,既需要车辆工程,控制工程,计算机科学等工程学科的知识,也需要数学,物理学等基础科学支撑。智能驾驶汽车通过搭载先进的车载传感器、控制器和数据处理器、执行机构等装置,从而具备在复杂行驶环境下的传感感知、决策规划、控制执行等功能,以实现安全、高效、舒适和节能的智能行驶。那么无论是物理意义上的传感器,控制器和执行机构,还是算法层面的传感感知,决策规划和控制执行,其实都是一种控制系统。本文就从控制理论与控制工程的角度跟大家聊聊控制系统与自动驾驶安全设计的关系。
1. 控制系统概述20世纪40年代是自动化技术和理论形成的关键时期,一批科学家为了解决军事上提出的火炮控制、鱼雷导航、飞机导航等技术问题,逐步形成了以分析和设计单变量控制系统为主要内容的经典控制理论与方法。例如,最早期的定速巡航系统就是使用经典控制理论的PID控制系统设计。50年代末到60年代初,大量的工程实践,尤其是航天技术的发展,涉及大量的多输入多输出系统的最优控制问题,用经典的控制理论已难于解决,于是产生了以极大值原理、动态规划和状态空间法等为核心的现代控制理论。汽车防抱死制动系统(ABS)就是一个使用现代控制理论的典型的最优控制系统设计。智能控制的思想出现于20世纪60年代,智能控制是具有智能信息处理、智能信息反馈和智能控制决策的控制方式,是控制理论发展的高级阶段,主要用来解决那些用传统方法难以解决的复杂系统的控制问题。智能控制研究对象的主要特点是具有不确定性的数学模型、高度的非线性和复杂的任务要求,它适用于对环境和任务的变化具有快速应变能力并需要运用知识进行控制的复杂系统的控制问题。大多数复杂的汽车控制系统,例如汽车动力系统,辅助驾驶系统和自动驾驶系统都属于这一类。
1971年智能控制奠基人傅京孙教授提出智能控制概念,并且归纳了三种类型的智能控制系统:1) 人作为控制器的控制系统;2) 人–机结合作为控制器的控制系统;3) 无人参与的智能控制系统。看着是不是很熟悉?SAE J3016中定义的自动驾驶等级与以上三种类型的智能控制系统也有着千丝万缕的关系。如果把整车看作被控对象,L0与L1基本还是第一种,即人作为控制器的控制系统;L2与L3应该是属于第二种,即人-机结合作为控制器的控制系统;L4与L5就是最后一种,无人参与的智能控制系统了。
2. 控制系统与自动驾驶自动控制系统是指为了实现各种复杂的控制任务,将被控对象和控制装置按照一定方式连接起来,组成的一个有机整体。一般的针对控制系统都可以用类似于以下的方框图的形式来表示。
这里着重讲一下反馈信号,它是由系统(或元件)输出端取出并反向送回系统(或元件)输入端的信号称为反馈信号,反馈有主反馈和局部反馈之分。它是实现控制系统三大性能指标(快速性,稳定性和准确性)的最重要和基础的要素之一。只有有了反馈信号才能形成一个闭环系统,从而让系统拥有减小和消除由于扰动所形成的偏差值,以提高控制精度和抗干扰能力。
如果把整个驾驶控制系统看作是一个控制系统,分为传感感知,规划决策和控制执行等环节的话,我们来看看傅京孙教授提出的三种类型的智能控制系统映射到各种驾驶控制系统中是怎么样的构成。
输入信号有环境信息,车辆信息等,控制对象可以宏观的理解为就是车辆本身,输出的是横向和纵向控制等。在人类驾驶控制系统,驾驶员在整个控制系统中还是扮演主要的角色,车基本上只在执行环节起到相关作用。在半自动驾驶控制系统,驾驶员虽然在一些情况下允许“脱手或者脱眼”,但是驾驶员在整个控制系统依然扮演着重要角色。例如,驾驶员会被要求识别一些车辆无法识别的边界场景,驾驶员可以按照需求接管车辆,驾驶员需要在车辆控制系统出现故障时作为备份(Fall-back)执行完整的动态驾驶任务(Dynamic Driving Task)。由此可以看出,人类驾驶员的参与还是贯穿整个控制系统的。再看全自动驾驶控制系统,车辆被要求执行完整的动态驾驶任务和备份,人类驾驶员不再参与控制系统回路任何环节。车辆要独立运行并且继续实现快速性,稳定性和准确性这三大控制系统目标可见将是非常大的挑战,这不只是任何一个环节的提升能够实现的目标,而是整个控制系统的一次“大跃进”,传感器性能,处理器运算能力,执行器可靠性的要求都需要大大提升。
3. 控制系统与自动驾驶安全汽车功能安全标准ISO 26262中对于功能安全的定义是什么,不存在由电子电气系统的功能异常表现引起的危害而导致不合理的风险。所以核心还是功能,任何功能特别是电子电气相关的功能都是由输入,逻辑和输出等模块组成的控制系统。功能安全开发始于相关项定义,其目的也是为了定义清楚相关项的功能,接口和边界,这也是一种复杂控制系统。从而为下一阶段的风险评估与危害分析中的功能故障定义和整车表现做好准备。再来看安全需求,无论是哪个层级的需求,功能安全需求,技术安全需求还是软硬件安全需求。导出这些需求的关键输入除了上阶段的需求,相关的技术设计框图也是非常重要的,例如系统设计框图,软件架构设计图等。所有的需求其实也都是可以将整个控制系统分为输入,逻辑和输出模块分别导出相关的需求,再分配给相应的ECU,系统部件或者软硬件模块。安全机制,由电子电气系统的功能、要素或其他技术来实施的技术解决方案,以探测故障,控制失效。如何探测故障呢?无论是多复杂的控制系统,都可以按照功能和需求把它打散成多个简单的控制回路。如果整个控制回路是个白盒,控制系统的输入是可预见的,传递函数是已知的,即已知的输入必定会有已知的输出,这样的系统通常都可以利用简单的反馈被监控。
其实很多功能安全设计,就是由很多这样的一个个小模块组成的。一旦控制系统出现任何问题或者故障,监控模块就可以通过控制系统已知的特性和模型去判断识别。那如果由于控制系统的局限性导致输入是未知的,传递函数和模型也是未知的或者不精确的,该如何保证控制系统的准确性?如果控制系统是安全相关的,又如何保证其安全性?这就是预期功能安全要解决的问题。
那么对于输入信号不确定,数学模型复杂且不确定的控制系统,如何进行相关设计呢?在智能化程度比较高的系统中可以采用分级递阶的智能控制方法进行设计。分级递阶智能控制(Hierachical Intelligent Control)是在人工智能、自适应控制以及运筹学等理论的基础上逐渐发展形成的,是智能控制最早的理论之一。当系统由若干个可分的相互关联的子系统构成时,可将系统所有决策单元按照一定优先级和从属关系递阶排列,同一级各单元受到上一级的干预,同时又对下一级单元施加影响。若同一级各单元目标相互冲突,则由上一级单元协调。这是一种多级多目标的结构,各单元在不同级间递阶排列,形成金字塔形结构。
此类结构的优点是全局与局部控制性能都较高,灵活性与可靠性好,任何子过程的变化对决策的影响都是局部性的。从最低级执行级开始,智能要求逐步提高,越高的层次越需要高的智能,而精度则递减,此类结构具有以下特点:1)越是处于高层的控制器,对系统的影响也越大;2)越是处于高层,就有越多的不确定性信息,使问题的描述难于量化。可见,递阶智能控制的智能主要体现在高层次上,在高层次遇到的问题往往具有不确定性。映射到自动驾驶控制系统:第三级执行级对应反应层(或功能层):它负责执行上层要求的基本任务,执行较低级的操作和控制硬件执行器。该层的处理频率较高,可以满足实时性操作和反应的要求。第二级协调级对应实施情况分类的主管层和反应导航:该层用来监督功能层,并使用从传感器派生的数据来识别车辆的情况,并产生轨迹,此层的处理频率居中。第一级组织级对应规划层:此层生成高级计划(道路和交叉路口的预估),车辆从当前位置到目的地将遵循的路径等。此层的频率相对较低,不需要满足实时性的要求。通过这样的分层设计,对于安全的设计也可以按照同样的逻辑,对于不同层级的特性和属性设计相应的安全机制。Conrad J. Pace和Derek W. Seward就在一个自动挖掘机的应用中使用了这种设计方法。对于最底层的功能层来说,由于时间响应实时性的要求和硬件架构的原因,通常功能和安全机制是不需要进行隔离设计的。那对于第一和第二层级,由于采用非确定性算法,机器学习等算法,其本身无法满足安全设计的要求,则需要单独设计相应的安全机制来满足其高安全等级的要求。这两层的安全设计与Phillip Koopman在2016年提出的“Checker/Doer”是一样的机制,这里的“Doer”就是采用复杂算法的功能,“Checker”则是更传统的软件技术,用于执行安全要求。“Checker”只检查“Doer”做出的决策是否违法相应的安全规则和假设。例如,以路径规划举例,“Checker”则始终只检查被选择的规划方案是否会撞上任何已知的障碍物。通过通讯获取的反馈信号和信息交互是实现此方法的核心要素之一。
预期功能安全标准ISO/PAS 21448中对于预期功能安全的定义为,不存在由于预期功能的性能不足引起的危害而导致不合理的风险。预期功能安全流程的最重要的目的之一就是不断地降低未知场景的可能性,而这些场景就是整个自动驾驶控制系统的重要输入之一。所以这个过程就是不断的让输入变成可预见的。
标准还通过一系列的方法和流程定义导致危害事件的起因,包括系统功能和需求的不足和局限,特别是传感器的感知和控制器的规划算法。这一过程就是不断地优化算法,让模型不断地完善。UL 4600自动驾驶安全评估标准将自动驾驶系统的安全要求分为ODD,传感器,感知,机器学习和人工智能,规划,预测,决策,控制等环节,其实也是对控制系统的解耦,化繁为简,为安全设计提供指导。UL 4600还利用一种快速迭代的方法,利用现场数据的反馈不断地完善标准的要求,这也是利用反馈手动的优化输入信息去完善模型。
4.结语此文旨在从控制系统的角度看自动驾驶及其安全设计,文中依然有许多不完整和不完善的地方,希望通过此文可以让更多的负责功能开发的朋友关注安全,也希望更多的负责安全开发工作的朋友关注功能和控制。其实,大家都有一个共同的目标,就是设计一个稳定、快速、准确的自动驾驶控制系统。
上一篇:尼欧科技车载安全机器人亮相深圳国际电子展
下一篇:打造车载数据的高速路,MIPI A-PHY标准出台
推荐阅读
史海拾趣
品质是Enable Semiconductor Corp公司的生命线。公司从原材料采购到产品生产、从质量检测到售后服务,都严格执行质量管理体系的要求。这种对品质的执着追求使得公司的产品在市场上享有良好的口碑。同时,公司还积极参与国际标准的制定和认证工作,不断提升产品的国际竞争力。
近年来,随着电流传感需求的持续增长和应用场景的不断拓展,市场对精确、经济高效的电流传感器的需求日益显著。Crocus Technology敏锐地捕捉到了这一市场趋势,并成功推出了TMR电流传感平台。这一平台凭借其高性能、低成本的优势,迅速获得了市场的认可和客户的青睐。
American Custom Components公司自创立之初,就致力于电子元器件的创新研发。在一次技术研讨会上,公司的研发团队发现了一种新型的半导体材料,具有出色的导电性和稳定性。经过数月的实验和验证,团队成功地将这种材料应用于新产品中,推出了一款性能卓越的集成电路。这一创新技术不仅提升了公司的产品质量,还赢得了市场的广泛认可,为公司的发展奠定了坚实基础。
宏发公司的发展离不开自主研发和技术创新。1998年,宏发成立了精合公司,开启了自主研发自动化设备设计及制造的征程。此后,公司不断加大在技术研发上的投入,建立了博士后科研工作站和院士专家工作站,形成了从产品研发、模具制造、零件制造到自动化成品装配及在线检测的一体化全产业链。通过技术创新,宏发不仅提升了产品性能和质量,还成功打破了国外技术垄断,实现了高端继电器的自主研发和生产。
2005年,埃派克森微电子发布了一系列USB鼠标控制器芯片,这些产品采用了公司独创的无晶振鼠标控制技术和对管免调技术。这些专利性的混合信号集成核心技术不仅为全球鼠标生产厂商提供了高性价比、简单方便的解决方案,还标志着埃派克森的专利技术全面进入商用时代。这一突破不仅提升了公司的市场地位,也为公司的后续发展注入了强大动力。
在数控加工领域,Contrinex的数字测量智能传感器带来了革命性的变革。这些先进的传感器能够精确实时地测量拉杆位置,通过智能决策,确保加工精度,防止潜在损坏。其卓越的性能和稳定性,使得Contrinex在这一领域取得了显著的成绩,并赢得了众多客户的赞誉。
安装的是ISE10.1和ModelSim6.2b,先安装的ISE,然后安装的ModelSim。之前用了好几种方法都连接不上,最后用了以下的方法使得ISE能够正常调用Modelsim了,步骤如下:3 S5 Z+ t0 E) n& I$ M3 H* n首先将modelsim.ini文件只读模式去掉,存档前面打对 ...… 查看全部问答∨ |
编写一个登陆界面,目标是输入密码过程中按Cancel按键可以取消一位密码的输入,这样的函数应该如何编写? 谢谢大家噢 o(∩_∩)o... void CPasswordDialog::OnCancel() { // TODO: Add extra cleanup h ...… 查看全部问答∨ |
大家过来试用下这个串口调试软件——SuperCom 号称是世界上最酷的 设计者:X 邮箱:lin_yu_cheng@126.com (注:用户有任何建议或使用问题欢迎联系作者) 软件简介: SuperCom是广州信先行电子科技有限公司(www.xxxmcu.com)自主开发的免费开放软件,专门设计贡献给广大电子开发者,堪称为世界上最酷的串口调 ...… 查看全部问答∨ |
|
使用STM32外设固件库构建一个项目(IAR)环境-update https://bbs.eeworld.com.cn/upfiles/img/200711/2007112313648108.rar文档还差点东西,先用只读方式提供阅读,等全部补充完成后再提供PDF格式的文档。… 查看全部问答∨ |
刚刚碰到这样的问题,请教大家啦 P3OUT=0XFE; P3DIR|=0Xff;//set pin as output P3SEL |= 0xf0;//P3.4、3.5 uart0, 3.6、3.7 uart1 端口初始化如上,如果之后有 P3OUT &=~ BIT0; 或者 P3OUT |= BIT0; 的语句就会不能进串口的中断,如果 ...… 查看全部问答∨ |
这个和我先前用LabVIEW开发TI的LM3S8962的步骤和方法基本都是一样的。 一:板子会从天上掉下来吗? 一个好消息就是,xilinx Spartan-3e 这块官板子可以免费申请!!我在网上查到了,这是申请地址http://www.eepw.com.cn/ev ...… 查看全部问答∨ |
怎样读写stm32的内部flash啊 我看了keil编译器的设置 0x8000000————0x8040000 这里是代码的存储空间吧? 如果要将数据写到别的地方怎么做啊 比如我要将一个数组 uint8_t ubuntu[5]={1,2,3,4,5};写道 flash的 0x90000 ...… 查看全部问答∨ |