rpng / open_vins

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

It seems that the code computing chi2 is not correct #451

Open NewThinker-Jeffrey opened 3 months ago

NewThinker-Jeffrey commented 3 months ago

Relevant code:

https://github.com/rpng/open_vins/blame/17b73cfe4b870ade0a65f9eb217d8aab58deae19/ov_msckf/src/update/UpdaterSLAM.cpp#L395

Now it's as below:

    double chi2 = res.dot(S.llt().solve(res));

I think it should be like:

    double transformed_res = S.llt().solve(res);
    double chi2 = transformed_res.dot(transformed_res);

Other similar code:

https://github.com/rpng/open_vins/blob/17b73cfe4b870ade0a65f9eb217d8aab58deae19/ov_msckf/src/update/UpdaterMSCKF.cpp#L212

https://github.com/rpng/open_vins/blob/17b73cfe4b870ade0a65f9eb217d8aab58deae19/ov_msckf/src/update/UpdaterZeroVelocity.cpp#L206