/cslibs_ndt

This library contains fast and sparse implementations of multi-dimensional map representations using Normal Distributions Transforms.

Primary LanguageC++BSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

CS - Library: NDT

This library contains fast and sparse implementations of multi-dimensional map representations using Normal Distributions Transforms. The code is open-source (BSD License) and has been tested under Ubuntu 16.04 with ROS Kinetic. Please note that this project is part of ongoing research and that there will be changes in the future.

Structure

This project is divided up into the following subpackages:

  • cslibs_ndt:
    This package contains common utilities needed for the different implementations and their serialization.

  • cslibs_ndt_2d:
    This package contains the two-dimensional implementations and consists of several subfolders:

    • static_maps and dynamic_maps contain map implementations for maps with static and dynamic size, respectively, whereby also the static maps are sparse and memory is only allocated on demand. There are also two types of maps regarding their type of content: Gridmaps are implementations of pure NDT maps, OccupancyGridmaps also provide occupancy probabilities.
    • conversion contains methods to convert 2D NDT maps into gridmaps, static to dynamic maps and vice versa. If converted to a gridmap, these maps can be visualized using ROS messages of type nav_msgs::OccupancyGrid.
    • serialization contains methods to convert 2D NDT maps from and to binary representations, which consist of a meta file and four files, one for each of the overlapping submaps.
    • nodes contains ROS nodes. Exemplary launch files are provided in the launch folder.
  • cslibs_ndt_3d:
    This package contains the three-dimensional implementations. It is structured as cslibs_ndt_2d. Additionally, there are dedicated ROS messages and an RVIZ plugin for visualization. The conversion folder contains methods to convert 3D NDT maps to pcl::PointCloud and sensor_msgs::PointCloud2.

Usage

Please build with -DCMAKE_BUILD_TYPE=RelWithDebInfo or -DCMAKE_BUILD_TYPE=Release.

Dependencies

This library depends on the following packages of our research group:

Examples

Exemplary usage of these maps can be found in cslibs_mapping.

Contributing

Contribution guidelines for this project

Citing

If you use our implementation in your research, please cite our IROS 2018 paper:

@inproceedings{SchulzIROS2018,
    title = {Efficient Map Representations for Multi-Dimensional Normal Distributions Transforms},
    author = {Cornelia Schulz and Richard Hanten and Andreas Zell},
    booktitle = {2018 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
    pages = {2679--2686},
    address = {Madrid, Spain},
    year = {2018},
    month = {October},
    note = {Software available at \url{https://github.com/cogsys-tuebingen/cslibs_ndt}}
}