2026/9/14 4:14:33

Flash固态激光雷达:从TOF测距到三维点云全解析

Flash固态激光雷达:从TOF测距到三维点云全解析 你拿起一个固态激光雷达模块插上电数据流里三维点云瞬间涌出来第一反应通常是这玩意儿没有旋转电机没有振镜摆动凭什么能“看”到整个视野我当年在实验室里第一次跑通Flash LiDAR的点云输出时就是这个感受。后来把发射端和接收端的时序关系理清楚才意识到它和传统机械式激光雷达在思路上完全是两个物种——它不是靠“扫”出来的一帧画面而是靠“一束光照亮全场、全场同时测距”的Flash快照式方案。这篇文章会把固态激光雷达Flash测距和测绘的原理从头到尾拆一遍包括光子飞行时间怎么算成距离、SPAD阵列为什么非要单光子探测器、一张深度图怎么变成三维点云以及我在实测里遇到的多径干扰、阳光噪声、反射率掉链子这些问题。适合做机器人感知、自动驾驶传感器选型、激光雷达算法或硬件开发的朋友当作一篇把原理和工程黏在一起的参考。1. 先从“为什么是Flash”说起扫描与闪光的路线之争1.1 机械旋转、半固态MEMS与Flash的本质差异激光雷达刚走向民用市场那几年大家脑子里默认的形态就是机械旋转雷达一组激光收发模组放在转台上电机带着它哗哗转每转一圈激光束扫过水平方向一圈配合垂直方向的摆镜或者多线排列形成一帧点云。Velodyne那类产品就是这么干的效果直白点云漂亮但缺点也写在脸上有电机、有轴承、有旋转滑动接触体积大、成本高、可靠性差过不了车规的寿命和振动测试。后来出现了半固态方案典型代表是MEMS微振镜激光雷达。它保留了激光束的扫描动作但把机械结构微缩到一片可以高频摆动的硅微镜上。一束光打在镜面上镜面快速摆动反射光扫过前方视场再用一个较小的探测器接收。它的优点是线数可以做得高、视场角灵活缺点是振镜本身还是运动部件虽然是MEMS级别但依然存在疲劳和温度漂移而且扫描需要时间运动目标在扫描帧内会产生形变。Flash激光雷达的思路则是彻底不扫描。它的发射端是一个面阵光源通常是VCSEL激光器阵列加上扩散光学元件把激光脉冲一次性照亮整个视场就好比按下相机的闪光灯。接收端是一个高密度的单光子探测器阵列每个像素独立接收对应方向上的回波光子整片阵列一帧曝光同时测出所有方向的距离。区别用一句话概括前两者是“用一支笔把纸一格一格涂满”Flash是“用一枚印章直接按下去整张纸一次印完”。1.2 Flash近程补盲与远程前向的两种玩法正因为Flash不做扫描它的帧率天然可以做得很高一帧就是一整个视场不存在扫描线之间的时间错位。这在近程感知场景里是巨大优势。很多量产车上用的补盲激光雷达、侧向激光雷达就是Flash方案它们只需要看十几米到几十米的近场环境视场角做得很大一个模块贴上去就能覆盖一侧的盲区。但Flash也有一个绕不开的物理约束光源能量要按照整个视场面积摊开。同样一束激光扫描方案集中在一个点上Flash方案却要摊到几十度乘几十度的面积上单位面积上的光强密度大幅下降远处目标的回波自然就弱。所以Flash做远程前向雷达比较吃力过去一直被认为是“只能在近处干活的辅助角色”。不过这几年工艺进步很快VCSEL功率密度上来了SPAD灵敏度也在提升远程Flash慢慢也能做到百米级探测有些厂商甚至把远程Flash当作前向主雷达在推。总的来看Flash的应用场景已经从中低端近程补盲逐步向主雷达渗透。2. 测距“光子飞了多久”这句话背后藏着一整套时间测量体系2.1 所有TOF测距公式的核心只是t/2这个因子Flash LiDAR对距离的测量方式基本都跳不出飞行时间法也就是TOF。原理一句话就能讲完激光器发出一个光脉冲光打在目标上反射回来被探测器收到记下从发射到接收的时间差 t距离 d 就是d (c × t) / 2除以2是因为光走了一个来回单程距离才是我们想要的。c是光速约等于3×10^8 米/秒。这个公式看起来简单到不值一提但工程难点全在 t 的测量上。算一笔账就很直观。要测一个100米外的目标光往返的时间大约是666.7纳秒。要测一个0.1米的近距离目标往返时间只有0.67纳秒。也就是说Flash激光雷达要在纳秒甚至亚纳秒尺度上精确分辨时间才能把距离测准。时间测量误差1纳秒距离误差就是15厘米误差100皮秒距离误差1.5厘米。测距精度的本质就是时间间隔测量电路的精度。2.2 从单脉冲到多脉冲积累SPAD的盖革模式与死时间接收端用的探测器在Flash方案里几乎清一色是SPAD也就是单光子雪崩二极管。为什么必须用到单光子级别的灵敏度因为当激光脉冲摊开照亮整个视场后回到单个像素上的光子数量可能极少尤其是远距离、低反射率目标一个脉冲周期内可能只有一两个光子甚至没有光子落进这个像素。普通的光电二极管和APD根本捕捉不到这么弱的信号。SPAD工作的核心是盖革模式给PN结加上超过雪崩击穿电压的反向偏压一个光子触发载流子碰撞电离形成雪崩产生一个可被CMOS电路直接读取的数字化脉冲。灵敏度高到可以数单个光子这就是SPAD最大的价值。但它也有一个很麻烦的脾气一旦被光子触发雪崩电流会一直维持必须先把电压降到击穿电压以下把雪崩淬灭再重新升压到工作状态才能探测下一个光子。这段“休息”时间叫作死区时间典型值在几十到上百纳秒。死区时间内能不能再来光子一概不管。这就导致SPAD无法像线性探测器那样记录一个脉冲内的光强它只能记录“有没有光子”以及“光子到来的时间”。为了对抗单脉冲下信号弱、噪声大的问题Flash LiDAR基本都采用多脉冲积累的方式一个测量周期内连续发射几万个到几十万个激光脉冲SPAD每次记录一个光子到达的时间统计成一个时间直方图。远处目标回波光子集中在特定时间桶里会在直方图里形成一个峰噪声光子则在各时间桶均匀分布。做完积累后算法寻找直方图的峰值那个峰值对应的时刻就是回波到达时间再通过发射时刻与到达时刻的差值算出距离。这里面的关键是直方图积累不是简单把计数相加它是在跟信噪比搏斗。脉冲数量N积累后信号峰值幅度按N增长而随机噪声按√N增长信噪比提升约√N倍。所以发射频率越高、积分时间越长探测距离越远但也意味着帧率下降、功耗升高这是一组需要现场权衡的指标。2.3 距离分辨率从哪来TDC时间戳计数与直方图峰搜索SPAD给出的只是“某个时刻发生雪崩”的电平跳变真正要把时刻精确量出来需要TDC时间数字转换器。TDC的任务简单说就是给光子到达事件盖一个高精度时间戳比如把100皮秒分成一个桶记录光子落在第几个桶里。时间戳之后一帧数据在软件或者硬件里被整理成直方图。假设发射脉冲的时刻是t0探测器记录到回波光子的时刻除以TDC的最小分辨时间得到一个桶序号。把所有脉冲周期的桶序号累加起来最终形成一条“回波次数 vs 时间”的直方图曲线。峰值搜索算法再把这个曲线里的主峰挑出来主峰对应的时间再换算成距离。需要特别注意的是直方图峰搜索不等于简单地找最大值。真实场景里会有多个反射面比如玻璃表面先产生一个弱反射峰后面的实物再产生一个强反射峰还有一种情况是目标边缘周围有前后两个物体各自形成峰。Flash雷达算法里通常要配置“首个峰”“最强峰”“末峰”三种提取策略。探测“首个峰”适合防碰撞需求要保证车或机器人宁可把更近的干扰物当障碍也不能漏检探测“最强峰”适合测绘类场景因为强度最高的回波一般对应反射率最高、置信度最高的表面。这层逻辑必须在系统设计时先想明白否则后面写点云处理会非常被动。3. 测绘一束光一照深度图怎么变成三维点云3.1 像素不是图像像素是“方向感知单元”Flash LiDAR的接收端是一块SPAD像素阵列比如几十×几十到几百×几百的分辨率。每个像素都会输出一个距离值整块阵列输出后其实就是一张距离图。但这里必须强调Flash阵列里的“像素”和普通相机的像素不是一个概念。普通相机的像素只记录光强度Flash LiDAR的像素记录的是它对应视线方向上的回波时间因此每个像素本身就隐含了一个空间方向信息。把一个SPAD像素和发射端的光路对应起来镜头将视场内的反射光成像到SPAD阵列上落在不同像素的光子来自视场中的不同方向。像素坐标u, v决定了这个像素“看”的方向距离值决定了目标在这个方向上的远近。这两部分信息合起来才是完整的三维空间坐标。这里的工程细节在于像素与方向的对应关系不是简单线性的尤其在广角镜头下畸变不可忽略。整个映射关系要靠标定得到最常见的做法是拿一个已知几何尺寸的标定板或者标准球体放在不同距离、不同角度下采集距离图然后用镜头畸变模型去拟合每个像素对应的入射角。出厂的Flash LiDAR如果换了镜头、动了光学结构这部分标定参数必须重新生成否则点云会出现系统性的边缘翘曲。3.2 从深度图到XYZ点云极坐标转换与内参标定拿到每个像素的距离值和对应的方向角之后剩下的就是坐标变换。假设像素对应的水平方位角是 α、垂直俯仰角是 β、距离是 R那么目标在激光雷达坐标系中的三维坐标可以写成X R × cos(β) × sin(α) Y R × sin(β) Z R × cos(β) × cos(α)这里的 α 和 β 不直接等于像素坐标而是需要通过标定的内参矩阵转换得到。实际工程里很多厂商会直接给一套“查找表”每个像素对应一组方向余弦把距离值乘上去就得到该像素方向的XYZ分量省去在线做三角函数运算的算力开销。对嵌入式平台来说这种查表方式非常实用一次标定后把方向表烧进ROM每次点云解算只是做整数乘法和定点加法实时性压力小很多。坐标变换还有一个隐藏问题要注意参考坐标系的原点到底在哪儿。有的模块把坐标原点定义在接收镜头的光心有的定义在发射透镜的中心还有的定义在外壳机械底面中心上。这个看似不起眼的差异在多传感器融合标定时会直接影响外参初值处理不好会导致激光雷达点云和相机图像的对齐一直有固定偏差。拿到一个Flash LiDAR第一步永远是查清楚它的坐标原点定义。3.3 多回波与强度图一次曝光里的“叠加”和“附属品”Flash一帧里面单个SPAD像素可能在同一帧内检测到多个回波吗严格说SPAD在死区时间内会漏掉部分光子所以同一个像素同一帧内通常只能有效记录一个回波但通过多脉冲积累和多阈值设置系统可以在一次多脉冲扫描里分离出同一方向上的多个反射峰这就是多回波能力。多回波在隔窗测物、栅栏后面的目标探测、树枝遮挡环境下非常有用首个峰是车窗/栅栏第二个峰是后面的人或车测绘算法可以根据峰的距离差判断哪些是遮挡物、哪些是真实表面。除了距离Flash LiDAR还能顺带输出强度值。虽然SPAD本身不输出线性光强但回波光子的统计学计数率可以反映出目标反射率的相对高低。把回波峰的计数幅值归一化就能得到一张类似强度图的附属输出这对测绘来说特别有价值沥青路面、白色标线、植被、金属护栏在强度值上有明显差异点云配准和地物分类可以直接吃这个特征。需要提醒的是Flash的强度值并不绝对它受目标距离、入射角、反射率以及环境光影响都很大不能直接当反射率研究使用只适合作为相对特征参与分类。如果要做定量光谱分析还得靠多波长激光或者单独的反射率标定流程。4. 关键器件VCSEL发射与SPAD接收一收一放里的工程博弈4.1 VCSEL阵列为什么是Flash天然的发光源发射端的核心器件Flash LiDAR几乎都选VCSEL也就是垂直腔面发射激光器。和传统激光雷达常用的EEL边发射激光器相比VCSEL最大的优势在于结构天然适合二维阵列化。EEL是沿着芯片表面发光的要在同一块芯片上集成数十上百个独立发光孔很难VCSEL是从芯片表面垂直发光的芯片制造工艺本来就擅长做二维阵列所以VCSEL可以做出密集的面阵光源每一个发光孔独立可控合在一起就能覆盖一个宽大的发光面。另一个关键优势是VCSEL的温漂特性。传统EEL激光器随着温度升高发射波长会明显漂移导致和接收端窄带滤光片的匹配度下降。VCSEL因为谐振腔结构更稳定波长漂移相对小这对工程上很有吸引力——接收端通常配的是带宽很窄的光学滤光片如果发射波长漂出去回波信号会被滤光片衰减量程和信噪比都会变差。VCSEL阵列的挑战在于功率密度和散热。Flash光源要把能量摊在整个视场上单个脉冲的峰值功率需要做得很高而VCSEL又容易受热影响功率高了结温上升转换效率下降。工程上通常是拉长脉冲宽度、提高重复频率来补能量但这又会牵扯到移动目标的运动模糊和光电探测的动态范围问题。所以VCSEL阵列的设计不是单纯选大功率器件而是要跟驱动电路、散热结构、光学扩散方案一起做系统级匹配。4.2 SPAD像素阵列高灵敏度背后的PDE、DCR和填充因子SPAD阵列的参数最核心的几个是PDE光子探测效率、DCR暗计数率和填充因子。PDE决定了入射到像素上的光子有百分之多少能被探测到直接关系到探测距离和所需的最小回波光子数。DCR是没有任何光照时像素自发雪崩的速率DCR太高的话直方图里的噪声底就被抬高弱信号峰会淹没在暗计数噪声里。填充因子则是SPAD感光面积占像素总面积的比例CMOS工艺里SPAD周围要放TDC、控制逻辑、淬灭电路这些电路占掉原本属于感光区域的面积填充因子低了有效感光面积就小灵敏度跟着下降。SPAD像素阵列的另一个取舍是像素尺寸和空间分辨率的矛盾。想要更高角分辨率就需要把像素做得更小、数量更多但小像素意味着感光面积更小、TDC电路更难塞进去最终导致PDE和填充因子下降。行业里为了弥补这个问题已经出现了用微透镜阵列把入射光汇聚到每个SPAD有效感光区的做法相当于给每个像素戴一顶“小聚光帽”填充因子可以被虚拟放大到接近100%。换句话说整条链路里没有一个参数是可以单点优化的全部是笼统的“鱼和熊掌”问题。4.3 光学设计与时间同步带通滤镜、扩散片、全局触发Flash LiDAR的光学系统在发射端和接收端各有一个核心部件。发射端通常有扩散片或者DOE作用是把VCSEL阵列发出的光束均匀地铺满目标视场。扩散片的光学设计直接影响视场角、能量分布均匀性以及是否存在“热点”。如果扩散不均匀视场中心亮、边缘暗距离远的目标在边缘区域根本测不到点云会出现明显的四角缺损。接收端镜头前面一定要配窄带滤光片中心波长对准激光器发射波长带宽一般控制在10到30纳米左右。窄带滤光片的作用是大幅压制太阳光和室内灯光的背景噪声。太阳光在近红外波段的光谱密度很高如果不用滤光片SPAD很容易被背景光子淹没直方图噪声底高到没法看。顺便提一句市场上很多Flash LiDAR在强阳光下性能明显下降背后往往就是滤光片带宽太宽或带外抑制不够。时间同步的单位是皮秒到纳秒级别。每个测距周期主控发出同步触发信号VCSEL驱动电路收到触发后立刻发光SPAD阵列的TDC同时从零开始计数两边共享同一条时钟树。如果发射触发和TDC启动之间存在固定的偏斜可以直接在标定阶段补偿如果存在随温度和电压漂移的抖动那就必须靠锁相环和延迟锁定环这一类电路把时钟做稳。很多刚上手做Flash LiDAR的团队会忽略这个细节结果出来的点云在开机的几分钟内是准的热机之后距离系统性偏移查来查去最后发现是发射和接收时序偏了。5. 精度、量程与坑实测中跑不掉的多径、噪声和反射率问题5.1 测距精度的每一项误差来源都能从时间域找到根Flash LiDAR的测距误差从时间域看无非来自几个方面系统固定偏置比如TDC启动时刻和激光发射时刻之间的固定延迟通常可以通过内参标定扣除剩下的残余是温度漂移。随机抖动TDC自身的量化噪声、SPAD的触发抖动、激光脉冲宽度的不确定性这些服从高斯分布最终表现为点云的随机噪声。目标倾斜效应光线斜打到平面目标上时激光脉冲在目标表面产生的时间展宽会变大距离测量值会不稳定。入射角越大这个现象越明显所以墙面边缘的点云噪声通常比正视墙面时高得多。多目标混叠同一像素方向上有前后两个目标时直方图峰形不对称峰值搜索的位置可能偏向中间灰度区域导致测量值落在两个目标之间产生“虚假表面”。实测中定位误差来源的一个有效方法是在固定距离上放一面漫反射白板改变环境温度连续记录测距值。如果距离读数随温度呈线性漂移那大概率是时钟链路的温度漂移如果读数随机跳变范围大那就要怀疑是回波幅度太低SPAD触发抖动占比过大。把这两个问题分开去查会少走很多弯路。5.2 多径、太阳光与“鬼影点”真实环境中最大的三个敌人多径效应是所有TOF雷达的心病Flash LiDAR也不例外。想象一个场景激光照射到墙角一部分回波直接回到探测器另一部分先打到墙面再反射到墙角最后再回到探测器。后者走过的路径明显更长会在直方图出现的时间更晚的位置形成一个额外的峰。当这种二次反射光强足够大时主峰后面会出现一个“幽灵峰”点云里表现为墙角后方凭空多出一片虚假点。阳光干扰则是另一个典型问题。虽然窄带滤光片能挡住大部分背景光但在中午的强阳光下背景光子计数率依然可能比回波光子高一个量级。很多Flash LiDAR会在算法里做背景估计在激光不发射的时间窗口内统计背景计数率再从正式测距窗口的总计数中减去背景计数相当于做差分探测。如果发现点云在强阳光下出现“雾化”现象也就是距离值随机四散分布大概率是背景抑制没调好。鬼影点是多径、镜面反射和旁瓣光共同作用的产物。有一回我在钢化玻璃门旁边测一个移动机器人玻璃门的镜面反射在点云里形成了一整片悬浮的点离真实墙面距离差了足足一米。后来把回波提取策略从“最强峰”改成“首峰”又对相邻像素做时空一致性滤波才把这批鬼影压下去。如果你做的是安全相关应用这些鬼影点必须要处理否则移动机器人可能看到一片并不存在的“空中障碍物”触发急停。5.3 反射率带来的量程波动不是一样远的物体都能测到测距系统的最大量程从来不是一个固定数字它和目标的反射率强相关。同一款Flash LiDAR对白墙可能能测到80米对深色车辆可能只到30米对黑色橡胶轮胎可能不到20米。原因是回波光子数和目标反射率成正比反射率低的表面返回的光子太少直方图峰会被噪声淹没。这一点在测绘应用中容易被忽略很多项目只按标称量程做规划结果在暗色物体密集的工业现场点云的有效探测距离缩水严重。应对反射率问题实践中常用的办法有三层第一层系统层面提高单脉冲能量和脉冲积累次数用能量换回波光子数。第二层算法层面做自适应增益根据上一帧的计数率动态调整阈值防止远距离低反射目标漏检。第三层部署层面给LiDAR留出冗余量标称200米的设备只规划150米以内的工作范围拿20%到30%的余量去吸收反射率波动。深色物体还有一个附加问题SPAD死区时间导致它在强回波后一段时间内无法响应如果前方近处有个高反射率标识牌它后面的暗色物体大概率测不到。这在布设安装位置时要特别注意尽量让传感器前方不要出现反光很强的物体。6. 从补盲雷达到机器视觉Flash的落地场景与未来走向6.1 车载补盲与近距离防碰撞最成熟的商业落地窗口Flash LiDAR在车载应用里最成熟的角色至今仍是补盲和近程感知。车辆侧后方、前保险杠下方这些区域对点云精度要求不算特别高但对设备体积、成本、可靠性和帧率要求极高。Flash的固态结构天然适合安装在车门、翼子板、保险杠内等空间有限的位置并且能做到几十赫兹的高帧率让盲区监测系统及时捕捉快速切入的电动车或行人。在封闭园区低速无人车、港口AGV、矿山机械上Flash LiDAR也经常被选为避障主传感器。这些场景速度低、环境相对可控Flash的近距离高密度点云优势能发挥得淋漓尽致。我之前在自动叉车项目上用过一款Flash补盲雷达装在前叉两侧后货架立柱和托盘孔的识别稳定性比单线激光雷达好了太多原因就是Flash能在一个截面上直接给出目标的三维轮廓而不是只给一条线的高度剖面。6.2 机器人、无人机与工业测量中的Flash测绘消费级和商用级移动机器人是Flash LiDAR的第二大主战场。机器人需要在室内环境里实时构建地图、定位和避障对点云的需求是“附近高密度、低延迟”。Flash LiDAR因为单帧曝光、无扫描延迟在机器人快速旋转时不会出现扫描式雷达那种点云拖尾和畸变SLAM效果明显更稳。无人机测绘和一些工业测量场景也在用Flash方案。近地面大范围扫描时Flash一次曝光可以直接覆盖地面一片区域配合惯导系统效率比单线扫描式LiDAR高得多。尤其是在树木茂密的区域Flash的多回波能力可以把树冠上的叶片回波和地面回波分离帮助生成更干净的裸地表高程模型。需要注意的是无人机的重量和载重限制对Flash模块的功耗和质量提出了更高要求选型时一定要把散热和振动试验做足。6.3 下一代单芯片SPAD阵列、1550nm与融合感知Flash LiDAR的演进方向目前能看到的清晰主线是芯片化。过去SPAD阵列、TDC电路、直方图处理、接口驱动是分立器件或者多芯片拼装现在越来越多厂商把SPAD像素阵列和信号处理电路做进同一颗CMOS芯片里走的是“单芯片激光雷达”的路线。单芯片化之后成本和体积大幅下降分辨率有望从目前的百级像素提升到千级像素甚至更高。波长方面1550纳米全固态方案也是一个热点。1550纳米激光对人眼安全性更好可以打到更高功率而不伤害人眼意味着更远的探测距离和更强的穿透能力。但1550纳米的SPAD技术还不像905纳米那么成熟硅材料在这个波段几乎不吸收光子需要用到铟镓砷等III-V族材料成本和工艺难度都高出一截。短期来看905纳米Flash依然会是市场主流1550纳米则是远程高性能方向的技术储备。往回看我自己的体会是Flash LiDAR最迷人的地方不在于单点参数的比拼而在于“全局同时测量”带来的系统级优势——它天然适合和相机做像素级融合深度图直接对齐RGB图省去很多外参标定的麻烦。前几年大家觉得Flash只能做近距离补盲这两年随着VCSEL和SPAD工艺的快速迭代这种判断已经站不住了。如果你正好要在近程感知或室内测绘上选型不妨把Flash方案当成一个正经候选别被“固态低性能”的旧印象带跑了。