☰
Mid-360激光雷达从接线到RVIZ出点云:ROS2驱动配置避坑指南
2026/10/5 1:24:35 网站建设 项目流程

拿到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 完整流程先过一遍,心里有个全局认知

整个流程可以拆成五步:

  1. 硬件连接:把雷达、转接线、电源、网线接好。
  2. 电脑网络配置:给电脑网口设置静态IP,让电脑和雷达处于同一网段。
  3. 环境准备:确认ROS2和colcon可用,装上必要依赖。
  4. 编译驱动:用colcon build编译livox_ros_driver2。
  5. 启动并观察点云:通过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不通的时候,按照下面顺序排查:

  1. 看雷达指示灯有没有正常亮起或者闪烁。
  2. 看网线两端是否插紧,换一根网线试试。
  3. 确认电脑IP是192.168.1.x,不是192.168.2.x或者其他网段。
  4. 确认没有网关或路由规则干扰。

这里多说一句,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.bash

4.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或者odom,Mid-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.bash

5.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/lidar

topic 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点云分割的完整实战过程。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询