Skip to content

Commit 823b1b5

Browse files
authored
Fix IMU fallback pose extrapolation state (#311)
1 parent de78d51 commit 823b1b5

1 file changed

Lines changed: 3 additions & 2 deletions

File tree

src/glim/odometry/odometry_estimation_imu.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -237,15 +237,16 @@ EstimationFrame::ConstPtr OdometryEstimationIMU::insert_frame(const Preprocessed
237237
logger->trace("num_imu_integrated={}", num_imu_integrated);
238238

239239
// IMU state prediction
240-
const gtsam::NavState predicted_nav_world_imu = imu_integration->integrated_measurements().predict(last_nav_world_imu, last_imu_bias);
240+
gtsam::NavState predicted_nav_world_imu = imu_integration->integrated_measurements().predict(last_nav_world_imu, last_imu_bias);
241241
gtsam::Pose3 predicted_T_world_imu = predicted_nav_world_imu.pose();
242242
gtsam::Vector3 predicted_v_world_imu = predicted_nav_world_imu.velocity();
243243

244244
// Overwrite the predicted state with the last states if no IMU data is available
245245
if (num_imu_integrated < 2 && last > 1) {
246-
const Eigen::Isometry3d T_delta = frames[last - 1]->T_lidar_imu.inverse() * frames[last]->T_lidar_imu;
246+
const Eigen::Isometry3d T_delta = frames[last - 1]->T_world_imu.inverse() * frames[last]->T_world_imu;
247247
predicted_T_world_imu = gtsam::Pose3((frames[last]->T_world_imu * T_delta).matrix());
248248
predicted_v_world_imu = frames[last]->v_world_imu;
249+
predicted_nav_world_imu = gtsam::NavState(predicted_T_world_imu, predicted_v_world_imu);
249250
}
250251

251252
new_stamps[X(current)] = raw_frame->stamp;

0 commit comments

Comments
 (0)