introlab / rtabmap

RTAB-Map library and standalone application
https://introlab.github.io/rtabmap
Other
2.81k stars 788 forks source link

Manually discarding bad data? #1168

Open omgitsraven opened 11 months ago

omgitsraven commented 11 months ago

Occasionally, while capturing in RTAB, I'll suddenly get a single chunk of the room that's obviously at a ridiculous angle, superimposed on the rest of the mostly-consistent point cloud, and no amount of scanning nearby will cause it to close that loop and correct the out-of-place chunk. Is there any way for me to select a single frame of points, and just delete them?

(Alternately, is there any advice for fixing stubborn chunks of misaligned data? To be clear, I'm not talking about obvious cases of "closing the loop"; sometimes even just holding the sensor in my hand at the start of a session, not having yet moved more than a few inches or turned more than a few degrees, will cause an object that has never left the frame in a brand new session, to suddenly develop prominent 'ghost' copies offset from itself, no matter how much I try to correct the area with continued scanning... Bad frames arising sometimes is probably inevitable, but I'd hope for them to be recognized as not fitting in, and rejected from the more consistent data around them, at some point?)

matlabbe commented 11 months ago

In rtabmap-databaseViewer (or in standalone Tools->Edit database), you could "split" the graph around nodes that are causing those wrong points. In Constraints View, select constraints around a node or section of the graph to remove, then click Reject: image

In Graph View, adjust the root node to show the appropriate nodes and next time you assemble the cloud, it won't add the nodes not in that graph.

To know which node is creating a bad point cloud, you can open the database in "rtabmap" directly, load data, and open Visibility panel. You can click/unclick nodes that you want to show the point cloud.