从零配置到实战:用FAST_LIO_LOCALIZATION玩转Livox雷达重定位(含自定义bag录制技巧)
如果你已经对FAST_LIO的建图流程驾轻就熟,甚至在自己的机器人上跑过几圈,那么接下来可能会遇到一个更实际的问题:地图建好了,机器人关机重启或者被挪了个位置,怎么让它快速“认出”自己在地图中的位置,而不是从头开始重新建图?这正是重定位(Relocalization)要解决的核心痛点。今天,我们就来深入探讨FAST_LIO_LOCALIZATION这个专门为FAST_LIO生态设计的重定位模块,它不仅继承了FAST_LIO的高效与轻量,更在“找回自我”这件事上,提供了清晰的解决路径。
与原始FAST_LIO相比,LOCALIZATION模块的定位从“从无到有构建地图”转变为“在已知地图中快速确定位姿”。这种转变带来了算法流程、数据依赖和参数配置上的诸多差异。更重要的是,为了让它正常工作,我们提供给它的数据——尤其是点云数据——必须符合其“胃口”。很多开发者第一次尝试时,最容易栽在数据格式不匹配上,系统报出类似“lasermapping节点接收数据格式出错”的错误,其根源往往在于录制的bag文件点云类型不对。本文将手把手带你从环境配置、模块差异解析,到最关键的自定义bag录制技巧,最后完成完整的重定位实战,帮你绕过那些常见的“坑”。
1. 环境搭建与源码编译:为重定位做好准备
在开始重定位之旅前,一个干净、兼容的编译环境是基石。虽然FAST_LIO_LOCALIZATION基于FAST_LIO,但它的编译和依赖关系有一些需要特别注意的细节,盲目照搬FAST_LIO的编译步骤可能会遇到问题。
首先,我们需要一个ROS工作空间。我习惯在~/catkin_ws下操作,你可以选择任何你喜欢的位置。
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
接下来是获取源码。这里有个关键点:必须先编译并source览沃(Livox)的ROS驱动。因为FAST_LIO_LOCALIZATION和FAST_LIO一样,依赖Livox驱动定义的自定义消息类型(CustomMsg)。如果驱动没有先编译好并引入环境,后续编译会因为找不到消息头文件而失败。
# 克隆览沃ROS驱动仓库
git clone https://github.com/Livox-SDK/livox_ros_driver.git
# 进入工作空间根目录编译驱动
cd ~/catkin_ws
catkin_make
# 编译完成后,必须source一下,让当前终端识别CustomMsg等消息类型
source devel/setup.bash
注意:很多编译错误都源于忽略了这一步。
source devel/setup.bash的作用是将当前工作空间下的消息类型、可执行文件路径添加到终端环境变量中。如果不执行,即使编译通过了,运行节点时也可能找不到对应的消息定义。
现在,可以克隆FAST_LIO_LOCALIZATION的源码了。这里我们使用HViktorTsoi维护的版本。
cd ~/catkin_ws/src
git clone https://github.com/HViktorTsoi/FAST_LIO_LOCALIZATION.git
回到工作空间根目录,进行最终编译。由于已经source了包含Livox驱动的工作空间环境,此时编译应该能顺利找到所有依赖。
cd ~/catkin_ws
catkin_make -DCMAKE_BUILD_TYPE=Release
编译成功的标志是最后没有报错,并且生成了相应的可执行文件。你可以通过ls devel/lib/fast_lio_localization/来查看。至此,基础环境就搭建完毕了。
2. 核心解析:FAST_LIO_LOCALIZATION与原始FAST_LIO的差异
很多开

1129

被折叠的 条评论
为什么被折叠?



