hku-mars / LiDAR_IMU_Init

[IROS2022] Robust Real-time LiDAR-inertial Initialization Method.
GNU General Public License v2.0
803 stars 138 forks source link

激光里程计问题 #91

Open YWL0720 opened 6 months ago

YWL0720 commented 6 months ago

@zfc-zfc 您好!感谢优秀的工作。 我按照您在 #19 中的提示, 测试激光里程计时。发现对于机械式雷达,FAST-LO表现的都很好,但针对于固态雷达如mid-360或avia,效果则变得很不稳定,经常出现抖动的现象。为了排除我自己数据集的影响,我也下载了您上传的mid360_100ms_delay.bag进行了测试。

使用的参数如下。

common:
    lid_topic:  "/livox/lidar"
    imu_topic:  "/livox/imu/async"

preprocess:
    lidar_type: 1                # Livox series LiDAR
    feature_extract_en: false
    scan_line: 6
    blind: 1

initialization:
    cut_frame_num: 1            # must be positive integer
    orig_odom_freq: 10           # original Lidar frequency
    mean_acc_norm: 1         # 1 for livox built-in IMU
    online_refine_time: 20     # seconds
    data_accum_length: 9999999
    Rot_LI_cov: [ 0.00005, 0.00005, 0.00005 ]
    Trans_LI_cov: [ 0.00001, 0.00001, 0.00001 ]

mapping:
    filter_size_surf: 0.05
    filter_size_map: 0.15
    gyr_cov: 0.5
    acc_cov: 0.5
    b_acc_cov: 0.0001
    b_gyr_cov: 0.0001
    det_range: 100.0

publish:
    path_en:  true
    scan_publish_en:  true       # false: close all the point cloud output
    dense_publish_en: true       # false: low down the points number in a global-frame point clouds scan.
    scan_bodyframe_pub_en: false  # true: output the point cloud scans in IMU-body-frame

pcd_save:
    pcd_save_en: false
    interval: -1                 # how many LiDAR frames saved in each pcd file;
                                 # -1 : all frames will be saved in ONE pcd file, may lead to memory crash when having too much frames.

得到的效果如图所示 Screenshot from 2024-01-12 22-11-29

我尝试将参数cut_frame_num 改为 5,效果则变得正常。

所以想请问下,造成这样现象的原因是什么呢?如果我想使用不分帧的点云获得稳定的估计,您有什么调整的意见么?

感谢!

zfc-zfc commented 6 months ago

@zfc-zfc 您好!感谢优秀的工作。 我按照您在 #19 中的提示, 测试激光里程计时。发现对于机械式雷达,FAST-LO表现的都很好,但针对于固态雷达如mid-360或avia,效果则变得很不稳定,经常出现抖动的现象。为了排除我自己数据集的影响,我也下载了您上传的mid360_100ms_delay.bag进行了测试。

使用的参数如下。

common:
    lid_topic:  "/livox/lidar"
    imu_topic:  "/livox/imu/async"

preprocess:
    lidar_type: 1                # Livox series LiDAR
    feature_extract_en: false
    scan_line: 6
    blind: 1

initialization:
    cut_frame_num: 1            # must be positive integer
    orig_odom_freq: 10           # original Lidar frequency
    mean_acc_norm: 1         # 1 for livox built-in IMU
    online_refine_time: 20     # seconds
    data_accum_length: 9999999
    Rot_LI_cov: [ 0.00005, 0.00005, 0.00005 ]
    Trans_LI_cov: [ 0.00001, 0.00001, 0.00001 ]

mapping:
    filter_size_surf: 0.05
    filter_size_map: 0.15
    gyr_cov: 0.5
    acc_cov: 0.5
    b_acc_cov: 0.0001
    b_gyr_cov: 0.0001
    det_range: 100.0

publish:
    path_en:  true
    scan_publish_en:  true       # false: close all the point cloud output
    dense_publish_en: true       # false: low down the points number in a global-frame point clouds scan.
    scan_bodyframe_pub_en: false  # true: output the point cloud scans in IMU-body-frame

pcd_save:
    pcd_save_en: false
    interval: -1                 # how many LiDAR frames saved in each pcd file;
                                 # -1 : all frames will be saved in ONE pcd file, may lead to memory crash when having too much frames.

得到的效果如图所示 Screenshot from 2024-01-12 22-11-29

我尝试将参数cut_frame_num 改为 5,效果则变得正常。

所以想请问下,造成这样现象的原因是什么呢?如果我想使用不分帧的点云获得稳定的估计,您有什么调整的意见么?

感谢! 原理上讲,如果不分帧,无论是机械式雷达还是固态激光雷达 在运动较剧烈(如较快旋转)都是很难保持鲁棒的。原因就是FAST-LO的匀速模型在点云频率较低时变得不合理,而频率高时 两帧间隔时间短,匀速假设更加合理。而至于提到的机械雷达FAST-LO效果好,只是因为#19中提到的几个数据都是在小车上采集的,运动很平缓;而你下载的我提供的数据是手持采集的,且有较快速的旋转。你想不分帧获得稳定的估计,要么用LIO,要么试试其他LO算法。