首页 / 资讯中心 / 文章详情

可通行区域检测全解析:多传感器融合与工程落地实践

可通行区域检测全解析:多传感器融合与工程落地实践 ★ FEATURED ARTICLE
1. 可通行区域检测到底在解决什么问题1.1 从“车该往哪开”说起如果你接触过移动机器人、低速无人车或者辅助驾驶相关的项目大概率绕不开一个核心问题当前这一帧画面里哪些地方是能走的哪些地方是绝对不能碰的。这个问题听起来像是一句废话但真正落到工程实现上它几乎是整个感知-决策链路里最要命的一环。可通行区域检测英文里常叫 traversable area detection 或者 drivable space detection它的任务就是给机器人或车辆划出一条“安全走廊”。这条走廊的边界可能是路沿、护栏、绿化带、行人、锥桶也可能是一块看起来平坦但实际是台阶的区域。检测结果直接喂给下游的路径规划模块规划器再根据这条走廊生成具体的行驶轨迹。所以可通行区域检测的精度和鲁棒性直接决定了整个系统是“能跑”还是“能安全地跑”。我见过不少刚入行的朋友一上来就想用端到端的深度学习模型直接把图像映射成控制指令结果在简单场景里跑得挺欢一换场地就翻车。原因很简单没有显式地建模可通行区域模型学到的只是场景的统计相关性而不是真正的几何和语义约束。所以无论你后面用多复杂的规划算法前面这一步“把可走的地方圈出来”都是绕不过去的。1.2 适合谁来参考这套方法这篇文章主要面向几类人一是正在做移动机器人或低速无人车感知模块的工程师二是做辅助驾驶功能开发、需要理解可通行区域检测原理的技术人员三是高校里做相关课题研究、想快速建立系统认知的学生。如果你已经有一些计算机视觉基础比如知道什么是语义分割、什么是点云配准那读起来会更顺畅。但即使你之前没接触过这个方向我也会尽量用生活化的类比把核心概念讲清楚。需要提前说明的是这篇文章偏重理论部分的拆解不会涉及具体的代码实现和某个特定框架的调用。但我会在关键环节补充工程实践中常见的参数选择、方案取舍和避坑经验这些内容在常规论文里通常不会写但对实际落地至关重要。1.3 核心难点在哪里可通行区域检测的难点可以归纳为三个层面。第一是语义层面的模糊性一块区域到底算不算可通行很多时候取决于上下文。比如一片草地对人来说可以走对轮式机器人来说就是不可通行的再比如一个浅水坑对越野车来说可以过对普通家用车来说就要避开。第二是几何层面的复杂性可通行区域的边界往往不是一条清晰的线而是渐变的、被遮挡的、或者由多个物体共同构成的。第三是实时性和鲁棒性的平衡车载或机载平台算力有限模型不能太复杂但场景又千变万化光照、天气、动态障碍物都会影响检测结果。这三个难点决定了可通行区域检测不可能靠单一传感器或单一算法解决必须走多传感器融合、多方法互补的路线。接下来的章节我会从整体设计思路开始逐步拆解每个环节的理论基础和工程考量。2. 整体方案设计与思路拆解2.1 为什么不能只靠一种传感器先说说传感器选型这件事。可通行区域检测常用的传感器无非三类相机、激光雷达、毫米波雷达。相机便宜、信息丰富能提供纹理和颜色但受光照影响大而且单目相机很难直接恢复尺度信息。激光雷达能直接给出三维点云测距精度高不受光照影响但价格贵、在雨雾天气下性能会下降而且点云稀疏时远处的地面信息几乎为零。毫米波雷达穿透力强、测速准但角分辨率低对静态环境的建模能力很弱。我试过只用单目相机做可通行区域分割在白天结构化道路上效果还行但一到傍晚逆光或者夜间分割结果就碎得像拼图。后来加了激光雷达做后融合把点云投影到图像平面用点云的深度信息去修正图像的语义分割结果稳定性立刻上了一个台阶。所以多传感器融合不是锦上添花而是保证鲁棒性的必要条件。2.2 基于几何的方法和基于学习的方法怎么选从算法层面看可通行区域检测大致分为两大流派基于几何的方法和基于学习的方法。基于几何的方法核心思想是利用地面在三维空间中的几何特性来分割可通行区域。最典型的是地面平面拟合假设地面是一个平面或者缓慢变化的曲面用RANSAC或者最小二乘法拟合出地面方程然后根据点到平面的距离来判断是否属于地面。这种方法计算量小、可解释性强在结构化道路和室内平坦地面上非常有效。但它有个致命弱点它只能处理“地面”不能处理“语义上的可通行”。比如一块地毯铺在平地上几何上它和地面没有区别但如果机器人是轮式的地毯可能会打滑这时候几何方法就无能为力了。基于学习的方法则是用深度学习模型直接从图像或点云中学习可通行区域的语义特征。早期的工作多用语义分割网络比如把图像中的每个像素分类为道路、人行道、草地、障碍物等然后把道路和人行道合并成可通行区域。后来出现了实例分割和全景分割能更好地区分不同物体和背景。基于学习的方法泛化能力更强能处理复杂的语义场景但需要大量标注数据而且模型的可解释性差出了错很难排查。实际工程中两者往往是互补的。一个常见的做法是用几何方法快速提取地面点云作为可通行区域的“粗筛”然后用学习模型对非地面区域做语义分类判断哪些是障碍物、哪些是可以通过的缓坡或低矮草丛最后把两者的结果融合得到最终的可通行区域。这种“几何打底、学习精修”的思路在算力有限的嵌入式平台上尤其常见。2.3 前融合、后融合还是深度融合多传感器融合的时机也很关键。前融合是在数据层面就把不同传感器的信息合并比如把激光点云和图像像素对齐后一起送入网络。后融合是每个传感器各自跑自己的检测算法最后在决策层面投票或加权。深度融合则是在网络中间层进行特征交互比如用点云特征去增强图像特征。前融合的优点是信息保留最完整但对标定精度要求极高而且不同传感器的采样频率和视场角往往不一致对齐起来很麻烦。后融合实现简单、容错性好但每个传感器单独检测时已经损失了一部分信息融合后提升有限。深度融合理论上最优但网络结构复杂训练难度大对数据量的要求也高。我个人的经验是如果算力允许、标定条件好优先考虑深度融合如果算力紧张或者传感器标定不稳定后融合更稳妥。在低速机器人场景下后融合加上一个简单的时序滤波往往就能满足需求。2.4 时序信息到底有多重要单帧检测有个天然缺陷遮挡和噪声会导致结果在帧与帧之间跳变。比如一个行人从车前走过单帧检测可能会把行人背后的区域误判为不可通行等行人走开后才能恢复。如果直接把这种跳变的结果送给规划器车辆就会频繁地急刹或转向体验极差。所以时序融合是可通行区域检测里不可或缺的一环。常见的做法有两种一是用卡尔曼滤波或粒子滤波对可通行区域的边界进行跟踪和平滑二是用时序网络比如LSTM或3D卷积直接学习多帧之间的关联。前者计算量小、可解释性强适合嵌入式平台后者效果更好但需要更多的训练数据和算力。我在实际项目里用过一种轻量级的时序融合策略维护一个可通行区域的概率栅格地图每帧检测结果以一定的置信度更新到栅格中然后用衰减因子让旧信息逐渐失效。这样既能平滑跳变又能适应动态环境。这个策略的细节我会在后面的实操环节展开。3. 核心细节解析与实操要点3.1 地面平面拟合的参数怎么定地面平面拟合是基于几何的方法里最基础的一步。假设我们有一帧激光点云想从中提取地面点。最常用的方法是RANSAC平面拟合随机选取三个点计算平面方程然后统计有多少点到这个平面的距离小于阈值重复多次取内点最多的平面作为地面。这里有几个关键参数需要确定。距离阈值通常取0.1到0.3米具体取决于地面的平整度和点云噪声水平。如果地面比较平整、点云噪声小可以取0.1米如果地面有起伏或者点云噪声大就要放宽到0.3米甚至更大。迭代次数一般取100到500次次数越多找到正确平面的概率越高但计算量也越大。内点比例阈值用来判断拟合是否成功通常要求内点数占总点数的30%以上。但RANSAC有个问题它假设地面是一个平面而实际道路往往有坡度或起伏。这时候可以用分段平面拟合把点云按距离或角度分成若干段每段单独拟合一个平面然后用平滑约束把相邻平面的参数连起来。另一种做法是用高斯过程回归或样条曲线来拟合地面曲面能更好地适应连续起伏。注意地面平面拟合对点云的密度很敏感。如果点云太稀疏RANSAC可能找不到足够的内点如果点云太密集计算量会急剧上升。实际使用前通常要先做体素降采样把点云分辨率降到5到10厘米左右。3.2 语义分割网络的选型考量如果走基于学习的方法语义分割网络是核心。选型时要考虑三个维度精度、速度、模型大小。精度方面编码器-解码器结构是目前的主流比如U-Net、DeepLab系列、SegFormer等。编码器负责提取多尺度特征解码器负责恢复空间分辨率。对于可通行区域检测空洞卷积和金字塔池化是常用的技术能在不降低分辨率的情况下扩大感受野更好地捕捉大范围的道路结构。速度方面轻量级网络是嵌入式平台的首选。比如MobileNet系列、ShuffleNet系列作为编码器配合一个简单的解码器可以在保持可接受精度的同时把推理时间压到几十毫秒。如果算力更紧张还可以用知识蒸馏先用一个大模型在训练集上跑出软标签然后用小模型去拟合这些软标签这样小模型能学到比硬标签更多的信息。模型大小方面量化和剪枝是常用的压缩手段。量化把浮点权重转成8位整数模型大小能缩小到原来的四分之一推理速度也能提升。剪枝则是去掉网络中不重要的连接或通道进一步压缩模型。但要注意量化后的模型精度可能会有轻微下降需要在验证集上仔细评估。我个人的经验是在低速机器人场景下输入分辨率512x512、编码器用MobileNetV3、解码器用轻量级FPN模型大小控制在5MB以内在嵌入式GPU上能跑到20帧以上精度也够用。如果场景更复杂比如城市道路就需要更大的模型和更高的分辨率。3.3 点云和图像怎么对齐多传感器融合的前提是标定。相机和激光雷达的联合标定目标是求出两者之间的外参矩阵也就是旋转和平移关系。常用的方法是用一个标定板同时被相机和激光雷达看到然后通过优化算法最小化重投影误差。标定完成后把激光点云投影到图像平面每个点云点就能得到一个对应的像素坐标和深度值。这个深度值可以用来做很多事情比如把图像的语义分割结果反投影到三维空间得到带语义的点云或者用点云的深度信息去修正图像分割的边缘让可通行区域的边界更贴合实际几何。但这里有个坑相机和激光雷达的采样时间往往不同步。如果车辆在运动同一时刻的点云和图像可能对应不同的位置。解决方法是做时间戳对齐用插值的方式把两个传感器的数据对齐到同一时刻。如果传感器频率差异大还需要做运动补偿根据车辆的运动模型把点云或图像变换到同一坐标系下。提示标定参数不是一劳永逸的。车辆震动、温度变化、轻微碰撞都可能导致外参漂移。实际系统中最好每隔一段时间做一次在线标定校验或者用一些自标定算法实时估计外参。3.4 可通行区域的表示方式检测结果怎么表示直接影响下游规划模块的使用方式。常见的表示方式有三种二值掩码、概率栅格、多边形边界。二值掩码是最简单的每个像素或每个点云点标记为可通行或不可通行。优点是直观、易于可视化缺点是丢失了不确定性信息而且边界往往不平滑规划器直接使用可能会产生抖动。概率栅格是把空间划分成网格每个网格存储一个0到1之间的概率值表示该网格可通行的置信度。优点是保留了不确定性方便做时序融合和贝叶斯更新缺点是分辨率受网格大小限制网格太粗会丢失细节网格太细会消耗大量内存。多边形边界是用一系列顶点围成的多边形来表示可通行区域。优点是紧凑、便于规划器直接生成轨迹缺点是从掩码或栅格提取多边形的过程可能引入误差而且多边形难以表示非凸或带孔洞的区域。实际工程中概率栅格是最常用的中间表示。它既能保留不确定性又方便做时序融合而且可以随时转换成二值掩码或多边形边界供下游使用。栅格分辨率通常取5到20厘米具体取决于车辆尺寸和规划精度要求。4. 实操过程与核心环节实现4.1 从原始数据到可通行区域的全流程假设我们有一个搭载相机和激光雷达的移动平台现在要实现对前方可通行区域的检测。整个流程可以拆成六个步骤数据采集与同步、标定与坐标变换、地面点云提取、图像语义分割、多传感器融合、时序滤波与输出。第一步数据采集与同步。相机和激光雷达各自以固定频率采集数据每帧数据带上时间戳。同步模块负责把时间戳最接近的帧配对如果时间差超过阈值比如20毫秒就丢弃或做插值补偿。第二步标定与坐标变换。用事先标定好的外参矩阵把激光点云从雷达坐标系变换到相机坐标系再投影到图像平面。同时把图像像素的深度信息从图像坐标系反投影到三维空间。第三步地面点云提取。对激光点云做体素降采样然后用RANSAC拟合地面平面提取内点作为地面点。对于非地面点计算其到地面的高度高度小于某个阈值比如0.2米的点也归入可通行候选区域。第四步图像语义分割。把图像送入语义分割网络得到每个像素的类别概率。把道路、人行道、停车场等类别合并为可通行类别其他类别归为不可通行。第五步多传感器融合。把地面点云投影到图像平面与语义分割结果做融合。融合策略可以是如果某个像素被语义分割标记为可通行且对应的点云点也被标记为地面点则该像素的可通行置信度设为高如果两者冲突则根据传感器置信度加权。第六步时序滤波与输出。把融合后的可通行区域更新到概率栅格中用衰减因子降低旧帧的权重然后用形态学操作平滑边界最后输出给规划模块。4.2 概率栅格的更新公式与参数概率栅格的更新可以用贝叶斯滤波来实现。假设每个网格的可通行概率为 ( p )观测到的新证据为 ( z )则更新公式为[ \frac{p_{t}}{1-p_{t}} \frac{p_{t-1}}{1-p_{t-1}} \cdot \frac{p(z|可通行)}{p(z|不可通行)} ]其中 ( p(z|可通行) ) 和 ( p(z|不可通行) ) 是观测模型的似然。实际使用时通常用对数几率log-odds来简化计算[ l_t l_{t-1} l(z) ]其中 ( l \log(p/(1-p)) )( l(z) ) 是观测的对数几率增量。如果观测到可通行( l(z) ) 取正值如果观测到不可通行( l(z) ) 取负值。参数方面衰减因子用来控制旧信息的遗忘速度。如果衰减因子设为0.9意味着每帧更新时旧的对数几率乘以0.9这样大约10帧后旧信息的影响就降到原来的三分之一。衰减因子越大系统越稳定但适应动态环境越慢衰减因子越小系统越灵敏但容易受噪声干扰。我一般取0.85到0.95之间具体看场景的动态程度。观测模型的似然需要根据传感器精度来定。对于激光雷达地面点可通行的似然可以设得很高比如0.9对于图像语义分割如果模型在验证集上的准确率是85%那似然可以设为0.85。如果两个传感器冲突就按似然加权。4.3 边界平滑与形态学处理概率栅格更新完后边界往往是不规则的直接送给规划器会导致轨迹抖动。所以需要做边界平滑。常用的方法有两种形态学操作和主动轮廓模型。形态学操作包括开运算和闭运算。开运算是先腐蚀后膨胀能去掉小的突出物和噪声闭运算是先膨胀后腐蚀能填补小的孔洞和裂缝。结构元素的大小通常取3x3或5x5具体取决于栅格分辨率和期望的平滑程度。主动轮廓模型也叫Snake模型则是把边界看作一条能量曲线通过最小化内部能量平滑度和外部能量与观测的匹配度来演化边界。这种方法能得到更自然的平滑边界但计算量更大而且需要好的初始化。我在实际项目里通常先用形态学操作做粗平滑然后用一个简单的滑动窗口平均做细平滑。滑动窗口的大小取5到10个栅格对边界点的坐标做加权平均。这样既快又能得到可接受的平滑效果。注意平滑操作不能过度否则会把真实的窄通道或小障碍物抹掉。比如一个宽度只有0.5米的通道如果平滑窗口太大通道可能被完全封闭。所以平滑参数要根据车辆的最小转弯半径和通道宽度来定。4.4 动态障碍物的处理策略可通行区域检测不仅要处理静态环境还要处理动态障碍物比如行人、车辆、动物。动态障碍物的处理策略有两种检测后剔除和预测后避让。检测后剔除是先把动态障碍物检测出来然后从可通行区域中减去这些障碍物的占据区域。动态障碍物的检测可以用帧间差分、光流或者深度学习检测网络。剔除时要注意留出安全裕度通常是在障碍物边界外扩0.3到0.5米。预测后避让则是不仅要知道障碍物当前的位置还要预测它未来的运动轨迹然后在可通行区域中预留出未来一段时间内可能被占据的空间。预测可以用卡尔曼滤波或社会力模型。这种方法更安全但计算量更大而且预测误差可能导致可通行区域过度收缩。我个人的做法是对于低速场景检测后剔除加上一个简单的匀速预测就够了对于高速场景必须用更复杂的预测模型并且要留足够的安全裕度。另外动态障碍物的处理要和时序滤波结合避免因为障碍物突然出现或消失导致可通行区域剧烈跳变。5. 常见问题与排查技巧实录5.1 地面拟合失败怎么办地面拟合失败是可通行区域检测里最常见的问题之一。表现是拟合出的地面平面明显不对要么把墙壁当成了地面要么把地面点漏掉了。原因通常有三个点云噪声太大、地面起伏太大、场景中有大面积的非地面平面比如一堵墙或者一辆大卡车的侧面。排查时先看点云的距离分布。如果远处点云很稀疏RANSAC可能找不到足够的内点。这时候可以限制拟合范围只用近处比如10米以内的点云做拟合。再看地面的坡度。如果坡度超过RANSAC的容忍范围可以改用分段拟合或者曲面拟合。最后看场景中是否有大面积平面干扰。如果有可以在RANSAC之前先用法向量滤波去掉垂直平面只保留水平或接近水平的点。我踩过的一个坑是在室内走廊里墙壁和地面都是平面RANSAC有时候会把墙壁误判为地面。后来加了一个约束地面平面的法向量必须与重力方向夹角小于30度。这个约束用IMU提供的姿态信息就能实现加上之后误判率大幅下降。5.2 语义分割边缘不准怎么调语义分割网络在可通行区域边界处的表现往往不尽如人意表现为边界模糊、锯齿状或者偏移。原因可能是下采样导致的分辨率损失、类别不平衡或者标注噪声。分辨率损失可以通过跳跃连接或空洞卷积来缓解。跳跃连接把编码器的高分辨率特征直接传到解码器帮助恢复细节。空洞卷积则是在不降低分辨率的情况下扩大感受野让网络能看到更大的上下文。类别不平衡在可通行区域检测里很常见道路像素往往占图像的大部分而障碍物像素很少。这会导致网络偏向于预测道路忽略小障碍物。解决方法有加权损失函数、Focal Loss或者在线难例挖掘。加权损失函数给少数类更高的权重Focal Loss则让网络更关注难分类的样本。标注噪声则需要通过数据清洗和标注规范来解决。如果标注边界不一致网络学到的边界也会模糊。可以制定详细的标注规范比如规定边界必须标注在物体与地面的接触线上然后对标注员进行培训和质量检查。5.3 时序滤波导致响应延迟怎么破时序滤波能平滑跳变但也会引入延迟。如果衰减因子太大系统对动态障碍物的响应会变慢可能导致危险。解决方法是自适应衰减在检测到动态障碍物或者可通行区域发生剧烈变化时临时降低衰减因子让新信息更快地占据主导。具体实现时可以计算当前帧与上一帧可通行区域的交并比IoU。如果IoU突然下降很多说明场景发生了大变化这时候把衰减因子从0.9降到0.5甚至更低。等场景稳定后再逐渐恢复衰减因子。另一个技巧是分层滤波对可通行区域的不同部分用不同的衰减因子。比如对远处的区域用较大的衰减因子因为远处变化慢对近处的区域用较小的衰减因子因为近处变化快。这样能在平滑和响应之间取得更好的平衡。5.4 常见问题速查表问题现象可能原因排查方法解决策略地面拟合把墙壁当地面场景中有大面积垂直平面检查拟合平面的法向量方向加法向量约束过滤垂直平面语义分割边界锯齿严重下采样导致分辨率损失可视化编码器特征图分辨率加跳跃连接或空洞卷积小障碍物被漏检类别不平衡统计各类别像素占比加权损失或Focal Loss可通行区域帧间跳变单帧噪声或遮挡计算帧间IoU时序滤波自适应衰减因子动态障碍物响应慢衰减因子太大检查动态障碍物出现后的更新速度自适应降低衰减因子远处可通行区域缺失点云稀疏或图像分辨率不足检查远处点云密度和图像像素数限制检测距离或用预测补全5.5 几个容易被忽略的细节第一个细节是相机曝光。自动曝光在进出隧道或树荫时会导致图像亮度剧烈变化语义分割网络可能因此失效。解决方法是锁定曝光或者用HDR相机或者在网络训练时加入大量不同曝光的样本做数据增强。第二个细节是激光雷达的反射率。低反射率物体比如黑色车辆、湿滑路面在点云中可能丢失或噪声很大。可以结合反射率阈值和距离阈值来过滤不可靠的点。第三个细节是标定参数的在线校验。前面提到过外参会漂移。一个简单的校验方法是在场景中找一些已知的对应点比如地面上的车道线检查点云投影到图像后是否与车道线对齐。如果偏差超过阈值就触发重新标定。第四个细节是可通行区域的最小宽度。规划器通常要求可通行区域的宽度大于车辆宽度加上安全裕度。如果检测结果中出现了宽度小于阈值的“伪通道”应该在输出前把它封闭掉避免规划器生成不可行的轨迹。6. 从理论到落地的几个关键决策6.1 检测距离和分辨率怎么权衡检测距离越远规划器就能越早做出决策车辆行驶越平滑。但远处传感器的信噪比低检测精度差。所以需要根据车辆速度和制动距离来确定最小检测距离。假设车辆最高速度是5米每秒最大减速度是2米每二次方秒那么制动距离是 ( 5^2/(2\times2)6.25 ) 米。加上安全裕度检测距离至少要10米。如果速度更高检测距离要相应增加。分辨率方面图像分辨率越高远处物体的像素越多检测越准但计算量也越大。激光雷达的角分辨率决定了远处点云的密度。实际选型时可以先确定最远检测距离处需要多少个像素或点云点然后反推传感器参数。比如要求30米处一个0.5米的障碍物至少占10个像素那图像的水平视场角和分辨率就要满足这个要求。6.2 算力分配的策略嵌入式平台的算力是有限的可通行区域检测只是整个感知链路中的一环还要留算力给定位、规划、控制等模块。所以算力分配要有优先级。我的经验是近处5米以内的可通行区域检测用最高精度因为近处直接关系到安全远处5米以外可以用低精度甚至降频处理因为远处还有时间做后续修正。具体实现时可以把图像分成近处和远处两个区域近处用高分辨率网络远处用低分辨率网络或者远处每隔几帧才检测一次。另一个策略是级联检测先用一个极轻量的模型做粗筛把明显不可通行的区域排除掉然后只对候选区域用复杂模型做精修。这样能大幅减少计算量同时保持精度。6.3 数据闭环和持续迭代可通行区域检测模型不是训练一次就完事了。实际场景千变万化模型上线后总会遇到新的情况。所以需要建立数据闭环把线上检测失败或置信度低的样本自动回传人工标注后加入训练集定期重新训练模型。数据闭环的关键是触发机制。不能把所有数据都回传那样数据量太大。触发条件可以包括检测置信度低于阈值、可通行区域面积突变、规划器频繁急刹或转向、人工接管等。回传的数据要包含原始传感器数据、检测结果和车辆状态方便后续分析。我参与过的一个项目里数据闭环让模型在三个月内把误检率降低了40%。最开始的模型在雨天几乎不可用回传了几百帧雨天样本重新训练后雨天性能大幅提升。所以数据闭环的投入是值得的它决定了系统能不能持续进化。6.4 安全冗余怎么设计可通行区域检测再准也不能保证100%不出错。所以需要安全冗余。冗余可以来自多个层面传感器冗余比如同时用相机和激光雷达、算法冗余比如同时跑几何方法和学习方法、逻辑冗余比如在可通行区域外再设一层“绝对禁止区域”。逻辑冗余里一个实用的做法是保守边界在检测到的可通行区域边界上再向内收缩一个安全裕度比如0.2米作为规划器的硬约束。这样即使检测有轻微误差车辆也不会碰到障碍物。另一个做法是紧急停止区域在车辆正前方一个很小的范围内比如1米如果检测到任何不可通行区域直接触发紧急停止不经过规划器。这些冗余设计会增加系统的保守性可能让车辆在某些边缘场景下过于谨慎但安全永远是第一位的。我宁愿车辆在99%的场景下多停一次也不愿在1%的场景下出一次事故。6.5 实测中的几个反直觉发现第一个反直觉发现是更多的传感器不一定更好。我曾经在一个项目里同时用了相机、激光雷达和毫米波雷达结果融合逻辑变得极其复杂调试成本很高而且毫米波雷达的低角分辨率反而引入了很多噪声。后来去掉毫米波雷达只用相机和激光雷达性能没有明显下降系统却简单了很多。所以传感器选型要克制够用就好。第二个反直觉发现是简单的几何方法在特定场景下比深度学习更稳。在室内平坦走廊里RANSAC地面拟合的准确率和鲁棒性都超过了一个精心训练的语义分割网络。原因是室内场景的几何结构非常规则几何方法的先验假设完全成立而深度学习网络反而可能因为训练数据不足而犯错。所以不要盲目追求深度学习要根据场景特点选择最合适的方法。第三个反直觉发现是时序滤波的衰减因子不是越小越好。我一开始为了追求响应速度把衰减因子设得很小结果可通行区域在帧间频繁跳变规划器反而更不稳定。后来把衰减因子调大虽然响应慢了一点但整体行驶平顺性大幅提升。所以平滑和响应之间的平衡需要根据规划器的特性来调不能只看检测模块本身。7. 写在最后的一些个人体会可通行区域检测这个方向理论框架其实并不复杂核心就是“几何打底、语义精修、时序平滑、多传感器融合”这十六个字。但真正落地的时候每一个环节都有大量的细节需要打磨。我见过太多项目算法在论文数据集上跑得漂漂亮亮一到实际场景就各种问题。原因往往不是算法本身不行而是对场景的理解不够、对传感器的特性掌握不深、对下游模块的需求不清楚。如果你正在做这个方向我的建议是先不要急着上深度学习先把几何方法跑通把标定做准把时序滤波调好。这些基础工作做好了即使后面加深度学习系统也会稳很多。另外多和规划、控制模块的同事沟通了解他们真正需要什么样的可通行区域表示比你自己闷头优化检测精度更有价值。最后分享一个小技巧在调试可通行区域检测时把每一帧的中间结果都可视化出来包括原始点云、地面拟合结果、语义分割结果、融合后的概率栅格、最终的边界。这样一旦出问题你能快速定位是哪个环节出了错。这个习惯帮我省了无数调试时间也让我对每个模块的行为有了更直观的理解。
阅读完成 · 觉得有帮助?
咨询建站