手把手教你用Livox Mid-360跑通LIO-SAM:从CustomMsg数据转换到完整配置流程
2026/5/7 9:09:36 网站建设 项目流程

手把手教你用Livox Mid-360跑通LIO-SAM:从CustomMsg数据转换到完整配置流程

当固态激光雷达遇上传统SLAM框架,数据兼容性问题往往成为开发者的第一道门槛。Livox Mid-360作为一款非重复扫描式雷达,其点云分布特性与机械旋转雷达存在本质差异。本文将带您零基础实现Livox Mid-360与LIO-SAM的无缝对接,重点突破CustomMsg数据转换这一技术节点。

1. 环境准备与驱动安装

在开始前,请确保系统已安装ROS Melodic或Noetic(建议Ubuntu 18.04/20.04),并完成基础开发工具链配置:

sudo apt-get install -y build-essential cmake git libeigen3-dev

Livox官方驱动安装需执行以下步骤:

mkdir -p ~/livox_ws/src cd ~/livox_ws/src git clone https://github.com/Livox-SDK/livox_ros_driver.git cd .. rosdep install --from-paths src --ignore-src -r -y catkin_make

注意:若遇到livox_sdk依赖缺失,需手动克隆Livox-SDK到src目录

验证驱动是否正常工作:

source devel/setup.bash roslaunch livox_ros_driver livox_lidar_msg.launch

此时应能看到终端输出点云发布日志,表示雷达已正确连接。

2. 数据类型转换关键实现

LIO-SAM原生支持sensor_msgs/PointCloud2,而Livox驱动输出的是livox_ros_driver/CustomMsg。我们需要修改三处核心代码

2.1 消息头文件修改

include/utility.h中添加CustomMsg支持:

#include <livox_ros_driver/CustomMsg.h> typedef livox_ros_driver::CustomMsg PointCloudMsg;

2.2 回调函数适配

修改imageProjection.cpp中的点云回调:

void cloudHandler(const PointCloudMsg::ConstPtr& livoxMsg) { pcl::PointCloud<PointType>::Ptr cloud(new pcl::PointCloud<PointType>); for (unsigned int i = 0; i < livoxMsg->point_num; ++i) { PointType point; point.x = livoxMsg->points[i].x; point.y = livoxMsg->points[i].y; point.z = livoxMsg->points[i].z; cloud->push_back(point); } // 后续处理逻辑保持不变... }

2.3 Launch文件配置

创建新的启动文件mid360.launch

<launch> <include file="$(find livox_ros_driver)/launch/livox_lidar_msg.launch"/> <node pkg="lio_sam" type="lio_sam_imuPreintegration" name="lio_sam_imuPreintegration" output="screen"> <remap from="/livox/lidar" to="/pointcloud" /> </node> </launch>

3. 实战调试与性能优化

3.1 常见报错解决方案

错误类型现象描述修复方法
TF缺失No transform between [odom] and [base_link]检查IMU数据是否正常发布
点云异常特征点提取失败调整config/params.yaml中的edgeThresholdsurfThreshold
内存泄漏运行一段时间后崩溃CMakeLists.txt中添加-O3优化选项

3.2 参数调优建议

  • 点云降采样:将downsampleRate设为0.2-0.3以平衡精度与性能
  • IMU融合:增大imuAccNoiseimuGyrNoise值可降低高频振动影响
  • 回环检测:调整loopSearchRadius至1.5-2.0米适应室内场景
# config/params.yaml 关键参数示例 featureExtraction: edgeThreshold: 0.1 surfThreshold: 0.05 mapping: maxIteration: 4

4. 效果验证与场景测试

完成部署后,通过以下命令启动完整系统:

roslaunch lio_sam mid360.launch

在RViz中添加以下显示项可获得最佳可视化效果:

  • PointCloud2:话题/laser_cloud_surround
  • Path:话题/odometry_path
  • TF:坐标系mapbase_link

实测数据表明,在16线等效配置下,Mid-360与LIO-SAM组合可实现:

  • 定位精度:室内环境±5cm,室外开阔区域±15cm
  • 建图速率:8-12Hz(i7-11800H处理器)
  • 内存占用:约1.2GB(典型办公场景)

对于需要多雷达融合的场景,可在livox_lidar_msg.launch中设置多设备ID:

<param name="multi_topic" type="bool" value="true"/> <param name="lidar_bag" type="string" value="livox1 livox2"/>

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询