说明
随着具备测高能力、更高角度分辨率、更远检测范围的4D毫米波雷达的出现,很多之前只能用摄像头/激光雷达做的事毫米波雷达也开始涉足(并且可以做得很好):比如目标识别、SLAM、以及本博文将要讨论的可行驶区域检测(Freespace)。以往(至少是我个人)对于车载毫米波雷达目标检测的理解主要针对于目标本身:通过雷达检测出目标的位置和速度,更往后也只是做做目标跟踪(航迹管理)、目标识别等,但是可行驶区域检测(或者说自动驾驶)要求我们做得更深入一些:把目标“点”连成车辆可行驶区域的“面”。
本博文试图论述可行驶区域检测这一自动驾驶里的概念,并探讨基于毫米波雷达来做可行驶区域检测的优势以及方法。囿于现有条件,并没有基于实测数据进行实践,后续有机会再做更新。
Blog
20231006 本博文第一次写作
目录
说明
目录
一、关于可行驶区域检测的概述
1.1概念说明
1.2 现有主要方法
二、基于毫米波雷达的可行驶区域检测
2.1 毫米波雷达的优势
2.2 基于毫米波雷达做Freespace的方法
2.3 效果图示
三、总结
四、参考资料
一、关于可行驶区域检测的概述
1.1概念说明
可行驶区域检测(Freespace)是自动驾驶里的概念,顾名思义就是检测出车辆周围可以行驶的区域(或者更细节一点:是指在一定高度范围内,在不考虑交通规则的情况下,可提供给车辆自由行驶的无障碍平坦路面区域)。在自动驾驶的经典流程架构中:环境感知--->决策规划--->控制执行,属于最前端的感知模块。现阶段自动驾驶的环境感知主要依赖于:摄像头、激光雷达、毫米波雷达、超声波雷达这几种传感器,从某种程度上来说这几种传感器都可以用来做可行驶区域检测这件事,不过现阶段主流的方法还是基于摄像头和激光雷达。但随着4D毫米波雷达的出现,学术界以及工业界都想着为毫米波雷达赋予更多的衍生(应用)价值,于是很多之前似乎只能用摄像头/激光雷达做的事毫米波雷达也开始涉足(并且可以做得很好):比如目标识别、SLAM、以及本博文讨论的可行驶区域检测。
要理解如何做这件事(可行驶区域检测),首先需要弄清楚这件事是什么。
自动驾驶汽车在做决策和规划(加速、制动、转向,在未来的某个时间点以怎样的速度和航向角到达某个点)前,需要很清楚地知道自己在哪里、周围的道路以及障碍物信息。后者便是可行驶区域检测需要做的事,这是做可行驶区域检测这件事的宏观上的由来。
行车场景中,常见的环境元素包括:道路边界、车道线、动态障碍物、静态障碍物、路灯、标志牌等。为什么我们说纯视觉方案极难实现无人驾驶?(即便是一直推崇纯视觉方案的特斯拉也开始启用毫米波雷达),除去通常所说的:容易受到极端天气和光线条件影响、较难实现测距测速(需要依赖双目、深度学习算法等,且准确度一般)外,最核心的原因在于摄像头只能“看到”和“识别”它认识的东西,而摄像头如何认识这些东西?:只能靠我们不断的喂给它(神经网络)并告诉它这些东西(比如人、车、道路标识物等等)是什么。但是路上的东西何其多(可能有各种魔改的交通工具、人为设置的路障等等)?而这些摄像头不认识的东西,就构成了自动驾驶所谓的长尾问题:由于道路场景复杂,总会有未知的东西存在,即使现有的技术已经实现了99%以上场景的自动驾驶,但剩下1%的长尾场景如果得不到解决,自动驾驶就始终无法落地。【由于高速等封闭道路的场景简单,这也是为什么现阶段所谓的L3+最先在高速上应用的原因。由于路测数据量直接决定了摄像头(神经网络)所认识东西的数量,这也是为什么我们说数据是想要做自动驾驶的公司的核心竞争力】
自动驾驶中把这些未知的动静障碍物统称为一般障碍物,那么,对于这些一般障碍物我们该如何应对/处理?除去不断的采集各种道路数据让神经网络认识它们以外,我们把它们都归入可行驶区域检测任务中。作为一种辅助手段,对那些语义类别不清晰的障碍物,以及那些语义明确但是漏检的情况,进行兜底检测,这是做可行驶区域检测这件事的核心定位。
细分来说,可行驶区域检测可拆分为两层:一是车周空间的可行驶区域,是指在道路边界以内(如果有道路边界的话,比如越野的场景下是没有道路边界的),排除掉动静态障碍物后,车辆可以用来做行驶规划的区域(可以理解成这是大的区域范围)。二是在前述区域之内,考虑各种(已知/未知)障碍物后在这个区域内还剩的、车辆可以用来做行驶规划的区域,从这个角度来说,此时的可行驶区域检测实际上是在前述大区域下补集障碍物实例或边缘。这是做可行驶区域检测这件事的具体内容。
1.2 现有主要方法
如前所述,现有的方法主要是基于摄像头和激光雷达的,现阶段我本人较少接触乃至实际应用,本小节只给出几种方法的粗略说明。
1. 基于2D图像空间的方法
该方法本质上是图像的分割任务,主要有两种思路:一是基于图像列的障碍物检测:假设驾驶视角下图像底部像素对应的区域是可行驶的,向图像顶部延伸生长,直至遇到障碍物,从而得到完整的可达空间;二是可达空间语义分割:得益于深度学习的快速发展,基于语义分割的方法直接分类2D图像的像素是否是可达空间。
2. 基于3D空间的方法
主要是基于激光雷达的三维点云数据进行处理,使用占据网格和场景流的方式来表达一般障碍物:用占据网格来描述物体的尺寸和位置,用场景流来描述物体的运动信息,无论动静、无论是否有规则的形状、以及是否有明确的语义类型。一切障碍物都可以用这种方式统一表达。
3. 基于BEV(Bird eye view)空间的方法
典型代表是特斯拉,(多相机的BEV感知是特斯拉提出且落地应用的?)。特斯拉的BEVNet主要有三种任务:道路边缘语义分割、道路结构语义分割、占据网格(占据网格最直接的是基于激光雷达所采集三维点云数据来做,但是特斯拉基于纯视觉的方法实现了这个,而且能解决没有明确语义分类、形状不规则的异常障碍物)。参考资料3中对其的评价是:自动驾驶技术量产落地过程中,不可避免会在实际道路遇到各种各样的障碍物,这些障碍物分类不明确、形状不规则,也不会有绝对的动静之分,我们不可避免需要寻求一种统一的表达方式,提供精确的可行驶区域感知结果,以给予下游决策规划模块作出合理的驾驶行为,特斯拉提出的占据网络,结合BEVNet卓越的3D感知能力,提供占据栅格和运动流这样一种统一表达形式,确实针对这一痛点问题给出了不错的解法。
二、基于毫米波雷达的可行驶区域检测
2.1 毫米波雷达的优势
摄像头和激光雷达的缺点: 摄像头:缺乏可靠的远距离分辨率、探测距离有限、测距测速复杂且不准确、受极端天气和光线条件影响。 激光雷达:性能冗余(做Freespace并不需要激光雷达那么高的角分辨率)、成本高、受天气影响。
4D毫米波雷达的高灵敏度、高分辨率、全空间感知(水平+俯仰)能力、全天候全天时可用、成本可控等优势使其成为该技术方案的优选项,是对摄像头的完美补充。(当然,毫米波雷达的目标识别能力不如摄像头)
2.2 基于毫米波雷达做Freespace的方法
前面所说的几种方法太宽泛了,本小结谈谈具体的:如何基于毫米波雷达的点云数据得到可行驶区域。需要说明的是,不同于我们做毫米波雷达信号处理时的流程相对固定,可行驶区域检测算是数据处理的内容,不同的雷达厂家或算法供应商可能有不同的方法。这里结合几篇专利的内容给出几种处理方法。
专利名:
《一种基于4D毫米波雷达的汽车可行驶区域检测方法》 CN114415171A
方法概述:
其算法流程为:4D雷达原始点云数据 ---> 数据预处理 ---> 路沿提取(并得到可行驶道路区域) ---> 道路区域内目标识别 ---> 提取不包含目标的可行驶区域。
其数据预处理过程包括:坐标转换(比如转换到以车为中心的坐标系里)、点云筛选(选出其中有效范围内的点云)、点云聚类并判断和滤除噪声点。其路沿提取过程包括:筛选出对地静止的点云数据(这个话题可以参考我之前的博文: 毫米波雷达信号处理中的静止目标(静态杂波)滤除问题_墨@#≯的博客-CSDN博客 )、基于最小二乘法对静止的点云进行拟合以得到路沿曲线(这个话题可以参考我之前的博文: 关于最小二乘拟合与正则化的探讨_墨@#≯的博客-CSDN博客 )、并通过拟合的结果来判断是否存在真实的路沿(在实际应用中,一般来说雷达检测到的对地静止的目标有较大可能是路沿,但也存在没有路沿的情况,我们需要允许这种情况的发生,至于判断的标准是什么,需要自己思考了…)。得到了路沿便也得到了道路的宽度和形状。其道路区域内目标识别过程包括:筛选出道路内的点云数据、基于跟踪算法建立目标航迹、利用目标航迹估算目标运动状态。其提取不包含目标可行驶区域过程包括:基于静止障碍物,本车运动状态以及碰撞时间TTC得到相对静止障碍物的相对安全距离,从而得到初始可行驶区域、同理得到本车与运动障碍物的实时相对安全距离,并进而得到最终的可行驶区域。
方法小结:
本专利是我找到的几篇基于毫米波雷达做可行驶区域检测的专利中比较全面、内容详实、干货较多的一篇。本专利提出的算法流程内容连贯,容易理解,逻辑性较强,具备很高的参考价值,可以尝试按其流程基于实测数据进行实践(可能一些细节需要自行摸索)。
此外,这里给出一种我了解到的方法。做可行驶区域检测除了在大的区域范围内不断获取可行驶区域外(上面专利的方法),其实也可以“反着来”:找不可行驶区域。算法的大致流程为:4D雷达原始点云数据 ---> 预处理 ---> 分区&不可行驶区域的顶点筛选 ---> 异常点处理 ---> 得到可行驶区域。
其预处理过程包括:坐标转换、点云筛选(比如筛选出指定高度范围内的点云)。其分区&不可行驶区域顶点筛选过程包括:在雷达的水平FOV范围内按照固定的角度进行区域分割,随后在每个子区域内,找到离雷达最近邻的目标点作为不可行驶区域的顶点,当然,如果在某个子区域内没有目标点,那么可以在雷达探测范围的最远处设置虚拟顶点。其异常点处理过程包括:主要针对有路沿的情况,当存在路沿时,需要计算每个子区域与路沿的交点,而且我们应该以该交点和我们事先选取的该区域的顶点两者中离雷达较近距离的点作为我们该区域最终的顶点,此外还有一些优化不可行驶区域曲线的操作。
综上,我们便可以得到一条围绕着不可行驶区域的曲线,曲线之下直到雷达就是我们的可行驶区域。从某种程度上来说,本方法更简单明了,但是本方法没有考虑运动目标的未来状态,也没有考虑碰撞时间TTC。
2.3 效果图示
这里给出在网上找到的一些基于毫米波雷达做可行驶区域检测的效果图:
三、总结
本博文论述了可行驶区域检测这一自动驾驶里的概念,并探讨基于毫米波雷达来做可行驶区域检测的优势,结合专利给出了两种实践的算法流程。本博文主要还是概念性内容,没有涉及方法的具体实践,先占个坑,后续有机会尝试做下实践并不定期更新。
四、参考资料
1、《一种基于4D毫米波雷达的汽车可行驶区域检测方法》 CN114415171A
2、可行驶区域(freespace)如何利用? - 知乎 (zhihu.com)
3、如何看待特斯拉Autopilot的Occupancy Network? - 知乎 (zhihu.com)
4、Arbe雷达的自由空间映射是何方黑科技?
5、Arbe感知雷达芯片组助力实现自由空间映射