首页 > 汽车技术 > 正文

MathWorks谈如何构建自动驾驶开发的关键能力

2023-06-28 16:57:01·  来源:Astroys  
 
自动驾驶涉及广泛的自动驾驶级别,从ADAS到完全自动驾驶(AD)。随着自动驾驶级别的提高,测试要求也在扩大,这使得在虚拟世界中的模拟场景的需求更加关键。开发

自动驾驶涉及广泛的自动驾驶级别,从ADAS到完全自动驾驶(AD)。随着自动驾驶级别的提高,测试要求也在扩大,这使得在虚拟世界中的模拟场景的需求更加关键。
开发这些自动驾驶应用需要多学科的技能,从规划和控制到感知学科,如检测、定位、跟踪和融合。而且必须在一个支持设计、验证和部署日益复杂的软件环境中完成。
为了让汽车工程师在构建自动驾驶产品的同时成功管理这种复杂性,需要对汽车工程进行根本性的改变,包括仿真的使用、工程师的技能以及软件的开发和部署。
以仿真为例,它需要反映现实世界。而现实世界是非常复杂的,比如像十字路口这种典型的复杂情景。但情景只是一个起点。
接下来是创建一个场景,包括情景、车辆和行人、天气和光源。接下来,需要对车辆进行建模,包括作为AV传感器套件一部分的传感器和车辆动力学。现在你要开始模拟,允许感知、规划和控制的算法的迭代改善。

ADAS/AD开发

很多时候,我们谈到ADAS/AD开发很快就会进入到感知的话题,进而又会涉及到AI和AI建模。然而,ADAS/AD的开发不仅仅是感知。它跨越了虚拟世界(情景、场景、车辆、动力学),需要多学科的技能,使用多种工具开发算法,并将这些算法部署为软件应用(图1)。

图片


此外,这些工程师往往花大量时间来开发和微调环境、车辆和算法的模型。是的,建模是工作流程中的一个重要步骤,但模型并不是过程的终点。在ADAS/AD应用的实际开发中,成功的关键因素是尽早发现任何问题,并知道工作流程的哪些方面需要集中时间和资源以获得最佳结果。
在深入研究典型的工作流程之前,应该考虑两个重要的旁证:

  • ADAS和AD是多学科的领域,有许多开发工具和供应商。这反过来又强调了对良好的连接器的需求,以便能够建立一个集成的仿真平台。集成允许将所有的算法(在许多平台上开发的)放在一起,进行系统仿真,以获得洞察力。

  • 除了集成,另一个关键要求是工具或平台,能够轻松实现可视化,以评估整个工作流程中算法的性能。


典型的ADAS/AD工作流程首先是创建一个情景,然后是创建一个包括场景、演员(车辆、行人)、天气和光源的情景。接下来,必须对自车辆进行建模,包括属于AV传感器套件的传感器以及车辆动力学(用于横向、纵向控制)。有了这些准备,你现在就可以开始模拟这个场景了,这样就可以反复完善感知、规划和控制的算法。
在你对这些算法获得信心之后,就可以创建软件了。这些代码要么是由工具自动生成的,要么是手写的。然后,整合代码,进行系统级仿真,以获得对代码在系统级上功能正确的信心。最后,作为测试的一部分,以交互方式或自动方式(在桌面、集群上或云上)运行模拟。

在虚拟世界中的模拟

你可能听说过运行上百万个场景的概念。在测试场景之前,你需要在虚拟世界中模拟一个场景,需要反映现实世界,这可能很复杂。一个真实的道路情景必须以一种快速和实用的方式重建,即使这个现实是相当复杂的(图2)。对于AD来说,道路是情景的一个关键部分。


图片


重现的情景需要一定的格式,以便能够导出用于目前主流的模拟器,如CARLA、CarMaker和NVIDIA DRIVE Sim。如果你需要创建很长的道路情景,手动方法可能很麻烦。此时,如果有自动的方法就会很方便。现在可以从HERE实时高精地图中导入较长的3D路段。


驾驶场景可以基于这些情景编写。场景的一个来源可能来自记录的数据。福特通过事件识别和从记录数据中生成场景来开发主动泊车辅助功能。同样,通用从记录的车辆数据中生成场景,以验证车道居中系统。


你可以从记录的数据中识别新的场景,并从CAN日志或直接从摄像头或激光雷达中提取信息。你可以将数据可视化,然后进行标注。标注可以使用公共或自定义算法自动进行。随后,你可以从记录和标记的数据中确定感兴趣的场景,重新创建模拟测试用例。这个过程通常是一个开环工作流。


此外,你可以从场景变化中确定新的场景。在这种方法中,你创建一个场景,然后创建各种场景变体并使用模拟来帮助识别感兴趣的新场景,并添加到你的回归测试中。这个过程实现了一个闭环的工作流。通过这些方法,你能够识别并添加新的测试用例到你的设计和模拟工作流中。


情景和场景可以通过交互或编程方式创建。


虚拟世界的逼真度可以根据模拟特定用例的需要来选择。例如,雷达的跟踪探测可用于开发规控算法,而摄像头的检测可用于开发感知算法。MathWorks为虚拟世界提供了两种环境:

  • Cuboid:你可以使用Cuboid World表示法来模拟驾驶场景,使用传感器模型,并生成合成数据来测试模拟环境中的自动驾驶算法,包括控制、传感器融合和路径规划。例如,你可以利用这种方法来确定传感器的最佳位置和传感器的数量。

  • Unreal Engine:你可以在Epic Games的Unreal Engine渲染的三维模拟环境中开发、测试和可视化驾驶算法的性能。除了Cuboid World中提到的算法外,你还可以开发和测试由不同摄像头模型的摄像头数据驱动的感知算法。


图3显示了属于典型AV传感器套件的传感器。


图片


雷达、激光雷达和摄像头检测物体,传感器和检测结果对应于不同的模拟环境。位置传感器可以在这两种仿真环境中使用。为了模拟车辆动力学,你需要多轴车辆、卡车和拖车、动力系统、转向、悬挂、车轮和轮胎的模型。


重申一下,开发虚拟世界包括创建情景、创建场景、对传感器进行建模以及对车辆动力学进行建模。这个过程是可扩展的,使用户可以灵活地应用他们领域的专业知识,而不必成为其他领域的专家。


建立多学科的技能

AV开发的多学科性质要求ADAS/AD算法存在于一个更大的系统中,并能与汽车系统的其他组成部分互操作。在ADAS/AD应用中,你不仅有检测对象(行人、汽车、停车标识)的感知系统,而且这个系统必须与其他系统集成,以进行定位、路径规划、控制等等。


开发这个复杂的系统需要多学科的技能来开发ADAS/AD功能的算法,如ACC、AEB,以及更高层次的功能,如高速公路变道和自动泊车/代客泊车。图4显示了AD功能的几个例子。


图片


这些算法涵盖了规划、控制和感知等学科:

  • 规划和控制:包括运动规划、决策逻辑以及纵向和横向控制。

  • 感知:涉及检测、物体跟踪和传感器融合及定位。


Automated Driving Toolbox中包含的例子可以作为一个框架,帮助你开始设计自己的ADAS/AD功能。刚进入汽车行业的工程师需要了解典型的车辆和它的子系统,如控制系统。例如,他们可以利用Control System Toolbox快速开始设计控制系统,并利用Vehicle Dynamics Blockset组进行车辆动力学建模。


考虑到ADAS/AD系统的复杂性和快节奏的软件开发周期,从其他领域进入这个领域的工程师可以通过Automated Driving Toolbox和Sensor Fusion and Tracking Toolbox等工具快速开始学习。此外,他们能够开始开发先进的控制系统算法,如使用Model Predictive Control Toolbox开发Model Predictive Control(MPC)算法。


考虑一下高速公路变道的例子。开发这个功能的工作流程需要你从综合Cuboid World中的场景,到设计规划器,到使用MPC设计控制,到对车辆动力学建模,最后到可视化结果,通过仿真获得洞察力。


另一个例子是代客泊车。开发这个功能的工作流程需要你从路径规划到轨迹生成,再到车辆控制。这个领域的其他例子包括使用非线性MPC的轨迹生成和跟踪,以及使用强化学习的自动搜索和停车任务的控制器。


像MATLAB和Simulink这样的工具为工程师提供了在迭代环境中所需要的支持。虽然算法和预建模型是一个好的开始,但它们不是完整的画面。工程师们要学习如何使用这些算法,并通过实例找到适合他们具体问题的最佳方法。


规控算法是由跟踪和融合算法驱动的。图5显示了典型的检测。


图片


你可以利用图5中提到的例子和工具来设计跟踪和融合算法,将雷达、激光雷达和摄像头等传感器的检测结果转换为物体、车道和网格等跟踪信息。


可以从摄像头和激光雷达数据中设计检测和定位算法。此外,可以利用地图和惯性融合来加强定位。图6显示了AD的检测和定位算法的设计。


图片


请注意,激光雷达被用来开发更高级别的自动驾驶功能,或作为额外的传感器来验证低级别自动驾驶功能的检测。传感器检测到的输出作为定位的输入。这些输出也被用于与地图数据相关联,以改善定位算法。


你可以把来自摄像头和激光雷达的检测,以及HERE实时高精地图数据和GPS,用来提高车辆定位的准确性。在一些没有地图信息的情况下,你可以依靠SLAM,使用来自激光雷达和摄像头的数据。


交付ADAS/AD软件

仿真和准确性测试是验证系统正常工作的关键,并且在部署到现实世界之前,要让所有的东西都能在一个系统中很好地协同工作。为了在部署前建立这种水平的准确性和稳健性,工程师们必须确保系统在任何情况下都能以其预期的方式响应。在这个阶段,你应该问的问题是:


  • 每个算法/功能的整体性能是什么?

  • 系统的整体性能是什么?

  • 它在每种情况下的表现是否符合预期?

  • 它是否涵盖了所有的边缘场景?


一旦算法在功能上是正确的,它们就需要作为嵌入式软件来实现。在生成代码之前,将规范添加到模型中,以确保仿真模型和实现的代码在整个开发过程中保持功能上的一致性。


算法必须准备好最终的实现语言。这个指定的硬件环境可以是从桌面到云、边缘或深度嵌入式设备。实施的灵活性为工程师提供了在各种环境中部署其算法的余地,而不必重写原始代码。


工程师可以将他们的算法部署为独立的可执行文件(包括web应用)或代码(C、C++、GPU的CUDA代码、HDL),用于面向服务的架构(ROS、AUTOSAR)和实时硬件(CPU、GPU、FPGA)。使用这些部署,你可以与150多个工具接口集成。还可以与CAN、FMI/FMU、Python和ONNX集成。此外,还需要工具来适应常见的软件开发工作流,如持续集成、自动测试、代码分析和ISO 26262(图7)。


图片


总结

一旦你成功地模拟和测试了所有你希望算法/功能和系统看到的用例,并且能够验证它们的性能,信任就实现了。一个测试工作流应该包括与需求的链接,单元级的评估,以及单元的集成,然后是系统层面的评估。评估应该包括功能评估和代码评估。


工程师可以根据需求在纯模拟模式(模型在环)、软件在环、处理器在环、硬件在环或真实系统本身进行系统测试。由于有成百上千的场景需要测试,AD工程师将从自动化测试中获益,而不是手动运行它们。


这个自动化测试的例子显示了如何评估ADAS/AD功能,方法是根据需求定义场景,自动测试组件和这些组件生成的代码。这样的测试自动化也能很好地与持续集成工具如Jenkins配合。


开发ADAS/AD应用是一个令人兴奋的领域,它汇集了多个工程学科。它也引入了汽车行业以前没有见过的复杂性。为了让汽车工程师在构建ADAS/AD应用时成功管理这种复杂性,需要对汽车工程进行根本性的改变,包括仿真的使用、工程师的技能以及软件的开发和部署。


工程师们需要工具来验证功能或系统在所有预期的用例中都能正常地工作,避免重新设计,因为这在成本和时间上都是昂贵的。MATLAB、Simulink和RoadRunner可以帮助工程师驾驭这些不同的学科,并成功地开发和将ADAS/AD应用推向市场。

智驾之芯:满足功能安全的车规级芯片研发流程


[参考文章]

Building Key Competencies for Autonomous-Vehicle Development — Govind Malleichervu

分享到:
 
反对 0 举报 0 收藏 0 评论 0
沪ICP备11026620号