mp3guy / Kintinuous

Real-time large scale dense visual SLAM system
Other
913 stars 287 forks source link

Reconstructed model not in a plane #56

Open SunshineDou opened 5 years ago

SunshineDou commented 5 years ago

Hello, I have collected the dataset of a room by Realsense D435 and I converted it into klg file, then ran it in Kintinuous. the problem is that the reconstructed model of the room's left and right are not in a plane. the right part of the room is higher than the left. What's the problem? Thank you very much!

krrish94 commented 5 years ago

Hey, do you have a screengrab or something that'll help understand this issue better?

I'm quite sure this has to do with the scanning trajectory itself, but to be doubly sure, the screengrab helps.

SunshineDou commented 5 years ago

@krrish94 Thank you very much for your replying and helping, the screengrab is as follows: 2019-01-14 10-10-07

2019-01-14 10-11-21

As you can see they are not not in a plane, the left of the room is lower than the right of the room, What's the matter? and the other question is that the loop detection is very bad, how can I improve it? Thanks again for your help

krrish94 commented 5 years ago

Yeah, the problem seems to lie with loop detection. I feel loops aren't being detected, and hence, online deformation is not kicking in. One way to try and get loops detected is to build a DBoW2 vocabulary on scenes similar to the one you currently have. And, sometimes, a slower scanning trajectory helps.

(This isn't a legit code issue though, hence this could be closed, but happy to keep answering any questions you might have.)

SunshineDou commented 5 years ago

@krrish94 Thank you very much for your help. but I have no idea what's the "build a DBoW2 vocabulary on scenes similar to the one you currently have" mean? is that mean I should use DBOW2 but not DBOW1? coud you please give me a more detailed explanation? Thank you very much sincerely

krrish94 commented 5 years ago

So the way loop detection works is DBoW2 (discrete bag-of-words version 2) looks at a large dataset comprising scenes and constructs a 'visual vocabulary' that helps it solve the place recognition problem. But, as you might have guessed, this vocabulary is no good if the scene you're testing on is very different from the scenes you learnt the vocabulary over. The default vocabulary that ships with this code is good for a lot of environments, but probably not the one you're testing on. So, I was recommending you construct a vocabulary using DBoW2 (see https://github.com/dorian3d/DBoW2/blob/master/demo/demo.cpp#L102-L138 ).

SunshineDou commented 5 years ago

@krrish94 ok,I have got it, Thank you very much. I will give it a try. Thanks again for your help sincerely