之前在做室内无人机定位实验时,我一直在寻找一款既能覆盖足够视场角、又能在室内弱纹理环境下稳定工作的激光雷达。Livox Mid-360 在圈内讨论度很高,但真正把“驱动编译、点云配置、室内定位算法接入”完整跑通的资料并不多。这篇文章我结合自己的实际测试经历,整理一套从零开始的 Livox Mid-360 室内无人机定位测试方案,覆盖环境搭建、驱动编译、点云采集、FAST-LIO2 定位对接以及常见坑点,希望能帮你少走弯路。
先说清楚这篇文章适合谁:
- 正在做室内无人机定位、导航实验的开发者。
- 准备入手或已经入手 Livox Mid-360,但卡在驱动编译和 ROS 2 集成的朋友。
- 想用 FAST-LIO2、LIO-SAM 等算法做激光雷达定位,但不知道如何配置雷达参数的初学者。
1. Livox Mid-360 与室内无人机定位需求
1.1 Livox Mid-360 是什么
Livox Mid-360(中文名“中距 360° 激光雷达”)是 Livox 推出的一款混合固态激光雷达。它最大的特点是“非重复扫描”加“360° 水平视场角”,在三维空间内形成花瓣状扫描轨迹。和传统机械式雷达不同,Mid-360 内部没有旋转电机带动整个雷达外壳旋转,而是通过棱镜等光学结构实现大范围扫描,因此体积更小、可靠性更高、寿命更长。
在无人机平台上,体积和重量往往比性能更敏感。Mid-360 的重量大约 265g,外形小巧,功耗也不高,非常适合作为小型无人机的机载感知传感器。它的测距能力大约在 40 米左右(反射率不同会有差异),对于室内房间、走廊、仓库等场景,这个量级已经足够。
1.2 室内无人机定位的难点
室内环境与室外最大的区别在于:GNSS 信号不可用。室外无人机可以依靠 GPS/RTK 获得绝对位置,室内却不行。常见的替代方案有以下几种:
| 方案 | 原理 | 优点 | 缺点 |
|---|---|---|---|
| UWB 定位 | 通过基站与标签测距 | 精度较高、延迟低 | 需要提前布置基站,覆盖范围有限 |
| 视觉定位 | 通过摄像头特征点估计位姿 | 成本低、信息丰富 | 光照影响大,弱纹理环境容易跟丢 |
| 激光雷达定位 | 通过 LiDAR 点云与地图匹配 | 精度高、不受光照影响 | 雷达成本较高,计算量较大 |
激光雷达的优势在于主动光源,不受室内光照条件影响,而且点云包含几何结构信息,尤其适合结构化的室内环境。Livox Mid-360 的 360° 视场角让无人机在旋转、平移过程中能够持续观测周围环境,不容易因为视角盲区导致定位丢失。
1.3 为什么关注 Mid-360 的驱动兼容性
Mid-360 的驱动分为 Livox SDK 和 Livox ROS Driver 2。其中 SDK 2 是 Livox 官方推出的第二代软件开发套件,支持 Livox SDK2 通信协议;Livox ROS Driver 2 则是在 SDK 2 之上封装了 ROS 1 和 ROS 2 的驱动节点,把点云数据发布为sensor_msgs/PointCloud2消息。
很多人在 Ubuntu 22.04 上编译 SDK 2 时会遇到各种问题,比如ros-humble-desktop装不上、CMake 版本不匹配、找不到livelox头文件等。这些问题并不是个例,后面我会单开一节专门整理排查思路。
2. 环境准备与版本说明
2.1 硬件环境
- 无人机平台:建议使用支持 Pixhawk 或 PX4 自驾仪的四旋翼,室内测试建议选择 250mm 轴距以上的机架,方便搭载雷达和板载计算机。
- 板载计算机:推荐 Intel NUC、NVIDIA Jetson Orin Nano 或性能接近的 x86/ARM 设备,内存至少 8GB。后续如果要跑 FAST-LIO2,建议内存 16GB,并启用 GPU 加速(非必须,但会更流畅)。
- Livox Mid-360:一台,附带网线或供电线。
2.2 软件环境
我测试时使用的环境如下:
- 操作系统:Ubuntu 22.04 LTS
- ROS 2:ROS 2 Humble Hawsksbill
- 构建工具:CMake 3.22+、gcc/g++ 11
- Livox SDK 2:GitHub 仓库
Livox-SDK2 - Livox ROS Driver 2:GitHub 仓库
livox_ros_driver2 - 定位算法:FAST-LIO2(支持 Livox 点云)
版本需要根据你的项目实际情况调整,本文示例以常见环境为例,重点演示配置思路。如果你的系统是 Ubuntu 20.04 + ROS Noetic,流程类似,但编译时注意 CMake 和 GCC 版本差异。
2.3 网络与授权提示
安装依赖和下载源码时需要联网,建议提前准备好 GitHub 访问方式。如果公司或学校网络限制比较多,可以考虑使用国内镜像源。涉及系统级修改、权限授予或驱动程序安装时,务必在测试环境中操作,不要直接在生产的飞行控制器上随意改系统配置。
3. Livox SDK 2 与 ROS Driver 2 的编译安装
3.1 安装依赖
在开始编译之前,先把系统依赖装好。Ubuntu 22.04 默认软件源里已经包含大多数编译工具,但为了保险,建议执行以下命令:
sudo apt update sudo apt install -y cmake build-essential git sudo apt install -y libpcap-devlibpcap-dev是 Livox SDK 2 编译时需要的网络抓包依赖,缺少它可能会导致编译报错。如果你使用的是纯净的 Ubuntu Server,这个包尤其重要。
然后安装 ROS 2 Humble。这部分如果之前没有装过,可以参考官方文档,或者使用以下核心安装命令:
sudo apt install -y ros-humble-desktop如果你在安装ros-humble-desktop时遇到“无法定位软件包”的报错,通常是 ROS 2 的软件源没有正确配置。解决办法是先确认/etc/apt/sources.list.d/ros2.list存在,并确保已经执行了sudo apt update。
3.2 下载 Livox SDK 2 源码
Livox SDK 2 的 GitHub 仓库地址是https://github.com/Livox-SDK/Livox-SDK2。国内网络环境下,可以尝试使用 GitHub 镜像或代理加速。
cd ~ git clone https://github.com/Livox-SDK/Livox-SDK2.git cd Livox-SDK2 mkdir build && cd build cmake .. make -j4 sudo make install编译完成后,SDK 2 的头文件和库文件会被安装到系统目录。这一步是整个链路的基础,如果 SDK 2 编译失败,后面 ROS Driver 2 大概率也会失败。
3.3 下载并编译 livox_ros_driver2
Livox ROS Driver 2 的仓库地址是https://github.com/Livox-SDK/livox_ros_driver2。它的代码结构和旧版驱动不同,采用工作区方式组织,并且同时支持 ROS 1 和 ROS 2。
cd ~ git clone https://github.com/Livox-SDK/livox_ros_driver2.git cd livox_ros_driver2在编译之前,需要确认当前终端环境是 ROS 2 Humble:
source /opt/ros/humble/setup.bash然后用colcon编译:
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release编译成功后,在install目录下会生成livox_ros_driver2的 ROS 2 包。这里需要特别注意:每次打开新终端,都要先 source 工作区,才能使用驱动节点。
source install/setup.bash3.4 配置雷达 IP 与主机 IP
Livox Mid-360 通过网口与板载计算机通信。默认情况下,Mid-360 的 IP 地址是192.168.1.1xx段,具体数值可以在雷达机身标签上找到。主机网卡需要配置为同一网段,例如:
sudo ip addr add 192.168.1.50/24 dev eth0如果你的板载计算机使用 DHCP,可以跳过手动配置,但为了稳定起见,建议在测试前把网卡设置为静态 IP,避免 IP 变动导致连接断开。
3.5 修改雷达配置文件
livox_ros_driver2的配置位于config目录下,常用文件是livox_lidar_config.json。这里需要根据自己的雷达型号和 IP 修改参数。如果只有一台 Mid-360,配置类似这样:
{ "lidar_configs": [ { "ip": "192.168.1.1xx", "pcl_data_type": 1, "pattern_mode": 0, "blindness": 0.1 } ] }参数解释:
ip:雷达的 IP 地址。pcl_data_type:点云数据类型,1 表示发布PointCloud2。pattern_mode:扫描模式,0 为默认非重复扫描。blindness:盲区距离,单位为米,可设置为 0.1m。
另外还需要修改livox_lidar_config.json中和用户配置相关的部分,确认user_config中雷达 IP 和主机网卡配置正确。这个文件在config目录下也有示例,直接照着改即可。
4. 启动驱动节点并验证点云
4.1 启动驱动
确保已经 source 了 ROS 2 Humble 和livox_ros_driver2工作区:
source /opt/ros/humble/setup.bash source ~/livox_ros_driver2/install/setup.bash ros2 launch livox_ros_driver2 rviz_HMID.launch.py其中rviz_HMID.launch.py会同时启动驱动节点和 RViz 可视化窗口。如果一切正常,RViz 中应该能看到 Mid-360 扫描形成的三维点云。对于室内环境,你会看到墙壁、天花板、地面以及桌椅等物体的轮廓。
如果在 RViz 中看不到点云,先用ros2 topic list查看是否有点云话题:
ros2 topic list | grep pointcloud常见的输出是:
/livox/lidar然后查看话题数据是否正常发布:
ros2 topic hz /livox/lidar正常情况下,Mid-360 的点云发布频率在 10Hz 左右。如果频率为 0,说明驱动节点没有收到雷达数据,需要检查网线连接、IP 配置和配置文件中雷达 IP 是否正确。
4.2 保存点云数据
为了后续做离线定位测试,建议先用ros2 bag录制一段点云数据:
ros2 bag record /livox/lidar录制一段时间后按Ctrl+C结束。录制好的 bag 文件可以用于离线跑 FAST-LIO2 等定位算法,方便复现实验。
4.3 常见点云异常
| 现象 | 可能原因 | 解决思路 |
|---|---|---|
| 点云全黑或完全无点 | 雷达 IP 配置错误 | 检查配置文件ip字段和网卡 IP |
| 点云断断续续 | 网线接触不良或带宽不足 | 更换网线,确认网卡速率 |
| 点云只有一侧有数据 | 扫描模式设置不当 | 尝试修改pattern_mode |
| 点云出现大量噪点 | 雷达盲区太小或环境反光 | 增大blindness,调整雷达安装角度 |
5. 室内定位算法接入:以 FAST-LIO2 为例
有了 Livox Mid-360 的点云数据,下一步就是把点云送入定位算法。目前主流方案是 FAST-LIO2,它是港大 MaRS 实验室开源的激光惯性里程计算法,对 Livox 雷达原生支持很好,计算效率高,适合机载平台。
5.1 FAST-LIO2 原理简述
FAST-LIO2 的核心思想是“紧耦合的激光-惯性里程计”。它把 IMU 预积分和激光点云配准放在同一个优化框架里,通过迭代误差状态卡尔曼滤波(IESKF)不断估计无人机的位姿。和纯激光里程计相比,IMU 提供了高频运动先验,激光点云提供了低频但高精度的观测,两者互补,在快速旋转和剧烈运动场景下依然能保持稳定。
FAST-LIO2 另一个重要改进是使用了 ikd-Tree 增量式数据结构,维护局部地图的效率更高,因此对计算资源的要求比原版 FAST-LIO 更低,更适合嵌入式平台。
5.2 编译 FAST-LIO2
FAST-LIO2 的源码仓库是https://github.com/hku-mars/FAST-LIO。注意它包含多个分支,其中main分支支持 ROS 1 和 ROS 2。建议选择 ROS 2 Humble 对应版本。
cd ~ git clone https://github.com/hku-mars/FAST-LIO.git cd FAST-LIO git checkout main编译前需要安装依赖。FAST-LIO2 依赖livox_ros_driver2、eigen3以及pcl。如果你已经编译过livox_ros_driver2,那么依赖基本已经齐全。
source /opt/ros/humble/setup.bash cd ~ mkdir -p fastlio_ws/src cp -r FAST-LIO fastlio_ws/src/ cd fastlio_ws colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release编译完成后 source 工作区:
source install/setup.bash5.3 修改 FAST-LIO2 雷达配置
FAST-LIO2 的配置文件位于config目录下,常见的是avia.yaml或mid360.yaml。如果仓库里没有现成的 Mid-360 配置,可以参考avia.yaml并修改雷达类型相关字段。
关键配置如下:
common: lid_topic: "/livox/lidar" imu_topic: "/livox/imu" preprocess: lidar_type: 1 scan_line: 6 blind: 1.0其中lidar_type: 1表示 Livox 系列雷达,blind是滤波盲区,设置为 1.0m 可以过滤掉机身附近的近处杂点。如果你的平台没有 IMU 话题接入,可以先用纯激光模式测试,但定位效果会下降明显。
5.4 运行 FAST-LIO2
启动驱动节点后,再启动 FAST-LIO2:
ros2 launch fast_lio mapping.launch.py config_file:=mid360.yaml如果一切正常,终端会输出当前位姿估计,RViz 中会实时显示点云地图和雷达轨迹。
5.5 室内定位测试流程建议
室内环境比较特殊,建议按以下流程测试:
- 先让无人机静止 10 秒以上,让 FAST-LIO2 完成初始化。
- 手动缓慢移动无人机(或手持雷达模拟运动),观察轨迹是否平滑。
- 做一个“8”字路径或矩形路径,回到起点,观察位姿漂移量。
- 记录轨迹和点云地图,评估定位误差。
注意:室内测试最好在纹理丰富、几何结构明显的房间进行,例如有桌椅、柱子、墙角的会议室。如果房间空旷、墙面白板且无特征,纯激光定位也会失效,这时候需要增加视觉或 UWB 传感器融合。
6. 常见问题与排查思路
我在测试过程中踩了不少坑,这里整理成表格,方便你快速定位问题。
问题现象:Ubuntu 22.04 下
ros-humble-desktop无法定位软件包- 常见原因:ROS 2 软件源未配置或未更新
- 解决思路:检查
/etc/apt/sources.list.d/ros2.list,执行sudo apt update,如果仍有问题,添加 ROS 2 官方源后重试。
问题现象:Livox SDK 2 编译报错
pcap.h: No such file or directory- 常见原因:缺少
libpcap-dev - 解决思路:
sudo apt install -y libpcap-dev
- 常见原因:缺少
问题现象:RViz 中看不到点云
- 常见原因:雷达 IP 配置错误、网线未连接
- 解决思路:检查配置文件 IP,查看
ros2 topic hz /livox/lidar,并用ping测试雷达 IP
问题现象:点云地图出现漂移或重影
- 常见原因:IMU 话题没有接入,或雷达安装位置振动大
- 解决思路:确认 IMU 发布,检查雷达固定支架刚度,重新标定外参
问题现象:FAST-LIO2 启动后卡死或崩溃
- 常见原因:
lidar_type设置错误、scan_line参数不对 - 解决思路:检查配置文件,确认雷达类型为 1,
scan_line参考官方 Mid-360 示例(通常为 6)
- 常见原因:
问题现象:
colcon build找不到livox_ros_driver2- 常见原因:没有把
livox_ros_driver2放到同一个工作区的src目录,或没有 source 依赖工作区 - 解决思路:将两个包放在同一个
src目录,或先 sourcelivox_ros_driver2的install/setup.bash
- 常见原因:没有把
问题现象:点云帧率低于 10Hz
- 常见原因:网卡速率问题、CPU 负载过高
- 解决思路:检查网卡是否为千兆,关闭不必要的后台进程
7. 最佳实践与工程建议
7.1 机载传感器布局
Livox Mid-360 安装时要注意以下几点:
- 尽量安装在无人机中心位置,减少转动惯量。
- 雷达的坐标系要与飞控、IMU 的坐标系对齐,最好有明确的外参标定。
- 固定支架要刚性连接,避免飞行振动导致点云抖动。
7.2 外参标定
室内定位的精度很大程度上取决于雷达与 IMU、雷达与机体之间的外参是否正确。FAST-LIO2 自带了标定工具,也可以在实验室环境下使用livox_camera_calib这类工具完成雷达与相机的联合标定。如果外参不准,点云地图会出现整体偏转或扭曲,定位误差会指数级放大。
7.3 室内环境布置
虽然 Mid-360 不依赖光照,但环境几何结构仍然重要。测试场地最好具备以下条件:
- 墙面不能是纯白色大平面,尽量增加纹理或挂一些标识物。
- 地面不要全是光滑瓷砖,反射会造成点云噪点。
- 桌椅、箱子等物体的摆放不要过于混乱,避免点云遮挡和匹配歧义。
7.4 数据记录与复现
强烈建议每次测试都录制 bag 文件,并写一个简单的实验记录表:日期、场地、雷达安装角度、算法参数、轨迹起点终点、漂移误差。这样后期调参和论文实验都能有据可查。
记录命令可以统一为:
ros2 bag record /livox/lidar /livox/imu7.5 安全问题
室内无人机测试一定要注意安全:
- 安装螺旋桨保护罩。
- 首次飞行建议使用系留绳或放在防护网内。
- 人不要正对无人机桨叶平面。
- 算法验证阶段,先用“手持雷达模拟飞行”的方式跑通定位,再上真机。
8. 总结与下一步学习方向
通过这篇文章,你应该已经完成了以下几步:
- 了解了 Livox Mid-360 的基本特性和室内定位的适用性。
- 在 Ubuntu 22.04 上编译了 Livox SDK 2 和 livox_ros_driver2。
- 成功启动驱动并验证了点云数据。
- 将点云接入 FAST-LIO2,跑通了室内定位的基本流程。
- 掌握了常见问题的排查思路。
下一步建议从这几个方向继续深入:
- 学习 LIO-SAM,对比不同激光惯性里程计算法的精度和资源占用。
- 研究 FAST-LIO2 的 ikd-Tree 实现,理解局部地图更新的原理。
- 进阶尝试多传感器融合,比如 Livox 点云 + 视觉 + UWB 联合定位。
- 如果要做完整的无人机自主导航,还需要结合 PX4 或 ARDUPILOT 飞控,把定位结果反馈给飞控做位置控制。
如果你在搭建过程中遇到其他问题,欢迎在评论区留言交流。室内无人机定位的坑不少,但一旦跑通了完整链路,后面扩展建图、导航、避障都会顺畅很多。收藏这篇文章,动手实践一遍,你的收获会远超只读一遍。