如何从MATLAB/Simulink入手,系统地学习自动驾驶?
今天我们主要来介绍两部分内容:1、如何精准获取MATLAB/Simulink关于自动驾驶方面的学习资料;2、从MATLAB/Simulink可以学习到哪些自动驾驶知识。
特别声明,以下有部分图片引自MATLAB/Simulink的帮助文档以及MathWorks公开课(尤其感谢MathWorks中国公司员工的公开课视频),如果MathWorks公司认为存在侵权,可联系删除。另外,以下内容主要是基于MATLAB R2020a和R2019b,低版本可能略有出入。
01 如何精准获取MATLAB/Simulink关于自动驾驶方面的学习资料
MathWorks官网是个宝藏,有事没事上去逛逛兴许就能学到东西。MATLAB用户很多,但我相信会去逛MathWorks官网的人并不多。官网有不少好东西,在不熟悉官网架构的情况下要找到自己想要的东西有时候挺费劲的,所以我会把有用的栏目都用浏览器收藏了,下回再翻就很方便了。

MATLAB/Simulink工具箱很多,与其相关的视频也就更多了,有中文的、英文的、日语的、汉语的还有俄语的……有图像处理的、有自动驾驶的、有新能源的、还有功能安全的……只要在搜索框中输入自己感兴趣的关键词,就能找到相关的学习视频。比如对于自动驾驶,我墙裂推荐的“小迈步”系列。

小迈步的第一课和第二课,就有介绍怎么用MATLAB去设计、训练神经网络,并将网络模型用MATLAB Coder和GPU Coder生成代码,并部署到CPU/GPU中。
如果你搜索“自动驾驶”或者将Videos and Webinars的范围缩小至Automate Driving Toolbox(在搜索页面左侧选中这个工具箱),就可以找到直接跟自动驾驶相关的视频。

比如上图框起来的视频,也是墙裂推荐的,是MathWorks中国工程师在MATLAB EXPO CHINA 2019大会上介绍MATLAB R2019a的自动驾驶工具箱(Automated Driving Toolbox)的新特性,看过视频之后能对自动驾驶工具箱有个大概的了解。以上仅仅是部分内容,大家可以按兴趣去搜索查找。
1.2 直接查看相关工具箱的帮助文档和参考示例
**学习类
· Statistics and Machine Learning Toolbox
· Deep Learning Toolbox
· Reinforcement Learning Toolbox
感知类
· Image Acquisition Toolbox
· Image Processing Toolbox
· Computer Vision Toolbox
· Vision HDL Toolbox
· Automated Driving Toolbox
· Sensor Fusion and Tracking Toolbox
规划控制类
· Automated Driving Toolbox
· Navigation Toolbox
· Stateflow
· Fuzzy Logic Toolbox
· Robust Control Toolbox
· Model Predictive Control Toolbox
车辆类
· Powertrain Blockset
· Vehicle Dynamics Blockset
· Simscape
其他
· ROS Toolbox
· Vehicle Network Toolbox
· MATLAB Coder
· Simulink Coder
· Embedded Coder
· HDL Coder
· GPU Coder
· Simulink Real-Time
不仅有各种工具箱,还有各种app,与自动驾驶相关的主要有
· Classification Learner
· Deep Network Designer
· Ground Truth Labeler
· Camera Calibrator
· Driving Scenario Designer
这些app还是挺有用和有趣的,MathWorks的工具几乎已经覆盖了自动驾驶开发测试的各个环节,有做数据标注的Ground Truth Labeler,有专门做相机标定的app——Camera Calibrator……
工具箱和app都有详尽的帮助文档,帮助文档中也会有参考示例。比如不同版本自动驾驶工具箱的这些demo:

1.3 借助MATLAB Answers解决问题
有一回我在做Simulink和Unreal Engine的自动驾驶仿真时,遇到了一个bug,怎么都解决不了。后来上MATLAB Answers找到了原因,竟然是Windows更新导致的,这种问题真的很难自己debug。
02 从MATLAB/Simulink可以学习到哪些自动驾驶知识
简化而言,自动驾驶开发测试涉及以下环节。涉及感知、规划、控制等算法,以及对算法的测试。

如果按V型开发流程,又涉及以下。先按感知、规划、控制、仿真测试以及对应的MATLAB工具箱/app来说明,同时部分糅合V型开发流程。

2.1 感知
自动驾驶的传感器主要有摄像头、激光雷达、毫米波雷达、超声波雷达、IMU等等,这边主要介绍前两者相关内容。
2.1.1 摄像头与MATLAB/Simulink
涉及工具箱:
· Deep Learning Toolbox
· Reinforcement Learning Toolbox
· Image Acquisition Toolbox
· Image Processing Toolbox
· Computer Vision Toolbox
· Vision HDL Toolbox
· Automated Driving Toolbox
· Sensor Fusion and Tracking Toolbox
· MATLAB Coder
· HDL Coder
· GPU Coder
涉及app:
· Deep Network Designer
· Ground Truth Labeler
· Camera Calibrator
整个链条大致如下。

采集图像的同时,有一个很重要的工作就是做相机标定。何谓相机标定:
在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定(或摄像机标定)。无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。
MathWorks提供了相机标定的工具——Camera Calibrator。

2、标注图像

之前的版本中,Ground Truth Labeler只能标注图像数据,从2020a开始支持同时标注代表同一场景的多个信号,比如对图像和激光雷达点云同时标注。可以加载来自单个来源(例如rosbag)的信号集合。也支持将标记的激光雷达数据用作深度学习模型的训练数据。
Ground Truth Labeler可以手动标注,也可以根据内置的自动标注算法或者自定义的标注算法来进行自动标注。
3、设计和训练网络
· Classification Learner
· Deep Network Designer
小迈步的第一课第二课有介绍如何用Deep Network Designer来设计网络。

MATLAB提供了直接导入Caffe和Tensorflow-Keras模型的接口。


· Image Processing Toolbox
· Computer Vision Toolbox

4、自动生成代码及部署到硬件
MATLAB的厉害之处不仅在于提供了覆盖各个领域的工具箱,你可以快速方便地实现模型在环测试Model-in-lop(MIL),而且有各种代码生成工具,帮助实现快速控制原型Rapid Control Prototype(RCP)、软件在环测试Software-in-lop(SIL)、硬件在环测试Hardware-in-lop(HIL),还可以部署到硬件(CPU、GPU、FPGA)。
这些代码生成工具有:
· MATLAB Coder
· Simulink Coder
· Embedded Coder
· HDL Coder
· GPU Coder
对于前三个Coder,做传统汽车控制器的同仁们应该都有所了解,基于模型设计(Model based Design,MBD)会涉及。另外两个Coder,HDL Coder和GPU Coder分别用以将MATLAB/Simulink的代码、模型生成FPGA的代码(VHDL或Verilog)和CUDA代码。



用户按照传统的Simulink建模方式搭建图像处理和计算机视觉算法,调用MATLAB的HDL Coder将Simuink模型生成VHDL或Verilog代码,然后部署到FPGA板卡上,整个流程可以无需编写代码。
使用HDL Coder进行FPGA图像处理算法开发,可以使用Vision HDL Toolbox。

对于这块内容,墙裂推荐一个视频——MathWorks HDL Coder产品负责人赵志宏经理的演讲《从MATLAB到FPGA: 视频和图像处理》。喜欢他那种如数家珍、游刃有余的状态,职业生涯中能打造出如此出色的产品,真是值得骄傲。
2.1.2 激光雷达与MATLAB/Simulink
· Computer Vision Toolbox > Lidar and Point Cloud Processing
· Automated Driving Toolbox > Perception with Computer Vision and Lidar
· Navigation Toolbox > SLAM
MATLAB目前支持导入PCAP、PLY和PCD等格式的点云文件,提供了激光雷达点云分簇、配准、融合等函数,可用于目标检测、构建高精地图等。


R2020a的Ground Truth Labeler支持和激光雷达点云标注,也支持将标记的激光雷达数据用作深度学习模型的训练数据。MATLAB提供了一些exmples。

2.1.3 传感器融合
· Automated Driving Toolbox
· Sensor Fusion and Tracking Toolbox
Automated Driving Toolbox和Sensor Fusion and Tracking Toolbox提供了相关的模块和函数。




· Automated Driving Toolbox
· Navigation Toolbox
· Stateflow
· Fuzzy Logic Toolbox
· Robust Control Toolbox
· Model Predictive Control Toolbox

Simulink从MATLAB R2017a开始推出了Automated Driving Toolbox,提供了Longitudinal Controller Stanley、Lateral Controller Stanley等模块,还提供了RRT*等路径规划算法。

控制方面可以了解一下MPC工具箱。

2.3.1 车辆模型
· Powertrain Blockset
· Vehicle Dynamics Blockset
· Simscape
2.3.1.1 车辆动力总成










2.3.1.2 车辆动力学模型




总的来说,Driving Scenario Designer使用拖放操作创建道路和交通参与者,可快速构建场景,用作Control-in-loop应用的测试和验证,但无法提供逼真的场景和传感器数据。
Unreal Engine能提供高保真度的场景和传感器模型,能够合成逼真的图像和激光雷达点云数据等等,适用于Perception-in-loop的应用。
2.3.2.1 Driving Scenario Designer

1、使用拖放操作创建道路和交通参与者,快速构建场景
2、使用低保真度的视觉和雷达传感器模型,直接输出检测到的目标列表
3、支持将场景导出成MATLAB Function,再通过修改MATLAB Function实现批量化生成场景
4、支持将场景和传感器导出成Simulink模块
5、支持导入OpenDrive路网文件,支持基于记录的实车数据构建场景

Unreal Engine(虚幻引擎,简称Unreal),由Epic开发,是世界知名的游戏引擎之一,占有全球商用游戏引擎很高的市场份额。Unreal开发的游戏,代表作有《战争机器》系列,《质量效应》系列,《绝地求生》……
用户在Unreal中构建场景,MathWorks提供了场景中的传感器模型。

这些传感器能输出图像RGB数据、激光雷达点云数据等等。

编辑推荐
最新资讯
-
直播|车载以太网Tx/Rx/link测试流程及测试
2025-02-18 17:03
-
理想纯电整车工厂,落地常州!
2025-02-18 17:01
-
氢安全事件分析 | 燃料电池发动机测试过程
2025-02-18 15:48
-
汽车座椅舒适和健康性能测试
2025-02-18 15:47
-
欧I到欧VII,对排放都要求了啥
2025-02-18 15:34