尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Mid360激光雷达Ubuntu 20.04下ROS2导航配置全流程与避坑指南

发布时间:2026/9/27 1:06:15

资讯中心
01
ARTICLE

Mid360激光雷达Ubuntu 20.04下ROS2导航配置全流程与避坑指南

Mid360激光雷达Ubuntu 20.04下ROS2导航配置全流程与避坑指南
1. 为什么Mid360配ROS2导航值得单独写一篇配置记录Mid360这台固态激光雷达在机器人圈子里火起来不是没有道理的。它体积小、重量轻、视场角大最关键的是价格相比传统机械式多线雷达友好太多很多做ROS2导航的团队和个人开发者都把它当作建图和定位的首选传感器。但问题也恰恰出在这里——硬件便宜好用配套软件的安装配置却能把人折腾到怀疑人生。我自己前前后后在三台不同配置的机器上装过Livox Viewer 2踩过的坑包括但不限于Ubuntu 20.04下依赖库版本冲突、网卡IP配置后雷达死活连不上、ROS2驱动编译报错、RViz2里点云显示不出来。这些问题单独看都不算大但凑在一起就足够让一个刚接触ROS2导航的人卡上两三天。这篇内容就是把我这些实际操作经验整理出来从Livox Viewer 2的安装配置讲起一直延伸到Mid360在ROS2导航中的完整链路。适合正在用Ubuntu 20.04做机器人开发、准备把Mid360接入ROS2导航栈的朋友参考。不管你是刚装好系统的ROS2新手还是已经跑通过建图但卡在导航环节的老手应该都能从里面找到对自己有用的部分。需要提前说明的是Livox Viewer 2只是官方提供的一个可视化调试工具它的作用是帮你确认雷达硬件本身工作正常、点云数据质量达标。真正要在ROS2里做导航还需要配合livox_ros_driver2驱动包和后续的建图定位方案。这两者的关系我会在文中反复强调因为很多人一开始就搞混了以为装完Viewer 2就能直接在ROS2里用结果白白浪费时间。2. Livox Viewer 2到底解决什么问题以及它和ROS2驱动的关系2.1 先搞清楚Viewer 2的定位它是调试工具不是ROS2节点很多人第一次接触Mid360看到官方文档里提到Livox Viewer 2就下意识以为这是ROS2的一个可视化插件或者驱动包。实际上完全不是。Livox Viewer 2是一个独立的桌面应用程序通过网口直接和雷达通信把点云数据渲染出来给你看。它不依赖ROS也不依赖ROS2甚至可以在没有装ROS的纯净Ubuntu系统上运行。那为什么还要先装它因为在你把雷达接入ROS2之前必须确认三件事雷达供电正常、网络通信正常、点云数据质量符合预期。如果跳过这一步直接上ROS2驱动一旦出问题你就很难判断到底是硬件故障、网络配置错误还是驱动编译有问题。Viewer 2就是帮你排除硬件和网络层面问题的第一道关卡。我自己的习惯是拿到一台新雷达或者在新机器上部署时一定先用Viewer 2跑通看到清晰稳定的点云之后再去折腾ROS2驱动。这个顺序能帮你省下大量排查时间。2.2 Mid360的数据特性对导航意味着什么Mid360的视场角是水平360度、垂直-7度到52度这个垂直视场角是它和传统机械雷达最大的区别。传统16线雷达垂直视场角通常在±15度左右而Mid360的非重复扫描模式让它在近距离区域的点云密度非常高。这对导航来说意味着两件事近处障碍物检测更可靠但远处地面点云会相对稀疏。在ROS2导航中这个特性直接影响你的代价地图配置。如果你用默认的costmap参数可能会发现近处障碍物膨胀层过于保守导致机器人规划出的路径离障碍物太远。后面讲到导航配置时我会具体说怎么调。另外Mid360输出的是自定义格式的点云数据不是标准的sensor_msgs/PointCloud2所以必须通过livox_ros_driver2转换成ROS2能识别的消息类型。这也是为什么不能跳过驱动直接拿Viewer 2的数据做导航。2.3 整体链路的先后顺序把整个流程拆开看正确的顺序应该是这样的硬件连接与供电检查网络配置主机和雷达在同一网段安装Livox Viewer 2并验证点云安装livox_ros_driver2并编译在RViz2中确认ROS2话题数据接入建图方案如FAST-LIO或Point-LIO配置Nav2导航栈这个顺序不能乱。我见过有人跳过第3步直接装驱动结果驱动编译报错花了半天查编译问题最后发现是雷达根本没连上。先做Viewer 2验证等于先把硬件和网络这两个变量固定住后面出问题就只需要关注软件层面。3. Ubuntu 20.04下Livox Viewer 2的安装与网络配置实操3.1 下载与依赖安装Livox官网提供的Viewer 2有Linux版本下载下来是一个压缩包。Ubuntu 20.04下解压后直接运行可执行文件即可但有几个依赖需要提前装好否则会报缺少动态库的错误。我实际测试下来以下依赖是必须的sudo apt update sudo apt install -y libusb-1.0-0-dev libgl1-mesa-glx libglu1-mesa libqt5gui5 libqt5core5a libqt5widgets5其中libgl1-mesa-glx和libglu1-mesa是OpenGL渲染相关的Viewer 2的点云显示依赖它们。如果你是在没有独立显卡的工控机上跑这两个库尤其重要否则打开Viewer 2会直接黑屏或者闪退。解压后给可执行文件加权限chmod x LivoxViewer2然后直接运行。第一次运行可能会提示缺少某个.so文件根据提示用apt安装对应的库即可。这里有个小技巧用ldd命令可以一次性查看所有缺失的依赖ldd LivoxViewer2 | grep not found这条命令会列出所有找不到的动态库比一个个试错快得多。3.2 网卡IP配置最容易卡住的一步Mid360出厂默认IP是192.168.1.1XX具体看雷达标签主机需要设置一个同网段的静态IP。Ubuntu 20.04下有两种配置方式我推荐用图形界面配置因为不容易出错。打开设置里的网络选项找到你连接雷达的那个有线网口在IPv4设置里选择手动然后填写地址192.168.1.50只要不和雷达冲突同网段即可子网掩码255.255.255.0网关留空保存后重新连接网口。这里有个坑如果你同时连着WiFiUbuntu可能会优先走WiFi路由导致雷达数据包发不出去。我的做法是配置完有线网口后临时把WiFi断开确认雷达连通后再恢复。验证连通性用ping命令ping 192.168.1.1XX如果ping不通先检查网线是否插紧、雷达是否上电Mid360的指示灯会亮。如果硬件都没问题但还是ping不通可能是防火墙拦截了ICMP包临时关闭防火墙测试sudo ufw disable确认连通后记得重新启用防火墙或者添加针对雷达网段的放行规则。3.3 在Viewer 2中连接雷达并检查点云质量打开Viewer 2后软件会自动搜索同一网段内的雷达设备。如果没搜到点击手动添加输入雷达IP。连接成功后你应该能看到实时点云。这里要重点检查几个指标点云是否完整覆盖360度水平范围近距离1-3米的点云密度是否足够远处10米以上是否有明显的点云稀疏或断裂是否有异常噪点比如固定位置的孤立点如果点云质量不达标先检查雷达安装位置是否有遮挡比如线缆或者支架挡住了部分视场。Mid360的垂直视场角比较特殊安装时要注意倾斜角度确保需要检测的区域都在视场范围内。提示Viewer 2里可以调整点云的颜色映射方式建议切换到按距离映射这样能更直观地看出不同距离的点云密度分布。3.4 常见连接失败原因排查连接不上雷达的情况我遇到过好几次总结下来无非这几类现象可能原因排查方法搜不到设备网段不一致确认主机IP和雷达IP在同一网段搜到但连不上防火墙拦截临时关闭防火墙测试连上后点云卡顿网卡带宽不足检查网卡是否千兆换网线测试点云显示异常供电不足用万用表测雷达供电电压频繁断连网线质量差换一根质量好的网线其中供电不足这个问题特别隐蔽。Mid360的功耗不算低如果用的USB供电或者劣质电源适配器雷达能启动但工作不稳定。我的建议是直接用稳定的DC电源电压和电流都要留有余量。4. livox_ros_driver2的编译与ROS2话题验证4.1 驱动包的获取与工作空间准备确认Viewer 2能正常显示点云之后就可以进入ROS2环节了。livox_ros_driver2的源码在GitHub上可以找到但要注意分支选择。ROS2对应的分支和ROS1不同克隆的时候别搞错了。mkdir -p ~/livox_ws/src cd ~/livox_ws/src git clone https://github.com/Livox-SDK/livox_ros_driver2.git克隆完成后需要根据你的ROS2版本修改一些配置。Ubuntu 20.04对应的ROS2版本是Foxy或者Galactic这两个版本在编译时有一些差异。我建议用Foxy因为社区资料最多遇到问题容易搜到解决方案。进入驱动包目录修改package.xml和CMakeLists.txt中的ROS版本相关配置。具体来说把ament依赖和编译选项调整为你当前ROS2版本对应的内容。这一步如果搞错编译时会报找不到ament_cmake或者版本不匹配的错误。4.2 编译过程中的典型报错与解决编译命令cd ~/livox_ws colcon build --symlink-install第一次编译大概率会遇到报错我列几个最常见的报错一找不到livox_sdk相关头文件这是因为驱动包依赖Livox-SDK2需要提前安装。从GitHub克隆Livox-SDK2源码按照它的README编译安装到系统目录。报错二PCL库版本冲突Ubuntu 20.04默认的PCL版本是1.10如果系统里还装了其他版本的PCL编译时会找不到正确的头文件路径。解决方法是在CMakeLists.txt中显式指定PCL路径或者用apt重新安装libpcl-dev。报错三ROS2消息类型未定义livox_ros_driver2会生成自定义消息类型如果编译顺序不对依赖这些消息的节点会报错。解决方法是先单独编译消息包再编译整个工作空间colcon build --packages-select livox_ros_driver2 --symlink-install编译通过后source一下工作空间的setup.bashsource ~/livox_ws/install/setup.bash4.3 启动驱动并确认话题数据驱动包提供了launch文件但默认配置可能需要根据你的实际网络环境修改。找到launch文件中的雷达IP配置项改成你雷达的实际IP。启动驱动ros2 launch livox_ros_driver2 rviz_MID360_launch.py这个launch文件会同时启动驱动节点和RViz2。如果一切正常你应该能在RViz2中看到点云数据。这里要注意Fixed Frame的设置Mid360驱动默认发布的frame_id是livox_frameRViz2的Fixed Frame要对应设置否则点云显示不出来。用以下命令确认话题是否正常发布ros2 topic list ros2 topic hz /livox/lidar正常情况下/livox/lidar话题的发布频率应该在10Hz左右。如果频率明显偏低或者话题不存在检查驱动节点的日志输出ros2 node list ros2 node info /livox_lidar_publisher注意如果你同时开着Livox Viewer 2它会占用雷达的网口通信导致ROS2驱动无法获取数据。两者不能同时运行调试时记得关掉其中一个。4.4 点云消息格式转换的注意事项livox_ros_driver2默认发布的是自定义的CustomMsg类型而不是标准的PointCloud2。如果你后续用的建图或导航方案需要PointCloud2需要在launch文件中修改发布格式配置。在驱动的配置文件中找到publish_freq和data_src相关参数把点云发布类型改为PointCloud2。修改后重新编译启动用以下命令确认消息类型ros2 topic info /livox/lidar输出中会显示消息类型确认是sensor_msgs/msg/PointCloud2即可。这个转换看起来简单但实际影响很大。CustomMsg保留了每个点的更多信息比如反射率、标签等而PointCloud2是标准格式兼容性更好但信息有损。做导航时通常用PointCloud2就够了但如果做精细建图可能还是需要CustomMsg。5. 从点云到导航Mid360接入ROS2导航栈的关键配置5.1 建图方案的选择逻辑有了稳定的点云数据之后下一步是建图。ROS2生态里支持3D雷达的建图方案有好几个我实际用过的主要是FAST-LIO2和Point-LIO。这两个方案各有特点FAST-LIO2成熟度高社区资料多对Mid360的支持也比较好。它的核心是紧耦合的激光惯性里程计需要IMU数据配合。Mid360内置了IMU所以硬件上不需要额外配置。Point-LIO相对来说更新一些在剧烈运动场景下的鲁棒性更好但配置起来稍微复杂一点。如果你是第一次做Mid360建图我建议从FAST-LIO2开始。它的配置文件里已经有Mid360的预设参数改一下话题名称就能跑。建图完成后会得到一张点云地图这张地图就是后续导航的基础。这里要注意地图的保存格式Nav2导航栈通常需要2D栅格地图或者3D八叉树地图。如果你用的是3D点云地图需要通过octomap或者类似工具转换成导航可用的格式。5.2 代价地图中Mid360点云的适配Nav2的代价地图默认是为2D激光雷达设计的直接拿Mid360的3D点云喂进去会有问题。你需要一个pointcloud_to_laserscan的转换节点把3D点云压缩成2D激光扫描数据。这个转换节点的配置有几个关键参数min_height和max_height决定哪些高度的点云被投影到2D平面。对于室内导航通常设置在地面以上0.1米到2米之间。angle_min和angle_max设置扫描角度范围Mid360是360度所以设为-π到π。range_max最大检测距离根据实际场景设置一般10-20米足够。这些参数直接影响到代价地图的质量。如果min_height设得太低地面点云会被当成障碍物设得太高矮小的障碍物又检测不到。我的经验是先在RViz2里可视化转换后的LaserScan数据确认障碍物轮廓清晰、地面没有误检再启动导航。5.3 定位与导航的联调要点建图完成后导航需要解决两个问题机器人在哪定位以及怎么去目标点路径规划。定位方面如果用的是AMCL需要把3D点云地图转换成2D栅格地图。这个转换过程会损失一些信息但对于大多数室内场景够用了。如果场景比较复杂可以考虑用3D定位方案比如直接用点云匹配做定位。路径规划方面Nav2的全局规划器和局部规划器都需要调参。Mid360的点云密度高障碍物检测比较灵敏所以局部代价地图的膨胀半径可以适当调小让机器人能通过更窄的通道。联调时我建议分步验证先确认定位稳定机器人在RViz2中的位置和实际位置一致再测试全局路径规划能看到规划出的路径最后测试局部避障放个障碍物看机器人能不能绕开。每一步都确认没问题再进入下一步否则出了问题很难定位是哪个环节的错。5.4 实际部署中容易忽略的细节有几个细节我在实际部署中踩过坑这里单独说一下。时间同步问题Mid360的点云时间戳和IMU时间戳如果不同步建图时会出现点云错位。确保驱动配置中开启了硬件时间同步或者用PTP协议做网络时间同步。TF树配置Mid360的frame_id和机器人base_link之间的TF变换必须正确配置。如果TF树断了RViz2里什么都显示不出来。用ros2 run tf2_tools view_frames可以生成TF树图检查各坐标系之间的连接关系。CPU占用Mid360的点云数据量不小如果工控机CPU性能不足驱动节点会占用大量资源影响导航节点的实时性。可以在驱动配置中降低点云发布频率或者用降采样滤波减少数据量。网口独占前面提过Viewer 2和ROS2驱动不能同时用。实际部署时如果需要在调试和运行之间切换记得先关掉Viewer 2再启动驱动否则会莫名其妙地收不到数据。6. 我在多台设备上部署后总结的几条经验第一台设备部署时我花了整整两天后面几台基本半天就能搞定。差距主要在于对流程的熟悉程度和对坑点的预判。这里分享几条我觉得最有价值的经验。先验证硬件再折腾软件。Viewer 2这一步绝对不能省。我见过太多人跳过这步直接装驱动结果在软件层面绕了一大圈最后发现是网线没插好或者雷达供电不足。先用Viewer 2确认硬件和网络没问题后面所有问题都只会在软件层面排查范围小很多。版本匹配比什么都重要。Ubuntu 20.04、ROS2 Foxy、livox_ros_driver2的对应版本这三者必须匹配。我试过在Galactic上编译Foxy版本的驱动报了一堆莫名其妙的错误换成对应版本后一次通过。下载任何包之前先确认版本兼容性能省下大量时间。配置文件改完要重新source。ROS2的环境变量依赖setup.bash修改配置文件后如果不重新source改动的参数不会生效。这个坑我踩过不止一次明明改了IP配置但驱动还是连不上折腾半天才发现是没重新source。保留一份能跑通的配置备份。调通之后把整个工作空间的配置文件打包备份下次在新设备上部署时直接复制过去只需要改IP和少量参数就能用。这比从头配置快得多也避免了遗漏某个关键配置。遇到问题先看日志。ROS2的日志系统很完善驱动节点启动时会输出详细的连接信息和错误提示。用ros2 launch加--screen参数可以把日志输出到终端比在RViz2里瞎猜高效得多。最后说一个心态上的体会Mid360配ROS2导航这件事第一次做确实会觉得步骤多、坑多但只要完整走通一遍后面就是复制粘贴的活。关键是要理解每一步在做什么、为什么这么做而不是机械地照搬命令。理解了原理遇到新问题也能自己推理出解决方向。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。