-
Notifications
You must be signed in to change notification settings - Fork 856
Description
Description
If only 1 measurement is integrated into the CombinedImuFactor, the position related covariance terms are all zero.
This only seems to happen for the CombinedImuFactor though. If the same single measurement is integrated into an ImuFactor all elements of the covariance matrix is filled out. No zero rows/columns.
Unfortunately, these zero rows in the covariance leads to degeneracy and the infamous 'Indeterminant linear system' error.
Steps to reproduce
- Create a PreintegratedCombinedMeasurements
- Integrate 1 IMU measurement into a the measurement
- Create a CombinedImuFactor with the measurement
- Add the factor and necessary initializations to a NonlinearFactorGraph
- Perform optimization
In general the problem can be reproduced with the ImuFactorsExample.cpp by ensuring that only 1 measurement is integrated: preintegrated->integrateMeasurement(imu.head<3>(), imu.tail<3>(), dt);
Expected behavior
Even with just one measurement I would expect at the very least all diagonal element to be non-zero of the preintegrated factor covariance, just as is the case if just one measurement is integrated into the ImuFactor.
Additional information
More information can be found here: https://groups.google.com/forum/#!msg/gtsam-users/WskPzqexiNk/UwQrbBe7AAAJ