如何把 Livox 点云接入 3D 检测流水线:livox_ros_driver2 数据准备完整指南
【免费下载链接】livox_ros_driver2Livox device driver under Ros(Compatible with ros and ros2), support Lidar HAP and Mid-360.项目地址: https://gitcode.com/GitHub_Trending/li/livox_ros_driver2
livox_ros_driver2是 Livox 第二代 ROS/ROS2 激光雷达驱动包,支持 HAP 与 Mid-360 系列雷达,能把雷达原始点云实时发布为 ROS 话题,是搭建PointPillars 3D 目标检测数据流水线的第一个关键环节。本指南带你从连接、参数配置到话题订阅,一步步把「干净、规整的点云数据」送进你的检测算法。
一、数据是怎么流动的:先看懂整条链路
在动手之前,理解数据流向能帮你少踩很多坑:
Livox 雷达 (以太网) → livox_ros_driver2 节点 → ROS 点云话题 (livox/lidar) → 你的 PointPillars 数据节点(订阅/转存/坐标变换)驱动包内部由三个核心模块协作完成:
- 设备管理:src/lds.cpp 负责雷达连接与重连;
- 数据处理与转发:src/lddc.cpp 负责点云缓冲、格式转换与发布;
- 话题创建逻辑见 src/lddc.cpp,点云统一发布在
livox/lidar话题(单话题模式)或livox/lidar_<雷达IP>(多话题模式)。
二、选择话题与点云格式(最关键一步)
驱动通过xfer_format参数决定点云以哪种格式发布,这直接影响下游 PointPillars 的数据节点怎么写:
| xfer_format | 格式 | 适用场景 |
|---|---|---|
| 0 | Livox PointCloud2(PointXYZRTLT) | 推荐。含强度、tag、线号、逐点时间戳,信息最全 |
| 1 | Livox 自定义格式(CustomMsg) | 带宽更省,适合高频录制原始数据 |
| 2 | PCL 标准PointXYZI(仅 ROS1) | 下游直接用 PCL 时最方便 |
格式 0 的字段结构如下,每个点自带时间戳,对做时间对齐非常友好:
float32 x, y, z # 坐标(米) float32 intensity # 反射强度 0.0~255.0 uint8 tag, line # Livox 标记 / 激光线号 float64 timestamp # 该点的时间戳自定义格式的字段定义在 msg/CustomPoint.msg 和 msg/CustomMsg.msg。
💡 经验值:做检测数据准备优先选
xfer_format=0;如果训练数据量大、想省存储空间,可以录制xfer_format=1再离线转换。
三、三个必调的核心参数
所有参数都在 launch 文件中配置,只需重点关注三个(详见 README.md 第 3.2 节):
| 参数 | 作用 | 建议值 |
|---|---|---|
xfer_format | 点云发布格式 | 0(PointXYZRTLT) |
publish_freq | 点云发布频率(Hz),默认 10.0 | 10.0(采集够用且不过载) |
multi_topic | 单话题(0)还是每雷达独立话题(1) | 单机雷达用 0 即可 |
以 Mid-360 的 ROS2 launch 为例,参数集中在 launch_ROS2/rviz_MID360_launch.py 顶部,修改后保存即可:
xfer_format = 0 # 0-PointCloud2(PointXYZRTLT) publish_freq = 10.0 frame_id = 'livox_frame'ROS1 用户对应参考 launch_ROS1/msg_MID360.launch,launch 文件清单(HAP/Mid360/混合,含 rviz 可视化版本)都列在 README.md 的表格中。
四、配置雷达连接:JSON 配置文件
雷达的 IP、端口、扫描模式等不写在代码里,而是由一个 JSON 配置文件管理,launch 文件通过user_config_path参数指向它。
- HAP 配置:config/HAP_config.json
- Mid-360 配置:config/MID360_config.json
- HAP + Mid-360 混联配置:config/mixed_HAP_MID360_config.json
做检测数据准备时,重点关注lidar_configs里的四个字段:
| 字段 | 说明 |
|---|---|
ip | 雷达 IP(默认192.168.1.100,主机 IP 建议192.168.1.5) |
pcl_data_type | 数据精度:1=32 位直角坐标(推荐),2=16 位,3=球坐标 |
pattern_mode | 扫描模式,0 为不重复扫描 |
extrinsic_parameter | roll/pitch/yaw + x/y/z 外参,可在这里直接做雷达→车体坐标的粗对齐 |
🎯 小技巧:把外参直接写进
extrinsic_parameter,点云出来时就已对齐到车体系,下游 PointPillars 就少一步坐标变换。
五、启动驱动并验证数据
ROS1(Noetic 为例):
source /opt/ros/noetic/setup.sh source ../../devel/setup.sh roslaunch livox_ros_driver2 rviz_MID360.launchROS2(Humble 为例):
source /opt/ros/humble/setup.sh source ../../install/setup.sh ros2 launch livox_ros_driver2 rviz_MID360_launch.pyrviz_*系列会自动打开 RViz(显示配置在 config/display_point_cloud_ROS2.rviz),能直观看到点云是否成帧、分布是否正常。随后在另一个终端确认话题:
ros2 topic hz /livox/lidar # 应约为 publish_freq 设定值 ros2 topic echo /livox/lidar --no-arr | head如果 RViz 里点云不显示,先检查 Fixed Frame 是否为livox_frame(README.md FAQ 6.1 有说明)。
六、录制数据集:离线训练的基础
PointPillars 训练通常需要大批量离线数据,驱动内置了 bag 录制开关(rosbag_enable/enable_lidar_bag、enable_imu_bag),打开后驱动会自动订阅并落盘,省去额外部署记录节点。IMU 数据发布在livox/imu话题,对后续做时间戳对齐同样重要。
录制完成后,数据节点里要做的常规预处理:
- 坐标统一:把
livox_frame的点云变换到你的基准系(若已在 JSON 里配好外参,此步可省); - 强度归一化:
intensity取值 0~255,建议除以 255 归一化后喂给网络; - 时间戳对齐:格式 0 提供逐点
timestamp,可精确对齐多传感器数据; - Pillar 划分前:确认雷达安装高度,保证点云 z 轴范围落在网络配置的 height bin 内。
七、关键文件速查
| 文件 | 说明 |
|---|---|
| README.md | 完整使用手册(环境、构建、参数、FAQ) |
| config/HAP_config.json | HAP 雷达 JSON 配置 |
| config/MID360_config.json | Mid-360 雷达 JSON 配置 |
| msg/CustomPoint.msg | 自定义点云字段定义 |
| launch_ROS1/msg_MID360.launch | ROS1 启动示例 |
| launch_ROS2/rviz_MID360_launch.py | ROS2 启动示例 |
| src/lddc.cpp | 点云处理与话题发布核心逻辑 |
| src/call_back/livox_lidar_callback.cpp | 雷达数据回调入口 |
八、常见问题速答
- ROS2 启动报找不到
liblivox_sdk_shared.so?把/usr/local/lib加入LD_LIBRARY_PATH(见 README.md FAQ 6.2)。 - 多雷达怎么接?在
lidar_configs数组里追加对象即可,参考 config/mixed_HAP_MID360_config.json;多网卡场景见 README 第 4 节示例。 - 官方定位提醒:该驱动定位为调试/测试工具,量产场景建议在源码基础上自行优化(README 有明确说明)。
到这里,从雷达到 PointPillars 的数据链路就打通了:驱动负责「稳定出帧」,配置负责「对齐坐标」,录制负责「沉淀数据集」。剩下的,就是让算法在真实点云上跑起来 🚀
【免费下载链接】livox_ros_driver2Livox device driver under Ros(Compatible with ros and ros2), support Lidar HAP and Mid-360.项目地址: https://gitcode.com/GitHub_Trending/li/livox_ros_driver2
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考