FAST-LIO
ROS2 Fork repo 维护者:Ericsiii
相关工作及扩展应用
SLAM:
- ikd-Tree:用于 3D kNN 搜索的最先进的动态 KD-Tree。
- R2LIVE:使用 FAST-LIO 作为 LiDAR 惯性前端的高精度 LiDAR-惯性-视觉融合工作。
- LI_Init:一个强大的实时 LiDAR-IMU 外部初始化和同步 包。
- FAST-LIO-LOCALIZATION :FAST-LIO与重新定位功能模块的集成。
Control and Plan:
- IKFOM:快速高精度流形卡尔曼滤波器工具箱。
- UAV Avoiding Dynamic Obstacles:FAST-LIO在机器人规划中的实现之一。
- UGV Demo:可微流形上的轨迹跟踪的模型预测控制。
- Bubble Planner:使用后退走廊规划高速平滑四旋翼轨迹。
FAST-LIO
FAST-LIO(快速激光雷达-惯性里程计)是一款计算高效且稳健的激光雷达-惯性里程计软件包。它使用紧耦合迭代扩展卡尔曼滤波器将激光雷达特征点与 IMU 数据融合,从而能够在快速运动、嘈杂或杂乱的环境中实现稳健导航,避免信号衰减。我们的软件包解决了许多关键问题:
- 用于里程计优化的快速迭代卡尔曼滤波器;
- 在最稳定的环境下自动初始化;
- 并行KD树搜索,减少计算量;
FAST-LIO 2.0(2021-07-05更新)
管道:
新功能:
- 使用ikd-Tree进行增量建图,实现更快的速度和超过 100Hz 的 LiDAR 速率。
- 对原始 LiDAR 点进行直接里程计(扫描到地图)(可以禁用特征提取),实现更好的精度。
- 由于不需要特征提取,FAST-LIO2 可以支持多种类型的激光雷达,包括旋转式(Velodyne、Ouster)和固态(Livox Avia、Horizon、MID-70)激光雷达,并且可以轻松扩展以支持更多激光雷达。
- 支持外接IMU。
- 支持基于 ARM 的平台,包括 Khadas VIM3、Nivida TX2、Raspberry Pi 4B(8G RAM)。
相关论文:
FAST-LIO:基于紧耦合迭代卡尔曼滤波器的快速、稳健的 LiDAR-惯性里程计包
贡献者
Wei Xu 徐威,Yixi Cai 蔡逸熙,Dongjiao He 贺东娇,Fang Cheng Zhu 朱方程,Jiarong Lin 林家荣,Cheng Liu 刘政,Borong Yuan
1. 先决条件
1.1 Ubuntu和ROS
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
评论:
- 由于 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-driver的livox_lidar_msg.launch中的publish_freq参数。
3.2 对于 Livox 系列外置 IMU 的情况
mapping_avia.launch 理论上支持 mid-70、mid-40 或其他 livox 系列激光雷达,但运行前需要设置一些参数:
编辑config/avia.yaml
以设置以下参数:
- LiDAR点云主题名称:
lid_topic
- IMU主题名称:
imu_topic
- 翻译外在因素:
extrinsic_T
- 旋转外部:(
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 的提示: