/openslam_flirtlib

flirtlib repos from OpenSLAM.org

Primary LanguageC++GNU Lesser General Public License v3.0LGPL-3.0

** FLIRTLib - Fast Laser Interest Region Transform Library
** Gian Diego Tipaldi, Kai O. Arras.
** Copyright (C) 2009-2015 Gian Diego Tipaldi and Kai O. Arras

FLIRTLib implements the Fast Laser Interest Region Transform introduced by
Tipaldi and Arras. 
The library implements four different multi-scale feature detectors and two
feature descriptors for 2D range data. 
It is written in C++ and comes with an API reference (written using Doxygen) and
a set of example binaries to visualize the detector results and the descriptors,
as well as perform scan to scan matching.


Detectors
=============================================

The library implements the following detectors: range, normal edge, normal blob
and curvature. All detectors apply the scale-space theory (see References) to
the range data. The first three detectors apply the theory to the
monodimensional signal defined by the laser scanner, while the last one applies
the theory to the continuous geodesic coordinate of the curve that better
approximate the point cloud.

Range detector. It finds interest points in scale-space with a blob detector
applied on the raw range information in the laser scan.
Normal Edge detector. It finds interest points in scale-space with an edge
detector applied on a local approximation of the normal direction.
Normal Blob detector. It finds interest points in scale-space with a blob
detector applied on a local approximation of the normal direction.
Curvature detector. It finds interest points using the scale space theory for
curves introduced by Unnikrishnan and Hebert.


Descriptors
=============================================

Shape Context. It implements a local and linear version of teh Shape Context
introduced by Belongie and Malik.
Beta-Grid. It implements a linear-polar occupancy grid. It extends the Shape
Context with the notion of free space.


Structure
=============================================

The archive has the following structure:

src/ : the source files
data/ : the log files used in the paper.
doc/ : the doxygen configuration file. Run doxygen in this directory and you
will obtain a local copy of this html documentaion and the latex reference
manual.
The src/ directory has the following structure:

mainpage.h : dummy header file for generating the documentation.
README : this file
INSTALL : installation notes.
COPYING and COPYING.LESSER : the software license. See License for further details.
CMakeLists.txt : the cmake configuration script.
build_tools/ : the directory containing the cmake modules.
feature/ : the directory with the main features code.
gemometry/ : the directory with the code for points.
gui/ : the directory with the code for teh gui and the flirtDemo.
sensors/ : the directory with the code for the sensors abstraction.
sensorstream/ : the directory with the code for the sensor streams abstraction.
utils/ : the directory with the code for utility function such as convolution,
regression, pose estimation and histogram distances.
applications/ : the directory with the code for generating the binaries to test the library.


Install
=============================================

The library relies on cmake to generate the Makefiles.

Run
mkdir build
cd build
cmake ../
make 

For a more verbose output do Run
VERBOSE=1 cmake ../ 
VERBOSE=1 make 

Install the library using
make install


Dependencies
=============================================

The software depends on the following external libraries

Boost >= 1.36 (submodules math and graph)
Qt4 (for the gui)
Qwt5 for Qt4 (for the gui)
OpenGL (for the gui)
Cairo (for drwaing the ransac results)


Usage
=============================================

The library comes with some demo binaries and an API interface.
Look at the example binaries in applications/


Binaries
=============================================

They package provide the following binaries in <lib_root>/bin/ 

flirtDemo. It is a simple graphical frontend for visualizing the effect of the
different detector and descriptors when changing the parameters. To visualize
the descriptors simply click on the corresponding interest points in the viewer.

ransacLoopClosureTest. It performs scan to scan matching with ransac. It
generates a file with the number of succesful matches for the three different
strategies. See the paper for more detail about the ransac experiment.

ransacLoopClosureDraw. It performs scan to scan matching with ransac. It
generates a directory with images showing the matching results. It can used to
generate animations.


Using the library
=============================================

The library is compiled as a collection of shared objects and are available in

<lib_root>/lib/ 

The header files are located in 

<lib_root>/include 

See the class list on the doxygen documentation for a more detailed API
reference. 


How to cite
=============================================
Choose one of the following publications:

[1] Gian Diego Tipaldi, Manuel Braun, Kai O. Arras. 
    FLIRT: Interest Regions for 2D Range Data with Applications to Robot Navigation. 
    In Proceedings of the International Symposium on Experimental Robotics (ISER). 2010

[2] Gian Diego Tipaldi, Kai O. Arras. 
    FLIRT -- Interest Regions for 2D Range Data.
    In Proceedings of the IEEE International Conference on Robotics and Automation (ICRA). 2010.


License
=============================================

FLIRTLib - Fast Laser Interesting Region Transform Library 
Copyright (C) 2009-2010 Gian Diego Tipaldi and Kai O. Arras

FLIRTLib is free software: you can redistribute it and/or modify it under the
terms of the GNU Lesser General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version.

FLIRTLib is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along
with FLIRTLib. If not, see http://www.gnu.org/licenses/ .