The motivation of this project follows:
- Low cost 3D sensors (such as Kinect and Xtion) becomes popular and are applied on SLAM (Simultaneous localization and mapping) tasks.
- The large amount of 3D point cloud data produced by 3D sensors can potentially increase the quality of 3D mapping, but it requires more computational power (e.g. using GPU)
- Using GPU for real-time SLAM consumes a lot of electric power, which is inappropriate to be implemented on stand-alone robots or portable devices.
We mainly use PCL(point cloud library) in C++ in this project, on ROS on Ubuntu 14.04. The system pipeline follows as:
Feature Exaction: based on the depth information from raw data, we down sampled and locally exactly feature points that are geometrically significant, such as points with low curvatures in the surrounding environments, consistent surface normals, or high variation in curvatures. We therefore are capable to categorized points into planes or lines:
Then we applied RANSAC for segmentation, and clustered points into different geometric features:
With the information of these features, we made use of the toolbox: iSAM for “incremental smoothing and mapping” optimization method, and introduced Lie Algebra for plane and line geometric optimization. The visualization of this work can be seen as follows: