introlab / rtabmap

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

FAQ New Question Notification #179

Open eric-schleicher opened 7 years ago

eric-schleicher commented 7 years ago

I'm specifically curious if re-processing datasets will be faster.

Are there Word Types that are/aren't CUDA accelerated?

matlabbe commented 7 years ago

I updated the FAQ. I also updated this issue with a general title so that we can notify with a new post in this thread instead of creating a new thread to notify for convenience.

srinath-iko commented 4 years ago

Hey @matlabbe

I am trying to replicate the camera tracking on the GPU.

I was going through the Odometry and Registration code while working with a RGBD camera. I understand that visual correspondences are used to match features between the last two frames and these matched 3d/2d points are fed into solvepnp to return a rotation and translation vector. The inverse of the previous pose is multiplied with the current transform in OdometryF2M.cpp and then the previous pose again is multiplied with the result from F2M resulting in just the transform we get from solvepnp.

This would just constitute the deltas(change in transformation from one frame to another) instead of global transform but the application seems to be tracking the global transform. Am i missing out on something here? :D

I have disabled all the bundle adjustment and motion estimation to test out the results from solvepnp purely.

matlabbe commented 4 years ago

The odometry pose is updated here: https://github.com/introlab/rtabmap/blob/9cb1e4bbc5763a992ebdea848be5ec610d7afdf2/corelib/src/Odometry.cpp#L662 from the incremental transform t computed by the selected odometry approach (e.g. F2M). In F2M, the result from PnP is the pose, not the increment (note that tmpMap contains 3D points of the local feature map in odometry frame): https://github.com/introlab/rtabmap/blob/9cb1e4bbc5763a992ebdea848be5ec610d7afdf2/corelib/src/odometry/OdometryF2M.cpp#L315-L320 To make it work like other odometry approaches that output incremental transforms, we have to convert it as incremental too: https://github.com/introlab/rtabmap/blob/9cb1e4bbc5763a992ebdea848be5ec610d7afdf2/corelib/src/odometry/OdometryF2M.cpp#L520-L521 so that pose update above (in parent Odometry class) still work.

srinath-iko commented 4 years ago

Thanks @matlabbe!

I thought that the matching was done with only the present frame and the one before(hence the increment) and not with the 3d local feature map and the present frame.

Thanks for clarifying!

Eufhid commented 2 years ago

Hello In iOS there is a lot of parameters in the settings app, can you tell in short the settings for best quality and accuracy of scanning ? Is there different best settings when scanning an house and when scanning surroundings of a building with pathway and green spaces ? The points cloud files will be used as it for viewing in the app and then in Revit for building a model later. Thanks a lot

matlabbe commented 2 years ago

Hi, For quality/accuracy, it is more the scanning motion that you take that will make a difference. For example, avoid looking directly towards textureless surfaces and try to find loop closures when you are passing by a previously scanned area (for example, some back to same location before and after scanning a room, to reduce odometry drift).

When scanning large environments, decrease point cloud density during mapping to reduce rendering load (and save battery). Note that even if you decrease point cloud density, rtabmap still record full resolution depth images, so high resolution point clouds can be generated offline afterwards.

Outdoor, increase Max depth range to better see what is scanned.