Implementation of a real-time 6D SLAM framework in OpenCL

Published on October 1, 2015

Categories: robotics, mapping

Tags: c++, opencl, parallel, slam, rbc, icp, octomap

Website: https://github.com/nlamprian/OCLSLAM

OCLSLAM is an implementation of a simultaneous localization and mapping (SLAM) algorithm running on a GPU and written in OpenCL. The implemented pipeline relies on the random ball cover (RBC) data structure and ICP algorithm to perform efficiently the 3D point cloud registration. The OctoMap framework is utilized in order to build a map and access it for localization, navigation, and exploration purposes.

The system takes the data from a Kinect and transfers them to the GPU. There, some preprocessing is done and the registration of the resulting point cloud is performed. Then, the estimated transformation and transformed point cloud are sent back to the CPU where the robot pose is updated and the point cloud gets integrated into the map. While that happens, the GPU is free to process the next point cloud.

The project is under development, but there are already some rough results (see figures above). The system is able to register a point cloud and update a map of 10cm resolution at around 10Hz, with the CPU staying mainly unaffected.

You can find the complete documentation at oclslam.nlamprian.me. The source code is available on GitHub.