Only released in EOL distros:  

perception_oru: ndt_feature_reg | ndt_fuser | ndt_map | ndt_map_builder | ndt_mcl | ndt_registration | ndt_visualisation | pointcloud_vrml | sdf_tracker

Package Summary

Contains the definitions of the 3D Normal Distributions Transform data structures, used for mapping, registration, etc.

perception_oru: ndt_fuser | ndt_map | ndt_map_builder | ndt_mcl | ndt_registration | ndt_visualisation | pointcloud_vrml

Package Summary

Contains the definitions of the 3D Normal Distributions Transform data structures, used for mapping, registration, etc.

perception_oru: cmake_modules | ndt_feature_reg | ndt_fuser | ndt_map | ndt_map_builder | ndt_mcl | ndt_registration | ndt_rviz_visualisation | ndt_visualisation | sdf_tracker

Package Summary

Contains the definitions of the 3D Normal Distributions Transform data structures, used for mapping, registration, etc.

Package Summary

Contains the definitions of the 3D Normal Distributions Transform data structures, used for mapping, registration, etc.

  • Maintainer: Jari Saarinen <jari.p.saarinen AT gmail DOT com>, Todor Stoyanov <todor.stoyanov AT oru DOT se>, Henrik Andreasson <henrik.andreasson AT oru DOT se>, Tomasz Kucner <tomasz.kucner AT oru DOT se>
  • Author: Todor Stoyanov, Jari Saarinen, Henrik Andreasson
  • License: BSD

This package implements the NDT data structure. Several options for constructing an NDT map are available.

Documentation

For detailed documentation of the API, please refer to the doxygen generated documentation. The main class of interest is NDTMap, which provides several methods of constructing an NDT, given a point cloud of the environment. A sample node that generates and saves NDT maps is also provided.

Spatial Indexing

NDT maps can be created either using a regular grid data structure (LazyGrid) or using an irregular grid (OcTree). The recommended mode is to use LazyGrid, as most of the subsequent algorithms have been optimized for that data structure.

NDT Cell

Each cell in the NDT map is stored as an NDTCell object, which stores the mean and covariance of the point distribution in the cell. Points used for computing the distribution are deleted after the cell is created. Several update methods are available for adapting to new measurements in the cell.

Class API and usage

An example of how to create an NDT map from a point cloud:

   1 #include <ndt_map.h>
   2 #include <lazy_grid.h>
   3 #include <pcl/point_cloud.h>
   4 
   5 int main() {
   6     //creates an empty grid with a resolution of 0.2 meters
   7     lslgeneric::LazyGrid<pcl::PointXYZ> grid(0.2);
   8     //the grid is only used as a prototype by the map
   9     //which will allocate a new empty grid
  10     lslgeneric::NDTMap<pcl::PointXYZ> nd(&grid);
  11     //create a pcl point cloud (and load data)
  12     pcl::PointCloud<pcl::PointXYZ> cloud;
  13     //load the point cloud in the ndt map, allocates memory for the grid 
  14     nd.loadPointCloud(cloud);
  15     //computes the distributions in each cell and deletes the points
  16     nd.computeNDTCells();
  17     //do something with the map ...
  18 }

Nodes

Wiki: ndt_map (last edited 2013-01-02 15:11:06 by TodorStoyanov)