ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Ubuntu 20.04部署Livox Mid-360激光雷达:从驱动安装到点云可视化全流程

2026/8/13 7:27:18 拓冰建站 浏览量
Ubuntu 20.04部署Livox Mid-360激光雷达:从驱动安装到点云可视化全流程 1. 项目概述在Ubuntu 20.04上驱动Livox Mid-360激光雷达如果你正在机器人、自动驾驶或者三维重建领域折腾手头恰好有一台Livox Mid-360激光雷达而你的开发环境又是经典的Ubuntu 20.04 LTS那么这篇内容就是为你准备的。Livox Mid-360以其非重复扫描模式和出色的性价比在众多项目中成为感知硬件的热门选择。但和许多高端传感器一样让它在一台全新的Ubuntu系统上“跑起来”从驱动安装、环境配置到数据可视化每一步都可能藏着些小坑。这篇文章我会基于我多次在Ubuntu 20.04上部署Mid-360的实际经验为你梳理出一条清晰、可复现的路径。无论你是刚接触Linux的新手还是想快速验证雷达性能的老鸟都能在这里找到直接可用的步骤和那些官方文档里不会写的“避坑指南”。我们的目标很简单让你的Mid-360在Ubuntu 20.04上顺利输出点云数据。2. 环境准备与核心依赖解析在开始安装具体的Livox SDK之前我们必须确保系统的基础环境是健全的。Ubuntu 20.04本身是一个稳定的平台但针对机器人开发尤其是需要编译C代码和进行实时数据处理的场景一些基础的开发工具和库是必不可少的。2.1 系统更新与基础开发工具首先打开终端进行系统更新并安装最基础的编译工具链。这一步看似简单但能避免后续因缺少gcc、g或make而导致的编译失败。sudo apt update sudo apt upgrade -y sudo apt install build-essential cmake git -y这里build-essential是一个元数据包它包含了gcc,g,make,libc6-dev等一整套编译所需的核心工具。cmake是Livox SDK项目构建工具而git则是从代码仓库克隆源码所必需的。2.2 ROS的考量用还是不用这是一个关键决策点。Livox官方提供了两种驱动方式独立的Livox SDK和ROS驱动包 (livox_ros_driver)。独立Livox SDK这是最底层、最轻量的驱动。它不依赖ROS直接提供C/C的API用于连接雷达、配置参数、获取原始数据包。如果你正在开发一个不基于ROS的应用程序比如一个纯C的SLAM算法或者一个自定义的数据采集程序或者你只是想最快速地测试雷达硬件是否正常那么从安装Livox SDK开始是最直接的选择。ROS驱动包如果你最终的开发框架是基于ROSROS1 Noetic或ROS2 Foxy/Humble等那么直接安装livox_ros_driver会更方便。它内部封装了Livox SDK并将雷达数据封装成了标准的ROS话题如/livox/lidar可以无缝接入ROS生态方便地与Rviz、Gazebo等工具集成。对于Ubuntu 20.04其对应的官方ROS版本是ROS1 Noetic。但请注意Livox的ROS驱动对ROS版本有要求。根据我的经验如果你决定使用ROS方案需要先确认你打算使用的livox_ros_driver版本是否明确支持ROS Noetic。有时你可能需要从源码编译特定的分支。实操心得对于初次接触Livox雷达的用户我强烈建议先从独立的Livox SDK开始。理由有三第一安装过程更简单依赖更少能快速验证硬件第二即使后续要转ROS你也已经理解了底层驱动的工作方式排错能力更强第三避免了因ROS环境配置复杂而引入的额外问题。本文的核心也将围绕Livox SDK的安装和使用展开这是基石。2.3 其他可能需要的依赖根据你后续的应用可能还需要安装一些库例如用于点云可视化的PCL点云库开发文件或者用于图像处理的OpenCV。你可以根据需要提前安装sudo apt install libpcl-dev libopencv-dev -y但为了保持环境纯净我们可以在Livox SDK安装成功后再按需添加。3. Livox SDK 的安装与编译详解这是让Mid-360工作的核心步骤。我们将从官方仓库获取最新的SDK源码并进行编译。3.1 克隆源代码与依赖安装首先选择一个合适的工作目录例如~/livox_ws然后克隆Livox SDK的仓库。mkdir -p ~/livox_ws cd ~/livox_ws git clone https://github.com/Livox-SDK/Livox-SDK.git cd Livox-SDK进入SDK目录后不要急于编译。Livox SDK依赖libcurl库来处理网络通信用于与Livox Viewer或自研软件通信以及libjsoncpp来解析配置文件。我们需要先安装它们sudo apt install libcurl4-openssl-dev libjsoncpp-dev -y3.2 编译构建与安装Livox SDK使用CMake进行构建这是现代C项目的标准做法。我们创建一个独立的构建目录build并在其中进行编译这是一种良好的实践可以保持源码目录的清洁。mkdir build cd build cmake .. make sudo make install逐条命令解释cmake ..在build目录中运行CMake它会读取上一级目录..的CMakeLists.txt文件检测系统环境并生成适用于你系统的Makefile。make根据生成的Makefile调用g等编译器编译整个项目。这个过程可能会花一两分钟请耐心等待。sudo make install将编译好的库文件如liblivox_sdk.so和头文件安装到系统目录通常是/usr/local/lib和/usr/local/include。这样你在任何地方编写程序时都可以通过#include livox_sdk.h来引用SDK。3.3 验证安装与配置用户权限安装完成后需要让系统知道新安装的库在哪里。执行以下命令更新动态链接库的缓存sudo ldconfig接下来是一个极其重要但容易被忽略的步骤用户权限。Livox Mid-360通过USB连接在Linux系统下普通用户默认无权直接访问USB设备。如果不配置运行示例程序时会报错提示无法打开设备或权限不足。我们需要创建一个udev规则文件让系统在雷达插入时自动赋予当前用户组如plugdev读写权限。# 创建并编辑udev规则文件 sudo nano /etc/udev/rules.d/99-livox.rules在打开的文件中添加以下内容对于Mid-360其USB产品ID通常是# Livox Mid-360 SUBSYSTEMusb, ATTRS{idVendor}2d95, ATTRS{idProduct}0001, MODE0666, GROUPplugdev保存并退出编辑器在nano中按CtrlX然后按Y确认再按Enter。之后重新加载udev规则并重启udev服务或者简单粗暴地重新插拔雷达sudo udevadm control --reload-rules sudo udevadm trigger注意事项确保你的用户已经加入了plugdev组。可以使用命令groups查看当前用户所在组。如果没有使用sudo usermod -aG plugdev $USER添加然后需要注销并重新登录才能生效。这是很多新手卡住的地方明明规则写了但就是没权限问题往往出在用户没加组或者没重新登录。4. 运行示例程序与数据可视化驱动安装好了权限也配置了现在该让雷达“动起来”了。Livox SDK在sample目录下提供了丰富的示例程序我们以最简单的lidar_sample为例。4.1 连接硬件与运行示例物理连接使用随雷达附带的USB-C数据线将Livox Mid-360连接到电脑的USB 3.0端口。确保连接稳固。雷达上电后指示灯会开始闪烁。运行示例程序回到之前编译SDK的build目录运行示例程序。cd ~/livox_ws/Livox-SDK/build/sample/lidar ./lidar_sample如果一切顺利你将在终端中看到持续的日志输出显示SDK已初始化、检测到雷达、并开始接收数据包。这证明你的驱动安装和硬件连接是完全正确的。4.2 使用Livox Viewer进行高级可视化命令行输出数据包信息虽然能证明雷达在工作但我们更希望“看到”点云。Livox官方提供了强大的图形化工具——Livox Viewer。它不仅可以实时显示点云还能进行雷达参数配置、固件升级、录制和回放数据包。下载Livox Viewer前往Livox官方网站的下载中心找到适用于Linuxx86_64的Livox Viewer安装包。通常是一个.tar.gz压缩文件。解压与运行将下载的文件解压到任意目录例如~/Downloads。tar -xzf Livox_Viewer*.tar.gz -C ~/Downloads/ cd ~/Downloads/Livox_Viewer* ./livox_viewer.sh连接与查看运行Viewer后在软件界面中你应该能自动看到局域网内已连接的Mid-360设备。点击连接选择正确的数据源通常是Livox Lidar稍等片刻绚丽的三维点云就会呈现在你面前。你可以用鼠标旋转、缩放视角感受Mid-360非重复扫描模式带来的独特视觉效果。实操心得首次运行Livox Viewer时可能会遇到一个关于libpng库的警告或错误。这是因为不同系统自带的库版本可能不兼容。一个有效的解决方法是在Livox Viewer的目录下通常有一个lib或lib64文件夹里面包含了它所需的所有依赖库。确保你的启动脚本如livox_viewer.sh正确地将该库路径添加到了LD_LIBRARY_PATH环境变量中。例如脚本里可能有类似export LD_LIBRARY_PATH./lib:$LD_LIBRARY_PATH的语句。如果手动启动你也可以在终端中先执行这条命令再运行Viewer的可执行文件。5. 常见问题排查与深度调试指南即使按照步骤操作也难免会遇到问题。下面是我总结的几个最常见的问题及其解决方法。5.1 编译与链接错误问题现象可能原因解决方案fatal error: livox_sdk.h: No such file or directory头文件未找到。make成功了但sudo make install没执行或失败了。确保执行了sudo make install。可以手动检查/usr/local/include目录下是否有livox_sdk.h文件。error while loading shared libraries: liblivox_sdk.so: cannot open shared object file运行时链接库未找到。库已安装但系统未刷新缓存。执行sudo ldconfig更新库缓存。检查/usr/local/lib下是否存在liblivox_sdk.so并用ldconfig -p | grep livox验证。CMake Error at CMakeLists.txt:XX (message): jsoncpp not found!缺少libjsoncpp-dev依赖。运行sudo apt install libjsoncpp-dev -y安装。5.2 雷达连接与权限问题这是最高频的问题区。问题运行示例程序后日志一直显示等待设备连接或者直接报错failed to init livox lidar sdk。排查步骤检查物理连接换一条高质量的USB 3.0数据线试试并确保连接的是USB 3.0蓝色接口端口。检查设备识别在终端输入lsusb命令。你应该能看到一行包含2d95:0001的设备信息。如果看不到说明系统根本没识别到雷达问题在硬件或线缆。检查udev规则确认/etc/udev/rules.d/99-livox.rules文件内容正确并且执行了sudo udevadm control --reload-rules。检查用户组运行groups \| grep plugdev确认当前用户在plugdev组中。如果不在用sudo usermod -aG plugdev $USER添加并务必注销后重新登录。手动检查权限找到雷达对应的设备文件通常是/dev/bus/usb/00X/00YX和Y是总线号和设备号可通过lsusb输出的信息结合ls -l /dev/bus/usb/00X/00Y查看。确保其权限是crw-rw-rw-所属组是plugdev。5.3 Livox Viewer运行问题问题点击Livox Viewer脚本或可执行文件没反应或闪退。排查在终端中直接运行可执行文件如./livox_viewer查看具体的错误输出。这比盲目猜测有效得多。常见的库缺失错误如libQt5Core.so.5 not found可以通过安装对应的Qt库解决sudo apt install libqt5core5a libqt5gui5 libqt5widgets5。如果提示与现有库版本冲突可以尝试使用Livox Viewer自带的lib目录下的库通过修改LD_LIBRARY_PATH环境变量来优先使用它们。5.4 数据异常与性能调优当雷达能连接并能看到点云后你可能会关注数据质量。点云稀疏或扭曲首先确保雷达固件是最新版本。可以在Livox Viewer中检查并升级固件。其次检查雷达的安装位置是否稳固避免高频振动。对于Mid-360其非重复扫描模式在静态场景下会随时间积累越来越多的点但在动态场景或快速移动中需要算法进行运动补偿。CPU占用过高SDK示例程序可能没有做优化。在实际项目中处理点云数据流是计算密集型任务。考虑使用多线程将数据接收、解包、处理/可视化放在不同线程中。对于ROS驱动可以调整livox_ros_driver发布话题的频率publish_freq和点云格式point_type使用XYZRTL比XYZIRT数据量小以减轻系统负载。6. 从SDK到实际应用下一步做什么成功运行示例和Viewer只是万里长征第一步。接下来你需要思考如何将这些点云数据用在你自己的项目中。6.1 理解数据流与SDK编程花时间阅读livox_sdk.h头文件了解核心的数据结构和回调函数。关键的结构体是LivoxPoint点云数据结构和LivoxEthPacket原始数据包结构。关键的函数是设置回调当雷达有点云数据或状态变化时SDK会调用你注册的函数。你需要编写自己的回调函数在里面解析数据包将其转换为适合你算法处理的格式例如PCL的PointCloud对象。6.2 集成到ROS生态如果你决定使用ROS接下来的步骤是编译安装livox_ros_driver。这个过程需要你已经有一个可用的ROS Noetic工作空间。大致步骤如下# 假设你的ROS工作空间是 ~/catkin_ws cd ~/catkin_ws/src git clone https://github.com/Livox-SDK/livox_ros_driver.git cd ~/catkin_ws catkin_make source devel/setup.bash编译成功后你可以通过roslaunch livox_ros_driver livox_lidar.launch来启动驱动节点。之后用rostopic echo /livox/lidar或rviz就能查看雷达发布的标准ROS点云消息了。6.3 数据录制与离线处理Livox Viewer自带数据录制功能这对于算法开发和调试至关重要。你可以录制不同场景下的.lvx格式数据包。对于离线处理Livox SDK提供了lvx_file示例展示了如何读取.lvx文件并解析其中的帧数据。你可以基于此编写自己的离线数据解析工具将.lvx转换为更通用的格式如.pcd(PCL) 或.bag(ROS)。在整个过程中保持耐心仔细阅读终端输出的错误信息善用网络搜索结合错误代码和关键词大部分问题都能找到解决方案。记住让硬件跑通是第一步更重要的是理解数据如何产生、如何流动以及如何高效地利用它来解决你的实际问题。