0. 前情回顾
打算通过FAST_LIO2为建图提供里程计。硬件基于:jetson, mid360。
1. 启动命令
通过如下命令行启动FAST_LIO2
bash
cd <ros2_ws>
. install/setup.bash # use setup.zsh if use zsh
ros2 launch fast_lio mapping.launch.py config_file:=avia.yaml
2. 前置步骤
在运行上面的启动命令之前,需要修改一些配置。否则,会看到一个什么都没有的rviz。
第一步、修改配置文件为:mid360.yaml
注意原脚本中的启动配置为:avia.yaml。
我使用的是mid360, 数据格式为msg::PointCloud2。因此需要修改配置文件为:mid360.yaml

第二步、修改lidar_type参数
阅读源码:laserMapping.cpp,发现数据格式与配置类型相关。

将其中的lidar_type修改为4
bash
preprocess:
lidar_type: 4

3. 解决报错: Failed to find 'reflectivity'
启动FAST_LIO2后,弹出rviz2并在屏幕输出日志。遇到报错:
bash
[fastlio_mapping-1] Failed to find match for field 'reflectivity'.
错误原因
这个错误是因为你使用的 FAST-LIO2 版本默认期望点云数据包含特定的字段,而你手中的 MID360 雷达点云数据结构与它不匹配造成的。FAST-LIO2 在处理点云时,主要依赖 PointXYZI 或 PointXYZINormal 这类结构,其中包含 x、y、z 坐标以及 intensity (反射强度) 等关键字段。MID360 雷达通过 livox_ros_driver2 发布的点云不包含名为 'reflectivity' 的字段,名字为intensity,导致程序在解析时找不到它,所以报错"Failed to find match for field 'reflectivity'"。
解决方法
打开preprocess.h,将reflectivity修改为intensity 。

此外需要修改:preprocess.cpp

回到文章开头,运行启动命令即可,rviz视图如下
