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

The role of the integration covariance #1114

Closed
goldenhazard opened this issue Feb 21, 2022 · 3 comments · Fixed by #879 or #874
Closed

The role of the integration covariance #1114

goldenhazard opened this issue Feb 21, 2022 · 3 comments · Fixed by #879 or #874
Milestone

Comments

@goldenhazard
Copy link

Hello, I am recently navigating through imu_preintegration factor
While scrutinizing ImuFactor and CombinedImuFactor , I bumped into the presence of so-called integration_covariance or biasAccOmegaInt. The two terms appear while propagating uncertainty as follows,

ImuFactor.cpp :: integrateMeasurement

  const Matrix3& iCov = p().integrationCovariance;
  preintMeasCov_ = A * preintMeasCov_ * A.transpose();
  preintMeasCov_.noalias() += B * (aCov / dt) * B.transpose();
  preintMeasCov_.noalias() += C * (wCov / dt) * C.transpose();

  // NOTE(frank): (Gi*dt)*(C/dt)*(Gi'*dt), with Gi << Z_3x3, I_3x3, Z_3x3
  preintMeasCov_.block<3, 3>(3, 3).noalias() += iCov * dt;

CombinedImuFactor.cpp :: integrateMeasurement

  // BLOCK DIAGONAL TERMS
  D_t_t(&G_measCov_Gt) = dt * iCov;
  D_v_v(&G_measCov_Gt) = (1 / dt) * vel_H_biasAcc
      * (aCov + p().biasAccOmegaInt.block<3, 3>(0, 0))
      * (vel_H_biasAcc.transpose());
  D_R_R(&G_measCov_Gt) = (1 / dt) * theta_H_biasOmega
      * (wCov + p().biasAccOmegaInt.block<3, 3>(3, 3))
      * (theta_H_biasOmega.transpose());
  D_a_a(&G_measCov_Gt) = dt * p().biasAccCovariance;
  D_g_g(&G_measCov_Gt) = dt * p().biasOmegaCovariance;`

At first, I thought this was designed in heuristic to preclude some numerical failure while integrating measurement covariance. But found out it is the value that can be analytically derived, referring to your comment G*CovMeas*GT.

What is the role of it and how can I use it?

@varunagrawal
Copy link
Collaborator

I am writing this up actually. Refer to #879.

@varunagrawal varunagrawal linked a pull request Feb 22, 2022 that will close this issue
@goldenhazard
Copy link
Author

Oh looking forward to the release of the docs. Thank you for your answer

@varunagrawal varunagrawal added this to the GTSAM 4.2 milestone Apr 19, 2022
@varunagrawal varunagrawal linked a pull request Aug 3, 2022 that will close this issue
3 tasks
@varunagrawal
Copy link
Collaborator

@goldenhazard #874 has the full documentation of the integration covariance.

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