Odometry module is not populating meaningful pose covariance
Hi! I'm trying to integrate GPS and wheel odometry into mapping and localization process to improve the robustness of the system. What I want to achieve is to add GPS and wheel odometry contraint only when the uncertainty of the LIO grows.
Currently I'm retrieving the covariance matrix by calling smoother->marginalCovariance(X(frames.back()->id)) after smoother update. The problem is that values of the retrieved covariance matrix are always near zero (mostly between 1e-5 and 1e-10), even when the matching cost should be large (e.g. initialize the localization with a wrong initial pose). Those near zero values aren't very helpful for me to determine the uncertainty.
I'm seeing this both when using glim for mapping and using custom odometry module for localization. Any idea about what could be causing the problem?
Actually, it is a general problem in sensor fusion; it is very difficult (or impossible) to estimate a true meaningful covariance through MLE. For example, in our case, we have thousands of LiDAR point measurements, resulting in an underestimated covariance. In practice, we usually need to multiply a heuristic weight with the covariance to balance the weights of different sensors.