SpectacularAI / HybVIO

HybVIO visual-inertial odometry and SLAM system
https://arxiv.org/abs/2106.11857
GNU General Public License v3.0
450 stars 92 forks source link

visualUpdateForEveryNFrame Quality Worse Than Skipping Entire Frame #41

Closed ArmandB closed 1 year ago

ArmandB commented 1 year ago

Sorry in advance if you guys are no longer answering these types of questions: Do you have any idea why skipping the visual update (visualUpdateForEveryNFrame=2) would have worse performance than skipping the frame entirely (data attached)?

We also noticed that on average, visualUpdateForEveryNFrame makes SLAM perform worse than VIO (i.e. "-visualUpdateForEveryNFrame=2" has worse quality than "-useSlam=false -visualUpdateForEveryNFrame=2").

Is this some sort of bug, or was visualUpdateForEveryNFrame (skipping visual updates) just never intended to be used in a real setting to improve performance at the expense of quality?

To do frame dropping, I modified sample_sync.cpp right under the sampleSyncSmartFrameLimiter if statement just popping every N frames.

hybvio frame skip data.xlsx

oseiskar commented 1 year ago

Hello. Many of the parameters, including visualUpdateForEveryNFrame are quite experimental and it is not surprising that they work badly. Some of the parameters may only be helpful to address specific types of failure cases (perhaps not present in EuRoC at all), on certain types of devices (monocular with cheap IMUs, for example) or in certain combinations (e.g., increasing that parameter might require tweaking 2 or 3 other parameters to create a beneficial effect)

ArmandB commented 1 year ago

Thank you!