xdspacelab / openvslam

OpenVSLAM: A Versatile Visual SLAM Framework
https://openvslam.readthedocs.io/
2.97k stars 867 forks source link

Tracking fails due to large motion #180

Open ArashJavan opened 4 years ago

ArashJavan commented 4 years ago

Hi,

unfortunately i am facing following issue, that the tracking module fails to track due to a large motion - watch this video.

i tried to increase the search margin in the fram_tracker module

    if (num_matches < num_matches_thr_) {
        // marginを広げて再探索
        std::fill(curr_frm.landmarks_.begin(), curr_frm.landmarks_.end(), nullptr);
        num_matches = projection_matcher.match_current_and_last_frames(curr_frm, last_frm, 16 * margin);
    }

But also it did not work really! Also increasing the ORB-Parameters did not help:

Feature.max_num_keypoints: 4000
Feature.scale_factor: 1.1
Feature.num_levels: 30
Feature.ini_fast_threshold: 50
Feature.min_fast_threshold: 30

Any idea how i can improve the stability of the motion estimation even with large motion changes?

  1. Suggestion

    One idea would be maybe to use IMU and preintegrate it between each frame as in this paper. But i do not really know how/where the changes should take place in the code?

  2. Suggestion

    Is it possible to force the tracker to search for new features, after the threshold is under some minimum? So it will not get the best match between two consecutive frames, and the map may not be accurate for these two frames, but since it start to search for more features following frames will be accurate enough and it will not crash!

Thanks for any advise!

rahuldeo2047 commented 4 years ago

Ref only: https://github.com/xdspacelab/openvslam/issues/157