快速 LIO 本地化
一个简单的本地化框架,可以在基于FAST-LIO的构建地图中重新定位。
新闻
-
2021-08-11:添加 Open3D 0.7 支持。
-
2021-08-09:迁移到 Open3D 以获得更好的性能。
1. 特点
- 在预先构建的点云地图中进行实时 3D 全局定位。 通过融合低频全局定位(约0.5~0.2Hz)和FAST-LIO的高频里程计,整个系统的计算效率很高。
- 消除里程计的累积误差。
- 初始定位可以通过RVIZ的粗略手动估计来提供,也可以通过其他传感器/算法进行姿态定位。
2. 先决条件
2.1 FAST-LIO 的依赖关系
从技术上讲,如果您之前已经构建并运行过 FAST-LIO,则可以跳过第 2.1 节。
这部分依赖与FAST-LIO一致,请参考文档 GitHub - hku-mars/FAST_LIO: A computationally efficient and robust LiDAR-inertial odometry (LIO) package
2.2 本地化模块的依赖关系
-
蟒蛇 2.7
sudo apt install ros-$ROS_DISTRO-ros-numpy
pip install open3d==0.9
请注意,在 Python2.7 中直接使用 pip 安装 Open3D 时可能会出现问题:
ERROR: Package 'pyrsistent' requires a different Python: 2.7.18 not in '>=3.5'
您可以首先安装pyrsistent:
pip install pyrsistent==0.15
然后
pip install open3d==0.9
3. 构建
克隆存储库并catkin_make:
<span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><span style="color:#1f2328"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code> cd ~/$A_ROS_DIR$/src
git clone https://github.com/HViktorTsoi/FAST_LIO_LOCALIZATION.git
cd FAST_LIO_LOCALIZATION
git submodule update --init
cd ../..
catkin_make
source devel/setup.bash
</code></span></span></span></span>
- 请记住在构建之前获取livox_ros_driver(遵循livox_ros_driver)
- 如果要使用 PCL 的自定义版本,请将以下行添加到 ~/.bashrc
export PCL_ROOT={CUSTOM_PCL_PATH}
4. 运行本地化
4.1 示例数据集
在大型地下车库演示 rosbag: Google 云端硬盘 |百度盘 (代码: ne8d);
对应地图:Google Drive |百度盘(代码:kw6f)
可以使用 LIO-SAM 或 FAST-LIO-SLAM 构建地图。
4.2 运行
-
首先,请确保您使用的是 Python 2.7 环境;
-
运行本地化,这里我们以 Livox AVIA 为例:
roslaunch fast_lio_localization localization_avia.launch map:=/path/to/your/map.pcd
请修改为您自己的地图点云文件路径。/path/to/your/map.pcd
等待 3~5 秒,直到地图云出现在 RVIZ 中;
- 如果您正在使用示例 rosbag 数据进行测试:
rosbag play localization_test_scene_1.bag
或者,如果您正在实时运行
roslaunch livox_ros_driver livox_lidar_msg.launch
请将 livox_lidar_rviz.launch 中的publish_freq设置为 10Hz,以确保在单次扫描中有足够的点进行全局定位。 即将推出对更高频率的支持。
- 提供初始姿势
rosrun fast_lio_localization publish_initial_pose.py 14.5 -7.5 0 -0.25 0 0
数值 14.5 -7.5 0 -0.25 0 0 表示地图框中的 6D 姿态 x y z 偏航俯仰滚动, 这是localization_test_scene_1.bag的粗略初步猜测。
初始猜测也可以由RVIZ中的“2D姿态估计”工具提供。
请注意,在初始化阶段,最好让机器人保持静止。或者如果你玩袋子,拳头玩袋子大约 0.5 秒,然后暂停袋子,直到初始化成功。
相关作品
- FAST-LIO:计算高效且稳健的 LiDAR 惯性里程计 (LIO) 软件包
- ikd-Tree:用于 3D kNN 搜索的最先进的动态 KD 树。
- FAST-LIO-SLAM:FAST-LIO与Scan-Context循环闭包模块的集成。
- LIO-SAM_based_relocalization:一个简单的系统,可以在基于LIO-SAM的构建地图上重新定位机器人。
确认
感谢 FAST-LIO 和 LIO-SAM_based_relocalization 的作者。
待办事项
- 查看已发布的里程计和 tf 的时间戳问题;
- 使用集成点进行全球本地化;
- 将全局定位与FAST-LIO的状态估计融合在一起,平滑定位轨迹;
- 更新。。。