Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Large velocity detected, triggering IMU-preintegration reset --- Livox Horizon Lidar #42

Open
venom0619 opened this issue Jun 3, 2024 · 2 comments

Comments

@venom0619
Copy link

venom0619 commented Jun 3, 2024

@YJZLuckyBoy
I encountered a warning message in my ROS system with the following content:

Large velocity detected, triggering IMU-preintegration reset and unable to build proper map of the environment

  1. Run the following launch commands:

    • roslaunch liorf run_lio_sam_livox.launch
    • roslaunch livox_ros_driver livox_lidar_msg.launch
  2. Modify the lio_sam_livox.yaml configuration file as follows:

    • Set imuTopic to /livox/imu instead of imu_raw.
    • Use pointCloudTopic: "points_raw" for the pointCloudTopic.

Environment:

  • ROS distribution/version: [ROS1 , noetic]
  • Operating System: [Ubuntu 20.04]
  • using Livox Horizon Lidar

Can someone help me resolve this issue?

test1-1

test1-2

test1-3

Param File:

liorf:

Topics

pointCloudTopic: "points_raw" # Point cloud data
imuTopic: "/livox/imu" # IMU data
odomTopic: "odometry/imu" # IMU pre-preintegration odometry, same frequency as IMU
gpsTopic: "odometry/gpsz" # GPS odometry topic from navsat, see module_navsat.launch file

Frames

lidarFrame: "base_link"
baselinkFrame: "base_link"
odometryFrame: "odom"
mapFrame: "map"

GPS Settings

useImuHeadingInitialization: false # if using GPS data, set to "true"
useGpsElevation: false # if GPS elevation is bad, set to "false"
gpsCovThreshold: 2.0 # m^2, threshold for using GPS data
poseCovThreshold: 25.0 # m^2, threshold for using GPS data

Export settings

savePCD: false # TixiaoShan/LIO-SAM#3
savePCDDirectory: "/Downloads/LOAM/" # in your home folder, starts and ends with "/". Warning: the code deletes "LOAM" folder then recreates it. See "mapOptimization" for implementation

Sensor Settings

sensor: livox # lidar sensor type, 'velodyne' or 'ouster' or 'livox' or 'robosense'
N_SCAN: 6 # number of lidar channel (i.e., Velodyne/Ouster: 16, 32, 64, 128, Livox Horizon: 6)
Horizon_SCAN: 4000 # lidar horizontal resolution (Velodyne:1800, Ouster:512,1024,2048, Livox Horizon: 4000)
downsampleRate: 1 # default: 1. Downsample your data if too many points(line). i.e., 16 = 64 / 4, 16 = 16 / 1
point_filter_num: 3 # default: 3. Downsample your data if too many points(point). e.g., 16: 1, 32: 5, 64: 8
lidarMinRange: 1.0 # default: 1.0, minimum lidar range to be used
lidarMaxRange: 1000.0 # default: 1000.0, maximum lidar range to be used

IMU Settings

imuType: 0 # 0: 6-axis 1: 9-axis
imuRate: 200.0
imuAccNoise: 3.9939570888238808e-03
imuGyrNoise: 1.5636343949698187e-03
imuAccBiasN: 6.4356659353532566e-05
imuGyrBiasN: 3.5640318696367613e-05
imuGravity: 9.80511
imuRPYWeight: 0.01

Extrinsics: T_lb (lidar -> imu)

extrinsicTrans: [0.0, 0.0, 0.0]
extrinsicRot: [-1, 0, 0,
0, 1, 0,
0, 0, -1]

This parameter is set only when the 9-axis IMU is used, but it must be a high-precision IMU. e.g. MTI-680

extrinsicRPY: [0, -1, 0,
1, 0, 0,
0, 0, 1]

voxel filter paprams

mappingSurfLeafSize: 0.15 # default: 0.4 - outdoor, 0.2 - indoor

robot motion constraint (in case you are using a 2D robot)

z_tollerance: 1000 # meters
rotation_tollerance: 1000 # radians

CPU Params

numberOfCores: 4 # number of cores for mapping optimization
mappingProcessInterval: 0.0 # seconds, regulate mapping frequency

Surrounding map

surroundingkeyframeAddingDistThreshold: 0.5 # meters, regulate keyframe adding threshold
surroundingkeyframeAddingAngleThreshold: 0.2 # radians, regulate keyframe adding threshold
surroundingKeyframeDensity: 2.0 # meters, downsample surrounding keyframe poses
surroundingKeyframeSearchRadius: 50.0 # meters, within n meters scan-to-map optimization (when loop closure disabled)
surroundingKeyframeMapLeafSize: 0.3 # downsample local map point cloud

Loop closure

loopClosureEnableFlag: true
loopClosureFrequency: 1.0 # Hz, regulate loop closure constraint add frequency
surroundingKeyframeSize: 50 # submap size (when loop closure enabled)
historyKeyframeSearchRadius: 15.0 # meters, key frame that is within n meters from current pose will be considerd for loop closure
historyKeyframeSearchTimeDiff: 30.0 # seconds, key frame that is n seconds older will be considered for loop closure
historyKeyframeSearchNum: 25 # number of hostory key frames will be fused into a submap for loop closure
loopClosureICPSurfLeafSize: 0.3 # downsample icp point cloud
historyKeyframeFitnessScore: 0.3 # icp threshold, the smaller the better alignment

Visualization

globalMapVisualizationSearchRadius: 1000.0 # meters, global map visualization radius
globalMapVisualizationPoseDensity: 10.0 # meters, global map visualization keyframe density
globalMapVisualizationLeafSize: 1.0 # meters, global map visualization cloud density

Navsat (convert GPS coordinates to Cartesian)

navsat:
frequency: 50
wait_for_datum: false
delay: 0.0
magnetic_declination_radians: 0
yaw_offset: 0
zero_altitude: true
broadcast_utm_transform: false
broadcast_utm_transform_as_parent_frame: false
publish_filtered_gps: false

EKF for Navsat

ekf_gps:
publish_tf: false
map_frame: map
odom_frame: odom
base_link_frame: base_link
world_frame: odom

frequency: 50
two_d_mode: false
sensor_timeout: 0.01

-------------------------------------

External IMU:

-------------------------------------

imu0: imu_correct

make sure the input is aligned with ROS REP105. "imu_correct" is manually transformed by myself. EKF can also transform the data using tf between your imu and base_link

imu0_config: [false, false, false,
true, true, true,
false, false, false,
false, false, true,
true, true, true]
imu0_differential: false
imu0_queue_size: 50
imu0_remove_gravitational_acceleration: true

-------------------------------------

Odometry (From Navsat):

-------------------------------------

odom0: odometry/gps
odom0_config: [true, true, true,
false, false, false,
false, false, false,
false, false, false,
false, false, false]
odom0_differential: false
odom0_queue_size: 10

x y z r p y x_dot y_dot z_dot r_dot p_dot y_dot x_ddot y_ddot z_ddot

process_noise_covariance: [ 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 10.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0.03, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0.03, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0.1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0.04, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.015]

@lytkinsa96
Copy link

The pattern indicates that system fails to initialize (see step "0" in imuPreintegration in odometryHandler).

Try to adjust the priorVelNoise variable.

Also check TixiaoShan/LIO-SAM#104 -- this may help

I encountered a warning message in my ROS system with the following content:

Large velocity detected, triggering IMU-preintegration reset and unable to build proper map of the environment

1. Run the following launch commands:
   
   * `roslaunch liorf run_lio_sam_livox.launch`
   * `roslaunch livox_ros_driver livox_lidar_msg.launch`

2. Modify the `lio_sam_livox.yaml` configuration file as follows:
   
   * Set `imuTopic` to `/livox/imu` instead of `imu_raw`.
   * Use `pointCloudTopic: "points_raw"` for the `pointCloudTopic`.

Environment:

* ROS distribution/version: [ROS1 , noetic]

* Operating System: [Ubuntu 20.04]

* using Livox Horizon Lidar

Can someone help me resolve this issue?

test1-1

test1-2

test1-3

@venom0619
Copy link
Author

@lytkinsa96

Thanks for the reply can you be more specific on adjusting the priorVelNoise variable.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants