什么是实时性
实时性(Real-Time)指的是系统或程序在特定时间约束下对输入作出响应的能力。在计算机科学和控制系统领域,实时性意味着系统必须在规定的时间范围内处理输入并产生输出,以确保其功能的正确性。实时系统的关键特性在于不仅要求功能正确,还要求其在一定的时间限制内完成任务。
图1:实时系统示意图
在实时系统领域,又可以进一步细分为硬实时、软实时和准实时。
硬实时系统具有一组严格的截止时间,错过截止时间就会被认为是系统故障。硬实时系统的典型例子是飞机传感器、航天器和行星探测器。
软实时系统则是尽量去尝试达到预定时间,但如果错过截止时间,系统也不会失效,但可能会降低服务质量,以提高响应速度。软实时系统的典型例子是用于娱乐的音视频传输软件。超时会影响体验,但不会导致灾难性后果。这时候,软件可能会把1080P降低到480P以保证视频流畅性。
准实时系统则是将截止时间后交付的信息或完成的计算视为无效。与软实时系统类似,错过截止时间后,系统不会失效,但同样可能会降低服务质量。准实时系统的典型例子是金融预测系统和机器人装配线。
另外,需要注意一个误区:实时系统虽然经常与低延迟系统绑定在一起来讨论,但实时系统的核心定义并不在于低延迟,而在于确定性的调度。也就是必须保证系统在特定时间内完成特定任务。因此,实时系统中的延迟必须是可测量的,并且必须设置任务的最大允许延迟。
智能驾驶为什么需要实时性
智能驾驶系统拥有庞大的功能集群,并具有很强的安全性要求。如果前方突然出现的障碍物没有被及时发现并处理,很可能就会酿成车毁人亡的悲剧。同时,汽车电子电气架构正朝着整合化和中央化的方向发展,在这聚合过程中,许多传统功能单一的独立控制器都被整合到高性能计算平台中了。以前单一控制器里简单可靠的系统比较容易保证实时性,但在计算平台中情况变得更复杂,系统实时性的重要性日益凸显。尤其是智能驾驶系统,因为高性能计算平台的核心功能和主心骨一般就是智驾。智驾软件功能必须与其他软件功能共存并共享资源,同时又不能影响其实时性和安全性。随着电气化、智能网联化时代的到来,汽车上的数字功能越来越多,这些挑战也随之增加。
图2:紧急转向避撞示意图
此外,智驾系统不仅对单个功能提出了实时性要求,还在传感器、控制软件和执行器网络之间的整体链路中带来了额外的优先级依赖关系。这种混合临界系统在安全临界合规性、时间和空间隔离方面有更高的要求。
智能驾驶需要多实时
既然实时性对智能驾驶这么重要,那具体又要做到多实时呢?响应时间容差要做到多少区间内呢?1微秒?1毫秒?1秒?还是1分钟?都不对。因为实时性的单位不是秒分,而是功能周期曲线。
图3:功能周期曲线示意图
如上图所示,不同功能在不同的阶段下,对实时性的敏感程度是不一样的。例如在传统传感器融合的子功能中,当检测目标的运动速度在30m/s时,10ms的时间容差可能就会导致不同传感器对目标在空间上0.3m的容差,影响融合性能。但在最近风头正盛的端到端AI架构下,10ms的时间容差可能会在不同模型中有不一样的稀释效果。又例如同样在AEB功能下,极限鬼探头场景和常规的前方静止车辆刹停(CCRS),功能对端到端的时延要求是不一样的,所以两者对于截止时间的要求也是不一样的。而除了时间敏感性,不同功能在不同阶段对任务执行的正确性要求可能也不一样。例如实现驱动电机矢量控制的算法任务的执行精度要求,就比前方障碍物分类计算精度的要求要高,因为二者计算结果出错后,对车辆危害程度是不一样的。
智能驾驶需要为实时性付出哪些代价
毛主席说过:“一个人做一件好事并不难,难的是一辈子做好事,不做坏事。”这句话放到智能驾驶中的实时性要求上,也很合适。单一个任务要做到一次计算的实时性其实不难,但如果在一个复杂的计算平台上,要保证成百上千个主要计算任务在功能的全生命周期内,不管外界条件如何变化,都能满足实时性,这就很难。当然这个难度并不是无解,而是要付出很大的代价。这些代价,集中体现在几方面:
高性能硬件资源成本
智能驾驶需要处理大量传感器数据,包括摄像头、毫米波雷达、LiDAR等,这些数据的实时处理要求极高的计算能力。为了满足这一需求,必须配备高性能的处理器(如GPU、TPU、专用的ASIC芯片甚至砸重金打造的自研芯片)。这些硬件不仅价格昂贵,还会增加系统的复杂性和功耗。而在存储与带宽方面,实时处理需要快速存储和大带宽来保证数据流畅传输。更高性能的存储设备和通信系统也是额外的硬件成本。
图4:某传统T1和芯片公司合作的高性能计算平台示意图
能耗和散热成本
实时计算需要不断执行复杂的算法和数据处理,这会显著增加能源消耗。在电动汽车中,能源消耗直接影响续航里程,因此为满足实时性,往往需要牺牲一定的续航能力。而对于散热问题,高性能计算产生大量热量,必须使用高效的散热系统,例如风冷或者水冷。设计和维护这些散热系统同样会增加能耗、成本和设计复杂度。
软件和复杂系统的优化成本
开发满足实时性要求的算法需要精细优化,这通常比普通算法复杂得多。开发团队需要投入更多的时间和资源进行软件优化,以确保算法在严格的时间约束下能够有效执行。调整调度策略、模型修枝、模型量化、减少拷贝等等,每一个都是“道理我懂,但做起来很繁琐”的工程优化。而同时智能驾驶系统往往依赖于分布式计算或远程通信,确保系统间的低延迟传输往往又需要采用更复杂的通信协议和更先进的网络架构,这也增加了开发和部署的难度。
在智能驾驶实时计算中,系统错误或延迟都可能会导致严重的安全事故。为了避免这些问题,必须实施更严格的安全监控和系统冗余设计,这必然会导致系统复杂度的上升。而为了确保系统在各种复杂交通场景中都能满足实时性要求,还需要进行大量的仿真、测试和验证。这些测试过程非常耗时,并且需要专业的测试环境和工具。
总结而言,满足智能驾驶的实时性要求需要付出硬件成本、能耗、算法和系统优化及验证等方面的高昂代价,再抽象一层就是人力、物力和时间三个大因素。但这是保障智能驾驶汽车这一个产品在复杂动态环境中安全高效运行所不可或缺的条件。它不是简单的上还是不上的0-1问题,而是考虑价格、研发周期和功能周期曲线等方面最终打磨智能驾驶这款产品所必须经历的平衡和取舍。
图5:产品管理平衡取舍示意图
智能驾驶如何在软件上落地实时性
上面探讨了这么多实现实时性的代价和实际情况的平衡,说明了实时性的具体实现手段并不是统一的,但也并非完全没有规律。接下来,我们从项目实践经验出发,尝试找一些“最大公约数”, 探讨一下如何在智驾软件中落地实时性。
采用实时操作系统 (RTOS)
一个真正的实时计算机系统既需要一个运行在实时模式下的操作系统,也需要能够实现确定性执行的用户代码。仅在非实时操作系统上运行确定性用户代码,或在实时操作系统上运行非确定性代码,都不会带来实时性能。常见的高性能实时操作系统有:
(1)RT_PREEMPT:Linux内核补丁,它修改了Linux内核调度,使其变成完全可抢占。
(2)Xenomai, 一个符合POSIX标准的联合内核(或虚拟机监视器),提供与Linux内核协同工作的实时内核。Linux内核被视为实时内核调度程序的空闲任务(最低优先级任务)。
(3)QNX Neutrino, 一个符合POSIX标准的实时操作系统,适用于关键任务系统。它采用微内核架构,将每个应用程序、驱动程序、协议栈和文件系统隔离在内核之外的独立地址空间中。出现故障的组件不会导致其他组件或内核宕机;可在对系统性能影响极小的情况下立即重新启动组件。
(4)VxWorks, 一个采用单片内核的操作系统。因为其体系结构使整个操作系统都在内核空间中工作,这意味着所有内核服务和用户服务都位于同一地址空间中,这使得操作系统的执行速度更快。它通过系统调用提供调试功能,性能监视,内存管理,CPU调度和其他操作系统功能。
图6:常见的几个实时操作系统
边缘计算与本地化处理
对于车云协同的智驾系统,为了避免远程云计算的延迟,尽量在车辆本地进行关键数据的实时处理(例如传感器融合、路径规划和车辆控制),然后再将过滤后的数据,或者影子模式触发的特殊数据,上传云端作进一步处理。这样将实时性强的任务放在车辆本地化处理,既能减少数据上传量,也能减少网络通信的时延。
使用高效的优化工具和算法
(1)硬件加速:使用 GPU、FPGA 或专用芯片(如英伟达 Orin的DLA和VIC、TDA4的VPA)来加速计算密集型任务,如深度学习模型推理和图像处理。这些硬件加速器可以显著提升实时性。
(2)流式处理:通过流式处理技术,可以像流水线一样,让传感器数据可以在采集的同时进行处理,而不需要等待完整的帧或批次数据,显著缩短感知延迟。
(3)轻量级算法设计:为了实现实时性,智能驾驶中的算法必须经过精心优化,确保计算资源的高效利用。算法应该尽量避免复杂的非线性计算,并通过数学简化和并行化来加速执行。对于泛化目的的大模型或者复杂算法库,还需要进行必要的裁剪,集中力量办大事。
(4)资源隔离与优先级管理:资源隔离是应对复杂系统的有效手段。例如通过使用Linux的 cgroups、QNX的Adaptive Partition或者带有实时特性的容器或虚拟机,可以保证关键任务有足够的资源分配,防止资源竞争导致的实时性能下降。
图7:QNX中的资源隔离示意图
时间同步与低延迟通信
(1)高精度时间同步:通过使用网络时间协议(NTP)或精确时间协议(PTP),确保各个模块之间的时间统一,以避免数据处理和决策上的时钟不一致问题。通过时间同步,让不同控制器上的不同功能获取几乎相同的时钟时间戳,就可以在后端数据处理过程中采用插值或拟合等手段去降低实时敏感性。
(2)低延迟通信协议:为了减少系统内部和外部的数据传输延迟,选择低延迟的通信协议(如 CAN FD、TSN 以太网络)来连接传感器、执行器和中央控制器,能够极大地提升系统响应速度。
冗余与容错机制的设计
通过引入硬件冗余(如双控制器设计)和算法冗余(如并行执行同一任务并选择最快的结果),可以降低因故障或延迟导致的系统失效风险,从而增强系统的可靠性和实时性。
严格的测试与验证
(1)仿真测试与实际道路测试结合:为了确保实时性在不同场景下都能满足需求,需要通过大规模仿真环境进行验证,同时结合大量的实际道路测试。仿真平台可以使用如 Carla、Apollo、Prescan 等仿真平台来模拟不同的交通场景,验证系统在复杂场景下的实时性表现。今年大火的世界模型无疑也能为仿真测试提供新的有力手段。
(2)实时性压力测试:通过设计极限工况的测试场景,如紧急刹车、复杂城市路况、恶劣天气等,或者增加系统负载,如额外运行拉高CPU的模拟软件、往通讯网络灌入额外数据等,测试系统在高负荷下的实时性和稳定性,确保其在极端条件下依然能够有效运行。
结语
在智能驾驶的背景下,实时性不仅是系统性能的要求,更是确保驾驶安全性和可靠性的重要保障。为了实现实时性,必须从硬件、软件、算法等多维度进行优化。这一过程中,虽然面临高昂的成本和技术复杂度,但这些投入都是为了确保车辆能够在复杂动态环境中做出快速、准确的决策,最终推动智能驾驶向更安全、更高效的未来发展。
图8:智驾实时性探讨的思维导图
以上就是关于智能驾驶下实时性的简介和粗浅见解,希望能让初学者或之前不太了解的同仁有一个大致的印象和理解,在下一次工作讨论的时候能够更加淡定。而对实时性感兴趣的同学可以按图索骥,进一步深入学习。同时也欢迎各位指正和交流。