# FAST-LIVO
可参考教程:FAST-LIVO2
“ 一个极其高效的,抵抗各种极端退化环境,可达像素级精度,首个可以用到UAV自动导航的激光雷达-视觉-惯性里程计,并可以实时重建高精度彩色点云地图 ”
辨析
FAST-LIVO 在 FAST-LIO/LIO 的基础上加入了相机视觉约束,利用图像的光度信息和纹理信息辅助定位,属于 LiDAR-Inertial-Visual Odometry。后续 FAST-LIVO2 进一步把 LiDAR、IMU、图像测量统一到 ESIKF 中,并使用直接法处理 LiDAR 和视觉测量
# FAST-LIVO 笔记:原理、复现与拓展流程
# 1. FAST-LIVO 概念与核心思想
FAST-LIVO 全称为 Fast and Tightly-coupled Sparse-Direct LiDAR-Inertial-Visual Odometry,是一种激光、惯性、视觉紧耦合里程计系统。
它在 FAST-LIO 的基础上加入相机信息,形成 LiDAR + IMU + Camera 的多传感器融合定位方法。
FAST-LIO2 主要依靠激光点云几何结构和 IMU 估计位姿,而 FAST-LIVO 进一步利用图像纹理和光度信息,在几何退化场景下提升定位鲁棒性。简单理解:FAST-LIO2 = LiDAR + IMU,FAST-LIVO = LiDAR + IMU + Camera。
整体流程:IMU 预测位姿 -> LiDAR 点云与地图匹配 -> Camera 进行直接法光度跟踪 -> 融合更新状态 -> 输出位姿和地图。
# 2. 为什么加入视觉信息
纯激光惯性系统在普通环境中已经很强,但在长走廊、空旷区域、重复结构、平面墙面等场景中,点云几何约束可能不足,容易出现退化。视觉信息可以提供纹理、颜色、边缘等信息,用来补充激光的不足。例如白墙走廊中,激光看到的几何结构比较相似,但相机可能看到墙上的海报、门框、纹理变化,这些信息可以帮助系统更稳定地估计位姿。因此 FAST-LIVO 更适合复杂室内环境、移动机器人、无人机和多传感器建图任务。
# 3. 系统组成
| 模块 | 输入 | 作用 |
|---|---|---|
| IMU 预测 | 加速度、角速度 | 高频预测运动状态,提供初值 |
| LiDAR 更新 | 点云 | 利用空间几何结构约束位姿 |
| Camera 更新 | 图像 | 利用光度误差和纹理信息约束位姿 |
| 状态估计 | IMU + LiDAR + Camera | 融合更新最终位姿 |
| 地图维护 | 点云地图/视觉地图 | 保存环境结构信息,辅助后续匹配 |
FAST-LIVO 使用稀疏直接法处理视觉信息。直接法不依赖 ORB、SIFT 等特征点,而是直接比较图像块的灰度或亮度变化。常见光度误差形式为:
其中, 表示当前图像, 表示参考图像, 和 表示同一空间点在不同图像中的像素位置。优化目标是让同一位置在不同图像中的亮度尽可能一致,从而反推出相机和机器人的运动。
# 4. FAST-LIVO 与常见 SLAM 方法对比
| 方法 | 传感器 | 类型 | 特点 |
|---|---|---|---|
| ORB-SLAM3 | Camera / Camera + IMU | 视觉 SLAM | 特征点法,依赖图像特征 |
| VINS-Fusion | Camera + IMU | VIO | 经典视觉惯性系统 |
| FAST-LIO2 | LiDAR + IMU | LIO | 速度快,依赖点云几何 |
| LVI-SAM | LiDAR + Camera + IMU | LVI 融合 | 激光和视觉相对模块化 |
| FAST-LIVO | LiDAR + Camera + IMU | LIVO | 紧耦合,融合几何与视觉纹理 |
简单来说,FAST-LIO2 更偏向高效激光惯性建图,FAST-LIVO 更偏向复杂场景下的多传感器鲁棒定位。
# 5. 复现准备
复现 FAST-LIVO 前,需要先准备 LiDAR、IMU、Camera 三类传感器,并保证三件事:话题正常、时间同步正常、外参标定正确。推荐不要一开始直接跑 FAST-LIVO,而是按传感器和模块逐步验证。
硬件准备:LiDAR + IMU + Camera -> 工控机/笔记本/Jetson -> ROS 环境 -> FAST-LIVO 源码。
常见传感器组合:Livox Mid360 + 相机 + IMU,或 Velodyne/Ouster + 工业相机 + IMU。若使用 RealSense D435i,需要注意它自带 IMU 和相机,但 LiDAR 与相机之间仍然需要外参标定。
# 6. 复现流程
复现建议顺序:安装依赖 -> 编译源码 -> 启动传感器驱动 -> 检查 ROS 话题 -> 标定外参 -> 先跑 FAST-LIO2 -> 再接入相机跑 FAST-LIVO -> 录包与回放调试 -> 参数优化。
# 6.1 环境与源码
先确认 ROS 版本、PCL、Eigen、OpenCV、Livox SDK 或对应 LiDAR 驱动是否安装正常。然后创建工作空间并编译:
mkdir -p ~/fast_livo_ws/src
cd ~/fast_livo_ws/src
git clone <FAST-LIVO 仓库地址>
cd ..
colcon build
source install/setup.bash
colcon build 用于编译 ROS2 工作空间,source install/setup.bash 用于加载当前工作空间环境。如果找不到包或 launch 文件,优先检查是否执行了 source。
# 6.2 传感器话题检查
启动传感器驱动后,检查关键话题是否存在:
ros2 topic list
ros2 topic hz /imu/data
ros2 topic hz /camera/image_raw
ros2 topic hz /livox/lidar
ros2 topic list 用于查看当前 ROS 系统中的话题;ros2 topic hz 用于查看话题发布频率。IMU 频率通常较高,相机频率一般为 20~30 Hz,LiDAR 频率根据型号不同可能为 10 Hz 或更高。如果频率不稳定,后续定位容易漂移或失败。
# 6.3 时间同步
时间同步是 FAST-LIVO 复现的关键。IMU、LiDAR、Camera 的时间戳必须尽量一致,否则会出现轨迹漂移、地图重影、图像跟踪失败等问题。理想情况是硬件同步,例如触发同步、PPS 同步或统一硬件时钟;如果没有硬同步,至少要保证系统时间一致,并检查 ROS 消息时间戳是否正常。
检查思路:查看每个话题 header.stamp -> 对比传感器时间差 -> 判断是否存在明显延迟 -> 必要时使用 rosbag 回放分析。
# 6.4 外参标定
FAST-LIVO 至少需要 LiDAR-IMU 外参和 Camera-IMU 外参,也可以理解为要知道三个传感器之间的空间安装关系。常见外参包括:
表示 LiDAR 到 IMU 的变换,$$
T_

