基于毫米波雷达的可行驶区域检测(Freespace)

news2024/11/18 13:59:47

说明

    随着具备测高能力、更高角度分辨率、更远检测范围的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感知雷达芯片组助力实现自由空间映射

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1065135.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一、动态规划简单实例

【题目】 当我们给定一个简单序列[1、5、2、4、3],现在要求输出该序列中,最大子序列的长度,子序列要求从小到大,元素下标可以跳跃,例如子序列[1、2、3]。 【实现方式(暴力实现)】 1、先定义一个函数L(nums,i)&#x…

C# 给某个方法设定执行超时时间

C# 给某个方法设定执行超时时间在某些情况下(例如通过网络访问数据),常常不希望程序卡住而占用太多时间以至于造成界面假死。 在这时、我们可以通过Thread、Thread Invoke(UI)或者是 delegate.BeginInvoke 来避免界面假死, 但是…

RocketMQ 基于时间轮算法实现指定时间点的定时消息原理解析

在 RocketMQ 4.x 版本,使用延时消息来实现消息的定时消费。延时消息可以一定程度上实现定时发送,但是有一些局限。 RocketMQ 新版本基于时间轮算法引入了定时消息,目前,精确到秒级的定时消息实现的 pr 已经提交到社区&#xff0c…

unity中绑定动画的行为系统

主要代码逻辑是创建一个action队列,当动画播放结束时就移除队头,执行后面的事件 public class Enemy : MonoBehaviour {public event Action E_AnimatorFin;//当动画播放完毕时public Action DefaultAction;//默认事件public Dictionary<Action, string> EventAnimator n…

数据科学最佳实践:Kedro 的工程化解决方案 | 开源日报 No.47

leonardomso/33-js-concepts Stars: 58.4k License: MIT 这个项目是一个帮助开发者掌握 JavaScript 概念的资源库。该项目基于 Stephen Curtis 撰写的一篇文章&#xff0c;包含了对 33 个重要 JavaScript 概念全面深入地讲解&#xff0c;并被 GitHub 评为 2018 年最佳开源项目…

Python Random模块详解

Random模块详解 随机数 random模块 randint(a, b) 返回[a, b]之间的整数randrange ([start,] stop [,step]) 从指定范围内&#xff0c;按指定基数递增的集合中获取一个随机数&#xff0c;基数 缺省值为1。random.randrange(1,7,2)choice(seq) 从非空序列的元素中随机挑选一个…

驱动器类产品的接口EMC拓扑方案

驱动器类产品的接口EMC拓扑方案 1. 概述 本文以高压伺服驱动器和变频器类产品为例&#xff0c;对常用端口滤波拓扑方案进行总结&#xff0c;后续根据不同的应用场景可进行适当删减&#xff0c;希望对大家有帮助。 2. 驱动器验证等级 本文推荐拓扑的实验结果&#xff0c;满足…

Ps:选择并遮住

选择并遮住 Select and Mask主要用来提高选区边缘的品质&#xff0c;尤其在毛发等复杂边缘的抠图上发挥强大的作用。 Ps菜单&#xff1a;选择/选择并遮住 Select and Mask 快捷键&#xff1a;Ctrl Alt R 在所有选区工具的工具选项栏上以及图层蒙版的属性面板中都可以看到“选…

NAT+ACL+mstp小综合

三、实验一相关知识点 1&#xff0c;实验&#xff1a;NAT 综合实验 2&#xff0c;拓扑&#xff1a; 3&#xff0c;需求: 1&#xff09;&#xff0c;实现VLAN20 的除了20这台主机以外所有主机上网访问外网 2&#xff09;&#xff0c;实现VLAN30 的主机为奇数电脑上网 3&#…

详解C语言—预处理

目录 1、预处理 (1)预定义符号介绍 (2)预处理指令 #define #define 定义标识符&#xff1a; #define 定义宏&#xff1a; #define 替换规则 (3)预处理操作符# (4)预处理操作符## (5)带副作用的宏参数 (6)宏和函数对比 2、命名约定 3、预处理指令 #undef 4、命令行定…

用 Pytorch 自己构建一个Transformer

一、说明 用pytorch自己构建一个transformer并不是难事,本篇使用pytorch随机生成五千个32位数的词向量做为源语言词表,再生成五千个32位数的词向量做为目标语言词表,让它们模拟翻译过程,transformer全部用pytorch实现,具备一定实战意义。 二、论文和概要 …

mac连接easyconnnect显示“本地环境出现异常”

mac连接easyconnnect显示“本地环境出现异常” 解决方法&#xff1a; 终端下输入&#xff1a;vim ~/.zprofile文件内加入如下内容&#xff0c;如下图&#xff1a; ####解决连接easyconnnect显示“本地环境出现异常问题 function EC_start(){/Applications/EasyConnect.app/Co…

学信息系统项目管理师第4版系列19_质量管理

1. 公差 1.1. 质量测量中公差是测量指标的可允许变动范围&#xff0c;而不是实际测量值与预期值的差 1.1.1. 【高22下选35】 1.2. 结果的的可接受范围 2. 控制界限 2.1. 统计意义上稳定的过程或过程绩效的普通偏差的边界 3. 3版 3.1. 质量控制新七工具 3.1.1. 【高19下…

cpp primer笔记070-算法函数

accumulate的第三个参数的类型决定了函数中使用哪个加法运算符以及返回值的类型&#xff0c;如果返回值是自定义类型&#xff0c;需要使用accumlate&#xff0c;则需要重载运算符&#xff0c;该接口的第三个参数返回的是一个需要处理的数据类型的一个变量。 std::vector<std…

蓝桥等考Python组别十四级001

第一部分&#xff1a;选择题 1、Python L14 &#xff08;15分&#xff09; 运行下面程序&#xff0c;输出的结果是&#xff08; &#xff09;。 d {A: 501, B: 602, C: 703, D: 804} print(d[B]) 501602703804 正确答案&#xff1a;B 2、Python L14 &#xff08;15分…

吃鸡高手必备工具大揭秘!提高战斗力,分享干货,一站满足!

大家好&#xff01;你是否想提高吃鸡游戏的战斗力&#xff0c;分享顶级的游戏作战干货&#xff0c;方便进行吃鸡作图和查询装备皮肤库存&#xff1f;是否也担心被骗&#xff0c;希望查询游戏账号是否在黑名单上&#xff0c;或者查询失信人和VAC封禁情况&#xff1f;在这段视频中…

System Generator学习——使用 AXI 接口和 IP 集成器

文章目录 前言一、目标二、步骤1、检查 AXI 接口2、使用 System Generator IP 创建一个 Vivado 项目3、创建 IP 集成设计&#xff08;IPI&#xff09;4、实现设计 总结 前言 在本节中&#xff0c;将学习如何使用 System Generator 实现 AXI 接口。将以 IP 目录格式保存设计&am…

「专题速递」回声消除算法、低功耗音频、座舱音频系统、智能音频技术、低延时音效算法、手机外放增强算法...

随着多媒体和通信网络技术的持续升级&#xff0c;以及新型音视频应用场景的不断涌现&#xff0c;音频处理技术正朝着更加智能化和沉浸化的方向迅猛发展。人们对音频听觉体验的要求也逐渐提高&#xff0c;无论是在何种场景下&#xff0c;都期望获得更加清晰的声音&#xff0c;并…

吃鸡高手必备!这些技巧帮你提高战斗力!

大家好&#xff01;作为一名吃鸡玩家&#xff0c;我们都想提高自己的战斗力&#xff0c;享受顶级游戏作战干货&#xff0c;装备皮肤库存展示和查询&#xff0c;并避免被骗游戏账号。在这里&#xff0c;我将为大家介绍一些实用的技巧和工具&#xff0c;让你成为吃鸡高手&#xf…

三相逆变器下垂控制双机

下垂控制的原理推荐看这篇知乎&#xff08;形象又生动&#xff09;&#xff1a;https://www.zhihu.com/question/41003509/answer/518837491 主拓扑图 控制主要模块 Droop子模块 监控有功结果 1、从两台逆变器输出的有功功率波形可以看到&#xff0c;在负载突变的时候&#xf…