欢迎光临
我们一直在努力

(25.08)Ubuntu20.04+ROS1复现FAST-LIO2

          因为之前已经运行过LIO-SAM了,所以工作空间什么的已经创建了,直接拉源码 + 编译 。

编译

cd ~/catkin_ws/src

# 克隆 FAST-LIO(包含 FAST-LIO2 分支/代码)
git clone https://github.com/hku-mars/FAST_LIO.git
cd FAST_LIO
git submodule update –init –recursive
cd ../..

# 安装可能缺的依赖(可跳过,如果你确认都有)
sudo apt install libeigen3-dev libpcl-dev libyaml-cpp-dev libgoogle-glog-dev

# 编译
catkin_make -DCMAKE_BUILD_TYPE=Release
source devel/setup.bash

解释:
1. git submodule update –init –recursive
  • 作用:下载主仓库里引用的子仓库(submodule)。

  • FAST-LIO2 用到的 ikd-Tree 和一些第三方库就是作为 submodule 存在的,如果不更新,编译会报错找不到这些源码。

  • 参数解释:

    • –init:如果是第一次拉子模块,把它们初始化。

    • –recursive:如果子模块里还有子模块(嵌套),也一并拉下来。

    • update:把子模块更新到主仓库当前版本指定的 commit。

  • 为什么必须做: FAST-LIO2 源码里并不直接包含 ikd-Tree 全部代码,只是一个“链接”指向另一个仓库,必须用这条命令拉取。

等价过程可以用:

git submodule init git submodule update –recursive

只是这里写成一行方便。


2. cd ../..
  • 作用:切换回catkin 工作区根目录。

  • 逻辑是这样的:

  • 现在在 ~/catkin_ws/src/FAST_LIO 里(刚 clone 完)。

  • 编译要在工作区根目录(~/catkin_ws)执行 catkin_make。

  • cd .. 从 FAST_LIO 回到 src。 再 cd .. 从 src 回到 catkin_ws。

  • 所以 cd ../.. 就是一次性回到 catkin_ws 目录。


总结:

  • git submodule update –init –recursive → 把 FAST-LIO2 的依赖源码都拉下来。

  • cd ../.. → 回到 catkin 工作区根目录,方便后面 catkin_make 编译。

  • 报错:

    1、缺pcl_ros

    CMake Error at /opt/ros/noetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
    Could not find a package configuration file provided by "pcl_ros"

        是因为 ROS 缺少 pcl_ros 这个包。     这个包是 ROS 中用于将 PCL(Point Cloud Library)集成到 ROS 系统的中间层,不是 PCL 本体,而是 pcl_ros 这个 ROS package。

    解决方法:

    只需要安装对应的 ROS Noetic 版本下的 pcl_ros 即可:

    sudo apt update
    sudo apt install ros-noetic-pcl-ros

    注意事项

        如果你之前手动编译过 PCL 并放在 /usr/local 下,建议不要混用 apt 安装的 ROS 包和手动编译的 PCL,否则可能会出现 runtime 链接冲突。

    2、缺Livox ROS 驱动包

    CMake Error: Could NOT find livox_ros_driver

         这是因为没有安装 Livox ROS 驱动包(livox_ros_driver),它是 Livox 激光雷达在 ROS 中的官方驱动,不是 apt 直接提供的,需要手动 clone 并编译。


    解决方法:

    1. 创建工作空间(如果你还没建)

    mkdir -p ~/catkin_ws/src
    cd ~/catkin_ws/src

    2. 下载 livox_ros_driver 源码

    git clone https://github.com/Livox-SDK/livox_ros_driver.git

    注意:这个仓库依赖 Livox-SDK 的 C++ 驱动,但 livox_ros_driver 里已经包含了预编译好的库,一般不需要单独安装 SDK。

    3. 编译

    cd ~/catkin_ws
    catkin_make

    3、找不到静态库文件

    /usr/bin/ld: 找不到 -llivox_sdk_static

        说明 链接器找不到 Livox SDK 的静态库文件 liblivox_sdk_static.a。 虽然 livox_ros_driver 仓库里自带了预编译好的库,但可能因为系统架构或编译器版本差异,导致找不到。————>正确安装 Livox SDK 并重新编译 livox_ros_driver


    git下来自带了一个build文件夹:

    • Livox-SDK 仓库里直接带了 build 文件夹,里面有 notes.txt 说明这是他们“故意提交”的预置构建目录。

    • 这种做法很少见,但他们可能为了方便快速入门,就把 build 文件夹放在 repo 里了。

    这样带 build 文件夹的影响

    • 不需要自己新建 build 文件夹,直接在已有 build 目录里运行 cmake 和 make 即可。

    • 但是这个 build 目录可能已经有之前的缓存或配置,如果你之前操作过,GPT建议先清空这个目录再重新构建,以免冲突。


    解决方法:

    cd ~/catkin_ws/src/Livox-SDK
    rm -rf build/*
    // 也可以直接就在它自带的build里面编译
    cd build
    cmake .. -DCMAKE_BUILD_TYPE=Release

    make -j$(nproc)
    sudo make install
    // 这一步会把静态库和头文件安装到 /usr/local/lib 和 /usr/local/include

    配置环境变量,建议把这一行加到 ~/.bashrc 里,保持永久生效:

    echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
    source ~/.bashrc

    回到工作空间重新编译 livox_ros_driver 和 FAST-LIO2

    cd ~/catkin_ws
    catkin_make clean
    catkin_make -j$(nproc)
    source devel/setup.bash

    4. 设置环境变量(每次开终端都需要,或写入 .bashrc)

    source ~/catkin_ws/devel/setup.bash


    验证是否成功

    可以用以下命令确认:

    rospack find livox_ros_driver

    如果返回路径,说明安装成功。

    4、rospack 找不到包

    编译的是 ~/catkin_ws/src/livox_SDK(注意是 livox_SDK,而不是 livox_ros_driver),这就是为什么 rospack 找不到包的根本原因。

    关键点解析
    • ROS 包名和目录名必须严格对应,大小写敏感。

    • 官方 ROS 驱动包名字是 livox_ros_driver,目录也应叫 livox_ros_driver。

    • 你现在的目录是 livox_SDK,这是 Livox 官方的 SDK(C++开发包),它不是 ROS 包,不包含 package.xml,所以 ROS 不识别,也不能用 rospack 找到。


    解决方案

    1. 下载并编译真正的 Livox ROS 驱动包

    cd ~/catkin_ws/src
    git clone https://github.com/Livox-SDK/livox_ros_driver.git

    2. 编译工作空间

    cd ~/catkin_ws
    catkin_make -j$(nproc)
    source devel/setup.bash

    3. 确认 ROS 找到包

    rospack find livox_ros_driver

    这时就会找到正确的 ROS 驱动包。


    额外说明

    • livox_SDK 是纯 SDK,不是 ROS 包,不能单独用 rospack 管理。

    • livox_ros_driver 是基于 SDK 封装的 ROS 驱动,才会被 ROS 管理。

    总结

    • 请确保在 src 下有 livox_ros_driver 包,而不是 livox_SDK。

    • 两者配合使用:先编译并安装 SDK(livox_SDK),再编译 ROS 驱动(livox_ros_driver)。

    • ROS 命令如 rospack find 只能识别有 package.xml 的包(即真正的 ROS 包)。

    运行公共数据集

    数据集:https://drive.google.com/drive/folders/1CGYEJ9-wWjr8INyan6q1BZz_5VtGB-fP

    roslaunch fast_lio mapping_avia.launch
    rosbag play YOUR_DOWNLOADED.bag
    rosbag play ~/catkin_ws/datasets/outdoor_Mainbuilding_100Hz_2020-12-24-16-46-29.bag

    保存PCD文件

    如何开启 PCD 保存功能?

    需要在 launch 文件或者参数文件(avia.yaml)中添加或修改如下参数:

    <param name="pcd_save_enable" type="bool" value="true" />
    <param name="pcd_save_path" type="string" value="$(find fast_lio)/PCD/scans.pcd" />

    修改版本示例

    <launch>
    <!– Launch file for Livox AVIA LiDAR –>

    <arg name="rviz" default="true" />

    <rosparam command="load" file="$(find fast_lio)/config/avia.yaml" />

    <param name="feature_extract_enable" type="bool" value="0"/>
    <param name="point_filter_num" type="int" value="3"/>
    <param name="max_iteration" type="int" value="3" />
    <param name="filter_size_surf" type="double" value="0.5" />
    <param name="filter_size_map" type="double" value="0.5" />
    <param name="cube_side_length" type="double" value="1000" />
    <param name="runtime_pos_log_enable" type="bool" value="0" />

    <!– 添加点云保存开启参数 –>
    <param name="pcd_save_enable" type="bool" value="true" />
    <param name="pcd_save_path" type="string" value="$(find fast_lio)/PCD/scans.pcd" />

    <node pkg="fast_lio" type="fastlio_mapping" name="laserMapping" output="screen" />

    <group if="$(arg rviz)">
    <node launch-prefix="nice" pkg="rviz" type="rviz" name="rviz" args="-d $(find fast_lio)/rviz_cfg/loam_livox.rviz" />
    </group>
    </launch>

    使用说明
    • 设置 pcd_save_enable 为 true,运行结束时程序会自动保存累积的点云到指定的 pcd_save_path 文件。

    • 路径 $(find fast_lio)/PCD/scans.pcd 会在你的 fast_lio 包路径下生成 PCD 文件夹并保存文件;也可以改成绝对路径。

    如何查看这个 .pcd 文件

    使用 pcl_viewer

    pcl_viewer 是 PCL(Point Cloud Library)自带的点云文件查看工具,支持多种查看和点云颜色显示模式。

    可以用下面命令打开:

    pcl_viewer scans.pcd

    pcl_viewer 的快捷键颜色切换说明

         运行时,按键盘数字键可以切换点云的颜色显示方式:

    按键说明
    1 所有点随机颜色(彩色点云,方便区分)
    2 按 X 坐标值着色(红绿蓝渐变)
    3 按 Y 坐标值着色
    4 按 Z 坐标值着色
    5 按点云强度值着色(Intensity)

    这样可以更直观地分析点云分布和特征。

    备份

    代码层面备份

    方式 1:Git 版本控制(推荐)

    适合后续对比改动、分支管理。

    # 进入你的 FAST-LIO2 目录
    cd ~/catkin_ws/src/FAST_LIO

    # 如果还没初始化 git 仓库
    git init
    git add .
    git commit -m "FAST-LIO2 原版初始提交"

    # 建一个实验分支做改动
    git checkout -b intensity_multi_echo_dev

    这样:

    • master 分支永远保留原版

    • 在 intensity_multi_echo_dev 分支上做你的实验

    • 如果改坏了,切回 master 再新建分支就能重新开始:

      git checkout master git checkout -b new_experiment


    方式 2:直接目录拷贝(最简单)

    适合不熟悉 Git 的情况。

    # 在代码上一级目录
    cp -r FAST_LIO FAST_LIO_original

    • FAST-LIO2_original 就是原版,不要动

    • 在 FAST-LIO2 里面改代码

    • 出问题直接删掉 FAST-LIO2,再拷贝一份 FAST-LIO2_original

    如果想完全隔离编译环境

         虽然已经有 FAST_LIO_original,但这两个版本还是在同一个工作空间,编译时会同时出现。      要想编译时互不干扰,可以新建一个工作空间专门放原版:

    mkdir -p ~/catkin_ws_fastlio/src
    cp -r ~/catkin_ws/src/FAST_LIO_original ~/catkin_ws_fastlio/src/FAST_LIO
    cd ~/catkin_ws_fastlio
    catkin_make

    之后:

    • 原版运行:

      source ~/catkin_ws_fastlio/devel/setup.bash
      roslaunch fast_lio mapping.launch

    • 修改版运行:

      source ~/catkin_ws/devel/setup.bash
      roslaunch fast_lio_mod mapping.launch

    赞(0)
    未经允许不得转载:171主机测评 » (25.08)Ubuntu20.04+ROS1复现FAST-LIO2
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址