[首发于智驾最前沿微信公众号]为确保自动驾驶安全,很多技术方案中都会采用感知冗余的方式来兜底,即在车辆上加装多个传感器,以实现更多的信息感知。其实对于自动驾驶汽车来说,每个传感器都有自身的优势和劣势,所能应对的交通场景也不一样。
摄像头看得清楚,能分辨颜色、识别交通标志和车道线,但遇到夜晚强逆光、雾霾或暴雨就容易丢失信息。毫米波雷达在雨雪或尘雾里还能给出速度和距离信息,但对物体形状的分辨率比较差,不能很好判断行人的姿态。激光雷达(LiDAR)能把周围做成三维点云,距离很精确,对遮挡关系判断也有优势,可是成本、封装和在某些极端天气下的表现也有局限。IMU、GPS这类惯性/定位设备给出姿态和位置基准,但在城市峡谷或隧道里会漂移。
图片源自:网络
将这些传感器放在一起,的确能够互补各自的短板。但也正因为多个传感器同时使用,会导致感知信息相互冲突,再加上不同传感器的时间戳、安装姿态、采样频率不完全一致,这些细微差异累积起来,就会放大冲突本身。如果没有一套稳健的对齐、过滤和置信度机制,这些矛盾会持续干扰跟踪和识别,让系统在关键场景里变得犹豫甚至判断失准。
多个传感器同时使用的复杂性在哪里?
把多种传感器放一起会带来很多细枝末节的麻烦,加一个传感器,不只是多台设备那么简单。它们的差异化特性会在工程、算法和验证上不断叠加出新的问题,会使得感知任务变得更为复杂。
想让多个传感器感知的信息可以同步,需要将不同传感器定位到同一个坐标系里,这里的精度要求非常高。哪怕传感器位置偏几毫米、姿态偏几度,融合后的结果就可能把障碍物投错地方,影响跟踪和决策。车辆行驶中会震动、温度变化会引起热胀冷缩,车体件长期使用后也会微微变形,这些都会让外参逐步漂移。所以需要在装配线上做高精度初始标定,还要有在线自标定或定期复标的机制。没有稳定的外参,任何融合算法都很难发挥作用。
不同传感器的采样率、处理延迟、传输链路也不一样。如果不把它们在时间上纠正,移动物体在不同数据源里对应的是不同时间的状态,结合起来的世界模型就会有位移和速度上的错配。为解决这一问题,在硬件层面可以使用统一时钟(比如GPS的PPS脉冲、IEEE 1588 PTP)的方式,在软件层面可以使用插值和时间补偿的方法,但这些方案在工程上都要落地调试,否则在真实路况下就容易出问题。
传感器数据类型本身就是异构的麻烦来源,图像是二维栅格的像素,点云是稀疏的三维坐标,雷达回波有强度和多普勒信息,惯性计会输出高频连续信号。它们的噪声模型不同,可信度不同,处理方式也不同。在带宽与计算资源受限的情况下,需要在传感器端做预处理、压缩或裁剪,才能把“有用”的东西送到中央计算单元。高分辨率相机和高线数LiDAR一起,会把车载以太网和处理器推到瓶颈,这就涉及到硬件选型、网络架构与边缘计算能力的综合平衡。
图片源自:网络
多个传感器同时使用,避免不了要进行传感器融合,传感器融合可以发生在不同层级,如把原始数据统一到某种表现形式后一起处理、把各自的特征融合,或者仅在决策层合并单独感知结果,每种方式对同步、标定和计算的敏感度都不同。现在有很多技术使用基于深度学习的跨模态融合网络,这些网络需要大量对齐标注的数据来训练,还要有对不确定性的建模和置信度输出,否则当某个传感器异常时,系统不能安全降级或会作出错误判断。
当使用当传感器越多,系统架构和功能安全也会变得更复杂。感知模块、域控制器、中央域控制器之间如何划分计算负载,哪些路径要走硬实时(系统某一条处理链路必须在规定时间内完成,哪怕只晚了几十毫秒,都被视为失败,因为可能带来安全风险。),哪些可以异步处理,都需要在设计阶段定好方案。使用更多的传感器,也意味着可能出现更多的故障模式,像是传感器物理损坏、遮挡、数据链路中断、时间戳漂移、外参错位等,都是常见的故障模式。功能安全规范要求针对不同故障模式做诊断、降级和冗余策略证明,这会把验证工作量拉得很大。
传感器使用越多,验证成本也会呈指数级增长。要覆盖不同气象、光照、交通密度、遮挡、传感器部分失效等组合,单靠实际道路测试会太慢太贵。仿真做得再真实也要和实测结合,否则容易漏掉边界条件。此时,标注复杂度也上来了,标注点云和图像的对应关系比单一模态困难得多,成本高且更加耗时。
传感器的供应链不会是唯一的,由于不同厂家的传感器有不同的接口、不同的固件升级路径、不同的寿命与质保策略。售后维护想要做到快速诊断和替换、支持远程日志采集与升级,运营成本也会随之上升。这些都会影响整车成本、重量、能耗和外观设计。
多传感器融合时需要做哪些工作?
知道多个传感器同时使用会遇到的问题,那如何去解决这些问题?如何更好地利用感知冗余?
其实多个传感器同时使用是,要先确定好时间与空间基准。时间同步推荐用硬件级时间源去标注帧,软层层面用插值和延迟补偿作为兜底。空间标定可以在生产线上做精细标定,再用在线自标定算法在运行时微调。自标定可基于静态场景特征、车道线或多模态匹配来估计外参漂移,这是把“人工复标”变成“自动维护”的有效办法。
把部分计算放在传感器域或边缘节点,不仅能降低总线负载,也能尽早做健康检查。很多系统在传感器近端先做滤波、背景建模、特征抽取或置信度评估,然后只把必要信息传给中央单元。这样可以把传感器级别的固件更新、诊断日志和基本退化逻辑内置在本域,有助于快速判定问题来源。
为确保感知安全,不确定性建模要贯穿整个感知到决策链路。融合模块应始终以概率或置信度的方式表达信息,让后续跟踪和决策模块能基于不确定性来选择更保守或更激进的动作。对此常见的手段有卡尔曼滤波类的贝叶斯方法、带不确定性输出的神经网络或多假设跟踪等。只有把不确定性量化,系统在遇到极端场景时才能优雅降级,而不是盲目做出危险决策。
图片源自:网络
为确保感知融合的准确性,分层融合是比较务实的选择。把传感器专属的前端做成各自优化的模块,保证在擅长的维度上输出较好结果,然后在特征或决策层再做跨模态融合,这样不仅能保留模块化的可验证性,也能利用互补信息提升精度。模块化还有一个好处,那就是当某个传感器故障时,系统能迅速切换到已有的退化路径。
想要把测试和仿真做成闭环,可采用高保真仿。高保真仿真能覆盖很多极端条件、退化场景和时间同步异常,这对于在早期发现设计缺陷非常有帮助。仿真中要把各传感器的噪声模型和失效模式模拟出来,然后把测试结果回填到算法和硬件要求里。当然,实车测试依然必不可少,但应有策略性地挑选关键场景与边界条件去验证。自动化测试、持续集成和场景回放则是把验证成本控制住的主要工具。
当多个传感器融合出现问题后,退化策略与故障诊断不能只靠事后补救。自动驾驶系统要能在线评估传感器健康并自动执行安全降级和冗余切换。降级的目标是让车辆在可控的范围内继续运行或安全停靠,而不是完全停止功能。实现这点需要预先设计好在不同传感器丢失情况下的控制律和限速规则,并把这些逻辑放进安全案例里接受审查。
什么时候才需要多传感器融合?
很多人以为自动驾驶传感器越null