作者 | dianyunPCL 编辑 | 点云PCL
点击下方卡片,关注“自动驾驶之心”公众号
ADAS巨卷干货,即可获取
点击进入→自动驾驶之心【3D目标检测】技术交流群
后台回复【3D检测综述】获取最新基于点云/BEV/图像的3D检测综述!
代码链接:https://github.com/jkk-research/urban_road_filter
摘要
在自动驾驶领域,城市场景中的道路和人行道检测是一项具有挑战性的任务,传统的可行驶空间和地面滤波算法对较小的高度差不够敏感,基于摄像头或传感器融合的解决方案被广泛用于将可行驶道路与人行道或路面区检测区分出来,激光雷达传感器包含可以进行特征提取的所有必要信息,因此,本文主要研究基于激光雷达的特征提取,对于道路和人行道检测,本文提出了一种实时(20Hz+)解决方案,此解决方案也可用于局部路径规划,人行道边缘检测是三种并行算法的结合,为了验证结果,我们使用了事实上的标准基准数据集KITTI和我们的自采数据集,并将代码在GitHub中开源:
https://github.com/jkk-research/urban_road_filter。
主要内容
本文的解决方案使用三种不同的方法查找人行道,值得一提的是,输出不仅包括道路和分隔区的点云,还包括易于处理的简化向量,此输出对于其他算法比如路径规划是非常有用的,因为它是道路的更简洁表达。作为城市道路和人行道环境的模型,可以想象一个扭曲的平坦地图和一个略微不平的人行道(见图1),从鸟瞰的角度来看,道路和人行道可以有多种形式,上述特性和简化的数据如图1所示,假设激光雷达传感器位于路面上方,城市道路和人行道环境的模型如图1所示,道路是绿色的,人行道是红色的。
图1,该图显示了问题所在,道路是绿色的,人行道是红色的,两个通道测量值显示为虚线,此外,还显示了一些人工制品,如下水道和其他不平整性
提出的的解决方案是已经公布了源代码,称为urban_road_filter,(期待做自动驾驶领域的小伙伴与我交流)该解决方案的输入是一个普通的激光雷达数据流,没有摄像头或任何额外的传感器数据,输出是道路和人行道的三维体素点云以及道路的二维多边形描述,该解决方案包括三种人行道检测方法(星形搜索方法、X-zero和Y-zero方法)、道路检测方法和基于二维多边形的道路提取。
人行道检测
人行道边缘的检测方法是星形搜索、X-zero和Z-zero方法的组合,所有方法都有相同的目的,但它们的工作原理不同,最终的结果是这些方法输出的逻辑结果,值得注意的是,上述方法以并行方式运行,假阳性路沿点可能出现在实际路缘后面,路沿点是路缘和道路之间的边界体素,假阳性路沿点在路沿后面创建,例如,由于来自各种瑕疵的体素的类似3D特征,例如,工件可以是一个公共长凳,它从人行道上突出,就像路沿从道路上突出一样,这会导致错误识别,最终多边形是在道路和第一个路沿点之间创建的,这意味着以后的路沿点不会影响最终结果,这种现象不会对方法产生负面影响,因为假阳性体素永远不会出现在路面上。
星形搜索法
该方法将点云划分为矩形段,这些形状的组合像一颗星;这就是名字的来源,从每个路段提取可能的人行道起点,其中创建的算法对基于Z坐标的高度变化不敏感,这意味着在实践中,即使当激光雷达相对于路面平面倾斜时,该算法也会表现良好,在柱坐标系中处理点云(参见图2)
图2,星形搜索方法,圆形布局的长矩形(框)表示从原始激光雷达点云中切出的部分,在放大图像的右侧,红色圆点是人行道的起点。
图3 表示扫描点云的剪切框(长方体),长方体的顶点由8个点P1,2,3表示;2,4 它的方向和位置随着增量旋转和平移而迭代变化,更准确地说,对于每个bk和k=1,nk旋转时,长方体沿D方向平移ni个连续增量。为了更容易理解所提出的算法,图3展示了图4中使用的对称平面π,图4显示了切割盒的侧视图。
图3,从扫描点云上切下的单个矩形示意图
图4,图中关于点云分离过程和框框选择点参数的侧视图
star-shaped 搜索方法算法示意图(具体步骤可查看原文https://t.zsxq.com/QjUbq3B)
X-Zero方法
X-zero和Z-zero方法可以找到避开测量的X和Z分量的人行道,X-zero和Z-zero方法都考虑了体素的通道数,因此激光雷达必须与路面平面不平行,这是上述两种算法以及整个城市道路滤波方法的已知局限性。X-zero方法去除了X方向的值,使用柱坐标代替,见图6,该方法通过环(通道)使用迭代,并在体素上定义三角形。
图6,X-zero法,圆柱坐标系,单通道(环)
图7,X-zero方法,体素三角形可视化
Z-Zero方法
Z-Zero方法的主要区别在于基于滑动窗口的方法(默认情况下为5+5体素)将角度计算为矢量方向。具体步骤不再这里展开了。
基于二维多边形的道路表示
随着人行道的检测,我们的算法还提供了一个多边形,即检测到的道路的矢量输出,这将在道路体素和路沿体素之间创建,该输出可直接用于路径规划,该算法区分了两类道路边界:人行道,包括障碍物包围的边界(图8上用红色条纹标记)
图8展示二维多边形道路的示例场景,算法中没有涉及左侧图像,它只是帮助更好地理解场景的前半部分
参数设置
有几个参数可用于微调解决方案,尽管即使是默认值也会产生足够的结果,下面介绍表1中列出的参数。一个重要参数是激光雷达主题及其帧名称,重要的是要知道,该算法同时适用于多种方法,可以使用多个参数设置检查区域的大小,感兴趣区域(ROI)可以通过x_方向参数以及最小和最大x、y和z参数进行设置。x_方向参数可能有三个不同的值:负值、正值和两者,指示感兴趣区域是在x轴上激光雷达的后面、前面还是双向相关。
实验
为了评估所提出的方法,进行了广泛的实时数据的分析和实验。在图9中,显示了三幅图像,以更直观地解释我们的结果,第一幅图像显示具有绿色体素的道路和具有红色体素的人行道,尽管假阳性人行道点云是可见的,但它们不会影响整体性能,在20 Hz和30 km/h速度下收集结果,此外,精确的RTK GPS位置与激光雷达数据相关联,以获得更易于理解的结果,图9中的第二幅图像显示了无人机图像和我们的结果的叠加,而第三幅图像仅显示了从上方看的试验场。
图9,左侧图为实验结果:道路(绿色)和人行道(红色)。中间图显示测量和无人机图像的混合,右侧,只有无人机图像可视化结果
图10,该方法的车内试验,在(左侧)显示摄像头信息,在(右侧),在突出显示道路(绿色)和人行道(红色)的位置可以看到激光雷达3D数据。体素比例基于激光雷达强度
总结
本文介绍了一种新的道路和人行道检测方法,人行道路沿检测是3D体素中引入的星形搜索、X-zero和Z-zero方法的组合方法,此外,该方法还提供了多边形输出,可直接用于局部轨迹规划,通过广泛的实时现场测试和先前测量和公共数据集的离线分析对该方法进行了评估,我们将我们的解决方案的结果与以前的结果进行了比较,这个解决方案有局限性,X-zero和Z-zero算法都要求激光雷达相对于路面处于平行位置,虽然这是一种常见的传感器设置,并且我们的车辆是以这种方式配备的,但在一些值得注特殊的情况下,建议以不同的方式进行设置。并且我们的解决方案不适用于此固态传感器配置,这种被称为固态技术的新型激光雷达正在科学界引起更高的兴趣,尽管这些传感器尚未完全商业化,但它们具有更高的使用寿命和低功耗,它们生成结构化的三维信息,但组织方式不同,作为进一步的限制了算法的发挥,故所提出的方法不支持来自固态技术的3D数据。
【自动驾驶之心】全栈技术交流群
自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多传感器融合、SLAM、光流估计、深度估计、轨迹预测、高精地图、规划控制、模型部署落地、自动驾驶仿真测试、硬件配置、AI求职交流等方向;
添加汽车人助理微信邀请入群
备注:学校/公司+方向+昵称
自动驾驶之心【知识星球】
想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D目标检测、多传感器融合、目标跟踪、光流估计、轨迹预测)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球(三天内无条件退款),日常分享论文+代码,这里汇聚行业和学术界大佬,前沿技术方向尽在掌握中,期待交流!