boxuLibrary / drt-vio-init

The official repository of our CVPR2023 paper "A Rotation-Translation-Decoupled Solution for Robust and Efficient Visual-Inertial Initialization".
GNU General Public License v3.0
159 stars 20 forks source link

What scale error is required to be considered a good initialization result? #12

Closed weihaoysgs closed 12 months ago

weihaoysgs commented 1 year ago

Thank you for your great work !

I see that when the program outputs initialization results, there are two slightly different output formats.

if  ( std::abs(s - 1) > 0.5 or std::abs(gravity_error) > 10 )  {
    LOG(INFO) << "===scale: " << s << " " << "gravity error: " << gravity_error;
    // ........
} else {
    LOG(INFO) << "***scale: " << s << " " << "gravity error: " << gravity_error;
    // ........
}

In a real VIO system, what magnitude of scale error should be kept during initialization to be a good initialization result, 1e-1 seems a bit large? Maybe it takes 1e-2 ?

I tried to add your initialization method to the VIO system, and the rotation RMSE and position RMSE before linearAlignment() were relatively small. However, position RMSE will increase after alignment. Is this due to inaccurate scale estimation ?

Looking forward to your reply !