当前位置: 首页 > news >正文

保姆级教程:在Ubuntu 18.04上搞定FASTER_LIO_SAM(含C++17编译避坑指南)

Ubuntu 18.04实战:FASTER_LIO_SAM全流程部署与C++17编译深度解析

当SLAM技术遇上Livox激光雷达,FASTER_LIO_SAM无疑是当前最值得关注的解决方案之一。这个融合了Fast-LIO、Faster-LIO和LIO-SAM三大算法优势的项目,通过IEKF(迭代扩展卡尔曼滤波)、IVox(增量体素化)和GTSAM(因子图优化)的强强联合,为机器人定位与建图提供了全新的可能性。本文将带你从零开始,在Ubuntu 18.04系统上完成整套环境的搭建,特别针对C++17编译问题和Boost库依赖等常见陷阱提供实战解决方案。

1. 环境准备与基础依赖安装

在开始FASTER_LIO_SAM的安装之前,我们需要确保系统具备所有必要的编译工具和基础库。Ubuntu 18.04默认的软件源可能不包含所有最新版本的开发工具,因此需要先进行系统更新:

sudo apt update && sudo apt upgrade -y sudo apt install -y build-essential cmake git wget

关键依赖说明

  • GCC/G++编译器:FASTER_LIO_SAM需要支持C++17标准的编译器,Ubuntu 18.04默认安装的是GCC 7.5,虽然可以工作,但建议升级到GCC 9或更高版本以获得更好的兼容性
  • CMake:至少需要3.10版本,用于项目构建
  • Git:用于克隆项目仓库和子模块管理

提示:如果后续遇到C++17相关编译错误,可能需要先升级GCC版本。可以通过以下命令安装GCC 9:

sudo apt install -y gcc-9 g++-9 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 9 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 9

2. ROS Melodic与Livox生态搭建

FASTER_LIO_SAM基于ROS框架开发,因此需要先安装ROS Melodic(Ubuntu 18.04对应的官方版本)。以下是完整的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 echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc source ~/.bashrc sudo apt install -y python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential sudo rosdep init rosdep update

Livox激光雷达需要特定的驱动支持,以下是Livox SDK和ROS驱动的安装步骤:

  1. Livox SDK安装
git clone https://github.com/Livox-SDK/Livox-SDK.git cd Livox-SDK mkdir build && cd build cmake .. make -j$(nproc) sudo make install
  1. Livox ROS驱动安装
mkdir -p ~/livox_ws/src cd ~/livox_ws/src git clone https://github.com/Livox-SDK/livox_ros_driver.git cd .. catkin_make echo "source ~/livox_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc

常见问题排查

  • 如果遇到catkin_make失败,检查是否已安装所有ROS依赖:
    rosdep install --from-paths src --ignore-src -r -y
  • Livox驱动需要特定的USB权限,执行以下命令后重新插拔设备:
    sudo cp ~/livox_ws/src/livox_ros_driver/livox_ros_driver/scripts/udev /etc/udev/rules.d/ sudo udevadm control --reload-rules sudo udevadm trigger

3. FASTER_LIO_SAM核心组件安装

FASTER_LIO_SAM依赖于三个核心组件:Fast-LIO、Faster-LIO和LIO-SAM。每个组件都有其特定的依赖关系,需要按顺序安装。

3.1 Fast-LIO及其依赖

Fast-LIO需要ikd-Tree作为核心数据结构,以下是完整安装流程:

mkdir -p ~/fast_lio_ws/src cd ~/fast_lio_ws/src git clone https://github.com/hku-mars/FAST_LIO.git git clone https://github.com/hku-mars/ikd-Tree.git mv ikd-Tree FAST_LIO/include/ cd .. catkin_make

关键文件修改: 在编译前,需要检查FAST_LIO/CMakeLists.txt,确保以下内容存在:

find_package(Eigen3 REQUIRED) find_package(PCL REQUIRED) find_package(OpenCV REQUIRED)

3.2 Faster-LIO特定配置

Faster-LIO引入了IVox作为加速结构,需要特别注意Eigen库的版本:

sudo apt install -y libeigen3-dev

验证Eigen版本(需要至少3.3.7):

pkg-config --modversion eigen3

如果版本过低,需要手动安装新版:

git clone https://gitlab.com/libeigen/eigen.git cd eigen mkdir build && cd build cmake .. sudo make install

3.3 LIO-SAM与Boost库问题解决

LIO-SAM依赖GTSAM和Boost库,以下是安装步骤:

sudo apt install -y libboost-all-dev sudo apt install -y libgtsam-dev libgtsam-unstable-dev

解决-lBoost::timer错误: 这个错误源于Boost库的链接问题,修改CMakeLists.txt添加:

find_package(Boost REQUIRED COMPONENTS timer) target_link_libraries(your_target_name ${Boost_LIBRARIES})

4. FASTER_LIO_SAM编译与C++17实战

现在进入最关键的FASTER_LIO_SAM编译阶段,这里会遇到最具挑战性的C++17兼容问题。

4.1 项目获取与基础编译

mkdir -p ~/faster_lio_ws/src cd ~/faster_lio_ws/src git clone https://github.com/yourusername/faster_lio_sam.git cd .. catkin_make

4.2 C++17编译问题深度解决

当遇到类似以下错误时:

error: the type 'const faster_lio::<lambda(const Vec2i&, const Vec2i&)>' of 'constexpr' variable 'faster_lio::less_vec2i' is not literal

这表明编译器没有使用C++17标准。需要在CMakeLists.txt最前面添加:

add_compile_options(-std=c++17) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF)

完整CMake配置示例

cmake_minimum_required(VERSION 3.10) project(faster_lio_sam) # C++17标准设置 add_compile_options(-std=c++17) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs sensor_msgs geometry_msgs nav_msgs tf2 tf2_ros tf2_geometry_msgs ) find_package(PCL REQUIRED) find_package(Eigen3 REQUIRED) find_package(OpenCV REQUIRED) find_package(GTSAM REQUIRED) catkin_package() include_directories( include ${catkin_INCLUDE_DIRS} ${PCL_INCLUDE_DIRS} ${EIGEN3_INCLUDE_DIR} ${OpenCV_INCLUDE_DIRS} ${GTSAM_INCLUDE_DIR} ) add_executable(faster_lio_sam_node src/faster_lio_sam_node.cpp) target_link_libraries(faster_lio_sam_node ${catkin_LIBRARIES} ${PCL_LIBRARIES} ${OpenCV_LIBS} ${GTSAM_LIBRARIES} )

4.3 完整编译流程

执行以下命令进行完整编译:

cd ~/faster_lio_ws catkin_make -DCMAKE_BUILD_TYPE=Release source devel/setup.bash

编译优化建议

  • 使用-j$(nproc)参数充分利用多核CPU
  • 首次编译失败后,执行catkin clean再重新尝试
  • 如果内存不足,尝试减少并行编译任务数:catkin_make -j2

5. 运行测试与参数调优

成功编译后,可以开始测试FASTER_LIO_SAM的实际运行效果。

5.1 数据准备与启动

  1. 下载测试数据集(如HKU校园序列):
wget -O hku_campus_seq_00.bag "your_download_link"
  1. 修改配置文件faster_lio_sam/config/params.yaml中的frame_id设置:
lidarFrame: "livox_frame" baselinkFrame: "base_link" odometryFrame: "odom" mapFrame: "map"
  1. 启动核心节点:
roslaunch faster_lio_sam run.launch
  1. 在新终端播放数据集:
rosbag play --clock hku_campus_seq_00.bag

5.2 实时监控与可视化

使用RViz进行实时可视化:

rosrun rviz rviz -d `rospack find faster_lio_sam`/config/rviz_config.rviz

关键话题监控

  • /faster_lio_sam/odometry:位姿估计输出
  • /faster_lio_sam/mapping/cloud_registered:注册后的点云
  • /tf:坐标变换树

5.3 性能调优参数

params.yaml中,以下参数对性能影响较大:

参数名默认值建议范围说明
point_filter_num11-5点云降采样率
max_iteration43-6IEKF最大迭代次数
cube_side_length200.0100.0-300.0地图立方体边长(m)
ivox_grid_resolution0.50.3-1.0IVox网格分辨率(m)
laser_point_cov0.0010.0005-0.005激光点协方差

内存优化技巧

  • 减少cube_side_length可以显著降低内存占用
  • 增大ivox_grid_resolution可以平衡精度和性能
  • 在资源受限的设备上,设置point_filter_num=3或更高

6. 高级调试与问题排查

即使按照上述步骤操作,仍可能遇到各种运行时问题。以下是常见问题的解决方案。

6.1 TF树配置检查

使用以下命令检查TF树是否完整:

rosrun tf view_frames evince frames.pdf

确保存在从livox_framebase_link再到odom的完整变换链。

6.2 点云同步问题

如果出现点云和IMU不同步的情况,在params.yaml中调整:

imu_time_offset: 0.0 # 尝试-0.1到0.1之间的值 lidar_time_offset: 0.0

6.3 性能瓶颈分析

使用rqt_graph查看计算图:

rosrun rqt_graph rqt_graph

对于计算密集型节点,可以使用top命令监控CPU使用率:

top -H -p $(pgrep -d',' -f faster_lio_sam_node)

6.4 内存泄漏排查

如果发现内存持续增长,可以使用valgrind工具检测:

valgrind --tool=memcheck --leak-check=full rosrun faster_lio_sam faster_lio_sam_node

7. 实际部署经验分享

在多次项目部署中,我发现以下几个经验特别值得分享:

  1. 环境一致性:在不同机器上部署时,使用Docker容器可以避免环境差异导致的问题。制作包含所有依赖的基础镜像能节省大量调试时间。

  2. 参数持久化:对于特定场景(如室内、隧道、城市峡谷等),将调优后的参数保存为不同的配置文件,方便快速切换。

  3. 硬件加速:在支持CUDA的设备上,可以修改部分代码使用GPU加速。特别是IVox的最近邻搜索和IEKF的矩阵运算部分。

  4. 日志系统:在launch文件中添加output="screen"参数,同时使用rosbag record记录关键话题,便于后期分析。

  5. 实时性保障:对于高频率Livox雷达(如MID-70),需要调整ROS参数提高消息队列大小:

    <param name="/rosdistro" value="melodic"/> <param name="/rosversion" value="1.14.13"/> <param name="/run_id" value="$(anon run_id)"/> <param name="/faster_lio_sam_node/sub_cloud/queue_size" value="100"/>

对于初次接触FASTER_LIO_SAM的开发者,建议从官方提供的HKU校园数据集开始,熟悉整个流程后再尝试自己的数据。当遇到编译问题时,耐心检查CMake输出的详细错误信息,往往比盲目搜索解决方案更有效率。

http://www.jsqmd.com/news/823937/

相关文章:

  • TegraRcmGUI完整指南:Windows上最简单快速的Switch注入工具教程
  • 生物信息学技能中心:开源工具集与高效工作流实践指南
  • 亲身备考AIGC应用工程师证书,北京四方天泰文化交流有限公司零基础上岸太值得 - 品牌企业推荐师(官方)
  • 新手入门8D:吃透底层逻辑,避开3大致命坑,快速上手不内耗
  • Jmeter压力测试实战:巧用随机参数破解接口唯一性约束
  • 免费鼠标防休眠工具MouseJiggler:3分钟搞定电脑防锁屏的终极方案
  • 思源宋体TTF终极指南:7字重免费商用字体快速提升设计专业度
  • 基于Circuit Playground与柔性3D打印的可穿戴设备制作全攻略
  • 3步轻松解锁Cursor Pro完整功能:免费使用AI编程助手的终极指南
  • 从设计到部署:一款面向轻量化产线的6轴关节机器人实战解析
  • 2026年5月宁波评价高的搬家公司推荐,售后保障完善解决搬家各类问题 - 品牌鉴赏师
  • 广东省制造业分布与龙头分布
  • Python 变量命名规范+数据类型转换
  • 如何高效配置Arduino ESP32开发环境:从零到一的技术实践指南
  • 大模型面试——Transformer 中的位置编码(Positional Encoding)的意义
  • 如何高效管理抖音内容?专业级批量下载工具douyin-downloader终极指南
  • ARM Cortex-M0+极限性能优化:从超频到外设压榨的嵌入式实战
  • 单调栈:高效解决边界查找问题
  • 新手8D实操指南:5步黄金流程,看完直接上手,轻松处理品质异常
  • 企业文档管理“神器”AutoVue实战:如何用它统一查看500+种格式文件(含Office/PDF/CAD)
  • 并发架构如何解决多AI模型协同难题:ChatALL的技术实现与性能优化
  • 透视 Mission Control 源码:如何构建高性能的 Agent 实时监控架构?
  • IRS2110S+IGBT半桥驱动实战:从“烧香”到稳定的调试心路
  • ChatGPT购物功能上线倒计时:已接入淘宝、京东、拼多多、Shopee、Amazon等9大平台,第10家即将官宣?
  • BilibiliDown:如何轻松下载B站视频的终极免费工具指南
  • 警惕!DeepSeek中文语境下的性别/地域/职业偏见正在 silently amplifying,48小时紧急修复方案已上线
  • 广东省离散制造业智能落地场景
  • Chrome for Testing:企业级自动化测试浏览器兼容性解决方案深度解析
  • Taotoken助力初创团队以可控成本集成大模型能力
  • efinance:3分钟快速获取四大金融市场数据的Python量化神器