A DynamicEDT3D object computes and updates a 3D distance map. More...
#include <dynamicEDT3D.h>
Classes | |
struct | dataCell |
Public Types | |
enum | ObstDataState { invalidObstData = INT_MAX } |
Public Member Functions | |
void | clearCell (int x, int y, int z) |
remove an obstacle at the specified cell coordinate | |
DynamicEDT3D (int _maxdist_squared) | |
void | exchangeObstacles (std::vector< INTPOINT3D > newObstacles) |
remove old dynamic obstacles and add the new ones | |
INTPOINT3D | getClosestObstacle (int x, int y, int z) const |
gets the closest occupied cell for that location | |
float | getDistance (int x, int y, int z) const |
returns the obstacle distance at the specified location | |
unsigned int | getSizeX () const |
returns the x size of the workspace/map | |
unsigned int | getSizeY () const |
returns the y size of the workspace/map | |
unsigned int | getSizeZ () const |
returns the z size of the workspace/map | |
int | getSQCellDistance (int x, int y, int z) const |
returns the squared obstacle distance in cell units at the specified location | |
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) | |
bool | isOccupied (int x, int y, int z) const |
checks whether the specficied location is occupied | |
void | occupyCell (int x, int y, int z) |
add an obstacle at the specified cell coordinate | |
virtual void | update (bool updateRealDist=true) |
update distance map to reflect the changes | |
~DynamicEDT3D () | |
Static Public Attributes | |
static int | distanceInCellsValue_Error = -1 |
distance value returned when requesting distance in cell units for a cell outside the map | |
static float | distanceValue_Error = -1.0 |
distance value returned when requesting distance for a cell outside the map | |
Protected Types | |
enum | QueueingState { fwNotQueued = 1, fwQueued = 2, fwProcessed = 3, bwQueued = 4, bwProcessed = 1 } |
enum | State { free = 0, occupied = 1 } |
Protected Member Functions | |
void | inspectCellPropagate (int &nx, int &ny, int &nz, dataCell &c, bool updateRealDist) |
void | inspectCellRaise (int &nx, int &ny, int &nz, bool updateRealDist) |
void | propagateCell (INTPOINT3D &p, dataCell &c, bool updateRealDist) |
void | raiseCell (INTPOINT3D &p, dataCell &c, bool updateRealDist) |
void | removeObstacle (int x, int y, int z) |
void | setObstacle (int x, int y, int z) |
Protected Attributes | |
dataCell *** | data |
double | doubleThreshold |
bool *** | gridMap |
double | maxDist |
int | maxDist_squared |
int | padding |
int | sizeX |
int | sizeXm1 |
int | sizeY |
int | sizeYm1 |
int | sizeZ |
int | sizeZm1 |
double | sqrt2 |
Private Member Functions | |
void | commitAndColorize (bool updateRealDist=true) |
bool | isOccupied (int &x, int &y, int &z, dataCell &c) |
Private Attributes | |
std::vector< INTPOINT3D > | addList |
std::vector< INTPOINT3D > | lastObstacles |
BucketPrioQueue< INTPOINT3D > | open |
std::vector< INTPOINT3D > | removeList |
A DynamicEDT3D object computes and updates a 3D distance map.
dynamicEDT3D: A library for incrementally updatable Euclidean distance transforms in 3D.
Definition at line 47 of file dynamicEDT3D.h.
Definition at line 86 of file dynamicEDT3D.h.
enum DynamicEDT3D::QueueingState [protected] |
Definition at line 105 of file dynamicEDT3D.h.
enum DynamicEDT3D::State [protected] |
Definition at line 104 of file dynamicEDT3D.h.
DynamicEDT3D::DynamicEDT3D | ( | int | _maxdist_squared | ) |
Definition at line 109 of file dynamicEDT3D.cpp.
Definition at line 117 of file dynamicEDT3D.cpp.
void DynamicEDT3D::clearCell | ( | int | x, |
int | y, | ||
int | z | ||
) |
remove an obstacle at the specified cell coordinate
Definition at line 260 of file dynamicEDT3D.cpp.
void DynamicEDT3D::commitAndColorize | ( | bool | updateRealDist = true | ) | [private] |
Definition at line 544 of file dynamicEDT3D.cpp.
void DynamicEDT3D::exchangeObstacles | ( | std::vector< INTPOINT3D > | newObstacles | ) |
remove old dynamic obstacles and add the new ones
Definition at line 288 of file dynamicEDT3D.cpp.
INTPOINT3D DynamicEDT3D::getClosestObstacle | ( | int | x, |
int | y, | ||
int | z | ||
) | const |
gets the closest occupied cell for that location
Definition at line 528 of file dynamicEDT3D.cpp.
float DynamicEDT3D::getDistance | ( | int | x, |
int | y, | ||
int | z | ||
) | const |
returns the obstacle distance at the specified location
Definition at line 521 of file dynamicEDT3D.cpp.
unsigned int DynamicEDT3D::getSizeX | ( | ) | const [inline] |
returns the x size of the workspace/map
Definition at line 80 of file dynamicEDT3D.h.
unsigned int DynamicEDT3D::getSizeY | ( | ) | const [inline] |
returns the y size of the workspace/map
Definition at line 82 of file dynamicEDT3D.h.
unsigned int DynamicEDT3D::getSizeZ | ( | ) | const [inline] |
returns the z size of the workspace/map
Definition at line 84 of file dynamicEDT3D.h.
int DynamicEDT3D::getSQCellDistance | ( | int | x, |
int | y, | ||
int | z | ||
) | const |
returns the squared obstacle distance in cell units at the specified location
Definition at line 536 of file dynamicEDT3D.cpp.
void DynamicEDT3D::initializeEmpty | ( | int | _sizeX, |
int | _sizeY, | ||
int | sizeZ, | ||
bool | initGridMap = true |
||
) |
Initialization with an empty map.
Definition at line 139 of file dynamicEDT3D.cpp.
void DynamicEDT3D::initializeMap | ( | int | _sizeX, |
int | _sizeY, | ||
int | sizeZ, | ||
bool *** | _gridMap | ||
) |
Initialization with a given binary map (false==free, true==occupied)
Definition at line 209 of file dynamicEDT3D.cpp.
void DynamicEDT3D::inspectCellPropagate | ( | int & | nx, |
int & | ny, | ||
int & | nz, | ||
dataCell & | c, | ||
bool | updateRealDist | ||
) | [inline, protected] |
Definition at line 480 of file dynamicEDT3D.cpp.
void DynamicEDT3D::inspectCellRaise | ( | int & | nx, |
int & | ny, | ||
int & | nz, | ||
bool | updateRealDist | ||
) | [inline, protected] |
Definition at line 362 of file dynamicEDT3D.cpp.
bool DynamicEDT3D::isOccupied | ( | int | x, |
int | y, | ||
int | z | ||
) | const |
checks whether the specficied location is occupied
Definition at line 584 of file dynamicEDT3D.cpp.
bool DynamicEDT3D::isOccupied | ( | int & | x, |
int & | y, | ||
int & | z, | ||
dataCell & | c | ||
) | [inline, private] |
Definition at line 589 of file dynamicEDT3D.cpp.
void DynamicEDT3D::occupyCell | ( | int | x, |
int | y, | ||
int | z | ||
) |
add an obstacle at the specified cell coordinate
Definition at line 255 of file dynamicEDT3D.cpp.
void DynamicEDT3D::propagateCell | ( | INTPOINT3D & | p, |
dataCell & | c, | ||
bool | updateRealDist | ||
) | [inline, protected] |
Definition at line 385 of file dynamicEDT3D.cpp.
void DynamicEDT3D::raiseCell | ( | INTPOINT3D & | p, |
dataCell & | c, | ||
bool | updateRealDist | ||
) | [inline, protected] |
Definition at line 338 of file dynamicEDT3D.cpp.
void DynamicEDT3D::removeObstacle | ( | int | x, |
int | y, | ||
int | z | ||
) | [protected] |
Definition at line 276 of file dynamicEDT3D.cpp.
void DynamicEDT3D::setObstacle | ( | int | x, |
int | y, | ||
int | z | ||
) | [protected] |
Definition at line 265 of file dynamicEDT3D.cpp.
void DynamicEDT3D::update | ( | bool | updateRealDist = true | ) | [virtual] |
update distance map to reflect the changes
Reimplemented in DynamicEDTOctomap.
Definition at line 313 of file dynamicEDT3D.cpp.
std::vector<INTPOINT3D> DynamicEDT3D::addList [private] |
Definition at line 125 of file dynamicEDT3D.h.
dataCell*** DynamicEDT3D::data [protected] |
Definition at line 137 of file dynamicEDT3D.h.
int DynamicEDT3D::distanceInCellsValue_Error = -1 [static] |
distance value returned when requesting distance in cell units for a cell outside the map
Reimplemented in DynamicEDTOctomap.
Definition at line 91 of file dynamicEDT3D.h.
float DynamicEDT3D::distanceValue_Error = -1.0 [static] |
distance value returned when requesting distance for a cell outside the map
Reimplemented in DynamicEDTOctomap.
Definition at line 89 of file dynamicEDT3D.h.
double DynamicEDT3D::doubleThreshold [protected] |
Definition at line 142 of file dynamicEDT3D.h.
bool*** DynamicEDT3D::gridMap [protected] |
Definition at line 138 of file dynamicEDT3D.h.
std::vector<INTPOINT3D> DynamicEDT3D::lastObstacles [private] |
Definition at line 126 of file dynamicEDT3D.h.
double DynamicEDT3D::maxDist [protected] |
Definition at line 145 of file dynamicEDT3D.h.
int DynamicEDT3D::maxDist_squared [protected] |
Definition at line 146 of file dynamicEDT3D.h.
BucketPrioQueue<INTPOINT3D> DynamicEDT3D::open [private] |
Definition at line 122 of file dynamicEDT3D.h.
int DynamicEDT3D::padding [protected] |
Definition at line 141 of file dynamicEDT3D.h.
std::vector<INTPOINT3D> DynamicEDT3D::removeList [private] |
Definition at line 124 of file dynamicEDT3D.h.
int DynamicEDT3D::sizeX [protected] |
Definition at line 130 of file dynamicEDT3D.h.
int DynamicEDT3D::sizeXm1 [protected] |
Definition at line 133 of file dynamicEDT3D.h.
int DynamicEDT3D::sizeY [protected] |
Definition at line 131 of file dynamicEDT3D.h.
int DynamicEDT3D::sizeYm1 [protected] |
Definition at line 134 of file dynamicEDT3D.h.
int DynamicEDT3D::sizeZ [protected] |
Definition at line 132 of file dynamicEDT3D.h.
int DynamicEDT3D::sizeZm1 [protected] |
Definition at line 135 of file dynamicEDT3D.h.
double DynamicEDT3D::sqrt2 [protected] |
Definition at line 144 of file dynamicEDT3D.h.