
雷达传输数据环境配置
Livox Mid-360 在 Ubuntu 24.04 + ROS 2 Jazzy 环境下从零配置工作汇报
一、工作背景
本阶段工作的主要目标,是在现有 Ubuntu 24.04 + ROS 2 Jazzy 环境基础上,完成 Livox Mid-360 激光雷达 的从零接入与基础运行验证,为后续的点云采集、SLAM 建图和三维重建实验打通前置链路。
- 完成 Mid-360 硬件接入与网络配置
- 在 Ubuntu 24.04 上部署 Livox 相关开发环境
- 编译并安装
Livox-SDK2 - 编译并运行
livox_ros_driver2 - 在 ROS 2 Jazzy 环境下成功接收点云数据
- 在 RViz 中完成实时点云可视化
- 完成第一包 rosbag 数据录制
二、工作目标
结合当前研究任务,本次从零配置工作的具体目标如下:
- 梳理 Mid-360 在 Ubuntu 24.04 + ROS 2 Jazzy 环境下的部署流程。
- 解决 Livox 驱动在新系统、新编译器环境下可能出现的兼容性问题。
- 建立一套可复现的配置流程,便于后续在其他设备或新环境中快速迁移。
- 完成雷达数据接入验证,并为后续的点云建图与三维重建实验准备输入数据。
三、当前环境与基础条件
3.1 硬件条件
本次工作使用的硬件条件如下:
- Livox Mid-360 激光雷达
- 对应供电设备
- 网线 / 交换机
- Ubuntu 24.04 主机
- 主机有线网口可用
3.2 软件环境
当前主机软件环境如下:
- Ubuntu 24.04 LTS
- ROS 2 Jazzy
- 终端与
sudo权限正常 - 可正常使用
git、cmake、apt
3.3 环境特点说明
需要说明的是,当前环境中的 Ubuntu 24.04 + ROS 2 Jazzy 并不是 Livox 官方资料里最常见的推荐组合。与传统的 Ubuntu 20.04 / 22.04 + ROS 2 Foxy / Humble 相比,这套环境在使用 Livox-SDK2 和 livox_ros_driver2 时,可能会出现一些兼容性问题。
因此,本次工作的一个重点,就是在不更换现有主系统的前提下,将 Mid-360 基础链路跑通,并总结出针对 24.04 + Jazzy 的配置经验。
四、总体实施思路
本次配置工作没有直接进入三维重建阶段,而是按“先打通采集链路,再开展上层算法”的思路推进。总体流程如下:
硬件接通
→ 网络配置
→ 安装基础依赖
→ 编译 Livox-SDK2
→ 创建 ROS 2 工作区
→ 编译 livox_ros_driver2
→ 配置 Mid-360 JSON 文件
→ 配置主机网卡 IP
→ 启动驱动并查看实时点云
→ 录制 rosbag 数据
→ 为后续 SLAM / 三维重建做准备
这样做的原因是:当前只有雷达,没有现成数据文件,也没有直接可用的重建输入,因此必须先完成实时点云接入与数据录制,后续的建图和重建才有基础。
五、具体工作过程
5.1 系统与 ROS 2 环境检查
首先对系统基础环境进行确认,保证当前主机为 Ubuntu 24.04,且 ROS 2 Jazzy 已正确安装并可使用。
使用的检查命令如下:
lsb_release -a
source /opt/ros/jazzy/setup.bash
ros2 --version
通过以上检查,可以确认:
- 系统版本正确
- ROS 2 Jazzy 已可正常加载
- 后续 ROS 2 工作区构建具备前提条件
5.2 安装基础依赖
在进入 Livox 相关源码编译前,先补齐必要的构建依赖与点云依赖。安装命令如下:
sudo apt update
sudo apt install -y \
build-essential \
cmake \
git \
pkg-config \
libapr1-dev \
libpcl-dev \
python3-colcon-common-extensions
本步骤的主要作用是为后续的 SDK 编译、ROS 2 工作区构建以及点云驱动依赖准备基础环境。
5.3 编译并安装 Livox-SDK2
在完成依赖安装后,开始部署 Livox-SDK2。该组件是后续 livox_ros_driver2 的基础依赖,因此必须先完成安装。
执行步骤如下:
cd ~
git clone https://github.com/Livox-SDK/Livox-SDK2.git
cd Livox-SDK2
mkdir -p build
cd build
cmake ..
make -j$(nproc)
sudo make install
5.3.1 遇到的典型问题
在 Ubuntu 24.04 环境下,Livox-SDK2 可能出现部分源码头文件不完整、编译器检查更严格等问题,常见报错集中在以下几类:
uint8_t、uint32_t、int64_t等整型定义找不到- 某些头文件缺少标准整型声明
- GCC 13 下兼容性更严格导致旧代码暴露问题
5.3.2 处理思路
若出现上述报错,可检查相关头文件并补充:
#include <cstdint>
通常优先检查以下文件:
sdk_core/comm/define.hsdk_core/logger_handler/file_manager.h
处理完成后重新执行:
cd ~/Livox-SDK2/build
cmake ..
make -j$(nproc)
sudo make install
本步骤的目标是确保系统中已经安装好可被驱动调用的 Livox SDK 动态库。
5.4 创建 ROS 2 工作区
在完成 SDK 安装后,开始建立专用于 Livox 雷达驱动的 ROS 2 工作区。创建方式如下:
mkdir -p ~/ws_livox/src
cd ~/ws_livox/src
这样做的目的是将雷达驱动与其他项目分离,避免后续多项目环境相互影响,也便于单独维护和调试。
5.5 获取并编译 livox_ros_driver2
在工作区中拉取驱动源码:
git clone https://github.com/Livox-SDK/livox_ros_driver2.git
进入驱动目录后,先加载 Jazzy 环境:
cd ~/ws_livox/src/livox_ros_driver2
source /opt/ros/jazzy/setup.bash
由于当前环境为 Jazzy,而驱动脚本本身更偏向 Foxy / Humble 体系,因此优先采用以下构建方式:
./build.sh humble
这样做的目的,是尽量走驱动中更稳定的一套 ROS 2 构建分支,以降低直接使用 Jazzy 可能带来的编译问题。
5.5.1 如果构建失败
若 ./build.sh humble 方式未通过,可采用手动构建方式重新编译:
cd ~/ws_livox/src/livox_ros_driver2
rm -rf ../../build ../../install ../../log
cp -f package_ROS2.xml package.xml
cp -rf launch_ROS2 launch
cd ~/ws_livox
source /opt/ros/jazzy/setup.bash
colcon build --cmake-args -DROS_EDITION=ROS2 -DHUMBLE_ROS=humble
此方式本质上是在 ROS 2 工作区内强制指定驱动按 ROS2 + Humble 的兼容路径进行构建,通常比直接用默认分支更容易成功。
5.6 配置 Mid-360 网络参数
驱动编译完成后,下一步是修改 Mid-360 对应的 JSON 配置文件,使雷达 IP 与主机网卡 IP 处于同一网段。
编辑命令如下:
nano ~/ws_livox/src/livox_ros_driver2/config/MID360_config1.json
配置时重点关注以下字段:
lidar_iphost_ippoint_data_portimu_data_port
可参考如下配置:
{
"MID360": {
"lidar_net_info": {
"cmd_data_port": 56100,
"push_msg_port": 56200,
"point_data_port": 56300,
"imu_data_port": 56400,
"log_data_port": 56500
},
"host_net_info": [
{
"lidar_ip": ["192.168.1.100"],
"host_ip": "192.168.1.5",
"cmd_data_port": 56101,
"push_msg_port": 56201,
"point_data_port": 56301,
"imu_data_port": 56401,
"log_data_port": 56501
}
]
},
"lidar_configs": [
{
"ip": "192.168.1.100",
"pcl_data_type": 1,
"pattern_mode": 0,
"extrinsic_parameter": {
"roll": 0.0,
"pitch": 0.0,
"yaw": 0.0,
"x": 0,
"y": 0,
"z": 0
}
}
]
}
本次配置中,主机 IP 与雷达 IP 只要位于同一网段即可。首次部署时,建议尽量沿用示例端口,不对端口号做额外修改,以减少排查复杂度。
5.7 配置主机有线网卡 IP
完成 JSON 文件设置后,还需要将 Ubuntu 主机的有线网卡手动设置到与雷达相同的网段。
首先查看网卡名称:
ip addr
若有线网卡名称为 enp3s0,可执行:
sudo ip addr add 192.168.1.5/24 dev enp3s0
sudo ip link set enp3s0 up
ip addr show dev enp3s0
若提示地址已存在,可以先清空再重新设置:
sudo ip addr flush dev enp3s0
sudo ip addr add 192.168.1.5/24 dev enp3s0
sudo ip link set enp3s0 up
本步骤完成后,主机与 Mid-360 在网络层面上应已具备通信条件。
5.8 启动驱动并验证点云接收
网络和配置文件准备完成后,开始启动 Livox ROS 2 驱动。执行命令如下:
cd ~/ws_livox
source /opt/ros/jazzy/setup.bash
source install/setup.bash
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib
ros2 launch livox_ros_driver2 rviz_MID360_launch.py
本步骤的目标包括:
- 启动 Mid-360 驱动节点
- 发布点云相关 ROS 2 话题
- 自动打开 RViz 进行可视化验证
其中,添加 LD_LIBRARY_PATH 的目的是防止系统运行时找不到 Livox-SDK2 安装后的共享库文件。
5.9 RViz 点云可视化检查
若驱动启动成功但 RViz 未正常显示点云,需要重点检查以下内容:
(1)Fixed Frame 设置
在 RViz 中,将 Fixed Frame 设置为:
livox_frame
(2)雷达供电与网线连接
检查 Mid-360 是否正常供电、网线是否接触良好、交换机或网口指示灯是否正常。
(3)IP 是否同网段
确认:
- 雷达 IP
- 主机网卡 IP
- JSON 文件中的配置 IP
三者一致且处于同一网段。
(4)共享库问题
如果出现类似如下报错:
liblivox_lidar_sdk_shared.so: cannot open shared object file
则说明运行时未正确找到 SDK 动态库,需要重新导出:
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib
必要时可将其写入 ~/.bashrc 以长期生效。
5.10 查看 ROS 2 话题与数据状态
为了进一步确认雷达数据是否正常发布,可打开新终端执行:
cd ~/ws_livox
source /opt/ros/jazzy/setup.bash
source install/setup.bash
ros2 topic list
然后查看点云话题频率:
ros2 topic hz /livox/lidar
需要注意的是,具体话题名称可能会随 launch 配置变化,因此建议先通过 ros2 topic list 确认实际发布名称,再查看频率。
本步骤的意义在于:即使 RViz 没有正常显示,也能通过 ROS 2 话题层面判断驱动是否真正收到并发布了点云数据。
5.11 录制第一包 rosbag 数据
在确认点云链路正常后,进行第一包原始数据录制,命令如下:
cd ~/ws_livox
source /opt/ros/jazzy/setup.bash
source install/setup.bash
ros2 bag record -a
第一次录制建议控制在较短时长,优先选择小场景进行测试,例如:
- 一个房间
- 一段走廊
- 一张桌子周边区域
录制时建议:
- 移动速度较慢
- 尽量平稳
- 保留一定重复路径
- 时长控制在 30 秒到 1 分钟左右
这样做的目的是先验证整个采集链路,再为后续点云回放、SLAM 建图和三维重建提供第一份测试数据。
六、本阶段工作结果
按照上述流程,本阶段工作的预期结果应包括以下几项:
- 已完成 Ubuntu 24.04 + ROS 2 Jazzy 基础环境确认。
- 已完成
Livox-SDK2的部署与安装。 - 已完成
livox_ros_driver2工作区建立与驱动编译。 - 已完成 Mid-360 网络参数配置。
- 已完成主机网卡与雷达设备的同网段设置。
- 已完成 ROS 2 驱动启动测试。
- 已在 RViz 中完成实时点云显示验证。
- 已完成第一包 rosbag 数据录制。
如果上述结果全部达成,则说明当前系统已经具备开展下一阶段实验的基础条件。
七、当前存在的问题与风险点
虽然本阶段总体目标明确,但在 Ubuntu 24.04 + Jazzy 环境下仍存在若干风险点,需要在后续工作中持续关注:
7.1 官方支持力度有限
当前系统组合并非传统推荐环境,因此出现兼容性问题的概率相对更高。
7.2 SDK 与驱动的版本适配问题
在 24.04 / GCC 13 条件下,旧版本源码可能暴露更多编译问题,需要补充头文件或调整构建方式。
7.3 网络配置易出错
雷达项目中最常见的问题之一并不是代码,而是:
- IP 配置错误
- 网卡选择错误
- 配置文件与实际网口不一致
7.4 可视化不等于链路失败
RViz 没有点云显示时,不一定是驱动完全失败,也可能只是 Fixed Frame、话题选择或 RViz 配置问题,因此需要配合 ros2 topic list 与 ros2 topic hz 一起判断。
八、下一阶段工作计划
完成本次“从零配置”后,下一阶段将进入数据处理与建图实验阶段。计划工作如下:
- 对录制得到的 rosbag 数据进行回放验证。
- 接入 LiDAR 里程计或 SLAM 算法进行点云建图。
- 输出全局点云地图并进行去噪、滤波、下采样等处理。
- 在条件允许时,尝试基于点云生成表面模型,实现初步三维重建。
- 进一步评估 Mid-360 在实际场景中的建图质量与稳定性。
从研究路线来看,只有雷达时,最核心的阶段性成果通常是“全局点云地图”,而不是一开始就生成带纹理的三维模型。因此后续工作会优先围绕点云建图展开。
九、附录:关键命令整理
9.1 检查系统与 ROS 2
lsb_release -a
source /opt/ros/jazzy/setup.bash
ros2 --version
9.2 安装依赖
sudo apt update
sudo apt install -y \
build-essential \
cmake \
git \
pkg-config \
libapr1-dev \
libpcl-dev \
python3-colcon-common-extensions
9.3 安装 Livox-SDK2
cd ~
git clone https://github.com/Livox-SDK/Livox-SDK2.git
cd Livox-SDK2
mkdir -p build
cd build
cmake ..
make -j$(nproc)
sudo make install
9.4 构建驱动
mkdir -p ~/ws_livox/src
cd ~/ws_livox/src
git clone https://github.com/Livox-SDK/livox_ros_driver2.git
cd livox_ros_driver2
source /opt/ros/jazzy/setup.bash
./build.sh humble
9.5 手动构建驱动
cd ~/ws_livox/src/livox_ros_driver2
rm -rf ../../build ../../install ../../log
cp -f package_ROS2.xml package.xml
cp -rf launch_ROS2 launch
cd ~/ws_livox
source /opt/ros/jazzy/setup.bash
colcon build --cmake-args -DROS_EDITION=ROS2 -DHUMBLE_ROS=humble
9.6 配置网卡
ip addr
sudo ip addr add 192.168.1.5/24 dev enp3s0
sudo ip link set enp3s0 up
9.7 启动点云可视化
cd ~/ws_livox
source /opt/ros/jazzy/setup.bash
source install/setup.bash
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib
ros2 launch livox_ros_driver2 rviz_MID360_launch.py
9.8 查看话题
ros2 topic list
ros2 topic hz /livox/lidar
9.9 录制 rosbag
ros2 bag record -a
十、总结
本次工作围绕 Livox Mid-360 在 Ubuntu 24.04 + ROS 2 Jazzy 环境下的从零配置 展开,重点解决了雷达设备接入、开发环境部署、驱动编译、点云可视化和数据录制等基础问题。
整体来看,本阶段工作属于后续三维重建任务的前置准备。只有先把“设备—驱动—ROS 2—点云—录包”这条链路跑通,后续的点云建图、位姿估计与三维重建实验才具备实际开展条件。
因此,本次工作的价值主要体现在两点:
- 打通了 Mid-360 在现有系统环境下的基础运行链路;
- 为后续激光 SLAM 与三维重建研究提供了可复现的环境基础与数据采集条件。