hku-mars / Point-LIO

Other
774 stars 130 forks source link

关于在长走廊场景中跑自己的bag,出现回退的现象,导致地图漂移 #65

Closed MintePI closed 11 months ago

MintePI commented 11 months ago

我在自己的实机地面的两轮差速小车上使用宇树L1雷达和其自带的imu数据,配置好参数后进行运行Point_LIO建图,在行驶到很长的一段走廊里,产生了回退现象,即实际中小车是一直往前走的,但是在走一个固定位置后,它会以很快的速度在rviz中回退后接着往前走,产生了来来回回的轨迹path,但实际路径并不是这样的,如下图所示: 微信图片_20231212181612

微信图片_20231212175226 使用的雷达是宇树L1雷达,下面是两个配置yaml文件和launch文件的具体信息: yaml文件: common: lid_topic: "/unilidar/cloud" imu_topic: "/unilidar/imu" con_frame: false # true: if you need to combine several LiDAR frames into one con_frame_num: 1 # the number of frames combined cut_frame: false # true: if you need to cut one LiDAR frame into several subframes cut_frame_time_interval: 0.1 # should be integral fraction of 1 / LiDAR frequency
time_lag_imu_to_lidar: 0.0 # Time offset between LiDAR and IMU calibrated by other algorithms, e.g., LI-Init (find in Readme)

the timesample of IMU is transferred from the current timeline to LiDAR's timeline by subtracting this value

preprocess: lidar_type: 5 scan_line: 18 timestamp_unit: 0 # the unit of time/t field in the PointCloud2 rostopic: 0-second, 1-milisecond, 2-microsecond, 3-nanosecond. blind: 0.5 mapping: imu_en: true start_in_aggressive_motion: false # if true, a preknown gravity should be provided in following gravity_init extrinsic_est_en: false # for aggressive motion, set this variable false imu_time_inte: 0.004 # = 1 / frequency of IMU satu_acc: 30.0 # the saturation value of IMU's acceleration. not related to the units satu_gyro: 35 # the saturation value of IMU's angular velocity. not related to the units acc_norm: 9.81 # 1.0 for g as unit, 9.81 for m/s^2 as unit of the IMU's acceleration lidar_meas_cov: 0.001 # 0.001 acc_cov_output: 500 gyr_cov_output: 1000 b_acc_cov: 0.0001 b_gyr_cov: 0.0001 imu_meas_acc_cov: 0.01 #0.1 # 2 imu_meas_omg_cov: 0.01 #0.1 # 2 gyr_cov_input: 0.01 # for IMU as input model acc_cov_input: 0.1 # for IMU as input model plane_thr: 0.1 # 0.05, the threshold for plane criteria, the smaller, the flatter a plane match_s: 81 fov_degree: 180 det_range: 100.0 gravity_align: true # true to align the z axis of world frame with the direction of gravity, and the gravity direction should be specified below gravity: [0.0, 0.0, -9.810] # [0.0, 9.810, 0.0] # gravity to be aligned gravity_init: [0.0, 0.0, -9.810] # [0.0, 9.810, 0.0] # # preknown gravity in the first IMU body frame, use when imu_en is false or start from a non-stationary state

transform from imu to lidar

extrinsic_T: [ 0.007698, 0.014655, -0.00667] # ulhk # [-0.5, 1.4, 1.5] # utbm
extrinsic_R: [ 1, 0, 0,
               0, 1, 0,
               0, 0, 1 ] # ulhk 4 utbm 3

odometry: publish_odometry_without_downsample: enable
publish: path_en: true # false: close the path output scan_publish_en: true # false: close all the point cloud output scan_bodyframe_pub_en: false # true: output the point cloud scans in IMU-body-frame pcd_save: pcd_save_en: true # save map to pcd file 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.

launch文件:

launch-prefix="gdb -ex run --args"
yhk-8 commented 10 months ago

你好,请问你找到这个问题出在哪里了吗