Class DynamicEDT3D

Nested Relationships

Nested Types

Inheritance Relationships

Derived Type

Class Documentation

class DynamicEDT3D

A DynamicEDT3D object computes and updates a 3D distance map.

dynamicEDT3D: A library for incrementally updatable Euclidean distance transforms in 3D.

See also

http://octomap.sourceforge.net/ License: New BSD License

Author

C. Sprunk, B. Lau, W. Burgard, University of Freiburg, Copyright (C) 2011.

Subclassed by DynamicEDTOctomapBase< TREE >

Public Types

enum ObstDataState

Values:

enumerator invalidObstData

Public Functions

DynamicEDT3D(int _maxdist_squared)
~DynamicEDT3D()
void initializeEmpty(int _sizeX, int _sizeY, int sizeZ, bool initGridMap = true)

Initialization with an empty map.

void initializeMap(int _sizeX, int _sizeY, int sizeZ, bool ***_gridMap)

Initialization with a given binary map (false==free, true==occupied)

void occupyCell(int x, int y, int z)

add an obstacle at the specified cell coordinate

void clearCell(int x, int y, int z)

remove an obstacle at the specified cell coordinate

void exchangeObstacles(std::vector<INTPOINT3D> newObstacles)

remove old dynamic obstacles and add the new ones

virtual void update(bool updateRealDist = true)

update distance map to reflect the changes

float getDistance(int x, int y, int z) const

returns the obstacle distance at the specified location

INTPOINT3D getClosestObstacle(int x, int y, int z) const

gets the closest occupied cell for that location

int getSQCellDistance(int x, int y, int z) const

returns the squared obstacle distance in cell units at the specified location

bool isOccupied(int x, int y, int z) const

checks whether the specficied location is occupied

inline unsigned int getSizeX() const

returns the x size of the workspace/map

inline unsigned int getSizeY() const

returns the y size of the workspace/map

inline unsigned int getSizeZ() const

returns the z size of the workspace/map

Public Static Attributes

static float distanceValue_Error

distance value returned when requesting distance for a cell outside the map

static int distanceInCellsValue_Error

distance value returned when requesting distance in cell units for a cell outside the map

Protected Types

enum State

Values:

enumerator free
enumerator occupied
enum QueueingState

Values:

enumerator fwNotQueued
enumerator fwQueued
enumerator fwProcessed
enumerator bwQueued
enumerator bwProcessed

Protected Functions

inline void raiseCell(INTPOINT3D &p, dataCell &c, bool updateRealDist)
inline void propagateCell(INTPOINT3D &p, dataCell &c, bool updateRealDist)
inline void inspectCellRaise(int &nx, int &ny, int &nz, bool updateRealDist)
inline void inspectCellPropagate(int &nx, int &ny, int &nz, dataCell &c, bool updateRealDist)
void setObstacle(int x, int y, int z)
void removeObstacle(int x, int y, int z)

Protected Attributes

int sizeX
int sizeY
int sizeZ
int sizeXm1
int sizeYm1
int sizeZm1
dataCell ***data
bool ***gridMap
int padding
double doubleThreshold
double sqrt2
double maxDist
int maxDist_squared
struct dataCell

Public Members

float dist
int obstX
int obstY
int obstZ
int sqdist
char queueing
bool needsRaise