保姆级教程:在Ubuntu 18.04上从零搭建FAST_LIO_SAM(含GTSAM 4.0配置与避坑指南)
2026/4/19 15:53:43 网站建设 项目流程

从零构建FAST_LIO_SAM:Ubuntu 18.04环境下的SLAM系统实战指南

在机器人自主导航领域,激光雷达惯性里程计(LIO)系统正成为高精度定位与建图的核心技术。FAST_LIO_SAM作为FAST-LIO2与LIO-SAM的融合方案,通过引入GTSAM后端优化模块,显著提升了系统的全局一致性。本文将带您从零开始,在Ubuntu 18.04系统中完整部署这套先进的SLAM解决方案。

1. 环境准备与依赖安装

1.1 系统基础配置

推荐使用纯净的Ubuntu 18.04.6 LTS系统,确保默认Python版本为2.7。为避免权限问题,建议所有操作在普通用户下通过sudo执行:

sudo apt update && sudo apt upgrade -y sudo apt install -y git cmake libeigen3-dev libboost-all-dev

关键依赖版本要求:

  • PCL ≥ 1.8(Ubuntu 18.04默认满足)
  • Eigen ≥ 3.3.4
  • ROS Melodic(完整桌面版)

注意:若已安装其他ROS版本,需先彻底卸载后再安装Melodic,避免版本冲突。

1.2 ROS Melodic安装

执行以下命令配置ROS仓库和核心组件:

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 -y ros-melodic-desktop-full

初始化rosdep时,若遇到网络问题,可尝试修改hosts文件或使用国内镜像源:

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc source ~/.bashrc sudo rosdep init rosdep update

2. GTSAM 4.0编译与安装

2.1 源码编译准备

GTSAM作为后端优化的核心,需要从源码编译特定版本:

mkdir -p ~/gtsam_ws/src && cd ~/gtsam_ws/src git clone https://github.com/borglab/gtsam.git -b 4.0.0-alpha2 cd gtsam && mkdir build && cd build

编译配置建议使用Release模式并开启必要的优化选项:

cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=ON -DGTSAM_USE_SYSTEM_EIGEN=ON -DCMAKE_BUILD_TYPE=Release .. make -j$(nproc) sudo make install

2.2 常见编译问题解决

若遇到Boost库链接错误,可显式指定库路径:

cmake -DBoost_NO_SYSTEM_PATHS=ON -DBOOST_ROOT=/usr/include/boost ..

安装完成后验证版本:

pkg-config --modversion gtsam # 应输出 4.0.0-alpha2

3. FAST_LIO_SAM工作空间配置

3.1 创建工作空间

建议使用独立工作空间管理项目:

mkdir -p ~/fast_lio_sam_ws/src cd ~/fast_lio_sam_ws/src catkin_init_workspace

克隆源码时推荐使用深度克隆确保子模块完整:

git clone --recursive https://github.com/kahowang/FAST_LIO_SAM.git cd FAST_LIO_SAM git submodule update --init --recursive

3.2 依赖项安装

安装特定版本的PCL和Eigen3开发包:

sudo apt install -y libpcl-dev libproj-dev libgeographic-dev

对于ROS相关依赖,使用rosdep自动安装:

cd ~/fast_lio_sam_ws rosdep install --from-paths src --ignore-src -r -y

4. 系统编译与参数调优

4.1 编译过程

使用catkin_make进行编译,建议开启并行编译:

cd ~/fast_lio_sam_ws catkin_make -DCMAKE_BUILD_TYPE=Release -j$(nproc)

若遇到C++11标准问题,可在CMakeLists.txt中添加:

add_compile_options(-std=c++14)

4.2 关键参数解析

config/params.yaml中,这些参数直接影响系统表现:

# 回环检测配置 loopClosureEnableFlag: true # 启用回环检测 loopClosureFrequency: 4.0 # 回环检测频率(Hz) historyKeyframeSearchRadius: 1.5 # 回环搜索半径(m) # GPS配置 useGpsElevation: false # 禁用GPS高程约束 gpsCovThreshold: 2.0 # GPS数据协方差阈值

提示:对于室内场景,建议关闭useGpsElevation;室外开阔环境可尝试启用但需密切监控Z轴漂移。

5. 实战测试与结果分析

5.1 室内数据集测试

使用Velodyne 16线雷达数据测试:

roslaunch fast_lio_sam mapping_velodyne16.launch rosbag play T3F2-2021-08-02-15-00-12.bag --clock

关键指标监测:

  • /laser_odom_to_init话题频率
  • /aft_mapped_to_init的位姿协方差
  • RViz中查看/ikdtree_map点云质量

5.2 室外GPS融合测试

对于含GPS信息的数据集:

roslaunch fast_lio_sam mapping_velodyne16_lio_sam_dataset.launch rosbag play walking_dataset.bag

通过evo工具评估轨迹精度:

evo_traj kitti optimized_pose.txt -p --plot_mode=xy

5.3 地图保存技巧

保存点云地图时建议指定分辨率:

rosservice call /save_map "resolution: 0.05 destination: '/home/user/maps'"

对于长期建图任务,可定期执行保存操作避免数据丢失。

6. 高级调试与性能优化

6.1 内存管理

大场景建图时可能出现内存暴涨,可通过以下方式缓解:

  1. 调整surroundingKeyframeSize减少子图规模
  2. 限制historyKeyframeSearchNum数量
  3. 启用recontructKdTree定期重建优化数据结构

6.2 实时性调优

若出现处理延迟,可尝试:

  • 降低loopClosureFrequency至2-3Hz
  • 关闭visulize_IkdtreeMap可视化
  • 在launch文件中限制线程数:
<param name="num_threads" value="4" />

6.3 坐标系问题排查

当GPS数据异常时,检查:

  1. WGS84到ENU坐标转换是否正常
  2. useImuHeadingInitialization参数设置
  3. 终端输出中的gps covariance数值

7. 实际应用建议

在工业场景部署时,建议采用以下配置组合:

场景类型回环检测GPS融合关键帧间距
室内仓库开启关闭0.5m
城市街道开启开启2.0m
隧道环境关闭间歇使用1.0m

对于学术研究,可以尝试修改以下代码模块:

  • src/mapOptmization.cpp中的因子图构造
  • include/utility.h的参数解析逻辑
  • cfg/params.yaml的全部配置项

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

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

立即咨询