Ubuntu20.04部署GTSAM与LIO-SAM:从依赖解析到实时建图实战

张开发
2026/4/16 21:44:48 15 分钟阅读

分享文章

Ubuntu20.04部署GTSAM与LIO-SAM:从依赖解析到实时建图实战
1. 环境准备与依赖解析在Ubuntu 20.04上部署GTSAM和LIO-SAM之前我们需要先搞定基础环境。这个环节就像盖房子打地基看起来简单但直接影响后续所有步骤的稳定性。我遇到过不少因为依赖版本不对导致编译失败的案例所以这部分会详细说明每个关键点。首先是最基础的编译工具链。打开终端执行以下命令安装必备工具sudo apt-get update sudo apt-get install -y build-essential cmake git这里有个细节要注意CMake版本必须≥3.0但Ubuntu 20.04默认安装的是3.16完全够用。如果你之前折腾过其他项目修改过CMake版本建议用cmake --version确认下。接下来是Boost库的安装这是GTSAM的核心依赖sudo apt-get install -y libboost-all-devBoost版本需要≥1.65Ubuntu 20.04默认提供的是1.71完全满足要求。我实测过1.65到1.75之间的版本都能正常工作但建议直接用系统默认版本最稳妥。关于TBB和MKL这两个可选依赖我的建议很明确装TBB跳过MKL。原因有三点TBB安装简单且确实能提升多线程性能MKL不仅安装麻烦Intel经常变更安装方式官方文档也明确说可能降低性能我们团队实测对比发现在移动机器人场景下TBBEigen的组合比MKL更稳定安装TBB只需要一行命令sudo apt-get install -y libtbb-dev2. GTSAM源码编译实战现在进入重头戏——GTSAM的编译安装。这里最容易踩坑的就是版本选择网上很多教程用的老版本在Ubuntu 20.04上会报各种奇怪的错误。根据我们团队在多个项目中的经验必须使用4.0.3及以上版本。获取源码推荐用git直接克隆最新稳定版git clone https://github.com/borglab/gtsam.git cd gtsam git checkout 4.0.3 # 明确指定版本编译时的参数配置是关键中的关键。对于要运行LIO-SAM的场景必须关闭MKL相关选项mkdir build cd build cmake -DGTSAM_BUILD_WITH_MARCH_NATIVEOFF \ -DGTSAM_WITH_EIGEN_MKLOFF \ -DGTSAM_WITH_EIGEN_MKL_OPENMPOFF ..这里解释下这几个参数的作用MARCH_NATIVEOFF禁用CPU特定指令优化避免兼容性问题EIGEN_MKLOFF明确禁用MKL后端EIGEN_MKL_OPENMPOFF禁用MKL的OpenMP集成编译和安装建议分开执行方便排查问题make -j$(nproc) # 使用所有CPU核心加速编译 make check # 验证编译结果 sudo make install编译过程视机器性能大约需要10-30分钟。如果遇到内存不足的情况可以去掉-j$(nproc)参数改用单线程编译。3. LIO-SAM的适配与优化GTSAM安装成功后就可以着手准备LIO-SAM了。这里需要特别注意OpenCV版本的兼容性问题因为Ubuntu 20.04默认安装的是OpenCV4而LIO-SAM原始代码是针对OpenCV3设计的。创建工作空间的标准流程mkdir -p ~/liosam_ws/src cd ~/liosam_ws/src git clone https://github.com/TixiaoShan/LIO-SAM.git cd ..关键的代码修改有两处修改头文件引用路径sed -i s/#include opencv\/cv.h/#include opencv2\/imgproc.hpp/g LIO-SAM/include/utility.h更新CMakeLists.txt中的C标准sed -i s/set(CMAKE_CXX_FLAGS -stdc11)/set(CMAKE_CXX_STANDARD 14)/g LIO-SAM/CMakeLists.txt编译时建议先清理之前的构建缓存catkin clean --yes catkin build lio_sam如果遇到PCL相关报错可能是点云库版本不匹配可以尝试sudo apt-get install -y libpcl-dev ros-noetic-pcl-conversions ros-noetic-pcl-ros4. 系统集成与实时建图测试所有组件就绪后终于到了验证环节。这里分享几个实测有效的技巧启动LIO-SAM核心节点roslaunch lio_sam run.launch播放数据包时推荐使用速率控制参数rosbag play your-bag.bag -r 3 --clock其中-r 3表示3倍速播放--clock保证时间同步。如果建图出现漂移可以尝试调整以下参数在params.yaml中增大edgeFeatureMinValidNum值降低scanRegistration中的filterSizeSurf实时建图质量检查要点检查rviz中点云是否连续稳定观察终端输出的闭环检测信息使用rostopic hz /lio_sam/mapping/odometry查看里程计频率常见问题排查如果出现TF转换错误检查robot_localization节点是否正常运行点云显示异常时确认/tf_static话题是否发布内存泄漏问题可以通过htop监控建议关闭不需要的ROS节点经过完整测试后正常情况下应该能得到清晰的3D点云地图。我们团队在室内外多种环境下测试建图精度可以达到厘米级完全满足SLAM应用需求。

更多文章