没有在激光雷达身上“吃过亏”的自动驾驶公司,就像笔者年代没有痴迷过“龟仙人”的小朋友,童年是遗憾的。纸面上的 200m 测距能力,在视场角边缘为何只有 100m?在烈日当头和夕阳西下时,激光雷达点云的噪点水平怎么和化妆和未化妆的姑娘相差这么大?遇到高反射率物体和低反射率物体时,激光雷达怎么和见了仇人一样,剑拔弩张?
激光雷达技术演进的路线尚未收敛,新加入的玩家又如雨后春笋,导致市面上基于不同技术路线的激光雷达新产品层出不穷,且都在王婆卖瓜,自卖自夸。自动驾驶公司前期不断在核心算法、场景理解上建立竞争壁垒,忽视了自动驾驶硬件导入前测试验证。结果在实际落地过程中,硬件暴露的各种问题成为影响项目进度的罪魁祸首。
浓妆淡抹与穿金戴银都是表面现象,内心的真善美才应是我们追逐的本质。故自动驾驶圈黑话第十四期,笔者就和大家分享激光雷达盛世美颜下掩盖着哪些偷税、漏税的“丑陋”以及如何通过行之有效的方法拨掉面具,还原其本来面目。
面具掩盖下的“丑陋”
下文逐一列举激光雷达容易发生的一些典型问题,有的是硬件原理问题,有的是软件算法问题。问题之间可能还存在相互掣肘的关系,如何在博弈中设计最优的产品,真正考验着激光雷达厂商的系统能力,也是决定其能否成为“百年老店”的关键。
一、“拖尾”问题
按照测距方式不同,激光雷达主要分为 ToF(Timeof Flight,飞行时间)与 FMCW(FrequencyModulated Continuous Wave,调频连续波)两类。ToF 类型是目前量产的激光雷达的绝大多数选择。
在 ToF(Time of Flight,飞行时间)方法中,激光雷达发送端发射一个脉冲,打到物体后返回,接收端接收到回波后计算两者之间接收时间差,并通过乘以光速来实现物体之间距离的测量。
理想情况下,脉冲打到物体表面是一个理想的光斑点,但由于实际的脉冲存在一定的发散角,所以打到物体上会是一个面,且随距离增加,这个面会越大。这样就存在一种可能性,当存在前后两个物体,且激光雷达脉冲打到前面物体的边缘时,就有可能出现部分激光脉冲打到后面物体上,这就是激光雷达的“拖尾”问题。
拖尾问题的直接后果就是激光雷达打出去的一个脉冲返回两个回波,导致激光雷达陷入“迷茫”,无法判断以哪个距离为准。解决“拖尾”问题,如果从源头上杜绝的话,那就是选用能量更聚焦、发散角更小的激光脉冲发射器。如果从算法上优化的话,可以通过判断角度阈值是否在合理范围内,从而实现拖点甄别及删除。
二、盲区“吸点”
激光雷达探测器一般有几到几十纳秒的 Dead Time,Dead Time 指是接收到一个激光脉冲后到再能接受一个新激光脉冲所需的最短时间。当一束激光脉冲打出去的时候,首先会在激光出射镜头产生一个内反射信号被探测器接收,如果障碍物距离太近,由于激光接收器还处于 Dead Time 时间,近距离物体的脉冲回波无法被探测到,从而导致近距离物体测距不准。
激光雷达探测近距离物体时出现的测距不准问题被称为“吸点”,这个是困扰整个行业的难题,是需要底层探测器硬件不断进化。测距不准的近距离区域通常会被设定为“盲区”,这个盲区的大小通常在 0.1~1m 之间。
三、高反“鬼影”
对于高反射率物体,进入到激光雷达视场及测距范围后,输出的点云除了在真实位置有成像以外,还容易在其它位置形成一个形状、大小类似的成像,而这个虚假的成像被称为“鬼影”。不同类型激光雷达产生“鬼影”的行踪各不相同。
“鬼影”的形成是由于激光雷达对高反射率物体反射回来的高强度回波非常敏感,在实际驾驶场景中,常见的高反射率物体包括交通指示牌、锥桶、三角指示牌、汽车牌照,尾灯等。
如下图所示,左侧本来激光无法扫描到,但是由于右侧存在高反指示牌的“鬼影”现象,导致在左侧形成一个形状、大小相似的点云。
四、高反“膨胀”
对于高反射率物体,另外一个异常现象就是“膨胀”。“膨胀”是指激光扫描高反射率物体后,输出的点云会向四周扩散,看起来就像“膨胀”了一样,因此称为高反“膨胀”
下图白框框出来的部分本来是一些高反的细杆,但由于“膨胀”问题的存在,活生生变成了一个球。解决高反“鬼影”和高反“膨胀”是一个系统工程,既需要硬件本身具有高反射信号的良好分辨能力,又需要算法配合进行适中的优化。
五、空洞
对于近处低矮障碍物,激光雷达由远及近靠近过程中,出现的点云“时有时无”的丢失现象被称为“空洞”。障碍物原始点云的“时有时无”会让感知软件难以连续跟踪,从而没法准确判断是不是一个固定障碍物,容易导致危险的急刹车或频繁的“减速加速”现象。
六、阳光干扰
当车辆面向太阳方向行驶的时候且激光雷达视窗也朝向阳光方向,如果没有良好设计的处理系统,很容易导致激光雷达点云中出现明显噪点。
七、对射干扰
不同激光雷达之间如果靠得太近,不同雷达发射和接受脉冲容易被混淆,导致点云出现噪点。
去伪存真的“导入流程”
面对众多纸面上参数相似,采购价格接近,对接商务小姐姐颜值相当的激光雷达产品,自动驾驶公司该如何花费适中的人力、物力,用适中的时间找到价值观一致的产品?答案是“标准化导入流程”,标准化导入流程通过流水线化的验证及评审过程,可以剔除人为主观厌恶,达到去伪存真,检验骡子还是马的目的。
笔者从一个激光雷达资深受害者的角色,于不断失败中总结出一套标准导入流程,一套可量化的测试方案。导入流程、测试方案均为一个受害者基于当前所处环境的一家之言,分享出来也仅用于民间交流、相互进步。整个标准导入流程包含三大阶段、六大步骤。当然,通过对每个阶段测试内容的更新,这套标准导入流程不仅适用于激光雷达,也可适用于高精度组合导航、感知相机、毫米波雷达等自动驾驶硬件产品。
第一个阶段为产品验证阶段,由产品部门主导,主要包括单体性能验证和单体架构级功能验证两个步骤。对于激光雷达来说,单体性能验证内容主要包括纸面参数核实、典型障碍物的识别效果,特殊场景表现等。单体架构级功能验证主要用来验证产品是否满足平台化架构对零件的功能要求,包括时间同步方式及精度、网络管理、电源管理、诊断配置升级等功能。
产品验证阶段的测试方案由产品部门收集来自客户场景、系统架构、算法研发等需求,汇总形成的一份准入测试用例,并由测试部门负责执行,技术 Leader 牵头进行决议。
第二个阶段为研发验证阶段,由研发部门主导,主要包括软件系统验证和硬件系统验证两个步骤。研发验证前需要将一套硬件布置在测试车辆上,布置的位置和角度应为理论上的量产布置位置。软件系统验证为各个算法模块进行算法匹配验证、理论布局验证、CPU 占用、AI 算力消耗及内存读写速度等方面的验证。硬件系统验证主要考察电气连接方案和机械固定方案是否满足整车系统稳定,可靠的要求。
研发验证阶段的测试方案由研发部门根据自己软件模块对激光雷达的需求设计针对性的测试用例,同时由研发部门负责执行,技术 Leader 牵头进行测试结论的决议。
第三阶段为实车验证阶段,由项目部门主导。挑选合适的客户现场,进行可靠性,耐久性,一致性验证。验证周期为 1~3 个月,验证通过则开始进行批量化导入。
实车验证阶段的测试方案由测试部门根据现场易出问题的场景、设计有针对性的测试用例,测试报告由项目牵头,组织产品、研发、测试进行评审,从而决议是否进行大规模批量化导入。
“骡子”还是“马”的验证方法
一、产品验证阶段
在产品验证阶段,主要目的是摸清激光雷达的底细从而找到其性能边界,避免后期试错的成本。因此验证主要分为三个方面:(1)激光雷达纸面参数的真实情况;(2)典型物体的识别效果;(3)特殊场景的性能表现;(4)架构级功能的支持情况。
(1)纸面参数验证
从规格书中,挑选出我们关心的且又是供应商最容易卖弄文采的参数,包括 FOV(Field of View,视野范围)、测距能力、盲区大小。对于 FOV,垂直 30° 可能是水平某一个角度区间可以达到的角度,而在水平其它角度区间,垂直 FOV 可能只有 25°;对于测距能力,可能只有水平 FOV 60° 的范围可以达到标称的最大测距能力,两边范围最大测距能力可能只有 80%。这些供应商都不会主动坦白,严刑逼供也不会认怂服罪。因此纸面参数验证过程既是确认激光雷达是否可以满足需求的第一步,也是对这家公司诚信品质的验证。
(2)典型物体识别
激光雷达纸面上的分辨率是一个抽象的数字,我们无法从中想象出面对不同距离下不同大小物体的识别效果。同时由于激光雷达面对高反射率、低反射率物体的一些诡异现象存在。因此我们有必要梳理出场景中的典型物体,并测试激光雷达在不同距离下面对这些物体的识别效果。
(3)特殊场景测试
阳光直射、扬尘天气、雨雪天气等都是自动驾驶车辆会遇到的一些特殊场景,而在这些场景中,如果激光本体系统架构和算法足够优秀,可以在一定程度上减轻这些特殊场景的影响,同时搭配上后端轻量化的算法,即可实现自动驾驶车辆在绝大多数特殊场景下的正常工作。
(4)架构级功能验证
架构级功能验证主要验证产品是否具备平台架构要求的时间同步功能、电源管理、网络管理、诊断配置、远程升级等功能,这些也是影响后期批量化部署及交付的重要功能。
二、研发验证阶段
在研发验证阶段,主要包括软件系统验证和硬件系统验证两个步骤。
研发各功能模块对激光雷达的要求不同,感知模块侧重点可能在激光扫描方式、点云完整度及噪点情况,定位模块侧重点可能在精度及分层情况、主动安全模块侧重点可能是特殊场景下的识别效果。因此软件系统验证的目的是将激光雷达注入算法的灵魂,一方面可以计算算法移植的工作量,另一方面可以验证新激光雷达是否可以满足本功能的需求。
硬件系统验证主要包括电气接口方案及机械固定方案,验证内容包括供电电压是否足够稳定,整车 EMC 对通信链路的影响,瞬时启动功率对整车其它用电器的影响,机械安装方案是否牢固、可靠等。
由于研发验证阶段是按照量产状态布置新的激光雷达,同时将激光雷达接入现有架构中,因此可以同步验证理论布局是否可以满足各模块的功能需求,CPU 占用影响、AI 算力消耗、内存读写速度等情况。
三、整车验证阶段
在整车验证阶段,主要包括客户现场验证。验证内容包括新激光雷达的可靠性、耐久性、一致性。测试部门通过对易出问题的使用场景或工况进行汇总,可以刻意让激光雷达工作在这些场景中,以加速可靠性、耐久性、一致性验证。
小结
受过最大的伤就是激光雷达公司商务小姐姐的善意的隐瞒,受过最大的痛就是研发同事少见的齐心协力罢免激光雷达的集体上书。伤过,痛过,才明白美丽下的虚伪,善良下的丑陋。
以下文章来源于十一号组织 ,作者11号线人