Library grd implements the Geometric Relation Distribution, a signature encoding the spatial distribution of a planar point sets that can be used to address loop closure in 2D LiDAR localization and mapping. The library has been kept to a minimal design.
If you use this library, please cite the following paper:
@article{lodirizzini2019ral,
author={Lodi Rizzini, D. and Galasso, F. and Caselli, S.},
title={{Geometric Relation Distribution for Place Recognition}}
journal={IEEE Robotics and Automation Letters (RA-L)},
volume={Accepted},
pages={},
month={},
year={2019},
publisher={IEEE},
issn = {},
doi = {},
note = {DOI },
}
or the most relevant associated publications by visiting: http://rimlab.ce.unipr.it/
The software depends on the following external libraries
- Boost (submodule lexical_cast)
- Eigen 3.0
Other dependencies are placed in directory thirdparty. Some examples require the external application "gnuplot" to display results.
Let ${grd_ROOT} be the install directory of your local copy of library grd. The following standard commands are required to compile it:
- cd ${grd_ROOT}
- mkdir build
- cd build
- cmake ..
- make
You can also install the library into a system directory. To change the install directory you must set cmake environment variable ${CMAKE_INSTALL_PREFIX} (e.g. using command "ccmake .." before calling "cmake .."). Its default value on UNIX-like/Linux systems is "/usr/local". After compiling library grd, run the command:
- sudo make install
The command "sudo" is required only if ${CMAKE_INSTALL_PREFIX} is a system diretory managed by administrator user root. Such command copies:
- header files of
${grd_ROOT}/include/grd to $ {CMAKE_INSTALL_PREFIX}/include/grd/ - library files
${grd_ROOT}/lib/libgrd.a to $ {CMAKE_INSTALL_PREFIX}/lib/ - cmake script
${grd_ROOT}/cmake_modules/grdConfig.cmake to $ {CMAKE_INSTALL_PREFIX}/share/grd/
If library grd has been installed in system directory "/usr/local", then it is straighforward to use it in your projects. You need to add the following lines to your project as in this example:
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(foobar)find_package(grd REQUIRED)
message(STATUS "grd_FOUND ${grd_FOUND}")
message(STATUS "grd_INCLUDE_DIRS ${grd_INCLUDE_DIRS}")
message(STATUS "grd_LIBRARY_DIRS ${grd_LIBRARY_DIRS}")
message(STATUS "grd_LIBRARIES ${grd_LIBRARIES}")if(${grd_FOUND})
include_directories(${grd_INCLUDE_DIRS})
link_directories(${grd_LIBRARY_DIRS})
endif()add_executable(foobar foobar.cpp)
target_link_libraries(foobar ${grd_LIBRARIES})
The above example uses the variables defined in grdConfig.cmake:
- grd_FOUND - system has grd module
- grd_INCLUDE_DIRS - the grd include directories
- grd_LIBRARY_DIRS - the grd library directories
- grd_LIBRARIES - link these to use grd