Geometry ICP with Kinect on RTABMAP Windows

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Geometry ICP with Kinect on RTABMAP Windows

marsfan
Hello,

I am not sure if this has been asked before. I am using RTABMAP to make a 3D model of a building (not for robotics). I am aware that this is not the intended use case, but it works better than other programs I have tried. My scan looks ok, but there is still some misalignment between the clouds. Currently my fix has been to import the clouds into MeshLab and use the ICP alignment tool to finish aligning the meshes, but this has proven to be very tedious.

I know that RTABMAP supports using ICP for aligning the data, and that it is imperfect, but I would like to try it for my use case to improve the data analysis.

I have seen references to using ICP with the Kinect Point Cloud instead of with a 2D LIDAR unit, but I cannot figure out how to enable this on the standalone RTABMAP program on Windows. How might I go around doing this.

If this is not possible, do you have any recommendations for improving cloud alignment when using a XBOX 360 Kinnect?
Reply | Threaded
Open this post in threaded view
|

Re: Geometry ICP with Kinect on RTABMAP Windows

matlabbe
Administrator
Hi,

3D scanning of a room or house is actually one of the intended cases, see this RTAB-Map Tango video: https://youtu.be/71eRxTc1DaU

Currently my fix has been to import the clouds into MeshLab and use the ICP alignment tool to finish aligning the meshes [...]
Is it the assembled clouds of different scan sessions that you are merging, or every single frame in a scan? For the second, we could indeed enable ICP from rtabmap. However, with a kinect for XBOX 360 the point cloud geometry is quite bad/noisy over 3-4 meters, so ICP would work only at close distance and if in this range there is enough geometry so that ICP converges correctly. If those conditions are not filled, it could introduce more errors than correcting them.

To enable ICP under Windows, go in Preferences (advanced)->Motion Estimation, then select Visual+Geometry as the registration approach. To make it work, we have to create a fake laser scan from the depth image of the kinect. To do so, under Preferences->Source, go down to section "Laser scans" and check "Generate laser scan from depth image.". I recommend to set "Downsamplling step..." to 4 for images and probably set a maximum range of ~4 meters. Voxel could be set to 5-10 cm, with K nearest neighbors value set to ~10 to compute normals (to avoid recomputing them each time we do registration).

Without ICP, to improve alignment, you could try ORB-OCTREE feature type for visual registration instead of default GFTT-BRIEF (see Preferences->Visual Registration). In some cases it can improve the registration (I didn't test it exhaustively, it is why GFTT-BRIEF is still the default). Also if you are not using the latest version of RTAB-Map, you could download it from here (though not all drivers are supported in that version): https://ci.appveyor.com/project/matlabbe/rtabmap/branch/master/artifacts

cheers,
Mathieu
Reply | Threaded
Open this post in threaded view
|

Re: Geometry ICP with Kinect on RTABMAP Windows

marsfan
Thank you very much.

To clarify, I am aligning point clouds within one scan.
After posting this i did find the generate laser scans option, but knowing the additional settings is really helpful.

The release you linked me is labeled 1.0.616, but the latest release on GitHub is 0.18. Is the GitHub release page no longer used?
Also, for object detection, a couple of the detection modes have a checkbox for using the GPU for image processing, however, these are grayed out. How can I enable support for this?
Reply | Threaded
Open this post in threaded view
|

Re: Geometry ICP with Kinect on RTABMAP Windows

matlabbe
Administrator
Hi,

The Github release page should be updated, I've lost my Windows building computer last year so I am currently not able to generate a new official Windows release with all the camera drivers included. So I refer to latest binaries from the buildfarm, which doesn't including all camera drivers or CUDA optimizations but all other functions should work. The version you are referring is the build number, the actual version is in the name of the ZIP or EXE artifacts, which is current 0.19.6.

The GPU options are enabled only if OpenCV (used by RTAB-Map) has been built with CUDA.

If you want to experiment with different build options, I strongly recommend to go under Ubuntu 18.04, it will be a lot less painful to build rtabmap (as most dependencies can be installed from apt-get directly). Well, I will try to get up and running soon a new Windows computer to make new official releases or maybe update the compilation instructions on Windows with latest visual studio.

cheers,
Mathieu
Reply | Threaded
Open this post in threaded view
|

Re: Geometry ICP with Kinect on RTABMAP Windows

marsfan
Ah. That makes sense. I just noticed that there is a CUDA build for 0.18.0 on the Github Releases. As I did not notice any changes using the build from the build farm, I am going to downgrade to that version.

Thanks for the help.