hku-mars / Point-LIO

Other
796 stars 133 forks source link

Parameter tuning after road filter using ransac with Point-LIO #62

Open mohamedsamirx opened 1 year ago

mohamedsamirx commented 1 year ago

Hey, I was working on road slam using Point LIO. My slam was functioning well on an Ouster lidar with only lidar data before performing RANSAC, and this was my configuration.

common: lid_topic: "/ouster/points" imu_topic: "" 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: 3 # 2 #velodyne # 1 Livox Avia LiDAR scan_line: 128 # 32 #velodyne 6 avia timestamp_unit: 3 # the unit of time/t field in the PointCloud2 rostopic: 0-second, 1-milisecond, 2-microsecond, 3-nanosecond. blind: 3

mapping: imu_en: false start_in_aggressive_motion: true # 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.02 # = 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.5 # 0.01

acc_cov_output: 0.5 # 500
gyr_cov_output: 0.5 # 1000
b_acc_cov: 0.0001
b_gyr_cov: 0.0001

imu_meas_acc_cov: 1 #0.1 # 2
imu_meas_omg_cov: 2 #0.1 # 2
gyr_cov_input: 0.06 # 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: 50.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] # 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
extrinsic_T: [5.835,0.025,-0.63]
extrinsic_R: [ 1, 0, 0,
               0, 1, 0,
               0, 0, 1 ]

odometry: publish_odometry_without_downsample: false

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 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.

After that, I performed RANSAC to filter the road, ensuring that everything is the same as in the first bag except the lidar data, which has been filtered. Now, the new bag isn't working with the same configuration. What should I tune to make it work on the filtered bag?

Thanks.

Joanna-HE commented 10 months ago

Please try the code on the branch "point-lio-with-grid-map", it has a superior performance than the original one. Thanks!