As I was saying, I started the project in early june, and since then I have been working on hard to finish it as soon as possible. The first stages of my FYP consisted on the reading of a series of articles related to my project, as well as the familiarization with the open source libraries that I would use to implement the project.
Some of the articles I have read and about wich I am basing my project are:
- Simultaneous Localization and Mapping (SLAM): Part I, by Hugh Durrant y Tim Bailey
- Simultaneous Localization and Mapping (SLAM): Part II, by Hugh Durrant y Tim Bailey
- RGB-D Mapping: Using Depth Cameras for Dense 3D Modeling of Indoor Environments, by Peter Henry, Michael Krainin, Evan Herbst, Xiaofeng Ren y Dieter Fox.
- Generalized-ICP, by Aleksandr V. Segal, Dirk Haehnel y Sebastian Thrun.
- Real-time 3D visual SLAM with a hand-held RGB-D camera, by Nikolas Engelhard, Felix Endres, Jürgen Hess, Jürgen Sturm y Wolfram Burgard.
- Scene reconstruction from Kinect motion, by Marek Šolony.
- Realtime Visual and Point Cloud SLAM, by Nicola Fioraio y Kurt Konolige.
- OpenCV: http://opencv.willowgarage.com/wiki/Welcome
- PCL: http://pointclouds.org/
- MRPT: http://www.mrpt.org/
- CUDA: http://developer.nvidia.com/cuda-toolkit-40
The first developments that took place were some test like 2D feature matching and 3D point cloud alignment.
|2D feature matching|
|ICP alignment (only)|
The next step consisted on developing the first SLAM aplication using point clouds only. In this first aproach I used the PCL ICP implementation to align consecutive point clouds. The main problem this version had was that ICP wasn't initialised, so the convergence time, as well as the estimated pose were horrible.
The video that follows shows a map generated with the latest version I've implemented. Still under development, but this is one of the first functional versions. Future releases will introduce loop detection and graph optimization to avoid cumulative error.