自动驾驶的开发架构是什么?
自动驾驶软件开发基础的架构,逃不出我们经常所说的三大法宝,感知--- 决策(规划)--- 执行(控制),这三个内容,软件开发基础思路都不一样,且听本屌丝娓娓道来!
感知:
雷达的感知大多都是一些傅里叶变换一类的算法来处理多普勒效应的脉冲波信号,目前主流的都是用C来做代码。雷达的种类很多,这个算法仅仅限于毫米波雷达,激光雷达本屌丝就不懂了。
摄像头对应的大多都是进行图像处理,虽然说目前Simulink包含对应的图像处理算法模型,但是这些算法模型仅仅对于大家写论文有用,容易出结果,容易仿真!但是实际的算法中大多都是用OpenCV与C++进行柔和使用。
像惯性导航,GPS里面的算法,都是另外一个范畴,Simulink参与的不多,轮速,车身姿态大多来源于ESC,EPS,这些相对应的模块!
综上所述,Simulink在感知这个层面,用的不多。
决策:
在L3以上的级别,因地图的参与,我们称之为规划,L3级别以下的大多称之为决策,即多个目标的来源的融合,进行决策。
融合算法目前大多在雷达与摄像头里面,但是目前有逐渐独立的趋势,向域控制器靠拢,相当多的算法都柔和在里面。软件开发虽然说有用Simulink开发的,但是很多还是用C,C++进行开发,尤其是对多维度的目标追踪与融合!
执行(控制):
执行分为,横向控制域,纵向控制。横向控制主要是与EPS进行角度,以及扭矩的交互。纵向控制主要与动力总成,底盘进行交互,交互的核心就是加速度的需求与制动的需求。
这些控制逻辑,用通俗的来说,都是简单的门控制逻辑,大都是或,与,非,一类的逻辑,这些就是Simulink的长项,所以执行相关的逻辑,都是应用Simulink进行开发,然后进行代码自动生成,最后进行柔和!
综上所述,Simulink对自动驾驶的支持,其实目前并不是很广泛,大多集中在功能的控制方面,其它相关的图像,雷达算法的应用,其它大多都还在写论文阶段,总结如下所示,哈哈!
Simulink如何搞自动驾驶算法开发?
目前搞自动驾驶算法开发的,Simulink中有很多对应的库文件以及示例可以参考,如下图所示的库文件,可以拿来直接应用。
以及对应的示例文件,直接点击Help,自己学习一下,应该也问题不大。
然后讲对应的算法生成,进行集成即可!至于所说的Simulink可以做融合,感知算法,本屌丝无法否认,但是实践是检验真理的唯一标准,现在实际工程用的还是很少的!
但是,当你在开发某个功能的时候,前期的验证如何搞?如何搞个模拟的感知算法,如何搞个仿真的融合算法,如何验证前期你的功能算法,这个就需要我们的大杀器出场了!
Simulink的大杀器--ADAS系统仿真与数据处理
这两个东西,才是ADAS系统开发的主角,因为真正的功能开发,肯定没有发动机,变速箱复杂,但是ADAS系统的数据量,以及仿真需求,远远大于其它系统,因为这个东西不仿真,直接测试,太花钱!
ADAS的系统是一个非常复杂的东西,在开发早期,特定阶段或者某个场景的验证,如果用实际车辆的话,那就太花钱,而且不实际!所以我们在早期进行场景验证时候,后期问题复现,就需要我们的大杀器Simulink!尤其对于L3,L4级别的功能,必须要我们这个大杀器才能完成几百万公里的验证。
ADAS系统仿真与验证
在Simulink的环境中建立仿真环境进行算法验证与开发,目前Simulink集成了Driving Scenario Designer的库,这个库可以完成场景的规划与定义,如下所示:
环境建模---道路,车道线。
车辆建模---道路车辆,行驶轨迹,自身车辆的尺寸,雷达相关截面积。
标准支持---目前网上有很多Open Drive 格式的路网文件,可以直接导入,进行计算。
场景的建模完成后,Matab可以将其转化为Mat文件(类似于自动代码生成的S-Function格式),然后导入Simulink的环境中,添加对应的传感器模型,进行开环,闭环的仿真!如下图的开环仿真,以验证对应的融合算法!
闭环的仿真是增加了车辆动力学,以及对应的路径设计。将其变成闭环,以验证对应的功能算法,比如ACC,AEB,TJA一类的功能。这两个就是我们所说的SIL, 软件在环仿真的学术定义!
当这些场景与算法设计完成后,就需要对其进行测试,测试的工具和方法,与之前讲的自动代码生成的测试方法一样,都可以用Simulink的Test Manager进行动态的Test Case 与静态的代码覆盖率的测试,如下图所示,与基本的测试方法都一样!
以上讲的都是正规的算法验证过程,适用于基础功能开发,但目前大多用的都是应用型项目,应用型项目的主要的测试工作都是进行道路数据采集,然后进行验证,这样更加真实可靠,同时也省下很多仿真模型建立的工作。省钱高效!哈哈哈。
中国OEM的传统做法。具体的操作方法与以上类似!导入场景数据,可以验证具体的传感器算法,导入目标列表数据,可以验证具体的功能算法,如下图所示!
设计,仿真,测试,这个闭环形成ADSA算法的开发与验证,显示Simulink软件的NB之处:
ADAS的数据处理
在实际的测试与验证的过程中,会收取大量的数据,摄像头的图像数据,雷达数据,车道检测数据,激光雷达数据,惯性测量单元数据等,这些结果如何处理?如何标注真值呢?
Simulink中的ADST工具箱里面含有对应的函数,然后可以讲对应的图像数据,分析后的目标列表,统一显示分析在一个图表中,进行我们所谓的真值标定, 然后进行可视化,这个要比我们肉眼看,要NB多了,请参考下图!
在做可视化的时候,Simulink可以将车辆坐标系与图像坐标系的进行同屏转化,这样可以绘制不同的点云数据,便于传感器信号的分析,验证。