Skip to main content

FAST-LIO

ROS2 Fork repo 维护者:Ericsiii

相关工作及扩展应用

SLAM:

  1. ikd-Tree:用于 3D kNN 搜索的最先进的动态 KD-Tree。
  2. R2LIVE:使用 FAST-LIO 作为 LiDAR 惯性前端的高精度 LiDAR-惯性-视觉融合工作。
  3. LI_Init:一个强大的实时 LiDAR-IMU 外部初始化和同步包。
  4. FAST-LIO-LOCALIZATION :FAST-LIO与重新定位功能模块的集成。

Control and Plan:

  1. IKFOM:快速高精度流形卡尔曼滤波器工具箱。
  2. UAV Avoiding Dynamic Obstacles:FAST-LIO在机器人规划中的实现之一。
  3. UGV Demo:可微流形上的轨迹跟踪的模型预测控制。
  4. Bubble Planner:使用后退走廊规划高速平滑四旋翼轨迹。

FAST-LIO

FAST-LIO(快速激光雷达-惯性里程计)是一款计算高效且稳健的激光雷达-惯性里程计软件包。它使用紧耦合迭代扩展卡尔曼滤波器将激光雷达特征点与 IMU 数据融合,从而能够在快速运动、嘈杂或杂乱的环境中实现稳健导航,避免信号衰减。我们的软件包解决了许多关键问题:

  1. 用于里程计优化的快速迭代卡尔曼滤波器;
  2. 在最稳定的环境下自动初始化;
  3. 并行KD树搜索,减少计算量;

FAST-LIO 2.0(2021-07-05更新)

 

相关视频: FAST-LIO2、 FAST-LIO1

管道:

新功能:

  1. 使用ikd-Tree进行增量建图,实现更快的速度和超过 100Hz 的 LiDAR 速率。
  2. 对原始 LiDAR 点进行直接里程计(扫描到地图)(可以禁用特征提取),实现更好的精度。
  3. 由于不需要特征提取,FAST-LIO2 可以支持多种类型的激光雷达,包括旋转式(Velodyne、Ouster)和固态(Livox Avia、Horizon、MID-70)激光雷达,并且可以轻松扩展以支持更多激光雷达。
  4. 支持外接IMU。
  5. 支持基于 ARM 的平台,包括 Khadas VIM3、Nivida TX2、Raspberry Pi 4B(8G RAM)。

相关论文

FAST-LIO2:快速直接激光雷达惯性里程计

FAST-LIO:基于紧耦合迭代卡尔曼滤波器的快速、稳健的 LiDAR-惯性里程计包

贡献者

Wei Xu 徐威Yixi Cai 蔡逸熙Dongjiao He 贺东娇Fang Cheng Zhu 朱方程Jiarong Lin 林家荣Cheng Liu 刘政Borong Yuan

1. 先决条件

1.1 UbuntuROS

Ubuntu >= 20.04

apt PCL 和 Eigen 的默认值足以让 FAST-LIO 正常工作。

ROS >= Foxy (推荐使用 ROS-Humble)。ROS安装

1.2. PCL && 特征值

PCL >= 1.8,遵循PCL 安装

Eigen >= 3.3.4,按照Eigen 安装

1.3. livox_ros_driver2

按照livox_ros_driver2 安装

你也可以使用我修改过的livox_ros_driver2

评论:

  • 由于 FAST-LIO 必须首先支持 Livox 系列 LiDAR,因此在运行任何 FAST-LIO 启动文件之前必须安装并获取****livox_ros_driver 。
  • 如何 source?最简单的方法是将以下行添加source $Licox_ros_driver_dir$/devel/setup.bash到文件末尾~/.bashrc,其中$Licox_ros_driver_dir$是 livox ros 驱动程序工作区的目录(ws_livox如果您完全遵循 livox 官方文档,则应该是该目录)。

2. 构建

克隆存储库并构建 colcon:

    cd <ros2_ws>/src # cd into a ros2 workspace folder
git clone https://github.com/Ericsii/FAST_LIO.git --recursive
cd ..
rosdep install --from-paths src --ignore-src -y
colcon build --symlink-install
. ./install/setup.bash # use setup.zsh if use zsh
  • 请记住在构建之前获取 livox_ros_driver(遵循1.3 livox_ros_driver
  • 如果要使用 PCL 的自定义版本,请将以下行添加到 ~/.bashrc export PCL_ROOT={CUSTOM_PCL_PATH}

3.直接运行

著名的:

A.请确保IMU和LiDAR同步,这很重要。

B. 警告信息“Failed to find match for field 'time'.”表示 rosbag 文件中缺少每个 LiDAR 点的时间戳。这对于正向传播和反向传播都很重要。

C. 如果外部参数已提供,建议将extrinsic_est_en设置为 false。关于外部参数的初始化,请参考我们近期的研究成果:Robust Real-time LiDAR-inertial Initialization

3.1 使用 ros launch 运行

按照 Livox-ros-driver2 的安装步骤,将你的电脑连接到 Livox LiDAR ,然后

cd <ros2_ws>
. install/setup.bash # use setup.zsh if use zsh
ros2 launch fast_lio mapping.launch.py config_file:=avia.yaml

config_file根据需要将参数更改为 config 目录下的其他 yaml 文件。

启动 livox ros 驱动程序。以 MID360 为例。

ros2 launch livox_ros_driver2 msg_MID360_launch.py
  • 对于 livox 系列,FAST-LIO 仅支持收集的数据livox_lidar_msg.launch,因为只有其livox_ros_driver2/CustomMsg数据结构才会生成每个 LiDAR 点的时间戳,这对于运动不失真非常重要。livox_lidar.launch现在无法生成它。
  • 如果要更改帧率,请在制作 livox_ros_driver 包之前修改Livox-ros-driverlivox_lidar_msg.launch中的publish_freq参数。

3.2 对于 Livox 系列外置 IMU 的情况

mapping_avia.launch 理论上支持 mid-70、mid-40 或其他 livox 系列激光雷达,但运行前需要设置一些参数:

编辑config/avia.yaml以设置以下参数:

  1. LiDAR点云主题名称:lid_topic
  2. IMU主题名称:imu_topic
  3. 翻译外在因素:extrinsic_T
  4. 旋转外部:(extrinsic_R仅支持旋转矩阵)
  • FAST-LIO 中的外部参数定义为激光雷达在 IMU 本体坐标系(即以 IMU 为基准坐标系)中的位姿(位置和旋转矩阵)。具体参数可在官方手册中找到。
  • FAST-LIO 为 livox LiDAR 提供了一个非常简单的软件时间同步功能,只需将参数设置time_sync_en为 ture 即可开启。但只有在外部时间同步确实无法实现的情况下才需要开启,因为软件时间同步无法保证准确性。

3.4 PCD文件保存

在启动文件中设置pcd_save_enable为。FAST -LIO 终止后,1所有扫描(在全局框架中)将被累积并保存到文件中。可以可视化点云。FAST_LIO/PCD/scans.pcd``pcl_viewer scans.pcd

pcl_viewer 的提示:

  • 当 pcl_viewer 运行时,按键盘 1、2、3、4、5 来更改要可视化/颜色的内容。
    1 is all random
2 is X values
3 is Y values
4 is Z values
5 is intensity

4. Rosbag示例

4.1 Livox Avia Rosbag

 

文件:可以从谷歌驱动器下载**!!!这个 ros1 包应该转换为 ros2!!!**

跑步:

ros2 launch fast_lio mapping.launch.py config_path:=<path_to_your_config_file>
ros2 bag play <your_bag_dir>

4.2 Velodyne HDL-32E 罗斯巴格

NCLT 数据集:原始 bin 文件可以在这里找到。

我们制作了Rosbag 文件和一个用于生成 Rosbag 文件的Python 脚本: python3 sensordata_to_rosbag_fastlio.py bin_file_dir bag_name.bag**!!!This ros1 bag should be convert to ros2!!!**要将 ros1 bag 转换为 ros2 bag,请按照文档转换 rosbag 版本

跑步:

roslaunch fast_lio mapping_velodyne.launch
rosbag play YOUR_DOWNLOADED.bag

5.无人机上的实现

为了验证 FAST-LIO 在实际移动机器人中的鲁棒性和计算效率,我们构建了一个小型四旋翼飞行器,可搭载一个 FoV 为 70 度的 Livox Avia 激光雷达和一个配备 1.8 GHz Intel i7-8550U CPU 和 8 G RAM 的 DJI Manifold 2-C 机载计算机,如下所示。

该无人机的主要结构是3D打印的(铝或PLA),.stl文件将来会开源。

 

6.致谢

感谢 LOAM(J. Zhang 和 S. Singh. LOAM:实时激光雷达里程计和建图)、Livox_MappingLINSLoam_Livox