The integration of IMU measurement starts from the measurement corresponding to the one just after previous lidar state timestamp.
The GTSAM function PreintegratedImuMeasurements::integrateMeasurement check whether dt<=0. If dt<=0, it aborts the current process.
dt represents measTime-preLidarTime
in this case
So we should avoid using the measurement which its timestamp is equal to lidar state timestamp (which causes dt=0).
An example of aborted case
itRawMeasStartUpdate->Time = 1659364917.820329904556
timeIcurr = 1659364917.820329904556
terminate called after throwing an instance of 'std::runtime_error'
what(): PreintegratedImuMeasurements::integrateMeasurement: dt <=0