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.