Public Member Functions | Public Attributes | Protected Attributes
lslgeneric::NDTMap Class Reference

Implements an NDT based spatial index. More...

#include <ndt_map.h>

Inheritance diagram for lslgeneric::NDTMap:
Inheritance graph
[legend]

List of all members.

Public Member Functions

void addDistributionToCell (const Eigen::Matrix3d &ucov, const Eigen::Vector3d &umean, unsigned int numpointsindistribution, float r=0, float g=0, float b=0, unsigned int maxnumpoints=1e9, float max_occupancy=1024)
virtual bool addMeasurement (const Eigen::Vector3d &origin, pcl::PointXYZ endpoint, double classifierTh, double maxz, double sensor_noise)
virtual void addPointCloud (const Eigen::Vector3d &origin, const pcl::PointCloud< pcl::PointXYZ > &pc, double classifierTh=0.06, double maxz=100.0, double sensor_noise=0.25, double occupancy_limit=255)
virtual void addPointCloudMeanUpdate (const Eigen::Vector3d &origin, const pcl::PointCloud< pcl::PointXYZ > &pc, const Eigen::Vector3d &localmapsize, unsigned int maxnumpoints=1e9, float occupancy_limit=255, double maxz=100.0, double sensor_noise=0.25)
void addPointCloudSimple (const pcl::PointCloud< pcl::PointXYZ > &pc, double maxz=100.0)
virtual void computeNDTCells (int cellupdatemode=CELL_UPDATE_MODE_SAMPLE_VARIANCE, unsigned int maxnumpoints=1e9, float occupancy_limit=255, Eigen::Vector3d origin=Eigen::Vector3d(0, 0, 0), double sensor_noise=0.1)
void computeNDTCellsSimple ()
virtual std::vector
< lslgeneric::NDTCell * > 
getAllCells () const
virtual std::vector
< lslgeneric::NDTCell * > 
getAllInitializedCells ()
virtual bool getCellAtPoint (const pcl::PointXYZ &refPoint, NDTCell *&cell)
 Get the cell for which the point fall into (not the closest cell)
virtual bool getCellForPoint (const pcl::PointXYZ &refPoint, NDTCell *&cell, bool checkForGaussian=true) const
NDTCellgetCellIdx (unsigned int idx) const
 return the cell using a specific index (not available for all spatialindexes), will return NULL if the idx is not valid.
virtual std::vector< NDTCell * > getCellsForPoint (const pcl::PointXYZ pt, int n_neighbours, bool checkForGaussian=true) const
bool getCellSizeInMeters (double &cx, double &cy, double &cz)
virtual bool getCentroid (double &cx, double &cy, double &cz)
double getDepth (Eigen::Vector3d origin, Eigen::Vector3d dir, double maxDepth=100)
double getDepthSmooth (Eigen::Vector3d origin, Eigen::Vector3d dir, double maxDepth=20, int n_neigh=1, double weight=5.0, double threshold=0.2, Eigen::Vector3d *hit=NULL)
bool getGridSize (int &cx, int &cy, int &cz)
bool getGridSizeInMeters (double &cx, double &cy, double &cz)
virtual std::vector< NDTCell * > getInitializedCellsForPoint (const pcl::PointXYZ pt) const
virtual double getLikelihoodForPoint (pcl::PointXYZ pt)
SpatialIndexgetMyIndex () const
int getMyIndexInt () const
 return the spatial index used as an integer
std::string getMyIndexStr () const
 return the spatial index used as a string
void guessSize (float cenx, float ceny, float cenz, float sizex, float sizey, float sizez)
void initialize (double cenx, double ceny, double cenz, double sizex, double sizey, double sizez)
void loadDepthImage (const cv::Mat &depthImage, DepthCamera< pcl::PointXYZ > &cameraParams)
pcl::PointCloud< pcl::PointXYZ > loadDepthImageFeatures (const cv::Mat &depthImage, std::vector< cv::KeyPoint > &keypoints, size_t &supportSize, double maxVar, DepthCamera< pcl::PointXYZ > &cameraParams, bool estimateParamsDI=false, bool nonMean=false)
int loadFromJFF (const char *filename)
virtual void loadPointCloud (const pcl::PointCloud< pcl::PointXYZ > &pc, double range_limit=-1)
void loadPointCloud (const pcl::PointCloud< pcl::PointXYZ > &pc, const std::vector< std::vector< size_t > > &indices)
 each entry in the indices vector contains a set of indices to a NDC cell.
void loadPointCloudCentroid (const pcl::PointCloud< pcl::PointXYZ > &pc, const Eigen::Vector3d &origin, const Eigen::Vector3d &old_centroid, const Eigen::Vector3d &map_size, double range_limit)
 NDTMap ()
 NDTMap (SpatialIndex *idx)
 NDTMap (const NDTMap &other)
 NDTMap (SpatialIndex *idx, float cenx, float ceny, float cenz, float sizex, float sizey, float sizez)
int numberOfActiveCells ()
virtual std::vector< NDTCell * > pseudoTransformNDT (Eigen::Transform< double, 3, Eigen::Affine, Eigen::ColMajor > T)
NDTMappseudoTransformNDTMap (Eigen::Transform< double, 3, Eigen::Affine, Eigen::ColMajor > T)
void setMapSize (float sx, float sy, float sz)
void setMode (bool is3D_)
int writeCellVectorJFF (FILE *jffout)
int writeLazyGridJFF (FILE *jffout)
int writeOctTreeJFF (FILE *jffout)
int writeToJFF (const char *filename)
virtual ~NDTMap ()

Public Attributes

EIGEN_MAKE_ALIGNED_OPERATOR_NEW
pcl::PointCloud< pcl::PointXYZ > 
conflictPoints
 points that were conflicting during update

Protected Attributes

float centerx
float centery
float centerz
bool guess_size_
SpatialIndexindex_
bool is3D
bool isFirstLoad_
float map_sizex
float map_sizey
float map_sizez
std::set< NDTCell * > update_set

Detailed Description

Implements an NDT based spatial index.

Author:
Jari Saarinen (jari.saarinen@aalto.fi) and Todor Stoyanov (todor.stoyanov@oru.se)
Version:
2.0

This class contains an interface to a SpatialIndex (custom defined) that contains NDT cells. Provides methods to create from a PointCloud.

This class implements two approaches to NDT mapping - "traditional" NDT approach, as well as a novel NDT Occupancy Map approach.

The "traditional" approach uses only the measurement points and a single scan in order to construct the NDT map.

The NDT-OM fuses incrementally measurement using Recursive Sample Covariance (RSC) approach. It also models the occupancy and free space, it adapts to changes in the cell etc.

Having these two versions combined also means that not all features are working with both. The known NDT-OM issues are

The old interface (e.g. used in registration) loadPointCloud(const pcl::PointCloud<PointT> &pc, double range_limit = -1); works as before: it computes an NDT map using only the samples and without tracking occupancy.

Since version 2.0 the ndt_map integrates also incremental update features. These are accessible through two methods: 1) void addPointCloudSimple(const pcl::PointCloud<PointT> &pc,double maxz=100.0); 2) void addPointCloud(const Eigen::Vector3d &origin, const pcl::PointCloud<PointT> &pc, double classifierTh=0.06, double maxz = 100.0, double sensor_noise = 0.25);

The first one only updates the measurement points and thus is faster, but does not model free space and does not tolerate dynamics The second one uses ray tracing and a number of approaches to model the occupancy as well as adapts to the dynamics.

In all cases the procedure to use the ndt_map is the following: 1) Add the measurement (by above mentioned load or add methods) 2) call computeNDTCells

Afer this the map is updated. There are various methods to access the map elements documented in this header file that you may use.

This class implements now the following papers, which you hopefully cite if you find this useful: Normal Distributions Transform Occupancy Maps: Application to Large-Scale Online 3D Mapping. IEEE International Conference on Robotics and Automation (ICRA 2013), 2013. There is also an implementation of modeling of the dynamics (edata structure in ndt_cell): "Independent Markov chain occupancy grid maps for representation of dynamic environments," in IROS2012 Conference Proceedings, Vilamoura, Algarve, Portugal: IEEE, 2012, pp. 3489-3495.

In addition, this class provide the basis for NDT registration, which is further discussed in the ndt_registration package. The relevant publications are:

Definition at line 100 of file ndt_map.h.


Constructor & Destructor Documentation

Definition at line 103 of file ndt_map.h.

default constructor. The SpatialIndex sent as a paramter is used as a factory every time that loadPointCloud is called. it can/should be deallocated outside the class after the destruction of the NDTMap

Definition at line 112 of file ndt_map.h.

lslgeneric::NDTMap::NDTMap ( const NDTMap other) [inline]

Definition at line 126 of file ndt_map.h.

lslgeneric::NDTMap::NDTMap ( SpatialIndex idx,
float  cenx,
float  ceny,
float  cenz,
float  sizex,
float  sizey,
float  sizez 
) [inline]

Construct with given centroid and sizes

Parameters:
cenx,ceny,cenz;(x,y,z) of the center of the map
sizex,sizey,sizez,:The size of the map in each respective direction NOTE: Implementation only for the laze grid

Definition at line 141 of file ndt_map.h.

virtual lslgeneric::NDTMap::~NDTMap ( ) [inline, virtual]

Default destructor

Definition at line 205 of file ndt_map.h.


Member Function Documentation

void lslgeneric::NDTMap::addDistributionToCell ( const Eigen::Matrix3d &  ucov,
const Eigen::Vector3d &  umean,
unsigned int  numpointsindistribution,
float  r = 0,
float  g = 0,
float  b = 0,
unsigned int  maxnumpoints = 1e9,
float  max_occupancy = 1024 
)

Adds a sample mean and covariance to the map

Parameters:
&ucovThe covariance matrix to be added
&umeanThe mean of the normal distribution
numpointsindistributionThe number of points used in computation of the sample mean and covariance
r,g,b-- optional color parameters
maxnumpoints-- optional adaptation of the gaussians

Add a distribution to the map

Reimplemented in lslgeneric::NDTMapHMT.

Definition at line 322 of file ndt_map.cpp.

bool lslgeneric::NDTMap::addMeasurement ( const Eigen::Vector3d &  origin,
pcl::PointXYZ  endpoint,
double  classifierTh,
double  maxz,
double  sensor_noise 
) [virtual]

Adds one measurement to the map using NDT-OM update step

Returns:
true if an inconsistency was detected

Select the smallest resolution

We only want to check every cell once, so increase the index if we are still in the same cell

Check the validity of the index

< endpoint

< don't accept points further than the measurement

<distance to endpoint

test for distance based sensor noise

This is the probability of max lik point being endpoint

Evidence value for empty - alpha * p(x);

The cell does not have gaussian, so we mark that we saw it empty...

Add fake point to initialize!

Definition at line 823 of file ndt_map.cpp.

void lslgeneric::NDTMap::addPointCloud ( const Eigen::Vector3d &  origin,
const pcl::PointCloud< pcl::PointXYZ > &  pc,
double  classifierTh = 0.06,
double  maxz = 100.0,
double  sensor_noise = 0.25,
double  occupancy_limit = 255 
) [virtual]

Add new pointcloud to map - This is the main interface for NDT-OM! Performs raytracing, updates conflicts and adds points to cells computeNDTCells must be called after calling this

Parameters:
&originis the position of the sensor, from where the scan has been taken from.
&pcis the pointcloud to be added
classifierThA treshold to judge if the ray passes through a gaussian (obsolete)
maxzthreshold for the maximum z-coordinate value for the measurement point_cloud
sensor_noiseThe expected standard deviation of the sensor noise

Adds a new cloud: NDT-OM update step

Select the smallest resolution

We only want to check every cell once, so increase the index if we are still in the same cell

Check the validity of the index

< don't accept points further than the measurement

<distance to endpoint

test for distance based sensor noise

This is the probability of max lik point being endpoint

Evidence value for empty - alpha * p(x);

The cell does not have gaussian, so we mark that we saw it empty...

Add fake point to initialize!

Reimplemented in lslgeneric::NDTMapHMT.

Definition at line 369 of file ndt_map.cpp.

void lslgeneric::NDTMap::addPointCloudMeanUpdate ( const Eigen::Vector3d &  origin,
const pcl::PointCloud< pcl::PointXYZ > &  pc,
const Eigen::Vector3d &  localmapsize,
unsigned int  maxnumpoints = 1e9,
float  occupancy_limit = 255,
double  maxz = 100.0,
double  sensor_noise = 0.25 
) [virtual]

Add new pointcloud to map - Updates the occupancy using the mean values of a local map generated from an observation

Performs raytracing, updates conflicts and adds points to cells computeNDTCells must be called after calling this

Parameters:
&originis the position of the sensor, from where the scan has been taken from.
&pcis the pointcloud to be added
&localmapsizeThe dimensions of the local map used for computing the gaussians
maxnumpointsDefines the forgetting factor (default 100000) the smaller the value the faster the adaptation
occupancy_limitClamping threshold for log-odds value
maxzthreshold for the maximum z-coordinate value for the measurement point_cloud
sensor_noiseThe expected standard deviation of the sensor noise

fprintf(stderr,"UPDATING\n");

Select the smallest resolution

Lets first create a local ndmap (this really works only if we have lazy grid as well)

FIXME:: fixed max length

Use Student-T

Use Sample variance

TODO: This returns now copies --- should be pointers?

Lets update negative even though the measurement was too high

We only want to check every cell once, so increase the index if we are still in the same cell

Check the validity of the index

< don't accept points further than the measurement

<distance to endpoint

test for distance based sensor noise

This is the probability of max lik point being endpoint

Evidence value for empty - alpha * p(x);

The cell does not have gaussian, so we mark that we saw it empty...

Add fake point to initialize!

<FIXME:: local implementation can be faster?

Reimplemented in lslgeneric::NDTMapHMT.

Definition at line 626 of file ndt_map.cpp.

void lslgeneric::NDTMap::addPointCloudSimple ( const pcl::PointCloud< pcl::PointXYZ > &  pc,
double  maxz = 100.0 
)

This interface updates only the end points into the map without raytracing

Just adds the points, without raytracing and such

Definition at line 279 of file ndt_map.cpp.

void lslgeneric::NDTMap::computeNDTCells ( int  cellupdatemode = CELL_UPDATE_MODE_SAMPLE_VARIANCE,
unsigned int  maxnumpoints = 1e9,
float  occupancy_limit = 255,
Eigen::Vector3d  origin = Eigen::Vector3d(0,0,0),
double  sensor_noise = 0.1 
) [virtual]

Computes the NDT-cells after a measurement has been added

Parameters:
cellupdatemodeDefines the update mode (default CELL_UPDATE_MODE_SAMPLE_VARIANCE)
maxnumpointsDefines the forgetting factor (default 100000) the smaller the value the faster the adaptation

Helper function, computes the NDTCells

Process the conflict points

Reimplemented in lslgeneric::NDTMapHMT.

Definition at line 1219 of file ndt_map.cpp.

Computes the Normaldistribution parameters without erasing the points

Computes the normaldistribution parameters and leaves the points a

Definition at line 1315 of file ndt_map.cpp.

std::vector< lslgeneric::NDTCell * > lslgeneric::NDTMap::getAllCells ( ) const [virtual]

Returns all computed cells from the map This method gives all the vectors that contain a gaussian within a cell (hasGaussian is true).

Reimplemented in lslgeneric::NDTMapHMT.

Definition at line 1979 of file ndt_map.cpp.

Returns all cells that have been initialized (including ones that do not contain gaussian at the moment). This is useful if you want to use the empty cells or dynamic cells

Reimplemented in lslgeneric::NDTMapHMT.

Definition at line 1997 of file ndt_map.cpp.

bool lslgeneric::NDTMap::getCellAtPoint ( const pcl::PointXYZ &  refPoint,
NDTCell *&  cell 
) [virtual]

Get the cell for which the point fall into (not the closest cell)

Reimplemented in lslgeneric::NDTMapHMT.

Definition at line 354 of file ndt_map.cpp.

bool lslgeneric::NDTMap::getCellForPoint ( const pcl::PointXYZ &  refPoint,
NDTCell *&  cell,
bool  checkForGaussian = true 
) const [virtual]

returns the closest cell to refPoint Does not work with NDT-OM

Reimplemented in lslgeneric::NDTMapHMT.

Definition at line 1883 of file ndt_map.cpp.

NDTCell * lslgeneric::NDTMap::getCellIdx ( unsigned int  idx) const

return the cell using a specific index (not available for all spatialindexes), will return NULL if the idx is not valid.

Definition at line 1969 of file ndt_map.cpp.

std::vector< NDTCell * > lslgeneric::NDTMap::getCellsForPoint ( const pcl::PointXYZ  pt,
int  n_neighbours,
bool  checkForGaussian = true 
) const [virtual]

Returns all the cells within radius Does not work with NDT-OM

Reimplemented in lslgeneric::NDTMapHMT.

Definition at line 1865 of file ndt_map.cpp.

bool lslgeneric::NDTMap::getCellSizeInMeters ( double &  cx,
double &  cy,
double &  cz 
) [inline]

Definition at line 434 of file ndt_map.h.

virtual bool lslgeneric::NDTMap::getCentroid ( double &  cx,
double &  cy,
double &  cz 
) [inline, virtual]

Reimplemented in lslgeneric::NDTMapHMT.

Definition at line 412 of file ndt_map.h.

double lslgeneric::NDTMap::getDepth ( Eigen::Vector3d  origin,
Eigen::Vector3d  dir,
double  maxDepth = 100 
)

Computes a maximum likelihood depth from the map, given a position and a view vector

Get estimated depth This goes through now the cells always to max depth and is not the most efficient solution

Definition at line 977 of file ndt_map.cpp.

double lslgeneric::NDTMap::getDepthSmooth ( Eigen::Vector3d  origin,
Eigen::Vector3d  dir,
double  maxDepth = 20,
int  n_neigh = 1,
double  weight = 5.0,
double  threshold = 0.2,
Eigen::Vector3d *  hit = NULL 
)

Definition at line 1022 of file ndt_map.cpp.

bool lslgeneric::NDTMap::getGridSize ( int &  cx,
int &  cy,
int &  cz 
) [inline]

Definition at line 419 of file ndt_map.h.

bool lslgeneric::NDTMap::getGridSizeInMeters ( double &  cx,
double &  cy,
double &  cz 
) [inline]

Definition at line 427 of file ndt_map.h.

std::vector< NDTCell * > lslgeneric::NDTMap::getInitializedCellsForPoint ( const pcl::PointXYZ  pt) const [virtual]

Returns all the cells within radius

Reimplemented in lslgeneric::NDTMapHMT.

Definition at line 1851 of file ndt_map.cpp.

double lslgeneric::NDTMap::getLikelihoodForPoint ( pcl::PointXYZ  pt) [virtual]

Reimplemented in lslgeneric::NDTMapHMT.

Definition at line 1650 of file ndt_map.cpp.

Definition at line 354 of file ndt_map.h.

return the spatial index used as an integer

returns the current spatial index as an integer (debugging function)

Definition at line 1626 of file ndt_map.cpp.

std::string lslgeneric::NDTMap::getMyIndexStr ( ) const

return the spatial index used as a string

returns the current spatial index as a string (debugging function)

Definition at line 1602 of file ndt_map.cpp.

void lslgeneric::NDTMap::guessSize ( float  cenx,
float  ceny,
float  cenz,
float  sizex,
float  sizey,
float  sizez 
) [inline]
Parameters:
guess_sizetry to guess the size based on point cloud. Otherwise use pre-set map size

Definition at line 444 of file ndt_map.h.

void lslgeneric::NDTMap::initialize ( double  cenx,
double  ceny,
double  cenz,
double  sizex,
double  sizey,
double  sizez 
) [inline]

Initilize with known values - normally this is done automatically, but in some cases you want to influence these - call only once and before calling any other function

Definition at line 177 of file ndt_map.h.

void lslgeneric::NDTMap::loadDepthImage ( const cv::Mat &  depthImage,
DepthCamera< pcl::PointXYZ > &  cameraParams 
)

Definition at line 1115 of file ndt_map.cpp.

pcl::PointCloud< pcl::PointXYZ > lslgeneric::NDTMap::loadDepthImageFeatures ( const cv::Mat &  depthImage,
std::vector< cv::KeyPoint > &  keypoints,
size_t &  supportSize,
double  maxVar,
DepthCamera< pcl::PointXYZ > &  cameraParams,
bool  estimateParamsDI = false,
bool  nonMean = false 
)

Definition at line 1122 of file ndt_map.cpp.

int lslgeneric::NDTMap::loadFromJFF ( const char *  filename)

method to load NDT maps from .jff files USAGE: create NDTMap with desired index and PointType (index type is checked, but Point type is NOT checked) via e.g.

lslgeneric::NDTMap<pcl::PointXYZ> nd1( new lslgeneric::LazyGrid<pcl::PointXYZ>(0.4)); --> (*)

and then call

nd1.loadFromJFF("map0027.jff");

) use this constructor so index is not initialized and attributes can be set manually

Definition at line 1506 of file ndt_map.cpp.

void lslgeneric::NDTMap::loadPointCloud ( const pcl::PointCloud< pcl::PointXYZ > &  pc,
double  range_limit = -1 
) [virtual]

loadPointCloud - You can call this if you are only interested in dealing with one scan without need for fusing several ones or representing empty space and occupancy

Otherwise you should always call addPointCloud (or if you don't want occupancy then addPointCloudSimple)

Parameters:
pcthe PointCloud that is to be loaded
Note:
every subsequent call will destroy the previous map!

Reimplemented in lslgeneric::NDTMapHMT.

Definition at line 28 of file ndt_map.cpp.

void lslgeneric::NDTMap::loadPointCloud ( const pcl::PointCloud< pcl::PointXYZ > &  pc,
const std::vector< std::vector< size_t > > &  indices 
)

each entry in the indices vector contains a set of indices to a NDC cell.

NOTE: These load functions are not supported by occupancy mapping This function loads a point cloud around specific indeces for usage in NFT-feature based mapping.

Parameters:
&pcthe Point Cloud to use as input
&indicesa vector of the indeces that will be added for each cell. We add indices.size() number of cells, each cell c[i] contains the points, indexed by the vector indices[i]

Definition at line 1095 of file ndt_map.cpp.

void lslgeneric::NDTMap::loadPointCloudCentroid ( const pcl::PointCloud< pcl::PointXYZ > &  pc,
const Eigen::Vector3d &  origin,
const Eigen::Vector3d &  old_centroid,
const Eigen::Vector3d &  map_size,
double  range_limit 
)

loadPointCloudCentroid - A special load function to enable the matching of centroids (create alligned maps) This is more efficient than the standard, but needs also the origin and size as parameters

Parameters:
&pcthe PointCloud that is to be loaded
&originThe desired origin of the map (will be fitted acording to old_centroid)
&old_centroidThe centroid to which we want to align
&map_sizeThe size of the new map
range_limitThe maximum range value for measurements
Note:
every subsequent call will destroy the previous map!

loadPointCloudCentroid - A special load function to enable the matching of centroids (create alligned maps)

Parameters:
pcthe PointCloud that is to be loaded
Note:
every subsequent call will destroy the previous map!

Should never happen!

How many cell to each direction is the new origin from old one

Definition at line 193 of file ndt_map.cpp.

Reimplemented in lslgeneric::NDTMapHMT.

Definition at line 2010 of file ndt_map.cpp.

std::vector< NDTCell * > lslgeneric::NDTMap::pseudoTransformNDT ( Eigen::Transform< double, 3, Eigen::Affine, Eigen::ColMajor >  T) [virtual]

Returns a transformed NDT as a vector of NDT cells

NOTE: The rotation of the covariance fixed by Jari 6.11.2012

Reimplemented in lslgeneric::NDTMapHMT.

Definition at line 1937 of file ndt_map.cpp.

NDTMap * lslgeneric::NDTMap::pseudoTransformNDTMap ( Eigen::Transform< double, 3, Eigen::Affine, Eigen::ColMajor >  T)

Returns a transformed NDT as an NDT map with a CellVector data structure

NOTE: The rotation of the covariance fixed by Jari 6.11.2012

Definition at line 1911 of file ndt_map.cpp.

void lslgeneric::NDTMap::setMapSize ( float  sx,
float  sy,
float  sz 
) [inline]

Set the map size in meters - Must be called before first addPointCloud call if you want to set the size - otherwise it is automatically determined

Definition at line 226 of file ndt_map.h.

void lslgeneric::NDTMap::setMode ( bool  is3D_) [inline]

Definition at line 217 of file ndt_map.h.

Definition at line 1393 of file ndt_map.cpp.

int lslgeneric::NDTMap::writeLazyGridJFF ( FILE *  jffout)

Definition at line 1456 of file ndt_map.cpp.

int lslgeneric::NDTMap::writeOctTreeJFF ( FILE *  jffout)

Definition at line 1425 of file ndt_map.cpp.

int lslgeneric::NDTMap::writeToJFF ( const char *  filename)

Stuff for saving things

output methods for saving the map in the jff format

Definition at line 1358 of file ndt_map.cpp.


Member Data Documentation

float lslgeneric::NDTMap::centerx [protected]

Reimplemented in lslgeneric::NDTMapHMT.

Definition at line 473 of file ndt_map.h.

float lslgeneric::NDTMap::centery [protected]

Reimplemented in lslgeneric::NDTMapHMT.

Definition at line 473 of file ndt_map.h.

float lslgeneric::NDTMap::centerz [protected]

Reimplemented in lslgeneric::NDTMapHMT.

Definition at line 473 of file ndt_map.h.

EIGEN_MAKE_ALIGNED_OPERATOR_NEW pcl::PointCloud<pcl::PointXYZ> lslgeneric::NDTMap::conflictPoints

points that were conflicting during update

Reimplemented in lslgeneric::NDTMapHMT.

Definition at line 479 of file ndt_map.h.

Definition at line 474 of file ndt_map.h.

Reimplemented in lslgeneric::NDTMapHMT.

Definition at line 468 of file ndt_map.h.

bool lslgeneric::NDTMap::is3D [protected]

Reimplemented in lslgeneric::NDTMapHMT.

Definition at line 467 of file ndt_map.h.

Reimplemented in lslgeneric::NDTMapHMT.

Definition at line 469 of file ndt_map.h.

float lslgeneric::NDTMap::map_sizex [protected]

Reimplemented in lslgeneric::NDTMapHMT.

Definition at line 470 of file ndt_map.h.

float lslgeneric::NDTMap::map_sizey [protected]

Reimplemented in lslgeneric::NDTMapHMT.

Definition at line 471 of file ndt_map.h.

float lslgeneric::NDTMap::map_sizez [protected]

Reimplemented in lslgeneric::NDTMapHMT.

Definition at line 472 of file ndt_map.h.

Reimplemented in lslgeneric::NDTMapHMT.

Definition at line 475 of file ndt_map.h.


The documentation for this class was generated from the following files:


ndt_map
Author(s): Todor Stoyanov, Jari Saarinen, Henrik Andreasson
autogenerated on Wed Aug 26 2015 15:24:41