Mathworks资深应用工程师王鸿钧 仿真加速自动驾驶功能的开发 (mathworks中国官网)
Mathworks资深应用工程师 王鸿钧
雷锋网新智驾按:10月26日至27日,2018 全球智能驾驶峰会在苏州召开,本次峰会由苏州市相城区人民政府主办,苏州高铁新城管理委员会、雷锋网&新智驾和数域承办,邀请到来自主机厂、科技公司、资本机构和产业研究机构等领域的多位专家,共同打造了一场智能汽车和自动驾驶领域的顶级峰会。
自动驾驶龙头企业Waymo的秘密武器之一是模拟系统Carcraft。驾驶模拟系统能够提高数据的利用率、以低成本的方式构建极端场景,对自动驾驶进行验证。事实上,所有有志于以自动驾驶颠覆未来出行方式的企业,都会注意到自动驾驶模拟器的重要性。
10月27日,Mathworks资深应用工程师王鸿均在2018全球智能驾驶峰会上发表主题为《以仿真加速自动驾驶功能的设计、实现与验证》的演讲,分享顶尖软件开发商和供应商眼中仿真加速自动驾驶所需要的功能,以及如何实现、验证。
他主要介绍了Mathworks的MATLAB和SIMULINK两个主要产品,以及它们是如何在自动驾驶中发挥作用的,并介绍了两个实际应用案例。
以下是王鸿钧演讲全部内容,雷锋网新智驾进行了不改变原意的编辑:
Mathworks作为工具软件提供商,在系统供应商的背后以自己的力量默默推动着自动驾驶系统的发展。包括整机产品里面,或多或少都有Mathworks参与的成分。
Mathworks和MATLAB、SIMULINK
Mathworks公司来自美国,公司的宗旨是加速工程与科学的进程。不管是做科研还是做产品,在各种各样的系统开发过程中Mathworks的这种基于仿真的工程软件越来越多地发挥作用。Mathworks主要产品是MATLAB、SIMULINK。
MATLAB作为一个领先数学计算软件,距今已有35年的历史了。MATLAB语言已经成为一个工业标准的高级编成语言,它被广泛的应用于算法开发数据计算,数据的可视化以及数据的分析当中。
SIMULINK是基于车辆控制系统框图对动态系统建模和仿真。然后去分析系统的特性、完成系统的设计。同时SIMULINK软件支持模型到嵌入式代码的自动转化,可以将建立的系统模型转换成C或者C++的代码,把这些代码直接用到嵌入式系统当中,省去了手写手动编码的一个过程,同时SIMULINK提供了非常多的工具箱,可以使用它去进行自动控制系统的设计、信号处理和通讯系统的设计,以及各种物理对象的建模。
MATLAB和SIMULINK如何用于开发自动驾驶功能
王鸿钧介绍,Mathworks可以作用于自动驾驶开发的三个分析:
第一个方面是控制,MATLAB、SIMULINK是一个自动控制的行业标准的软件,可以使用MATLAB、SIMULINK去进行系统的建模,进行控制算法,以及先进控制算法的开发,包括在自动驾驶里面经常用到模型预测控制算法的开发。可以进行仿真、进行算法的设计等等,同时用SIMULINK自动对进行进行回归测试。
第二个方面是感知,在感知层Mathworks可以开发视觉算法,雷达算法,包括激光雷达算法,可以对采集到的数据进行可视化,对传感器收集到的数据进行分析,包括去设计深度学习的算法。Mathworks可以直接在MATLAB当中完成深度学习神经网络的设计、网络的训练以及网络的部署。也可以生成用于GPO的代码或者是FPGA的代码,可以直接把它部署到相应的硬件。
第三个方面是导航,Mathworks可以使用MATLAB进行路径规划的算法的仿真,同时和机器人操作系统之间有良好的连接性。
此外,作为一个通用的数学平台,MATLAB还提供了非常多的其它功能,比如数据分析,大数据或者基于大数据的机器学习等等。
功能安全方面,自动驾驶系统是高安全性等级要求的系统,Mathworks对系统功能安全方面有一系列认证的要求,比如ISO26262的认证,Mathworks提供了一整套的验证和测试的工具链,可以帮忙完成认证的工作。
Mathworks和Scania的应用案例
合作伙伴Scania是Mathworks工具应用的典型案例,它用Mathworks工具开发部署,用AEB的传感器融合算法。目前AEB也是已经开始作为一个欧盟的标准,强制安装在货车上面,在国内也是很快会成为下一个需要强制安装的对象。
在系统原理上,传感器融合的算法是从两类传感器采集到周围的环境感知数据。第一类传感器是毫米波雷达,第二类传感器是摄像头的图像数据,Mathworks针对这两个传感器采集到周围车辆目标检测的结果去进行一个融合,然后获得周围环境的一个准确感知。
需要通过搭载了雷达传感器和视觉传感器的实验车辆进行大量公路的实验,然后区别采集到传感器第一手原始的数据,把这些数据使用数存储下来。传统上来说,如果设计了一个新的算法,进行了一轮新的迭代,需要从头进行路试,然后把新的算法再进行整个100多万公里的公路测试,但是显然这个效率是非常低的,所以Mathworks采用一种重复仿真的工作流程,这中间最关键的核心环节就是仿真,也就是采集到了150万公里的实车数据之后,不需要再去进行公路测试了,可以把这些数据放到数据库里面去,使用设计算法去运行这些数据。Mathworks通过仿真的环节进行一个虚拟的测试,可以进行快速的迭代,每修改一轮算法之后只需要在服务器上面运行仿真的环境,然后在这个仿真的环境里面测试算法就可以了。
Scania统计的结果是:每运行一次150万公里的仿真需要的时间是12个小时,只需要12个小时就可以替代150万公里的公路测试,这是一个非常高效率的行为。
MATLAB在整个传感器融合算法的开发过程中提供了一个完整可视化开发的环境,以及一个圆形算法。MATLAB提供的功能包括:视频的播放、视频上的一些叠加显示,包括目标框的识别、车道线的识别以及右边鸟瞰图的绘图,把这些部分组合起来就可以获得一个图形化的传感器融合的开发界面,同时Mathworks提供了MATLAB Coder,这是是从MATLAB代码转换成C或者是C++嵌入式代码的一个工具。直接使用MATLAB Coder就可以将其转换为C或者C++代码。得到C代码以后,就可以把这些算法用于计算机或者一些嵌入式系统,只要获得了C或者C++代码就可以很容易进行移植工作。
Mathworks和Voyage的应用案例
Voyage是美国一个比较新兴的自动驾驶公司。Voyage在2017年公开了一些自动驾驶出租车运行的信息。Voyage是怎样使用MATLAB 和Simulink来开发他们的车辆纵向控制的呢?
首先Voyage用Simulink进行纵向模型控制器的仿真。然后生成一个ROS节点,和ROS这类系统是有一个比较好的互通性,因为Mathworks提供了相应的支持,可以生成C++代码,用于生成ROS的节点,同时生成的ROS节点,用户可以把它集成到ROS开源软件的框架里面去。框架里面还有其它的组件,包括感知与规划算法在内,可以很方便的把其中一部分功能用MATLAB和SIMULINK去补,通过模型开发,然后再进行代码生成。
Voyage的一个硬件负责人说:“我们一直在寻找一种快速原型产品的开发方式,我们发现用SIMULINK进行控制器的开发和代码生成,同时使用MATLAB实现开发任务的自动化,可以帮助我们进行快速的迭代,能够大大提高我们整个产品的开发效率。”
Voyage很快速的从MATLAB当中提供一个参考事例的基础上进行仿真,并且生成控制器的C++代码,在三天之内就集成到了实车上进行测试。其实它存在非常多的问题,实在功能上,对它需求的定义也不是很完善,需要在实车上进行大量的实验,去完善控制器的设计需求。
对起停这两个状态分别做设计,分别设一个独立的控制算法,然后组合起来,形成一个完整的纵向控制器,Voyage在实车测试的时候,发现了这些新需求,针对这些新的需求完善设计,去修改控制器。反复加入了这类需求之后,Voyage再去修改SIMULINK,和SIMULINK里的算法设计。最后去完成模型预测控制的参数迭代,以及一些边界约束条件迭代等等,使得整个控制器的性能越来越好,就可以往产品化的方向继续努力。
Mathworks提供一系列仿真自动驾驶功能的参考程序
目前绝大多数已有的汽车产品处于L1-L2阶段,在欧盟的标准里面,2020年是L1普及甚至成为强制标准的阶段。L2在一些车辆上已经实装了,现在有些产品已经有了L2的功能,比如说TGA、交通拥堵辅助这类功能就是典型L2的功能。
L3以上的技术目前为止并不成熟,Mathworks的demo也在不断优化完善中,目前提供了一个简单的仿真框架,就是使用雷达和视觉传感器,传感器融合模型预测控制等等模块进行系统闭环仿真的MATLAB。这个框架当中包含了控制器、传感器模型,可以在这个基础上快速进行原型系统的仿真。可以通过SIMULINK当中一些朴实无华的功能去对仿真过程当中的信号进行分析。
控制器包括两块内容:第一块是传感器融合与目标跟踪;第二块是右边ACC控制算法。使用模型预测控制可以把这部分分别生成C++代码。对于车辆建模,车辆属于被控对象,需要用到车辆动力学模型,所以Mathworks也推出了车辆动力学模块库,同时也支持3D显示,仿真过程可以通过3D画面显示出来。
同时Mathworks也支持批量的自动化测试,因为个自动驾驶功能的测试需要用到大量场景,甚至是几十万上百万公里的测试场景。Mathworks提供了一个驾驶场景设计器可以去画一些简单的测试场景,也提供了一些预制的驾驶场景,AEB、ACC等等的测试场景,Mathworks也支持Open driver道路文件的导入,用户可以去导入一些已有的道路去进行场景设计,去进行仿真。
还可以使用SIMULINK Test去运行自动化的批量测试,载入测试运行测试,分析结果,所有的这些动作都是自动化的,最后可以生成一份测试报告,在测试报告中可以分析哪些测试通过,哪些测试不通过。
最后如果还想把图像算法或者是激光雷达算法等集成到整个闭环的仿真当中,Mathworks还提供了一种是可以和“虚幻”引擎的3D道路场景进行协同和仿真的方法。MATLAB通过插件可以使用虚幻编辑器去创造一些自定义的场景,并与SIMULINK进行协同和仿真。
“虚幻”引擎这一类的场景设计工具,有着相对丰富的资源和素材。同样Mathworks的三维游戏引擎也可以用来去进行雷达传感器或者激光雷达传感器的建模,整个系统仿真环境也可以把它放到硬件在环、甚至是车辆在环仿真里面去。因为Mathworks的车辆模型传感器模型都是可以生成C或者是C++代码的,可以分到仿真机这种实时计算机里面去运行。
“虚幻”引擎可以在桌面上运行,把嵌入式控制器连接起来就可以形成一个硬件在环仿真的环境。在传统上,MATLAB和SIMULINK本身提供了一套基于模型设计的微开发流程完整的工具链。
在整个需求定义模型设计完成之后,还要做相应的软件设计和代码生成,Mathworks拥有Simulink Coder这类基于模型的验证工具,包括代码验证工具、进行实时仿真测试的工具等等,这些工具都可以帮助用户进行一个实际产品的开发。
Mathworks最后都是面向嵌入式的处理器或者嵌入式的系统进行产品的实现。同时Mathworks也提供了大量的经过认证的工具,帮助用户满足功能安全标准。
原创文章,未经授权禁止转载。详情见 转载须知 。