rpng / open_vins

An open source platform for visual-inertial navigation research.
https://docs.openvins.com
GNU General Public License v3.0
2.05k stars 615 forks source link

Why abandon the state and features estimated during initialization? #420

Closed TianzeXie closed 4 months ago

TianzeXie commented 4 months ago

I notice that you left two variables in InertialInitializer.cpp 137 138 which should be used to propagate the imu states and features from initialization to filtering. But they are not be used. I think it will be more robust and accurate with them, although calculate them would cause a lot of delay. But after some experiment it gives some negative effect to the filtering. WHY? @goldbattle

goldbattle commented 4 months ago

You can give it a try, but one challenge is that the covariance of the complete system needs to be recovered. If the features and clones are also recovered this state size will be large, and thus the covariance recovery will become large (it is O(N^3) process). We only do the 15x15 covariance to try to recover the covariance as quickly as possible.

You might need to do some inflation as I have found that that covariance typically recovered is overconfident due to the very limited motion over the short period. There is a simulator, so you should be able to play around for yourself.

TianzeXie commented 4 months ago

Thanks for your reply! I have tried it and found the covariance issue. In my experiment, it performed more accurate under 0.5 bag rate. To deal with such trade-off problem, I tried to recover the latest n state, sometimes it truly perform better.