news 2026/5/6 11:03:28

保姆级教程:在Ubuntu 18.04 + ROS Melodic上搞定LIO-SAM编译与运行(避坑指南)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
保姆级教程:在Ubuntu 18.04 + ROS Melodic上搞定LIO-SAM编译与运行(避坑指南)

从零到一:Ubuntu 18.04 + ROS Melodic环境下的LIO-SAM实战部署手册

当第一次接触激光SLAM时,那种看到点云地图逐渐成型的兴奋感至今难忘。LIO-SAM作为当前最先进的激光惯性里程计框架之一,其性能与实时性在各类移动平台上都得到了验证。但对于刚入门的新手来说,从环境配置到成功运行往往充满挑战。本文将带你一步步完成整个部署过程,避开那些令人头疼的"坑"。

1. 环境准备:打好基础才能走得更远

在开始之前,我们需要确保系统环境满足LIO-SAM的基本要求。我推荐使用纯净的Ubuntu 18.04系统,这样可以避免很多因版本冲突导致的问题。

1.1 系统与ROS基础安装

首先更新系统软件包:

sudo apt update && sudo apt upgrade -y

接下来安装ROS Melodic完整版:

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 sudo apt update sudo apt install ros-melodic-desktop-full

安装完成后,别忘了初始化rosdep:

sudo rosdep init rosdep update

1.2 必要依赖项安装

LIO-SAM需要一些额外的ROS功能包支持:

sudo apt install -y \ ros-melodic-navigation \ ros-melodic-robot-localization \ ros-melodic-robot-state-publisher \ ros-melodic-tf2-sensor-msgs

常见问题:如果在安装过程中遇到"无法定位软件包"的错误,请先确保你的软件源配置正确,并已添加ROS官方源。

2. GTSAM编译:性能优化的关键一步

GTSAM是LIO-SAM的核心依赖之一,正确的编译选项直接影响系统性能。我强烈建议从源码编译而不是使用预编译版本,这样可以针对你的硬件进行优化。

2.1 下载与编译GTSAM

首先下载4.0.0-alpha2版本:

wget -O ~/Downloads/gtsam.zip https://github.com/borglab/gtsam/archive/4.0.0-alpha2.zip cd ~/Downloads/ && unzip gtsam.zip -d ~/Downloads/ cd ~/Downloads/gtsam-4.0.0-alpha2/ mkdir build && cd build

这里是最容易出问题的编译配置步骤:

cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF \ -DGTSAM_USE_SYSTEM_EIGEN=ON \ -DGTSAM_BUILD_TESTS=OFF \ -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF ..

各参数含义:

  • DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF:禁用特定CPU指令集优化,避免兼容性问题
  • DGTSAM_USE_SYSTEM_EIGEN=ON:使用系统Eigen库而非内置版本
  • 后两个参数用于减少编译时间

编译并安装:

make -j$(nproc) sudo make install

2.2 验证安装

安装完成后,可以通过以下命令验证:

pkg-config --modversion gtsam

应该输出4.0.0-alpha2版本号。

3. LIO-SAM源码部署与编译

现在我们可以开始部署LIO-SAM本体了。建议在工作空间的src目录下进行操作。

3.1 创建工作空间与下载源码

mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone https://github.com/TixiaoShan/LIO-SAM.git

3.2 解决依赖关系

在编译前,确保所有依赖都已安装:

cd ~/catkin_ws rosdep install --from-paths src --ignore-src -y

3.3 编译与常见错误处理

开始编译:

catkin_make -j$(nproc)

可能遇到的错误及解决方案

  1. Eigen相关错误

    fatal error: Eigen/Core: No such file or directory

    解决方法:

    sudo apt install libeigen3-dev sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen
  2. PCL版本冲突

    undefined reference to `pcl::PCLBase::setInputCloud...

    解决方法:确保PCL版本一致,可能需要重新安装:

    sudo apt install libpcl-dev
  3. GTSAM未找到: 如果编译时提示找不到GTSAM,尝试设置环境变量:

    export GTSAM_DIR=/usr/local/lib/cmake/GTSAM

4. 参数配置与系统调优

成功编译只是第一步,合理的参数配置才能发挥LIO-SAM的最佳性能。

4.1 传感器参数配置

编辑params.yaml文件,主要关注以下参数:

pointCloudTopic: "points_raw" # 必须与你的激光雷达发布话题一致 imuTopic: "/imu_correct" # IMU话题名称 odomTopic: "odometry/imu" # IMU预积分输出话题 gpsTopic: "odometry/gpsz" # GPS话题(可选) sensor: velodyne # 雷达类型:velodyne或ouster N_SCAN: 16 # 雷达通道数(16/32/64等) Horizon_SCAN: 1800 # 水平分辨率(Velodyne通常为1800)

4.2 外参标定

外参标定对系统精度至关重要:

extrinsicTrans: [0.0, 0.0, 0.0] # 平移向量[x,y,z] extrinsicRot: [1, 0, 0, 0, 1, 0, 0, 0, 1] # 旋转矩阵 extrinsicRPY: [1, 0, 0, 0, 1, 0, 0, 0, 1] # 欧拉角

提示:如果不知道精确外参,可以使用标定工具如lidar_align进行标定。

4.3 性能优化参数

downsampleRate: 1 # 降采样率,点数过多时可增大 lidarMinRange: 1.0 # 最小有效距离 lidarMaxRange: 100.0 # 最大有效距离(根据环境调整)

5. 运行与结果可视化

一切就绪后,就可以启动系统了。

5.1 启动LIO-SAM

roslaunch lio_sam run.launch

5.2 Rviz配置

建议使用LIO-SAM自带的rviz配置:

rosrun rviz rviz -d `rospack find lio_sam`/rviz/lio_sam.rviz

在Rviz中你应该能看到:

  • 绿色点:角点特征
  • 粉色点:平面特征
  • 黑色轨迹:估计的机器人路径

5.3 数据回放与调试

如果使用已有数据集,可以通过rosbag回放:

rosbag play --clock your_bag.bag

调试技巧

  1. 使用rostopic list确认所有话题都已正确发布
  2. 使用rviz的TF显示检查坐标系是否正确
  3. 查看终端输出中的警告和错误信息

6. 常见问题深度解析

在实际部署中,我遇到过各种奇怪的问题,这里分享几个典型案例。

6.1 点云不显示问题

现象:Rviz中看不到任何点云。

排查步骤

  1. 检查rostopic echo /lio_sam/feature/cloud_map是否有数据
  2. 确认params.yaml中的话题名称与实际发布一致
  3. 检查雷达驱动是否正常运行

6.2 IMU数据异常处理

现象:轨迹漂移严重或系统崩溃。

解决方案

  1. 检查IMU数据的坐标系定义
  2. 确保IMU频率足够高(建议≥100Hz)
  3. params.yaml中调整IMU噪声参数

6.3 性能优化技巧

对于资源有限的设备,可以尝试:

  1. 增大downsampleRate减少处理点数
  2. 调整keyframePerSecond降低关键帧频率
  3. 关闭不必要的功能如GPS和回环检测

7. 进阶应用与扩展

成功运行基础版本后,你可能想进一步定制系统。

7.1 多传感器融合

LIO-SAM框架支持灵活添加其他传感器:

  1. GPS:在开阔区域提高全局一致性
  2. 视觉:增加特征丰富性
  3. 轮式里程计:提供额外约束

7.2 自定义特征提取

可以修改featureExtraction.cpp实现:

  • 不同的特征选择策略
  • 自适应阈值算法
  • 特定场景优化

7.3 部署到实际机器人

在实际机器人上部署时注意:

  1. 传感器时间同步
  2. 运动畸变补偿
  3. 实时性保证

经过这些步骤,你应该已经成功在Ubuntu 18.04和ROS Melodic环境下部署了LIO-SAM系统。记住,每个硬件环境和应用场景都有其独特性,可能需要针对性的调整和优化。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/6 11:00:36

从ChatGPT到定制AI助手:手把手教你用LangChain连接GPT-4打造第一个应用

从ChatGPT到定制AI助手:手把手教你用LangChain连接GPT-4打造第一个应用 在人工智能技术快速发展的今天,大型语言模型(LLM)如GPT-4已经展现出惊人的能力,但如何将这些能力真正应用到实际业务场景中,仍然是许多开发者面临的挑战。La…

作者头像 李华
网站建设 2026/5/6 10:57:29

GPTFree开源AI对话聚合器:统一接口调用多平台免费模型

1. 项目概述:一个开源AI对话聚合器的诞生最近在GitHub上看到一个挺有意思的项目,叫“GPTFree”。光看名字,你可能会以为又是一个“免费使用ChatGPT”的套壳工具,但点进去仔细研究后,我发现它的设计思路和实现方式&…

作者头像 李华
网站建设 2026/5/6 10:48:28

专业干货!4款AI专著生成工具推荐,高效完成20万字专著写作!

学术专著撰写难题与AI工具助力 学术专著最大的价值在于其内容的条理性与逻辑的完整性,但这也是写作过程中最难以克服的障碍。与专注于单一问题的期刊论文不同,专著需要构建一个涵盖绪论、理论基础、核心研究、应用拓展与结论的全面框架,各个…

作者头像 李华