ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

多传感器融合避障系统实战:激光雷达点云聚类与视觉检测融合解析

多传感器融合避障系统实战:激光雷达点云聚类与视觉检测融合解析 简介在机器人、无人机与无人车的自主避障场景中单一传感器往往难以应对复杂环境——激光雷达虽能提供精确距离却对玻璃、细杆等目标感知乏力视觉虽能识别语义却缺乏可靠的深度信息。多传感器融合技术通过优势互补成为提升系统鲁棒性的核心方案。其基本原理是让激光雷达点云聚类输出的三维障碍物簇与视觉检测生成的二维语义框在空间和时间上对齐匹配从而生成带类别标签的立体障碍物信息。这一融合框架广泛应用于服务机器人导航、自动驾驶感知、工业AGV防撞等工程实践。文章深入拆解了从DBSCAN聚类参数调试、相机与雷达联合标定到决策级融合与DWA局部规划的完整技术链路并结合实车复现中的典型问题帮助开发者理解如何将算法可靠地落地到真实避障系统中。 从标题就能看出来这套系统牵扯了传感器、算法和工程落地三层东西。项目里带的三维点云、聚类输出、视觉框选和融合结果我实测复现了一遍这套“激光雷达点云聚类视觉检测”的融合思路是当前机器人、无人机和无人车做避障时最主流也最实用的技术路线之一。这篇文章我把整个项目的架构逻辑、核心算法选型、融合策略和我在复现过程中踩过的坑全部写出来尤其是DBSCAN聚类参数调试、视觉和点云的时序对齐、以及决策层融合那一块都是新手最容易卡住的地方。1. 多传感器融合避障的“为什么”单一传感器解决不了的困境1.1 光靠激光雷达为什么还是撞上了细杆和玻璃先说我第一次做纯激光雷达避障时遇到的一个真实场景。测试机器人沿着走廊前进正前方是一扇玻璃门激光雷达点云扫过去玻璃表面大部分点直接穿透或者丢失只有门框的金属边缘会留下几排点。DBSCAN聚类出来门框被分成左右两个簇中间空荡荡的规划器判断“前方无障碍物”机器人直接怼上去了。这是激光雷达的物理特性决定的——大多数905nm波长的激光束打到透明或低反射率表面要么镜面反射跑偏要么能量衰减到接收不到回波。第二个场景是细杆。电线杆、路灯杆、桌腿这类直径只有几厘米的目标16线激光雷达在10米外可能只有两三束线能扫到点云稀疏到聚类算法根本无法形成有效簇。我的实测记录里直径5cm的杆子在8米外点云数量通常只有2到4个点DBSCAN默认参数下这些点会被当作离群点滤掉等机器人靠近到3米内点多了才勉强聚出来但留给减速和绕行的反应时间已经非常紧张。还有个隐蔽的问题是动态物体的“半截身子”。激光雷达从一侧扫描行人的双腿会在不同高度产生两个点云块如果地面分割做得不干净腿部点云和地面点粘在一起聚类形态会变得很奇怪有时候一个行人被拆成三四个簇避障决策不知道按哪个算。这些都是我在实际调试中反复遇到的情况它们的共同点是激光雷达能测距但“看不懂”物体是什么也不擅长处理特殊材料表面。1.2 视觉看懂世界却看不出精确距离相机的优势恰好补上了激光雷达的短板——它能通过目标检测算法识别出“这是人”“这是车”“这是门”也能在雷达点云丢失的低反射率物体上给出语义线索。但相机有一个致命问题单目图像本身不包含深度信息。虽然现在有很多单目深度估计模型能够从图像的透视关系、物体尺度先验里“猜”出一个深度图但我在实测中发现这类估计的绝对误差往往在10%到30%之间对避障来说这个误差太大了。假设机器人以1.5m/s的速度运动深度误差0.5米就意味着决策时间差了0.3秒在紧急制动场景里可能就撞上了。双目的情况好一些但弱纹理区域白墙、纯色地板会直接让立体匹配失效算出来的视差图像全是空洞。所以这个项目选择的是融合路线激光雷达负责提供精确的几何距离和三维位置视觉负责提供语义分类和二维检测框两者在空间和时间上对齐后让每种传感器的长板去弥补对方的短板。这套思路放到无人机、自动驾驶车辆上也是一样的逻辑只是坐标系和运动模型不同。1.3 融合系统的技术框架一个清晰的三层结构整个项目我拆成三层来理解感知层激光雷达点云采集、预处理、DBSCAN聚类输出的是“若干个三维障碍物簇”及其包围盒、质心、速度同时视觉模块做目标检测输出二维检测框和类别标签。融合层把点云簇投影到图像坐标系与视觉检测框做匹配关联输出的是带语义标签的三维障碍物列表例如“前方2.3米处有一个行人置信度0.87”。决策规划层将融合后的障碍物列表映射为代价地图决策模块根据机器人的运动学模型和实时速度规划出一条能绕开所有障碍物的可通行轨迹。我在读这个项目源码时最直观的感受就是分层非常干净。感知层完全不关心障碍物是“人”还是“车”只负责输出几何对象融合层只做关联匹配不给最终结论决策层专注于避障策略。这种解耦设计让每一层都能独立调试——我单独跑点云聚类、单独看视频检测结果、单独回放融合后的障碍物话题问题定位非常快。2. DBSCAN点云聚类从原理到工程落地参数、加速与后处理2.1 点云预处理DBSCAN之前必须做的三件事原始点云数据不能直接丢给聚类算法。16线激光雷达一帧点云大约3万个点其中很大一部分是地面点、远处噪点和传感器自身产生的离群点。如果不处理地面点会被聚类成一块巨大的簇把所有目标都“吞”进去。第一步是直通滤波。根据机器人周围的有效感知范围设定长方体区域把范围之外的点直接丢掉。我的参数设定是x轴方向保留[-0.5, 40.0]米当前方视野y轴保留[-15.0, 15.0]米左右各15米z轴保留[-2.0, 3.0]米略高于传感器安装高度。这些参数不是拍脑袋定的要根据实际部署场景调整——如果是室内机器人x方向10米就够如果是车辆x方向可能要60米以上。这个处理的本质是缩减计算规模让后续算法只关注真正有意义的区域。第二步是体素滤波降采样。点云数据的分布不均匀近距离点密远距离点稀。直接聚类容易导致同一个物体在近处被切成很多块。体素滤波的思路是把三维空间划分成固定大小的立方体格子体素每个格子里保留一个代表点通常取格内所有点的质心。我用的格子边长是0.1米经过处理后一帧点云从3万点降到8000点左右聚类计算量大为下降而且密度分布更均匀DBSCAN的全局参数才有意义。第三步是地面分割与离群点滤除。地面点占了总点数的40%到60%它们是聚类时的最大干扰源。项目里用的方法是RANSAC平面拟合——随机选取三个点拟合一个平面计算其他点到这个平面的距离距离小于阈值的点记为内点迭代若干次后找到点数最多的那个平面就是地面。然后把地面点从点云里移除。这里有个经验参数距离阈值设0.1到0.2米比较合适设得太小会把低矮路肩、减速带误判成障碍物设得太大又会把地面点残留带入聚类。离群点滤除我用的是统计滤波对每个点求它到K个最近邻的平均距离如果这个距离超过全局平均值加上一个标准差倍数就认为是离群点删除。这一步能有效去除雷达的飞点噪起避免DBSCAN把单个噪点聚类成障碍物。2.2 为什么选DBSCAN三种聚类算法的对比点云聚类算法的主流选择有欧式聚类、区域生长和DBSCAN三种项目最终选了DBSCAN我用实际数据集做了对比验证。欧式聚类本质上是一种基于距离的最近邻聚类——从一个种子点出发把距离小于阈值的邻近点不断加入当前簇。它的优点是速度快、实现简单但有两个缺陷一是对点的密度变化非常敏感近距离物体点云密、远距离物体点云稀同一个距离阈值在近处会把不同物体连成一簇、在远处又会把一个物体拆成几簇二是需要预设簇数或者目标点数量动态场景下根本没法提前知道场景里有几个障碍物。区域生长则需要先估算每个点的法向量然后根据法向量夹角和曲率判断是否属于同一个平面。它对平面结构楼面、墙面效果很好但对行人的腿部、树枝这类非规则形状很不友好聚类结果碎片化严重。DBSCAN的核心思路是“密度相连”——它不预设簇数也不关心簇的形状只根据两个参数eps邻域半径和MinPts最小点数来判断哪些点属于同一簇。我在测试数据上对比过同一个场景欧式聚类把两棵相邻的树连成了一个簇DBSCAN则因为两棵树之间点云密度存在间隙而正确地将它们分开。这正是避障场景最需要的性质障碍物之间的物理间隙哪怕只有20厘米也值得在决策时保留。2.3 eps和MinPts怎么定KNN距离法和经验规则DBSCAN的参数调试是我在这个项目里花时间最多的地方这里分享一个实操中很有效的组合方法。MinPts三维点云场景里我建议MinPts取5到10。这个值的含义是“一个簇至少要包含多少个点才算有效障碍物”。取太大远端稀疏点云的簇会被过过滤取太小噪声点容易自成一簇。一个经验法是MinPts ≥ 维度数 1三维空间就是4我用8作为默认值对大部分场景都有效。eps这个参数决定了“两个点距离多近才算邻居”。常用方法是在预处理后的点云上计算每个点到其K个最近邻的距离K取MinPts把这些距离排序画成曲线曲线斜率突变最明显的“拐点”位置就对应一个合适的eps。我调试时发现在0.4到0.7米之间效果都不错最终固定为0.5米。原因分析体素滤波后的点云同一个物体上的点间距通常在0.1到0.3米之间取决于距离和雷达线束间距而不同物体之间的间隙通常大于0.5米。eps0.5米刚好能在“不粘连物体”和“不分裂目标”之间取得平衡。如果你的场景物体特别拥挤比如在货架林立的仓库里eps要适当下调到0.3米如果是在空旷的园区道路物体间距大eps可以放大到0.8米。2.4 聚类之后包围盒、质心与速度估计聚类完成后每个簇是一堆无组织的点不能直接用于避障决策。需要提取每个簇的几何特征三维包围盒对簇内所有点的x、y、z坐标分别取最小值和最大值得到一个轴对齐包围盒。包围盒的尺寸能用来判断障碍物的类型——一个高2米、宽0.5米、厚0.3米的长条形物体大概率是杆子或柱体一个高1.7米、宽0.6米的物体大概率是行人。我在代码里加了尺寸过滤体积小于0.01立方米的簇直接丢弃这能滤掉绝大多数噪声。质心位置取簇内所有点的平均坐标作为障碍物的位置参考。但要注意激光雷达只能扫到物体朝向雷达的一面所以质心会偏向近侧如果直接拿质心坐标做避障距离参照实际会比真实距离近一些。为了修正这个偏差我在做避障时用的是包围盒最近面的距离而不是质心距离。速度估计将当前帧的簇与上一帧的簇进行匹配用质心最近邻和IoU双重约束然后用位移除以帧间隔时间得到速度。实测中速度估计对行人这种移动物体非常有用能提前预判他是不是要横穿路径。3. 视觉检测与点云融合语义标签如何回灌三维空间3.1 检测模型选型与视觉侧数据流视觉侧的核心是目标检测模型。项目在代码里预留了多种检测器的接口我实测时跑的是YOLOv8nnano版本选它是因为推理速度快——在车载Jetson Orin上可以达到30到40 FPS能满足实时避障的频率要求。如果你算力紧张也可以换成YOLOv5s或者更轻量的模型但类别准确率会下降一些。检测模型输出的是每个目标的类别、置信度和二维边界框bbox。在融合前我做了两步过滤类别白名单过滤——只保留对避障有意义的目标行人、车辆、自行车、摩托车置信度阈值过滤默认设为0.5。低于阈值的检测框直接丢掉避免把误检结果带入融合模块。视觉侧的数据流是从相机获取图像帧送入检测模型输出结果加上当前帧时间戳发送到融合模块的消息队列。这里要注意相机的曝光时间——我一开始用自动曝光在从室内开到室外时画面亮度跳变导致连续好几帧检测全部丢失后来改成固定曝光并限制自动曝光的调整范围情况才稳定下来。3.2 相机与激光雷达的联合标定融合的地基多传感器融合的前提是所有传感器在同一个坐标系下说话。项目里的坐标变换链是激光雷达坐标系参考系→ 相机坐标系 → 图像像素坐标系。联合标定的输入是棋盘格在不同位置、不同角度下的点云与图像同步数据。棋盘格角点在图像上可以用OpenCV的findChessboardCorners精确提取在点云中则需要手动或半自动地选择棋盘格平面上的点。通过多帧的对应点对用PnP算法可以解算出相机坐标系相对雷达坐标系的旋转矩阵R和平移向量T。我自己标定下来重投影误差在2到3个像素以内才能保证后续融合的准确性。标定结果质量差点云簇投影到图像上就会明显偏移融合准确率会断崖式下降。标定完成后3D点到像素坐标的投影公式是λ * [u, v, 1]^T K * [R | T] * [X, Y, Z, 1]^T其中K是相机内参矩阵焦距、主点坐标[R|T]是外参矩阵。注意这里是Z轴朝向相机前方的坐标约定如果你的雷达坐标系是X轴向前需要先做一次坐标轴的对齐变换这是新人在标定阶段最常踩的坑。3.3 时间同步15Hz与30Hz如何对齐激光雷达通常工作在10到20Hz相机工作在30FPS两个传感器各自独立运行时间戳天然不同步。融合时如果直接拿最新帧做匹配物体一运动就会产生很大的位置偏听差。举个例子行人以1.5m/s的速度横穿雷达帧和相机帧相差50毫秒行人的位置误差就达到7.5厘米对于近距离的精确避障已经不可忽略。我在项目实现中用了双缓冲最近邻时间戳匹配的方案维护一个雷达帧缓冲队列和一个视觉结果队列融合时从雷达队列取出最新帧然后在视觉队列中寻找时间戳最近的那一帧并检查两者的时间差是否小于阈值我用的15毫秒。超过阈值的直接丢弃不会用旧数据做融合换来的是融合结果在时序上的一致性。如果你的硬件支持PTP硬件时间同步精度会更高但多数嵌入式平台的方案还是软件时间戳对齐效果也够用。3.4 决策级融合三维簇与二维检测框的匹配逻辑这个项目用的是决策级融合或者说目标级融合而不是把点云和图像在特征层直接拼接。决策级融合的思路是视觉先出二维检测框雷达先出三维簇然后判断“哪个三维簇对应哪个二维框”。具体匹配流程是这样的将每个点云簇的所有三维点投影到图像平面得到一个投影点集合。计算这个集合的凸包或者矩形范围与视觉检测框计算交并比IoU。如果IoU超过阈值我用的0.3则认为它们属于同一个障碍物。视觉检测框的类别标签和置信度赋给对应的点云簇生成一个带语义的三维障碍物。匹配不上的情况处理原则点云簇存在但视觉没检测到保留这个障碍物类别标记为unknown但避障优先级不变——毕竟激光雷达已经确认前方确实有东西视觉检测到但点云没有对应簇不作为有效障碍物——因为图像里可能是一张海报上的行人图案。项目里还有一个小技巧视觉追踪器我用的是ByteTrack会给每个检测目标分配一个稳定的ID连续帧中利用这个ID能防止同一个障碍物被反复分配不同ID对后端的决策稳定性帮助很大。4. 融合之后的避障决策与路径规划4.1 从障碍物到代价地图融合模块输出的障碍物列表要变成机器人能用的路径规划输入通常的桥接方式是构建代价地图。我把二维平面划分成0.1米分辨率的栅格每个栅格根据障碍物的位置和大小标记一个代价代价越高表示越不可通行。障碍物映射到栅格后还要做一步膨胀处理——根据机器人的自身半径把障碍物周边一定范围的栅格也标记为高代价。这个膨胀半径的计算公式是膨胀半径 机器人半径 安全余量我用的机器人半径是0.3米安全余量0.2米所以膨胀半径0.5米。如果不做膨胀规划器很容易规划出一条贴着障碍物边缘的路径实测中因为定位误差和惯性机器人会直接蹭到障碍物。4.2 动静分离与危险度分级避障决策不能把所有障碍物都当成静止的也不能一视同仁地急停。我在项目里把障碍物按运动状态分成三类静态障碍物速度低于0.1m/s聚类位置连续N帧N取5保持不变处理方式是提前绕行。动态障碍物速度高于0.1m/s处理方式是预测其轨迹规划时给其前方区域额外增加代价。紧急障碍物速度方向正对机器人且距离小于安全距离动态计算立即触发急停或急转。危险度分级是“轮廓面积距离相对速度”的综合结果。距离小于2米但相对速度很大的行人危险度比10米外的静态车辆高得多。我在实现中给每个障碍物计算了一个风险分数决策层按分数排序只对最高分的前几个障碍物做精细规划其余的大致绕开即可省算力也省决策时间。4.3 局部规划器选择DWA还是速度障碍法项目的规划器我试着接了两套最推荐的是动态窗口法DWA。DWA的思路是只在当前机器人实际能达到的速度范围内采样一组候选速度线速度角速度组合然后对每个候选速度模拟出一段轨迹用评价函数打分选得分最高的那组速度作为执行指令。评价函数通常包含三项朝向项轨迹末端朝向与目标方向的夹角夹角越小得分越高。障碍物距离项轨迹距离最近障碍物的距离距离越远得分越高。速度项鼓励保持较高速度前进避免机器人龟速挪动。我在实际调参时发现三项的权重要按场景动态调节在狭窄通道里障碍物距离项的权重必须提高在开阔地带速度项的权重可以加大。DWA的天然优点是每帧都会重新计算天然适应动态障碍物场景计算量也不大在嵌入式平台上可以跑到50Hz以上。速度障碍法VO更适合高速运动场景它会计算机器人如何调整速度方向来避开动态障碍物的速度锥概念优雅但对速度估计精度要求高噪声大的时候容易产生剧烈抖动。我做低速平台最后还是用DWA更稳定。4.4 一个完整的避障决策时序把整个决策链路串起来看是这样的一个时序传感器数据到达雷达帧图像帧各自打上时间戳。预处理点云滤波、地面分割、DBSCAN聚类图像检测模型推理、置信度过滤。融合时间对齐、空间投影、IoU匹配、生成带语义的障碍物列表。代价地图更新障碍物映射、膨胀处理、动静标记。决策遍历障碍物列表计算风险分数判断是否需要急停。规划运行DWA局部规划器生成速度指令。执行底盘控制模块将速度指令转换为电机控制信号。从传感器数据到执行指令整个链路我实测时端到端延迟约80毫秒其中时间占比最大的是图像检测的推理时间约30毫秒。对于运动速度1m/s的机器人来说80毫秒意味着0.08米的距离误差在安全余量内。5. 实车实测中踩过的坑与对抗性场景处理5.1 透明玻璃和强反光传感器先天的局限这应该是所有做激光雷达避障的人都会遇到的经典问题。玻璃门雷达扫不到强反光表面雷达点会出现严重的重影或拉丝现象——点云里会出现一条从车身表面延伸出去的“假尾巴”DBSCAN会把这条尾巴聚类成一个很长的异常障碍物。我的处理办法是引入“多帧一致性校验”一个障碍物如果在单帧出现但连续5帧都不稳定存在就把它标记为可疑目标降低其在代价地图里的权重同时增加其位置不确定性。同时我融合了视觉检测的修正——玻璃门在视觉检测里能识别出“门”的类别我会把雷达漏检区域用检测框的投影区域补一个虚拟障碍物避免机器人撞上透明物体。另外雷达选型也很关键。1550nm波长的激光雷达对玻璃和雨雾的穿透性好很多但成本也高。如果项目预算允许用1550nm雷达可以大幅减少这类问题。5.2 动态物体聚类分裂如何合并前面提到行人的两条腿在点云里可能被聚成两个簇。我在测试中统计过大约有15%的行人帧会出现这种情况尤其在行走过程中两腿间距超过0.5米时。聚类分裂会导致融合模块把同一个人当成两个障碍物紧急情况下可能导致决策冲突。解决思路有两个层面。第一个是算法层面由于DBSCAN的分裂发生在点云密度薄弱的区域我对聚类结果做了合并检查——如果两个簇的质心距离小于1.0米且包围盒在垂直方向有重叠就将其合并为一个簇。第二个是知识层面融合阶段如果视觉检测框把两个簇都包含了直接用检测框的类别信息把它们合并成同一个目标这是视觉语义对聚类结果修正的典型场景。类似的还有密集人群场景一群人站在一起时点云可能是粘连的DBSCAN聚类成一个巨大的簇。这时候我会根据包围盒的长宽比和点云密度判断这不是单个行人而是疑似人群局部规划器会绕一个更大的半径。5.3 地面分割在不同场景下的参数漂移RANSAC地面分割的参数对场景非常敏感。在平坦的室内地板上距离阈值0.15米效果很好但到了户外草地或碎石路面上地面本身就不是平面雷达点在地面附近的分布没有那么集中同一个阈值会导致大量地面点残留或起伏地面被误判为障碍物。我踩过的坑是在园区柏油路上调试好的参数拿到绿地附近就频繁误报因为草坪的草尖在z轴方向有较大的起伏RANSAC拟合出的平面会偏高一部分低矮植物被当成障碍物。后来我加了一个自适应策略根据机器人当前地面的海拔高度动态调整地面移除范围的z轴下限并且把RANSAC的平面内点距离阈值从0.15米调整到0.25米。效果不能说完美但至少能从“经常误报”改善到“偶尔抖动”再配合视觉语义做兜底。5.4 极端光照下视觉置信度下降的兜底策略视觉检测在逆光、夜间、强曝光环境下性能会明显下降。我的实测数据是逆光场景下YOLOv8n的行人检测置信度会从0.8以上降到0.4以下很多目标直接被低于阈值而过滤掉了。对策是把决策层做成“视觉置信度自适应”模式当视觉模块检测到的目标数量或平均置信度低于阈值时系统自动提高对雷达点云聚类的信任权重同时下调视觉过滤的置信度阈值从0.5到0.3让更多低置信度检测结果参与融合匹配。虽然误检率会上升但被融合模块确认有对应点云簇的检测框基本上都是真实障碍物——这利用了“多传感器互相验证”的性质。这个策略在夜间实测中帮助很大让系统在没有路灯的环境下仍然保持了基本避障能力。6. 项目包结构与复现指南从解压到跑通全流程6.1 硬件与软件环境一览项目包那个zip压缩包里的内容组织得很规范解压后的核心目录包括sensor_drivers/激光雷达和相机的驱动节点支持常见型号的ROS驱动。perception/点云预处理、DBSCAN聚类、视觉检测三个独立模块。fusion/时间同步、坐标变换、目标级匹配融合。planning/代价地图、决策逻辑、DWA局部规划器。config/所有参数配置文件聚类参数、标定参数、避障参数都在这里。我建议的硬件配置是一个16线激光雷达速腾RS-LiDAR-16或同类一个RGB工业相机一个Jetson Orin或同等算力的计算平台一个支持ROS的移动机器人底盘。整个过程跑通的系统环境是Ubuntu 20.04 ROS Noetic PCL 1.10 OpenCV 4.5 PyTorch视觉推理部分。6.2 从零跑通的三个里程碑第一阶段纯感知跑通。只启动激光雷达驱动和点云处理模块用RViz可视化点云确认地面分割、DBSCAN聚类的输出正常。这一步的目标是看到彩色簇包围盒正确地框住每个障碍物。我建议先用录制的rosbag数据测试不用真机效率高很多。第二阶段融合跑通。启动视觉检测模块用联合标定工具完成相机和雷达的外参标定然后启动融合节点。判断融合是否正常的方法是在RViz里打开图像把点云簇的投影轮廓叠加到图像上看轮廓是否精确贴合对应的视觉检测框。投影偏差超过5个像素就需要重新标定。第三阶段避障决策跑通。启动规划模块让机器人在布置好障碍物的场地里自主穿行。第一轮可以先设定一个非常保守的安全距离比如1.5米确认整个链路稳定后再逐步收紧到实际需要的数值。6.3 几个能省大量调试时间的参数建议先录制再调参把现场数据录成rosbag离线调整参数回放效率比边跑真机边调高很多。我调试DBSCAN参数时基本都是离线完成的。参数文件集中管理项目把参数全部放在config目录里我强烈建议你保持这个习惯不要在代码里硬编码。每次调参都记录当时的场景现象两周后你会感谢自己这么做。安全机制永远不能省在真机测试前先设置好急停按钮和速度上限。我测试时把线速度上限限制在0.8m/s角速度限制在0.5rad/s即使算法出问题机器人也不会造成安全事故。日志要带时间戳和帧号融合、决策模块都打印带时间戳和帧号的日志出问题时能精确定位是哪一帧、哪一步出了状况。我发现很多人调试时只看终端输出没有系统性日志问题复现一次就再也找不回来了。从简单场景开始先在只有两三个静态箱子的房间里测试确保基础功能正常再加移动行人测试动态避障最后才做玻璃、反光等极端场景。一步一步往上叠难度能避免多个变量同时出错时的定位困难。这个项目包我认为是很标准的多传感器融合避障工程框架从DBSCAN的点云聚类、视觉检测到融合匹配和避障规划核心链路都覆盖到了。我复现过程中最大的体会是融合避障系统的难点往往不在某个单独算法而在数据管理和参数调试做好时间同步、处理好每路传感器的异常整个系统的可靠性才能真正上去。希望对正准备做机器人或无人机避障的朋友有参考价值。本文还有配套的精品资源点击获取
返回列表