# Ubuntu 22.04 复现 Fast-LIO2 指南:ROS2 环境配置与编译实践
Fast-LIO2 作为高效的激光惯性里程计算法,在机器人领域具有重要应用价值。本文将详细介绍在 Ubuntu 22.04 系统上配置 ROS2 环境并复现 Fast-LIO2 的完整流程。
## 环境准备与系统要求
在开始复现之前,需要确保系统满足基本要求。推荐使用 Ubuntu 22.04 LTS 版本,该系统对 ROS2 Humble 提供了良好支持。
### 系统更新与基础依赖安装
首先更新系统并安装必要的开发工具:
```bash
# 更新系统软件包
sudo apt update && sudo apt upgrade -y
# 安装基础开发工具
sudo apt install -y \
build-essential \
cmake \
git \
wget \
curl \
software-properties-common \
lsb-release
```
验证系统版本信息:
```bash
# 检查 Ubuntu 版本
lsb_release -a
# 检查系统架构
uname -m
```
## ROS2 Humble 安装与配置
### 安装 ROS2 基础环境
按照官方推荐方式安装 ROS2 Humble:
```bash
# 设置 locale
sudo apt update && sudo apt install -y locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8.UTF-8
export.UTF-8
<"kuww.com.cn">
<"zhongguoinfo.com">
<"bijiapinpai.com">
# 添加 ROS2 软件源
sudo apt install -y software-properties-common
sudo add-apt-repository universe
# 添加 ROS2 GPG 密钥
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
# 添加 ROS2 仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | \
sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
# 安装 ROS2 基础包
sudo apt update
sudo apt install -y ros-humble-desktop
# 安装开发工具
sudo apt install -y \
python3-rosdep \
python3-colcon-common-extensions \
ros-dev-tools
<"fjiqx.com">
<"doyeepp.com">
<"wenfatshed.com">
```
### 配置 ROS2 环境
初始化 rosdep 并设置环境变量:
```bash
# 初始化 rosdep
sudo rosdep init
rosdep update
# 设置环境变量
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
# 验证安装
printenv | grep ROS
```
## CMake 版本管理与选择
Fast-LIO2 对 CMake 版本有一定要求,需要确保使用合适的版本:
```bash
# 检查当前 CMake 版本
cmake --version
# 如果版本较低,安装更新的 CMake
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | \
gpg --dearmor - | sudo tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null
sudo apt-add-repository "deb https://apt.kitware.com/ubuntu/ $(lsb_release -cs) main"
sudo apt update
sudo apt install -y cmake cmake-qt-gui
<"hrbrkxfqc.com">
<"tjjsjcj.com">
<"xijiazx.mobi">
# 验证新版本
cmake --version
```
## 安装 Fast-LIO2 依赖项
### 安装 Eigen3 和 Pangolin
Fast-LIO2 依赖 Eigen3 进行矩阵运算,Pangolin 用于可视化:
```bash
# 安装 Eigen3
sudo apt install -y libeigen3-dev
# 安装 Pangolin 依赖
sudo apt install -y \
libgl1-mesa-dev \
libglew-dev \
libwayland-dev \
libxkbcommon-dev \
wayland-protocols
# 编译安装 Pangolin
cd ~
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build && cd build
cmake ..
make -j$(nproc)
sudo make install
```
### 安装 ROS2 相关依赖
安装 Fast-LIO2 所需的 ROS2 包:
```bash
# 安装 ROS2 导航相关包
sudo apt install -y \
ros-humble-navigation2 \
ros-humble-nav2-bringup \
ros-humble-slam-toolbox
<"djmfzb.mobi">
<"yjmfzb.mobi">
<"fjmfzb.mobi">
# 安装点云处理相关包
sudo apt install -y \
ros-humble-pcl-ros \
ros-humble-laser-geometry
```
## 复现 Fast-LIO2
### 下载 Fast-LIO2 源代码
创建工作空间并下载源码:
```bash
# 创建工作空间
mkdir -p ~/fast_lio2_ws/src
cd ~/fast_lio2_ws/src
# 克隆 Fast-LIO2 代码
git clone https://github.com/hku-mars/FAST_LIO.git
cd FAST_LIO
# 下载子模块
git submodule update --init --recursive
```
### 编译 Fast-LIO2
使用 colcon 工具进行编译:
```bash
# 返回工作空间根目录
cd ~/fast_lio2_ws
# 安装依赖
rosdep install --from-paths src --ignore-src -r -y
# 编译代码
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
# 设置工作空间环境
echo "source ~/fast_lio2_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc
<"mzlzb.mobi">
<"kqiuzb.mobi">
<"longmen.mobi">
```
### 解决编译问题
如果遇到编译错误,可能需要手动处理一些依赖关系:
```bash
# 安装 Livox SDK(如果使用 Livox 激光雷达)
cd ~
git clone https://github.com/Livox-SDK/Livox-SDK.git
cd Livox-SDK
mkdir build && cd build
cmake ..
make -j$(nproc)
sudo make install
# 重新编译 Fast-LIO2
cd ~/fast_lio2_ws
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
```
## 运行与测试
### 准备测试数据
下载测试数据集验证算法:
```bash
# 创建数据目录
mkdir -p ~/fast_lio2_data
cd ~/fast_lio2_data
# 下载示例数据(以官方提供的示例为准)
wget [数据文件链接]
```
### 运行 Fast-LIO2
启动 Fast-LIO2 节点:
```bash
# 启动 ROS2 核心
roscore &
# 在新的终端中运行 Fast-LIO2
source ~/fast_lio2_ws/install/setup.bash
ros2 launch fast_lio mapping.launch.py
<"feisuzb.mobi">
<"zhizhuzb.mobi">
<"meihzilian.mobi">
# 或者使用具体配置文件
ros2 run fast_lio fastlio_mapping --ros-args -p config_file:=$(pwd)/config/avia.yaml
```
### 数据播放与可视化
播放数据包并查看结果:
```bash
# 播放数据包
ros2 bag play [数据包路径]
# 启动 RViz2 进行可视化
rviz2
# 在 RViz2 中添加相关显示:
# - 添加 PointCloud2 显示激光点云
# - 添加 Path 显示轨迹
# - 添加 TF 显示坐标系关系
```
## 参数配置与调优
### 修改配置文件
根据传感器类型调整参数:
```yaml
# config/avia.yaml 示例配置
preprocess:
lidar_type: 1 # Livox Avia
point_filter_num: 1
scan_line: 6
postprocess:
publish_frame: "camera_init"
extrinsic_T: [0.0, 0.0, 0.0]
extrinsic_R: [1.0, 0.0, 0.0,
0.0, 1.0, 0.0,
0.0, 0.0, 1.0]
```
### 性能优化配置
调整编译参数提升性能:
```bash
# 重新编译启用优化
cd ~/fast_lio2_ws
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-O3 -march=native"
```
## 故障排除
### 常见问题解决
**问题1:Pangolin 编译错误**
```bash
# 确保安装所有依赖
sudo apt install -y libjpeg-dev libpng-dev
# 重新编译 Pangolin
cd Pangolin/build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j$(nproc)
<"zuxie.mobi">
<"nbab.mobi">
<"cbab.mobi">
```
**问题2:ROS2 消息类型错误**
```bash
# 更新消息定义
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# 重新编译
colcon build
```
**问题3:CUDA 相关错误(如果使用 GPU)**
```bash
# 检查 CUDA 安装
nvidia-smi
# 如果未安装 CUDA,可安装或禁用 CUDA 支持
cd ~/fast_lio2_ws
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release -DBUILD_CUDA=OFF
```
### 调试技巧
使用 ROS2 工具进行调试:
```bash
# 查看节点状态
ros2 node list
# 查看话题列表
ros2 topic list
# 查看具体话题内容
ros2 topic echo /topic_name
# 检查 TF 树
ros2 run tf2_tools view_frames.py
```
## 结果验证与评估
### 轨迹精度评估
使用 EVO 工具进行轨迹评估:
```bash
# 安装 EVO
pip install evo --upgrade --no-binary evo
# 保存轨迹数据
ros2 topic echo /fastlio/odometry --csv > odometry.csv
# 评估轨迹精度
evo_rpe kitti ground_truth.txt odometry.txt -r trans_part --align --plot
```
### 性能分析
监控系统资源使用情况:
```bash
# 查看 CPU 和内存使用
htop
# 监控 ROS2 节点性能
ros2 run fast_lio performance_monitor
```
通过以上步骤,您应该能够在 Ubuntu 22.04 系统上成功复现 Fast-LIO2。整个过程涉及 ROS2 环境配置、依赖管理、编译优化和运行调试等多个环节,每个步骤都需要仔细执行。如果在某个环节遇到问题,建议参考官方文档和社区讨论寻求解决方案。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/19545/viewspace-3101866/ ,如需转载,请注明出处,否则将追究法律责任。