ARTICLE DETAIL

资讯详情

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

大疆Livox Mid-70激光雷达实战:点云处理与SLAM集成避坑指南

大疆Livox Mid-70激光雷达实战:点云处理与SLAM集成避坑指南 拿到这台大疆Livox Mid-70的时候我刚结束一个晴天暴晒下的户外测试说实话一开始并不看好它。毕竟在它之前我用惯了那些“转起来就是360度”的传统机械雷达第一次看到Mid-70这种前方视场角只有70.4度的固态雷达时心里第一反应是“这玩意儿能用在哪儿”。但真正跑完一轮从零搭建驱动、采集点云、联合标定到接入导航的项目之后我改变了想法——这东西在特定场景里的价值远比参数表上那几行数字直观得多。这篇内容不是官方文档的复述而是把我实际调试Mid-70的过程、踩过的坑、以及最后总结出来的使用思路完整记录下来给那些正准备在机器人、无人车或者科研平台上用它的人做个参考。不管你是刚拆箱的小白还是已经编译过一遍Livox SDK的老手这篇文章里应该都有你能直接拿去用的东西。1. 拆箱到点亮Mid-70的硬件接口与安装要点1.1 先搞明白它和传统机械雷达的本质区别很多第一次接触Mid-70的人最困惑的就是它的扫描形态。传统机械雷达靠电机带动激光头旋转每秒出一圈完整的360度点云Mid-70没有旋转电机内部是棱镜加振镜式的扫描结构出来的点云是近似圆形的视场看久了会觉得点云在“画花瓣”。这不是故障而是它赖以降低机械磨损、延长寿命的核心设计。这个差异在工程上的影响非常直接没有旋转电机就没有轴承磨损长期连续运行的可靠性更高体积能做得更扁方便嵌入无人车顶部或机载吊舱点云不是一圈圈扫出来的而是以“图案填充”方式逐渐覆盖视场时间越长覆盖率越高Mid-70标称视场角是70.4度圆形量程在80%反射率下能达到260米10%反射率下约90米实测下来远距离点云虽然稀疏但真实可用。每秒大约输出10万点点云密度虽然不如机械雷达那么均匀但足够做感知和建图。1.2 接口、线序与上电顺序Mid-70的物理接口是航插形式随机附带的线缆一端是航插另一端通常是分出来的网口和电源线。这里有一个非常容易被忽略的细节——先接网线再上电还是先上电再接网线对设备识别有影响。我实测多次的结论是先把网线接好确认电脑网口和雷达能通再给雷达上电设备识别率最高。如果在雷达已经运行的情况下热插拔网线有一部分固件版本会导致Livox Viewer里设备状态一直卡在“连接中”只能断电重启。所以我的习惯是固定一套接线顺序网线-电源-上电-等蜂鸣器响-打开软件。供电这块也要提醒一下。Mid-70的电源范围虽然宽但不能指望普通USB口或树莓派的5V引脚去带它的正常工作电压在10V以上需要配一个至少12W输出的稳压电源。我早期图省事用了一块3S锂电池直接供电电压在满电时超过12V勉强能用但电量下降后电压跌破阈值会出现间歇性断流。后来换了官方推荐的12V 2A适配器问题彻底消失。1.3 安装时的三个注意事项Mid-70的安装远不是“拧上去就行”这么简单我实际在车上装了两个版本才找到最优解。第一个注意点是散热朝向。Mid-70的外壳是金属的工作时壳体温度不低它被动散热依赖外壳和空气的接触。如果你把雷达装在一个全封闭的塑料外壳里连续跑半个小时后点云会出现明显的噪点增多甚至报错。最佳方式是让外壳至少有一半面积裸露在空气中或者加装薄铝板做导热。第二个注意点是视场遮挡。70.4度的圆形视场没有传统雷达“转一圈总有视角”的优势如果安装位置太矮车前机盖的高度稍微起来一点就会把视场下沿切掉一块。我最初装在前保险杠上方结果车头俯仰稍微变化近处地面点云就空了。后来移到车顶行李架高度近场视角才干净。第三个注意点是振动。Mid-70内部有精密光学元件虽然没有旋转电机但高频振动依然会影响测距稳定性。装在无人机上的时候如果减震球老化点云会出现沿径向的纹路状噪声。反正我后来在固定支架和雷达之间加了一层3mm厚的橡胶减震垫点云纹路明显减少。2. 驱动与ROS集成先跑通一次完整的点云输出2.1 从Livox Viewer开始而不是直接上ROS如果你跳过官方图形工具直接编译ROS驱动会少了很多对设备的直观认识。我第一次用Mid-70时就是从ROS驱动开始的结果配置IP那一步就卡了半天。后来老老实实安装了Livox Viewer才发现原来设备发现、固件升级、点云预览这一套东西在官方工具里都是一键完成的。所以我的建议路径是电脑有线网口接雷达把网卡IP设成192.168.1.x网段打开Livox Viewer软件自动扫描同网段下的设备确认设备状态正常后先花十分钟在Viewer里观察点云形态确认无误后再进入SDK和ROS驱动环节Livox Viewer不仅是调试工具它还有一个很实在的功能是固件升级。新买回来的雷达固件版本可能比较旧我在用的时候就让供应商发过一版更新固件通过Viewer升级后点云在远距离的噪点控制有明显提升。建议拿到设备后先看固件版本再开始集成。2.2 编译Livox SDK 2和ROS驱动的实际过程Mid-70在ROS下的驱动现在一般直接用livox_ros_driver2它支持ROS1和ROS2底层依赖Livox SDK 2。我在Ubuntu 18.04的ROS Melodic和Ubuntu 20.04的ROS Noetic上都编译过也尝试了ROS2 Foxy版本整体流程大差不差。一个最容易出问题的点是依赖库版本。Livox SDK 2需要PCL和Eigen如果系统里有多版本混用编译时经常出现“找不到Eigen3”或“PCLConfig.cmake”的错误。我踩过一次坑原因是系统里同时存在ROS自带的老版本Eigen和源码安装的新版本EigenCMake没用对。编译顺序上建议严格按官方README来先编译安装Livox SDK 2再编译livox_ros_driver2。如果网络条件可以拉取GitHub直接用版本分支编译最省事。国内网络访问GitHub不稳定的情况下我一般先把代码包下载到本地再用git clone的本地路径避免VCS工具反复拉取失败。ROS2环境下需要在livox_ros_driver2的launch文件里指定消息类型Mid-70默认发布的是livox_ros_driver2/msg/CustomMsg如果你习惯了标准sensor_msgs/PointCloud2接口可以在launch参数里把点云格式切换成PointCloud2发布。我当时就是为了下游节点方便直接改成双格式发布这个问题在配置文件里有开关。2.3 网卡、IP和防火墙连不上的排错顺序Mid-70连接不上的问题在用户群里反复被问其实90%的case都出在三个地方。网卡IP没设置好电脑和雷达需要在同一个网段如果电脑的网口IP是自动获取而雷达没有DHCP服务根本扫不到。我建议把网卡手动设为192.168.1.50之类的静态IP子网掩码255.255.255.0。防火墙拦截Livox设备发现和点云接收用了多端口Ubuntu的默认防火墙或者Windows的防火墙会把发现协议挡掉。我自己在Ubuntu上遇到过Viewer能扫描到设备但无法连接的情况把防火墙规则临时清空后就好了。多网卡干扰笔记本同时开着Wi-Fi和有线网口时软件可能去Wi-Fi网卡上找设备导致一直扫描不到。调试时建议禁用Wi-Fi只保留有线网卡。如果你已经在ROS环境里编好了驱动但launch之后没有话题输出先用ping Livox Viewer确认设备物理链路是通的再查驱动配置里雷达的IP对不对。基本按“网线-网卡-防火墙-软件配置”这个顺序排查半小时内能找到问题。2.4 实测跑通后的点云效果评价走完上述流程后我第一次在rviz里看到Mid-70的点云时直观感觉倒不是“好”或“差”而是“怎么长这样”——点云看起来像很多条细线交织在一起而不是传统雷达那种规则的环形线。这是因为它的扫描方式是梅花瓣状的每一帧点云在空间里不是均匀分布但如果你把连续10帧叠加在一起看覆盖率会明显提高。后面我测试了在不同距离下的表现近场0.5米到10米点云稠密墙面轮廓清晰地面点云连续可以做障碍物检测中距离10米到50米点云依然密集对车辆的轮廓还原度不错远距离50米到200米点云明显稀疏但车辆、树木这些大目标的可辨识度依然在200米以上只是零星的亮点基本不能给下游感知算法提供稳定输入这个特性和机械雷达正好相反机械雷达远近点云密度一致Mid-70则是“近处越扫越密”。所以如果你拿它做近距离感知效果其实不输给那些标称64线的机械雷达但如果你要的是均匀覆盖远距离场景它就不太合适。3. 实测定档非重复扫描视角下的点数、量程与盲区3.1 “非重复扫描”到底是什么怎么展示它Mid-70最核心的技术特征是它的扫描方式官方叫“非重复扫描”。这个名词背后是一个很巧妙的思路——传统的机械雷达转一圈每一圈扫描的位置基本是固定的所以点云覆盖率是固定的Mid-70每次扫描的路径都会有微小的偏移时间越长视场内的覆盖率就越高。我做过一个直观实验分别统计0.1秒、0.5秒、1秒和5秒内的点云覆盖率。积分时间视场覆盖率点云形态特点0.1秒约1帧约20%-30%稀疏的花瓣线条像画笔画的几道弧线0.5秒约5帧约50%-60%覆盖面变宽墙面轮廓基本可辨1秒约10帧约70%-80%近处目标已经能看出形状5秒约50帧95%以上整体点云稠密成一个连续面这个特性在不同应用场景里的取舍非常明显。做实时避障时你只能依赖单帧或两三帧的点云Mid-70的覆盖率不如线扫雷达但做建图时你可以在一个位置停下来稍微静置累积几秒钟的点云就能得到一个比机械雷达更精细的局部地图。我后面在做测绘类项目时就是利用这个特性收集高密度点云做目标识别效果不错。3.2 量程、反射率与目标材质的关系Mid-70标称260米的量程听起来很唬头但实际量程和目标的反射率强相关。白墙、浅色车辆这些高反射目标在100米外依然有稳定点但黑色轮胎、深色衣物或者磨砂表面在30米外就开始丢点了。我做了一组对照测试目标材质/颜色有效稳定距离白色墙面乳胶漆白墙不低于120米灰色水泥路面粗糙表面约60-80米黑色汽车轮胎橡胶约15-25米深色行李箱深灰布面约20-30米反光贴纸逆向反光200米以上仍有强回波这个特点对感知算法的影响不小。如果你在做目标检测模型必须容忍远距离目标的点云稀疏因为深色物体大概率只能看到几个零星的亮点不能指望像高线数机械雷达那样的完整轮廓。做障碍物聚类时最好把聚类半径适当调大或者引入视觉信息做前融合弥补近处暗色目标的点云缺失。3.3 盲区与安装角度的量化评估Mid-70的视场角70.4度是圆形的这意味着视场之外完全盲区。如果你把它水平安装在车顶正前方视场覆盖是没问题的但车前0到0.5米的地面区域会被车头或安装平面挡住形成一个直径和安装高度成正比的盲区圆。从实际计算来说假设雷达安装高度是1.5米视场下沿相对水平面向下约35度那么近处地面点从雷达正下方开始大概在0.8米左右的位置就会出现。如果安装高度再低比如0.5米那么地面点离雷达的水平距离就只有0.3米左右近场覆盖率大幅增加。所以做机器人的话安装高度低反而有利于看到脚下装在车上则需要稍微仰角安装让视场远一点。我有一次尝试把Mid-70装在机器人底盘正前方雷达面朝前但安装面有一个5度左右的倾角本意是想同时看到近处地面和远处障碍。实际效果是点云出现了微小的椭球畸变——因为驱动里如果没有配置对应的安装姿态参数下游使用的点云还是以雷达自身坐标系为准随后做坐标变换的时候角度补偿没做对导致建图的地面点出现波浪。后来我在静态TF里把安装角补偿写进去问题才解决。4. 多传感器协同作战标定、时间同步与导航落地4.1 和相机联合标定从手动选点到自动标定Mid-70的用途极少是单独存在的更多场景是搭载在带相机的无人车上。要做视觉和点云的融合就必须做外参标定。这里我说一下我用Livox官方标定工具的实测体验以及和Autoware标定工具的效果对比。如果你用的是livox_camera_lidar_calibration这个工具有个很关键的细节是它依赖标定板。这个标定板不是随便一块纸板就行的官方工具对反射率有要求一般建议用带高反特征的标定板棋盘格内嵌反光纸因为Mid-70在高反目标的点云上会产生明显的亮斑便于算法自动提取。我第一次标定时图省事用双面胶贴了一张A4纸打印的棋盘格结果特征点提取疯狂失败折腾了两小时一无所获。后来换了官方推荐的标定板十分钟就出了结果。标定过程中的技术要点标定板要在雷达和相机的共同视野内最好放置在视场中央多次改变标定板的距离和角度让算法覆盖更多的姿态样本保证周围环境光线稳定避免阳光直接照射标定板表面最后对齐误差在5个像素以内就可以认为合格我用Autoware的标定工具也试过一遍对于Mid-70这种非重复扫描雷达手动选取点云角点时比较费劲因为单帧只有一个角点的话你需要不断暂停播放人工标注多个对应点。相对官方工具来说Autoware道路上的体验要烦琐一些适合做验证而不是批量标定。4.2 IMU外参标定与时间同步在接入组合导航或者SLAM之前雷达和IMU之间的外参也必须标定。这里我推荐用lidar_align这个开源工具输入几个bag里的雷达点云和IMU数据它能自动优化出6自由度外参。实际操作里要注意的是采集数据时车辆或者机器人要在三维空间里做充分的旋转和加速运动不要在原地静止不动否则IMU的角速度和加速度激励不足优化出来的外参可能只有约一半的轴是准的。时间同步是另一个绕不开的问题。Mid-70本身支持PPS时间同步如果IMU或组合导航带有GPS模块可以通过PPS信号让雷达的时间基准对齐到GPS时间。我在实际项目里用的是简单方案把雷达点云的time stamp和IMU的time stamp统一用ROS的同步时间跨传感器延迟在几十毫秒以内对低速机器人做建图足够了。如果你对时间同步精度有更高要求比如高速无人车或者飞行器那就需要做传感器硬同步把PPS和GPRMC同时接入雷达让雷达完全跟随外部时钟。这个配置在Livox SDK的文档里有明确说明实际接线也不复杂就是多两根线的事。4.3 接入Nav2和SLAM时最常见的坑Mid-70全向3D点云在ROS里接入导航时有一个绕不开的问题——Nav2的costmap默认是2D的。很多人以为直接把PointCloud2话题塞给costmap就行其实远没那么简单。需要先把3D点云投影成2D占据栅格或者通过高度过滤提取出障碍物的水平截面。我搭的一个实际方案是接收Mid-70的点云滤除地面点用高度阈值或RANSAC平面拟合再对剩余点云的x-y平面做半径压缩把每个障碍物“压扁”成一个水平面轮廓发布成sensor_msgs/LaserScan或直接发布成点云让costmap的ObstacleLayer订阅。这个过程中高度阈值的设定很关键——太高会把低矮障碍漏掉太低会把地面杂波算成障碍。我一般根据机器人底盘高度设为底盘离地高度的70%-80%。另外Mid-70的70.4度视场不是360度全向的这个对Nav2影响非常大因为常规导航算法默认机器人周围一圈都有感知。如果你的机器人只有前向感知转向或者后退时没有任何雷达覆盖碰撞风险很高。实际使用中如果你有条件最好把Mid-70安装在可旋转云台上或者在机器人的前向和后向各装一台才能实现全向避障。如果只装一台就必须在导航路径规划上做“只能在视场覆盖范围内移动”的约束。4.4 我做过的建图效果、重定位精度记录我用Mid-70配合LIO-SAM做过一次室内外混合场景的建图测试地点是一个大约200米长的园区道路两侧是建筑和树木。整个过程中雷达固定在车顶IMU用了一个消费级9轴惯性模块。跑完一圈后回到起点闭环后的位姿漂移大约0.5米以内走廊部分的建图精度目测在厘米级。这个成绩对于这个价位的雷达来说已经很不错了不过LIO-SAM本身依赖IMU和雷达紧耦合如果IMU数据质量差建图效果会明显打折。用hdl_graph_slam或者FAST_LIO这类方案时Mid-70非重复扫描的点云形态会让前端配准的收敛速度快于传统机械雷达因为近场点云足够密几何约束丰富。但远场稀疏点的噪声容易给误差优化引入错误约束我的经验是做配准时把距离超过80米的点直接过滤掉既能加快运行速度又能提高精度。5. 三个典型故障的排查全过程5.1 “设备连接正常但无点云输出”的全链路定位这个现象的特征是Livox Viewer能扫描到设备状态也显示为正常但点云画面是空的。我遇到过一次当时把网线、电源、固件全查了一遍都没找到原因后来发现是雷达的视场正前方被一块黑色遮光布盖住了。Mid-70虽然有测距能力但目标太近且是黑色吸光材质时点云会完全消失看起来就像设备没在工作。这不是故障而是Sensor本身的物理极限。把黑色布换成白色纸板后点云立刻出现了。所以遇到空点云先确认视场内有没有反射率极低或距离过近的目标。另一个排查思路是抓包看底层数据。如果你在局域网里用Wireshark抓UDP包能看到设备持续向电脑发送数据报。如果抓到数据但Viewer没有显示大概率是Viewer或驱动的解码逻辑有问题如果根本抓不到UDP包那问题在设备端或链路层。我后来写了个小工具定期跑一遍这个检查排障效率提升不少。5.2 远距离出现规律性噪点一个被阳光照射触发的难题有一段时间我连续几天在中午测试发现点云在70到100米范围内出现了很多漂移的噪点形态上是一簇一簇的亮点位置在每帧之间跳来跳去。一开始怀疑是震动或者雷达老化后来才发现规律性很强——只有太阳在雷达正前方偏下方向时才会发生。本质原因是Mid-70的光学接收器对阳光中的近红外分量敏感。当太阳光以某个角度直接进入接收视场时会引入大量的背景噪声光子导致测距模块解算出错误的回波。经过反射面强烈的时候甚至会短暂出现目标点云“糊掉”的情况。解决方式有三种调整测试时间避开阳光直射角度加装遮光罩在雷达镜面上方做一个半圆形遮挡防止太阳光直接入射在算法侧利用时间维度的连贯性把只出现一帧的孤立亮点当作离群点滤除最后一种从工程角度最实用我用的是基于半径搜索的统计滤波把每个点邻域内点数少于阈值的点删掉效果立竿见影。5.3 设备频繁掉线、自动重启的处理Mid-70如果工作一段时间后反复重启大部分原因是供电不稳定。它启动瞬间电流需求比正常工作高不少如果你的电源功率余量不足或者线缆过长导致压降太大就会出现“刚跑起来就重启”的情况。我第一次在车载环境供电时直接接了车上12V点烟器转出来的电点烟器电压在发动机启动时波动很大雷达几次重启后固件状态都异常了。后来加了稳压模块并预留了足够电容电压稳定在12.2V左右重启问题彻底消失。如果你的供电已经稳定但依然掉线就要查网线了——Mid-70虽然支持千兆网口但跑数据时对线缆质量有一定要求。我有一根看起来还不错的五类网线在连续大数据量传输时丢包率升高点云随即出现断流。换成六类屏蔽网线后问题消失。5.4 已有非通用问题“幽灵点云”的成因分析有一次我在室内走廊测试发现墙上凭空多出来一片球形的点云位置在雷达正前方偏左两米左右可是那里明明什么也没有。折腾了很久最后发现是旁边铝合金架子上一个灭火器罐的反光面把雷达打在墙上的激光反射到了雷达接收器里形成了二次回波解算出的距离比实际值远很多。这种“幽灵点云”在低矮反光物体周围比较常见尤其是雨天湿滑路面或者室内光滑瓷砖。解决思路和前面类似依靠算法滤波和多次测量一致性校验。如果你在建图时遇到突然出现的密集球形噪点务必先确认周围有没有高反物体不要急着怀疑雷达坏了。6. 与同类产品的取舍思路和选型建议6.1 和Mid-360、Avia、机械雷达的横向对比用Mid-70的过程中我也顺便比较了Livox家族里的几个兄弟型号它们虽然都是同一套技术路线但定位差异很大。型号视场角量程适合场景关键短板Mid-7070.4°圆形260m(80%)中远距离感知、测绘视场不够大近距离覆盖一般Mid-360360°水平40m(90%)机器人避障、室内导航量程太短不适合室外远距Avia70.4°×77.2°450m(80%)测绘、无人机、远距探测价格高点云带宽压力更大传统机械雷达16线360°水平100m全向避障、低成本方案垂直视场角小机械磨损从表格能看出Mid-70的定位非常鲜明——它专攻前方中远距离的稠密感知而不是全向避障。如果你做的是巡检机器人或者无人配送车需要在行驶方向上看清前方较远距离的障碍还要建高精度地图Mid-70是非常合适的选项。但如果你做的是仓储机器人或者扫地机器人需要在原地感知周边一圈那Mid-360或者传统机械雷达会更合适。6.2 什么项目适合用Mid-70什么不适合我根据实际使用经验把适合和不适合的场景直接列出来方便你对号入座。适合用Mid-70的场景巡检机器人、安防机器人的前向主感知雷达结合视觉做融合避障测绘级应用利用长时间积分特性获取高密度点云户外科研平台在车辆顶部的无人驾驶原型车上做中远距感知精度要求较高的3D扫描建模对体积和功耗敏感的移动平台不适合用Mid-70的场景需要360度全向感知的低速室内机器人Mid-70的70.4度视场覆盖不到后方对远距离点云密度要求极高的场景比如高速自动驾驶在200米外做小目标识别需要单线雷达那样直接输出规整LaserScan场景虽然可以通过转换实现但覆盖率是短板如果你现在正在纠结选型我的建议是先从你的应用场景最大的感知盲区出发而不是先从参数对比出发。Mid-70的长处和短板都很突出找到一个匹配它特点的位置它给你的回报会远超价格本身。6.3 我的一些使用心得和后续扩展想法最后说一点长期使用后的体会。Mid-70毕竟没有360度扫描能力如果你的系统只有一个位置装雷达我的建议是宁可牺牲一点安装高度也要尽量把雷达的视场朝向覆盖最关键的感知方向。对轮式机器人来说前方的中远距感知一般比近处脚下更重要对飞行器来说由于可以靠机体运动让雷达“扫过”不同区域Mid-70反而比机械雷达更合适因为它的重量轻、体积小、没有旋转部件的动平衡问题。另外我目前在做的下一步是尝试把Mid-70和视觉BEV检测做前融合利用点云在中距离的稠密特性给视觉检测提供精确距离信息。从初步实验结果看融合后的3D目标检测的定位精度比纯视觉方案提高了近一倍。当然这个方案还有很多细节要打磨后续有结论了再单独写一篇。总的来讲Mid-70是一台特点鲜明、能力明确的激光雷达。你在它身上看到的所有“不完美”几乎都可以通过合理的系统设计来规避。把这些经验分享出来希望后来者少走一点弯路。
返回列表