ARTICLE DETAIL

资讯详情

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

Mid-360激光雷达从接线到RVIZ出点云:ROS2驱动配置避坑指南

Mid-360激光雷达从接线到RVIZ出点云:ROS2驱动配置避坑指南 拿到Mid-360的第一天我干了一件很多新手都会干的事插上电源、连上网线然后直接去网上搜livox_ros_driver2的编译教程。结果折腾到半夜点云没出来反而把网络配置搞得一团糟。所以这篇文章就是写给“雷达刚到手、电脑上还看不到一个点”的状态的人看的。我把从接线、供电、静态IP配置到编译运行livox_ros_driver2、在RVIZ里看到Mid-360点云的完整流程整理出来顺便把那些网上教程不会明说、但我实际踩过的坑一次性讲清楚。不管你是做机器人导航、三维重建还是毕设刚起步只要按这个流程走一遍大概率一个小时以内就能让雷达乖乖出点云。1. 接线之前先把这几件事想清楚1.1 Mid-360到底适合干什么为什么值得折腾Mid-360是大疆旗下Livox推出的一款360度混合固态激光雷达。它和传统机械雷达最大的区别是没有外部旋转电机靠内部棱镜折射激光实现扫描所以体积很小、抗振动、寿命长价格也比同性能的机械雷达友好得多。水平视场角360度垂直视场角也比较大探测距离在室内外场景下都够用特别适合装在小车上做建图定位、装在室内做三维重建或者作为机器人感知系统的主传感器。我第一次用它时最不适应的是它的“非重复扫描”特性点云分布每一次都不一样不像机械雷达那样一圈一圈规规矩矩。后来才想明白这恰恰是它的优势——时间积累越长覆盖的细节越完整对建图来说反而更有利。理解了这一点后面看RVIZ里的点云就不会觉得“是不是坏了”。1.2 驱动版本别选错livox_ros_driver和livox_ros_driver2是两回事Mid-360官方有两套ROS驱动老的livox_ros_driver主要面向ROS1新的livox_ros_driver2面向ROS2。如果你用的是Ubuntu 20.04加ROS2 Foxy或者Ubuntu 22.04加ROS2 Humble那就必须选livox_ros_driver2。我见过太多人在ROS2环境里下载了ROS1版驱动然后编译报错一堆各种依赖缺失最后跑来问怎么解决。其实根子就是版本选错了。还有一个细节包名带“2”就是带“2”千万别自己改工程目录名或者包名不然colcon build会报一些莫名其妙的错误排查起来非常浪费时间。1.3 完整流程先过一遍心里有个全局认知整个流程可以拆成五步硬件连接把雷达、转接线、电源、网线接好。电脑网络配置给电脑网口设置静态IP让电脑和雷达处于同一网段。环境准备确认ROS2和colcon可用装上必要依赖。编译驱动用colcon build编译livox_ros_driver2。启动并观察点云通过launch文件启动驱动在RVIZ里看到Mid-360的点云。看起来很清晰对吧但每一步都有隐藏的坑。下面我从最容易出事故的接线开始讲。2. 硬件接线与供电最容易出事的一步2.1 认识Mid-360的接口一根线同时搞定供电和通信Mid-360的航空插头规格是GX10.5包装盒里一般会带一根转接线——注意看清楚型号Mid-360和Mid-70使用的转接线是GX10.5-A型。转接线一头插雷达另一头分出两部分一个标准RJ45网口还有一组红黑电源线。红线接电源正极黑线接电源负极这个顺序千万不能接反接反了轻则雷达不工作重则直接烧掉内部电路。我说的“直接烧掉”不是夸张说法混合固态雷达内部的电子元件非常精密电源极性接反后几乎没有保护余地。这里还要提醒一句千万不要用万用表去量雷达端口的针脚来判断正负极必须按照转接线上红黑线的定义来接或者参考官方说明书。网上有热心网友画的引脚图但不同批次的线序可能存在细微差异最稳妥的方式就是依赖官方转接线自带的颜色标识。2.2 供电参数与电源选型Mid-360标称支持10V到24V直流输入典型功耗大概9W左右12V工况下正常电流不到1A。但我强烈建议不要用那种12V/1A的杂牌小电源最好选择12V/3A以上的电源适配器或稳压电源。为什么我一开始图省事用了一个12V/1.5A的开关电源结果雷达指示灯一直闪烁点云也时有时无。排查了很久才发现是启动瞬间电流把电压拉低了雷达反复重启。换了一个12V/3A的电源之后问题立刻消失。所以供电这块宁可余量大一些也别卡着最小功率来。如果你准备用电池给雷达供电建议加一个带过流保护的稳压模块输出稳定在12V左右再接入雷达。低压电池直连会导致电压跌落严重雷达表现会非常诡异。2.3 网口连接方案直连还是走交换机Mid-360出厂默认IP是192.168.1.50通信接口是标准以太网所以网线、交换机这些通用设备都可以用。最简单的连接方式就是雷达的网口直连电脑的千兆网口。直连的好处是链路短、排查方便不会出现交换机VLAN或者端口隔离这种额外的坑。如果用交换机务必确认交换机端口是千兆口。我实测过用百兆交换机不是不能出点云但点云频率和稳定性会明显变差偶尔还会断流。原因是Mid-360在非重复扫描模式下点云密度上去之后瞬时数据量并不小百兆传输会变成瓶颈。网线方面建议用质量好一点的超五类或六类成品网线不要用那种又细又软、一看就是工程废料的线。雷达数据传输出错时驱动日志里往往只会报一个泛泛的“offline”而这些偶发性的数据异常很难从日志里直接看出来。3. 网络配置与在线检测让电脑和雷达先“对上话”3.1 设置静态IP让电脑和雷达处于同一网段雷达默认IP是192.168.1.50你的电脑也需要设置成192.168.1.x网段比如192.168.1.100子网掩码255.255.255.0网关可以不用填。如果填了网关反而可能因为路由表问题导致数据包走错网卡。Ubuntu系统下最快的方法是命令行操作。以Ubuntu 20.04为例nmcli con show sudo nmcli con mod 有线连接 ipv4.addresses 192.168.1.100/24 sudo nmcli con mod 有线连接 ipv4.method manual sudo nmcli con up 有线连接注意“有线连接”这个名字在不同机器上可能不同先用nmcli con show查看实际名称再改。改完用ip addr确认一下网卡是否已经拿到192.168.1.100。如果你用的是虚拟机优先使用桥接模式而不是NAT模式。NAT模式下虚拟机自己在一个独立网段里物理网卡接收到的雷达数据包根本进不了虚拟机这又是一个经典坑。3.2 用ping确认雷达是不是活着设置完静态IP后在终端里执行ping 192.168.1.50能连续ping通说明雷达已经上电、网线正常、IP设置也正确。ping不通的时候按照下面顺序排查看雷达指示灯有没有正常亮起或者闪烁。看网线两端是否插紧换一根网线试试。确认电脑IP是192.168.1.x不是192.168.2.x或者其他网段。确认没有网关或路由规则干扰。这里多说一句Mid-360的IP不是一定能被ping到的如果雷达内部有防火墙或者特殊固件ping不通不代表雷达坏了。但从我的经验来看绝大多数情况下能ping通就说明链路基本没问题可以放心进入下一步。3.3 防火墙和网口速率是隐藏杀手Ubuntu系统里如果开着ufw防火墙默认会拦截大量外部端口的数据导致驱动一直扫描不到雷达。最简单粗暴的排查办法就是先临时禁用它sudo ufw disable等点云能正常出来了再考虑按需放行端口不要一上来就跟防火墙较劲。Livox驱动通信主要依靠UDP广播和特定TCP端口但具体端口号不同驱动版本会有差异最省事的方式就是先关掉防火墙做验证。还有一个小技巧用ethtool查看网口协商速率ethtool eth0如果Speed显示1000Mb/s说明网口状态良好。如果显示100Mb/s说明网线质量或者网口能力存在问题点云传输很容易断。我遇到过一根看似很好的屏蔽网线实际接上去只能协商到100M最后换一根普通超五类网线反而稳定跑到千兆。4. 编译运行livox_ros_driver2拿到第一帧点云4.1 环境准备ROS2和colcon缺一不可这一步默认你已经装好了ROS2。我这边用Ubuntu 22.04加ROS2 Humble做演示Foxy版本的流程完全一样。编译工具链中colcon是ROS2的标准构建工具没装的话先装一下sudo apt update sudo apt install python3-colcon-common-extensions同时确保rosdep之类的依赖工具可用。然后创建一个工作空间mkdir -p ~/livox_ws/src cd ~/livox_ws编译之前一定要先source一下ROS2环境否则colcon会找不到rosidl相关模块source /opt/ros/humble/setup.bash4.2 拉取源码并编译进入src目录克隆Livox官方的livox_ros_driver2仓库cd ~/livox_ws/src git clone https://github.com/Livox-SDK/livox_ros_driver2.git回到工作空间根目录编译cd ~/livox_ws colcon build --packages-select livox_ros_driver2如果一切顺利会生成build、install、log三个目录。编译报错的话大概率是你没有source ROS2环境或者依赖包缺失。用rosdep install先把依赖补齐一般就能解决。sudo rosdep init rosdep update rosdep install --from-paths src --ignore-src -r -y注意rosdep init只需要执行一次如果之前已经初始化过直接执行后面两条即可。4.3 修改配置雷达型号和点云格式livox_ros_driver2的配置文件在config目录下。启动前建议先打开config文件夹里的launch文件看一下确认雷达型号选项是mid360。默认情况下Mid-360会自动被驱动识别但如果你手里有多个Livox雷达最好在配置文件里明确指定广播码避免连错设备。点云话题名默认是/livox/lidar发布的消息类型是sensor_msgs/PointCloud2点云格式是PointXYZRTL。如果你后续要做点云处理这个格式意味着每个点除了xyz坐标外还有反射率、tag和line信息。用PCL或者其他库处理时需要注意字段映射别只用xyz丢了反射率很多分割算法都要靠反射率做初筛。4.4 启动驱动并在RVIZ里观察点云启动前先source编译好的环境source ~/livox_ws/install/setup.bash然后执行ros2 launch livox_ros_driver2 livox_lidar_rviz.launch.py这个launch文件默认会打开RVIZ。点云看不到的时候绝大多数情况都不是驱动问题而是RVIZ的Fixed Frame设置不对。默认地图视角下如果Fixed Frame还是map或者odomMid-360点云会被当成不在视野范围内的点直接丢弃。正确做法是在RVIZ左侧Displays面板里把Global Options下的Fixed Frame改成livox_frame然后添加PointCloud2显示插件Topic选择/livox/lidar。改完这两步Mid-360的360度点云基本上马上就能看到。如果你不需要RVIZ只想在终端确认点云在发可以单独启动驱动ros2 launch livox_ros_driver2 livox_lidar_launch.py ros2 topic hz /livox/lidar如果能看到大概10Hz左右的频率输出就说明驱动工作正常问题一定出在可视化或者坐标系设置上。5. 常见问题与排查技巧实录实践过程中遇到的问题我按现象、原因、解决方法整理成一张速查表上面是浓缩版下面挑几个典型案例展开讲。现象可能原因排查方法雷达灯不亮或反复闪烁供电电压不足、电源功率不够、极性接反换12V/3A以上电源检查红黑线连接驱动启动后一直提示offline电脑和雷达不在同一网段、防火墙拦截、网口百兆ping通测试关闭ufw用ethtool检查速率RVIZ里看不到点云Fixed Frame错误、Topic没选对、frame_id未设置设置Fixed Frame为livox_frame添加PointCloud2点云断断续续网络链路不稳定、供电波动、电脑性能不足换网线、换电源关闭高负载程序编译时报错找不到rosidl没有source ROS2环境执行source /opt/ros/humble/setup.bash5.1 雷达灯不亮、反复重启这个现象在初次通电时非常常见。我一开始用的12V/1.5A电源雷达启动时电流需求会短暂冲高电压跌落超过雷达最低工作电压后雷达自动断电重启周而复始看上去就像灯在闪烁。排查方法是换个功率余量足的电源至少3A起步。还有一个容易被忽略的点电源线本身太长太细也会压降如果使用延长线建议用稍微粗一点的线材。5.2 驱动一直报device offline驱动启动后日志里刷屏offline这个问题我排查过很久。有一次是因为电脑上开了两个网卡笔记本电脑的Wi-Fi和有线网卡同时工作系统路由优先走Wi-Fi导致发往192.168.1.50的数据包没有走有线网卡。解决方法是临时关闭Wi-Fi或者手动指定路由sudo ip route add 192.168.1.0/24 dev eth0如果你用的是台式机确认只有连接雷达的那块网卡配置了192.168.1.x地址不要多块网卡配置同一网段否则内核路由表会乱套。5.3 RVIZ看不到点云这个问题排第二常见。驱动已经正常发布话题但RVIZ里一片空白。核心原因就两个Fixed Frame不对或者Topic没选对。我见过有人把Topic选成/livox/lidar/points却发现实际话题名是/livox/lidar两者不一致当然什么都显示不出来。最好的确认方式是在终端里ros2 topic list ros2 topic info /livox/lidartopic list能看到当前所有话题topic info能看到类型和发布者数量比在RVIZ里瞎找靠谱得多。5.4 点云断断续续、帧率上不去点云频率不稳定先查网络协商速率。用ethtool看Speed是不是1000Mb/s如果不是换网线、换网口再试。其次检查电脑负载RVIZ本身很吃GPU如果你同时开了多个3D可视化程序点云渲染会掉帧但不影响数据本身。最后还要检查一下供电是否稳定。如果雷达长时间运行后开始断断续续大概率是电源发热后输出功率下降触摸电源外壳如果发烫严重直接换更大功率的电源。6. 点云出来之后还可以做的几件事6.1 录制bag包并导出PCD文件当你看到RVIZ里的点云恭喜你Mid-360的驱动链路已经完全打通。接下来最值得做的事就是把点云数据记录下来方便做离线算法调试。ROS2里录制bag非常简单ros2 bag record /livox/lidar录完的bag包可以回放也可以转成pcd文件。Mid-360点云的话题类型是PointCloud2你可以用Python的rosbags库读取bag然后把xyz坐标和反射率写入pcd文件。这个步骤是做点云分割、配准、三维重建等更高级处理的前提。我现在处理Mid-360数据时已经养成了“先录bag再转pcd”的习惯。直接在线调试点云算法容易手忙脚乱离线数据可以反复调参效率高很多。6.2 用CloudCompare或Open3D做快速预览和处理拿到pcd文件后不要急着写算法先找一个好用的查看器。CloudCompare是免费软件Windows、Linux、macOS都有直接拖入pcd就能看。它内置了裁剪、降采样、法向量估计等常用工具适合快速观察点云质量。如果你想直接写代码处理Open3D是Python生态里最友好的点云库读pcd、体素降采样、平面分割都几行代码搞定。相比之下PCL虽然功能和性能都很强但编译配置对新手来说还是有点门槛。我个人的建议是快速验证用Open3D正式项目用到复杂算法时再切PCL。6.3 点云分割与配准的入门思路Mid-360点云质量在同类产品里算很不错的尤其适合做地形点云配准和动态点云地图相关的实验。入门时可以先试试两件事一是地面分割。用RANSAC拟合平面把地面点云和非地面点云分开。这是很多导航项目的第一步地面不剔除的话后续聚类会非常混乱。二是点云配准。先在同一位置录几帧点云用ICP或者NDT算法把相邻帧对齐感受一下Mid-360点云在配准时的收敛速度和稳定性。这个实验做通了再去尝试实时建图就会顺很多。我个人建议第一周先别急着上复杂算法花点时间把Mid-360的硬件特性摸清楚比如不同距离下点云密度、不同材质反射率表现、震动时点云是否会畸变。这些一手经验比任何教程都值钱。如果后续有时间我会再写一篇从bag包转pcd文件再到PCL点云分割的完整实战过程。
返回列表