personalrobotics / OpenChisel

An open-source version of the Chisel chunked TSDF library.
459 stars 128 forks source link

ChiselServer drops data when TSDF mapping is lagging behind framerate. #22

Open CelestialBoon opened 6 years ago

CelestialBoon commented 6 years ago

I've tested OpenChisel repeatedly with the sample launch file that uses the freiburg dataset and I'm noticing that the resulting meshes tend to vary, missing some piece or other, and ending up with a different number of vertexes each time.

Is this behaviour expected? It does the same with other datasets as well, like when interacting with rtabmap, and it gives the impression that it is only using a small portion of the data to fill in the TSDF (that is, only a fraction of the frames/point clouds it receives).

An example of the different meshes I obtain: freiburg_meshes.zip

mklingen commented 6 years ago

Hmm, I guess it is possible that the system is simply dropping data. FYI, I haven't maintained Open Chisel since about 2015, I am not sure who (if anyone) is still maintaining the library at the Personal Robotics Lab.

mklingen commented 6 years ago

Yep, just as I suspected. ChiselServer simply overwrites old data with new data whenever it gets a new frame:

https://github.com/personalrobotics/OpenChisel/blob/master/chisel_ros/src/ChiselServer.cpp#L256

So if Chisel is lagging behind the framerate of the camera (very very possible), frames are going to get dropped non-deterministically. I think this is a decision I made early on because I was more concerned with the latest data getting into the map than all of the data at the time.

The server should be rewritten to queue up data and process it a frame at a time. Again, since I'm no longer a maintainer I don't know if or when I would be able to do this.

mklingen commented 6 years ago

You may be interested in trying the spiritual successor to OpenChisel, VoxBlox from ETH zurich.

CelestialBoon commented 6 years ago

That's very interesting! My thanks for making me aware of it.