由于本人使用的激光雷达为velodyne,所以重点看了velodyne的相关配置文件。
1.下面这块代码是velodyne.yaml的通用设置,主要用于设置激光雷达和imu的话题。
common:
lid_topic: "/velodyne_points" # LiDAR 数据话题名称。
imu_topic: "/IMU_data" # IMU 数据话题名称。
time_sync_en: false # 是否启用时间同步。如果无法进行外部时间同步,才启用此选项。
time_offset_lidar_to_imu: 0.0 # LiDAR 和 IMU 之间的时间偏移,通常通过其他算法(如 LI-Init)进行标定。如果不知道具体偏移量,可以设置为 0.0。
通过下列命令可以确定所用数据集对应的激光雷达和imu的话题
2.preprocess模块
preprocess:
lidar_type: 2 # LiDAR 类型(1:Livox,2:Velodyne,3:Ouster)。
scan_line: 32 # LiDAR 扫描的扫描线数量(Velodyne 通常为 32)。
scan_rate: 10 # LiDAR 扫描频率,单位为 Hz。仅对 Velodyne 有效。
timestamp_unit: 2 # 时间戳的单位:0 - 秒,1 - 毫秒,2 - 微秒,3 - 纳秒。
blind: 2 # 可能与 LiDAR 扫描或数据处理有关的参数,具体含义可能需要根据文档或代码进一步了解。
3.mapping模块
mapping:
acc_cov: 0.1 # 加速度计协方差,表示 IMU 加速度计数据的误差。
gyr_cov: 0.1 # 陀螺仪协方差,表示 IMU 陀螺仪数据的误差。
b_acc_cov: 0.0001 # 加速度计偏置协方差,表示加速度计偏置的误差。
b_gyr_cov: 0.0001 # 陀螺仪偏置协方差,表示陀螺仪偏置的误差。
fov_degree: 180 # LiDAR 的视场角(FOV),单位为度(Velodyne 通常为 360 度)。
det_range: 100.0 # LiDAR 的最大探测范围,单位为米。
extrinsic_est_en: false # 是否启用 IMU 和 LiDAR 之间的外参在线估计(即相对位置和方向的计算)。
extrinsic_T: [0, 0, 0.28] # IMU 和 LiDAR 之间的外参平移向量,单位为米。这里是 `[x, y, z] = [0, 0, 0.28]`,表示 LiDAR 相对 IMU 在 Z 轴上偏移 0.28 米。
extrinsic_R: [1, 0, 0, 0, 1, 0, 0, 0, 1] # IMU 和 LiDAR 之间的外参旋转矩阵,用于描述 IMU 和 LiDAR 之间的相对朝向。
对于 extrinsic_est_en这个设置,如果在不知道IMU与LiDAR之间确切的外参信息,可以设置为true,启动在线估计。至于外参获取,可以通过使用自己有的硬件设备录制一个bag数据集,然后运用数据集进行外参标定。
4.publish模块
publish:
path_en: false # 是否发布机器人或车辆的路径。
scan_publish_en: true # 是否发布每个扫描的点云数据。
dense_publish_en: true # 是否发布密集点云数据(较高密度)。设置为 false 时,点数会减少。
scan_bodyframe_pub_en: true # 是否将点云数据发布在 IMU 的本体坐标系中,而不是全局坐标系中。
重点说一下关于scan_bodyframe_pub_en的设置,在 RViz 中,如果设置为 false
,点云数据将不会显示随着传感器本体旋转或移动的效果,而是呈现为固定在全局坐标系中的点云。
5.PCD保存设置
pcd_save:
pcd_save_en: true # 是否启用点云数据保存为 PCD 文件。
interval: -1 # 每个 PCD 文件保存多少 LiDAR 帧数据。如果设置为 -1,则将所有帧保存到一个 PCD 文件中,但如果帧数过多,可能会导致内存溢出。
如果 pcd_save_en:设置为true,那么在roslaunch和rosplay bag完之后,pcd文件会自动保存到fast_lio功能包下的PCD文件夹中。
下面是运用自己录的数据集,基于fast_lio算法的建图效果: