MATLAB/Simulink加速路

栏目: 编程工具 · 发布时间: 5年前

内容简介:自动驾驶是目前比较热门的话题,包含的技术领域五花八门,例如:雷达、摄像头、汽车电控、激光雷达、物体识别、高精度地图、导航技术等等。小编特邀 MathWorks 行业技术专家来聊一聊 MathWorks 这几年的自动驾驶之路,分享最新的技术投入和应用亮点。◆ ◆ ◆ ◆MathWorks 对自动驾驶技术的投入可以总结为以下几个阶段:
编辑推荐:
本文来自于m.elecfans.com,文章主要针对MathWorks 对自动驾驶技术的几个阶段进行,SCANIA AEB 系统,传感器融合示例,自动驾驶系统 工具 箱等。

自动驾驶是目前比较热门的话题,包含的技术领域五花八门,例如:雷达、摄像头、汽车电控、激光雷达、物体识别、高精度地图、导航技术等等。小编特邀 MathWorks 行业技术专家来聊一聊 MathWorks 这几年的自动驾驶之路,分享最新的技术投入和应用亮点。

◆ ◆ ◆ ◆

MathWorks 对自动驾驶技术的投入可以总结为以下几个阶段:

MATLAB/Simulink加速路

2015:SCANIA AEB 系统

2015 年,瑞典著名的重卡生产商 SCANIA 发布了用 MATLAB/Simulink 设计的 AEB(自动紧急刹车)系统,看动画:

MATLAB/Simulink加速路

在这个案例中,SCANIA 利用 MATLAB/Simulink 做了两件大事:

一是设计了数据融合(Sensor Fusion)系统。AEB 把摄像头和雷达采集的数据进行整合,同时使用车辆前部安装的雷达和摄像头来扫描前方区域的物体。系统利用每个传感器的独特优势获取更精确的环境模型。

雷达的优势在于确定物体的距离、相对速度,但在确定物体的形状或横向位置方面较弱。摄像头主要优势在于辨识物体类别,主要缺点在于在黑暗环境下难以工作,以及对速度估计不准确。SCANIA 构建了一个传感器融合系统,可将两个传感器中的数据进行匹配合并。传感器融合系统一旦在主道上发现物体,会将该物体的位置和预计路径传递给 AEB,AEB 将确定何时警告驾驶员或采取制动措施。

二是设计了整个回放测试系统。SCANIA 的车队在超过 150 万公里的驾驶里程中,所记录的实际交通数据超过了 80TB。这 150 万公里的实测数据,为每次更新发布的新功能提供了海量测试场景和数据。

为了进一步提高仿真运行速度,研发团队编写了 MATLAB 脚本,在服务器集群进行多核并行计算和仿真,最多同时可以运行300个仿真实例。通过这一方法,将仿真 150 万公里交通数据的时间减少到 12 小时。在仿真中发现值得关注的新场景时,会在 Simulink 中重新运行仿真并进行深度分析。

2016:传感器融合示例

坦率地讲,SCANIA 的这个案例激发了 MathWorks 的开发灵感。2016 年在波士顿的年度大会上,来自美国底特律的应用工程师展示了他用 MATLAB 脚本开发的一个前车碰撞预警(FCW)的演示案例。这个演示案例就是后来 ADST(自动驾驶工具箱)的原型。这个原型中包含的 2 个关键点:可视化、数据融合,都成了 ADST 的产品亮点。

MATLAB/Simulink加速路

还有一家公司——德国大陆集团(Continental)——用 MATLAB 也是炉火纯青。MATLAB 既然是好工具,我就用工具来代替大量人工重复劳动。2014 年,Continental 在研发一款自动驾驶摄像头的时候,使用 MATLAB 来自动化标注物体和道路标志,这些自动化的方法显著地提高了摄像头的机器学习效率。这一灵感也最终由 MathWorks 工程师实现在 ADST 的功能中:GroundTruth Labelling (真值标定)。

MATLAB/Simulink加速路

R2017a:ADST - 自动驾驶系统工具箱

2017 年 3 月,MathWorks 在 MATLAB R2017a 发布了 ADST(自动驾驶系统工具箱),包括 3 个核心功能点:

可视化

数据融合

真值标定

行业技术专家强调:可视化是数据分析的第一步。

大家先一起看看汽车雷达和摄像头的数据长什么样。以雷达为例:下面两个数据表格显示了在什么时间戳,有多少个识别物体,物体的方位、速度等数据信息。

MATLAB/Simulink加速路

让我们看一段 MATLAB 处理数据并实现可视化的动画:

MATLAB/Simulink加速路

MATLAB/Simulink加速路

通过 MATLAB 自带的 API 和函数,用户可以比较容易地将雷达和摄像头的传感器数据,进行人眼可视化。上图左边是原始的摄像头画面,右边蓝色的三角代表摄像头识别的目标,红颜色代表雷达识别的目标。通过可视化,人眼可以看到雷达和摄像头的信号有一定的偏差,那么自然就会问另外一个问题,车载电子设备到底以哪个为准呢?这就自然引入 ADST 的另外一个功能 – Sensor Fusion(传感器融合)。

理解传感器融合有几个关键词:多目标追踪(Multi-ObjectTracking),卡尔曼滤波器(KalmanFilter)和代价矩阵(CostMatrix)。

MATLAB/Simulink加速路

上图简单介绍了一个传感器融合的过程——从传感器的捕获(detection)到最终被确认为追踪物体(track):

物体被传感器(视觉、雷达等)捕获,形成 detection

Track manager 先为该detection分配一个 track

Tracking filter 通过卡尔曼滤波器不断估计 detection 的 track

Track manger 通过代价矩阵将 detection 分配更新到 track

目标 detection 消失后,track 被删除

MATLAB 自带的多目标追踪,可以追踪最多 120 个运动中的目标。每个目标的最终的 track 可能既不是雷达的位置,也不是视觉的位置,而是最终 track 算出来的位置。下图展示了代价矩阵的示意图,将 detection 分配到 track 的过程用到了 Hungarian Assignment Algorithm。

MATLAB/Simulink加速路

MATLAB 自带了前向碰撞告警(FCW)例子可以帮助用户理解传感器融合的使用。

MATLAB/Simulink加速路

上图为 FCW 的数据融合处理流程,基本的逻辑是将雷达杂波信号滤除后,进行多目标的追踪和更新,在识别到最关键目标(Most Important Object)后,根据前向距离进行刹车告警。

让我们看看该样例的运行动画:

MATLAB/Simulink加速路

蓝色三角形的视觉识别目标和红色圆形的雷达识别目标,在消除了雷达杂波(大部分为只有红色圆型的目标,以及在其他车道的目标)后,通过数据融合形成目标追踪。看到的灰色方框即为运动物体的追踪。

上图左边的视频录像是一个实际路况的采集视频,样例还提供了相应的视觉和雷达的object list。有人会问:在数据融合设计早期的时候,我只有一个 idea,还没有具体的 object list ,那如何才能验证我的算法呢?MATLAB 还提供了另外一个 Sensor Fusion 的样例,看动图:

MATLAB/Simulink加速路

这个样例和上面有实际环境的样例有几点不同:

车辆和道路都是可以像搭积木一样,通过 MATLAB 脚本快速搭建测试场景

在这个模拟环境中可以模拟雷达(radar Detection Generator)和视觉(vision Detection Generator)的传感器。

好处不言而喻:快速验证idea。

随着自动驾驶工具箱发布的,还有一个广受欢迎的功能——真值标定(ground truth labelling)。

首先给出定义:在机器学习中 ground truth 表示有监督学习的训练集的分类准确性,用于证明或者推翻某个假设。很多视觉识别算法是用的机器学习。机器学习的认知基础就是真值。真值标定的功能有两点:

采用大量真值来训练机器学习算法

利用真值来检验现有的识别算法

真值标定的输入一般是视频文件。真值标定既可以手动一帧一帧地标定,也可以半自动化标定后再手工修正,最终可以将结果保存成真值数据库。让我们看一段半自动标定的动画:

MATLAB/Simulink加速路

最终标定出来的真值数据如下图所示:就像电影的字幕类似,几分几秒,在画面的什么方位,是什么物体:

MATLAB/Simulink加速路

ADST 在发布后,受到汽车电控工程师和自动驾驶研发人员的广泛使用。MathWorks 工程师在和他们交流后发现,他们有一个共同的兴趣点:ADST 的功能大部分集中于前端(可视化、真值标定、传感器融合),有没有将前端的识别和融合结果和后端的汽车电控结合起来的案例?其实这也反映了市场热点从 ADAS(高级驾驶辅助系统)向 AD(自动驾驶)过渡。ADAS 侧重于告警,而 AD 侧重于控制。

R2017b:闭环控制示例

随着 MATLAB R2017b 的发布,MathWorks 推出了一个自适应巡航(ACC)的案例,包括:

Simulink 模型:包含传感器融合、传感器模型、可视化、控制器模型、车辆模型、模拟道路场景和环境模型

控制器引入了两种参考设计:PID 和 MPC(Model Predictive Control)

代码自动生成

MATLAB/Simulink加速路

让我们看一下运行的动画:由于紫车车辆强行并线到蓝色车辆(被控车辆),在 ACC 的作用下蓝色车辆的速度下降直到紫色车辆离开本车道。

MATLAB/Simulink加速路

这里用到的速度控制是经典的 PID 控制。众所周知,PID 的好处是简单、易懂、占用资源少,但是在自动驾驶的复杂环境下,想要对车辆进行精准控制,可以考虑更加复杂的先进控制方法,比如 MPC(ModelPredictive Control)。从另外一个角度来看,MPC 过去没有流行的原因之一就是受限于硬件资源和成本。目前,在自动驾驶技术和需求的推动下,汽车控制器必须变得越来越强大,使得 MPC 变得可能。下图给出了在 ACC 的环境下,使用 PID 和 MPC 的对比:MPC 比 PID 控制的更加精准、快速。

MATLAB/Simulink加速路

有了 ACC 这个例子,用户可以在 MATLAB/Simulink 统一平台下做如下事情:传感器融合、传感器模型、可视化、控制器设计和代码生成、车辆模型、模拟道路场景和环境模型。但在实践中发现,用户对模拟道路场景和环境模型要求其实很高:

MATLAB 虽然可以创建道路场景,但是必须用脚本编程,比较麻烦。

更希望看到虚拟现实场景。

R2018a:unreal 集成

2018 年 3 月,针对第一点,MATLAB R2018a 推出了 Driving Scenario Designer的 App,直接可以画道路、车辆和简单传感器模型:

MATLAB/Simulink加速路

针对第二点需求,MATLAB R2018a 推出的 Vehicle Dynamics Blockset 可以和 unreal 游戏引擎集成,并自带了一个免费版的 unreal。当然 Vehicle Dynamics Blockset 主要功能是提供了车辆横向动力学的模块,免费版 unreal 只是用于 3D 显示。相信对于自动驾驶控制器设计人员,在设计例如 ACC(自适应巡航),LKA(自动车道保持)等自动驾驶功能时候,Vehicle Dynamics Blockset 一定能发挥强大的作用。

MATLAB/Simulink加速路

◆ ◆ ◆ ◆

让我们再回头看看 MATLAB 的自动驾驶之路:从用户案例中的启发,到推出自动驾驶工具箱;通过和用户的沟通逐步加入的车辆控制部分和 unreal 集成。

MATLAB/Simulink加速路

当然,自动驾驶永远在路上,MATLAB/Simulink 也在激光雷达点云处理、驾驶路径规划和跟随等方面持续推出更多的功能和应用案例,例如:

实时车辆数据融合和显示。通过和用户的深入交流,技术专家了解到用户的兴趣点多集中于:车辆上安装了摄像头和雷达后,在实时运行的同时,如何实现数据融合并显示结果?

MathWorks 工程师通过 Automated Driving System Toolbox、Vehicle Network Toolbox、Instrument Control Toolbox、MATLAB Coder、Embedded Coder 等工具箱,已经实现在车辆上做实时驾驶的数据融合和数据显示:

MATLAB/Simulink加速路


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Software Design 中文版 01

Software Design 中文版 01

[日] 技术评论社 / 人民邮电出版社 / 2014-3 / 39.00

《Software Design》是日本主流的计算机技术读物,旨在帮助程序员更实时、深入地了解前沿技术,扩大视野,提升技能。内容涵盖多平台软件开发技巧、云技术应用、大数据分析、网络通信技术、深度互联时代下的移动开发、虚拟化、人工智能等最前沿实践性讲解。以人脑思维模式,激发计算机操控的无限可能;以软件开发技巧,挖掘系统与硬件的最大价值。 《Software Design 中文版 01》的主题为......一起来看看 《Software Design 中文版 01》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具