hku-mars / Point-LIO

Other
724 stars 115 forks source link

旋转时里程计会飘 #64

Open GuraMumei opened 8 months ago

GuraMumei commented 8 months ago

我将mid360以一个角度置于一个全向轮机器人上,平移运动到几个点后以底盘中心旋转。但在自转时有明显的漂移。我尝试按照其他issue调整参数,但仍然不能令人满意。

2023-12-06 22-32-02 的屏幕截图 2023-12-06 22-56-18 的屏幕截图

以下是我的config内容: common: lid_topic: "/livox/lidar" imu_topic: "/livox/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)

preprocess: lidar_type: 1 scan_line: 6 timestamp_unit: 1 # the unit of time/t field in the PointCloud2 rostopic: 0-second, 1-milisecond, 2-microsecond, 3-nanosecond. blind: 1.0

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.005 # = 1 / frequency of IMU satu_acc: 4.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: 1.0 # 1.0 for g as unit, 9.81 for m/s^2 as unit of the IMU's acceleration lidar_meas_cov: 0.1 # 0.001; 0.01 acc_cov_output: 500 gyr_cov_output: 1000 b_acc_cov: 0.0001 b_gyr_cov: 0.0001 imu_meas_acc_cov: 0.1 #0.1 # 0.1 imu_meas_omg_cov: 0.01 #0.01 # 0.1 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: 360 det_range: 50.0 gravity_align: false # 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.806] # [0.0, 9.810, 0.0] # gravity to be aligned gravity_init: [0.0, 0.0, -9.806] # [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: [ 0.011, 0.02329, -0.04412 ] 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: true # 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;

lanuch 中的参数内容: rosparam command="load" file="$(find point_lio)/config/mid360.yaml" /> param name="use_imu_as_input" type="bool" value="false"/> param name="prop_at_freq_of_imu" type="bool" value="true"/> param name="check_satu" type="bool" value="true"/> param name="init_map_size" type="int" value="10"/> param name="point_filter_num" type="int" value="1"/> param name="space_down_sample" type="bool" value="true" /> param name="filter_size_map" type="double" value="0.3" /> param name="cube_side_length" type="double" value="1000" /> param name="runtime_pos_log_enable" type="bool" value="true" />

以下是我的bag

Luo1imasi commented 7 months ago

我也遇到了相同的问题,请问您解决了吗

GuraMumei commented 7 months ago

我也遇到了相同的问题,请问您解决了吗

没有,不过我现在使用fast_lio,效果还不错

Joanna-HE commented 7 months ago

你好,感谢对我们工作的关注。这个问题可以尝试更改map_incremental()函数中添加地图的机制来解决。我一会儿上传一个版本

Luo1imasi commented 7 months ago

你好,感谢对我们工作的关注。这个问题可以尝试更改map_incremental()函数中添加地图的机制来解决。我一会儿上传一个版本

谢谢!

Joanna-HE commented 7 months ago

请试一下最新的point-lio-with-grid-map这个branch的代码,可以完美解决这个问题。谢谢!

Luo1imasi commented 7 months ago

请试一下最新的point-lio-with-grid-map这个branch的代码,可以完美解决这个问题。谢谢!

效果好了很多,我能请问一下是什么原理吗,感谢您的工作!