VoxelGrid holds a dense 3D, axis-aligned set of data at a given resolution, where the data is supplied as a template parameter. More...
#include <voxel_grid.h>
Public Member Functions | |
T & | getCell (int x, int y, int z) |
Gives the value of the given location (x,y,z) in the discretized voxel grid space. | |
T & | getCell (const Eigen::Vector3i &pos) |
const T & | getCell (int x, int y, int z) const |
const T & | getCell (const Eigen::Vector3i &pos) const |
int | getNumCells (Dimension dim) const |
Gets the number of cells in the indicated dimension. | |
double | getOrigin (Dimension dim) const |
Gets the origin (miniumum point) of the indicated dimension. | |
double | getResolution () const |
Gets the resolution in arbitrary consistent units. | |
double | getResolution (Dimension dim) const |
deprecated. Use the version with no arguments. | |
double | getSize (Dimension dim) const |
Gets the size in arbitrary units of the indicated dimension. | |
void | gridToWorld (int x, int y, int z, double &world_x, double &world_y, double &world_z) const |
Converts grid coordinates to world coordinates. | |
void | gridToWorld (const Eigen::Vector3i &grid, Eigen::Vector3i &world) const |
bool | isCellValid (int x, int y, int z) const |
Checks if the given cell in integer coordinates is within the voxel grid. | |
bool | isCellValid (const Eigen::Vector3i &pos) const |
bool | isCellValid (Dimension dim, int cell) const |
Checks if the indicated index is valid along a particular dimension. | |
MOVEIT_DECLARE_PTR_MEMBER (VoxelGrid) | |
const T & | operator() (double x, double y, double z) const |
Operator that gets the value of the given location (x, y, z) given the discretization of the volume. The location represents a location in the original coordinate frame used to construct the voxel grid. | |
const T & | operator() (const Eigen::Vector3d &pos) const |
void | reset (const T &initial) |
Sets every cell in the voxel grid to the supplied data. | |
void | resize (double size_x, double size_y, double size_z, double resolution, double origin_x, double origin_y, double origin_z, T default_object) |
Resize the VoxelGrid. | |
void | setCell (int x, int y, int z, const T &obj) |
Sets the value of the given location (x,y,z) in the discretized voxel grid space to supplied value. | |
void | setCell (const Eigen::Vector3i &pos, const T &obj) |
VoxelGrid (double size_x, double size_y, double size_z, double resolution, double origin_x, double origin_y, double origin_z, T default_object) | |
Constructor for the VoxelGrid. | |
VoxelGrid () | |
Default constructor for the VoxelGrid. | |
bool | worldToGrid (double world_x, double world_y, double world_z, int &x, int &y, int &z) const |
Converts from a world location to a set of integer indices. Does check whether or not the cell being returned is valid. The returned indices will be computed even if they are invalid. | |
bool | worldToGrid (const Eigen::Vector3i &world, Eigen::Vector3i &grid) const |
virtual | ~VoxelGrid () |
Protected Member Functions | |
int | getCellFromLocation (Dimension dim, double loc) const |
Gets the cell number from the location. | |
double | getLocationFromCell (Dimension dim, int cell) const |
Gets the center of the cell in world coordinates along the given dimension. No validity check. | |
int | ref (int x, int y, int z) const |
Gets the 1D index into the array, with no validity check. | |
Protected Attributes | |
T * | data_ |
Storage for the full set of data elements. | |
T *** | data_ptrs_ |
3D array of pointers to the data elements | |
T | default_object_ |
The default object to return in case of out-of-bounds query. | |
int | num_cells_ [3] |
The number of cells in each dimension (in Dimension order) | |
int | num_cells_total_ |
The total number of voxels in the grid. | |
double | oo_resolution_ |
1.0/resolution_ | |
double | origin_ [3] |
The origin (minumum point) of each dimension in meters (in Dimension order) | |
double | origin_minus_ [3] |
origin - 0.5/resolution | |
double | resolution_ |
The resolution of each dimension in meters (in Dimension order) | |
double | size_ [3] |
The size of each dimension in meters (in Dimension order) | |
int | stride1_ |
The step to take when stepping between consecutive X members in the 1D array. | |
int | stride2_ |
The step to take when stepping between consecutive Y members given an X in the 1D array. |
VoxelGrid holds a dense 3D, axis-aligned set of data at a given resolution, where the data is supplied as a template parameter.
Definition at line 62 of file voxel_grid.h.
distance_field::VoxelGrid< T >::VoxelGrid | ( | double | size_x, |
double | size_y, | ||
double | size_z, | ||
double | resolution, | ||
double | origin_x, | ||
double | origin_y, | ||
double | origin_z, | ||
T | default_object | ||
) |
Constructor for the VoxelGrid.
Constructs a dense representation of a 3D, axis-aligned volume at a given resolution. The volume can be represented in any consistent set of units, but for the sake of documentation we assume that the units are meters. The size of the the volume is given along each of the X, Y, and Z axes. The volume begins at the minimum point in each dimension, as specified by the origin parameters. The data structure will remain unintialized until the VoxelGrid::reset function is called.
[in] | size_x | Size of the X axis in meters |
[in] | size_y | Size of the Y axis in meters |
[in] | size_z | Size of the Z axis in meters |
[in] | resolution | Resolution of a single cell in meters |
[in] | origin_x | Minimum point along the X axis of the volume |
[in] | origin_y | Minimum point along the Y axis of the volume |
[in] | origin_z | Minimum point along the Z axis of the volume |
[in] | default_object | An object that will be returned for any future queries that are not valid |
Definition at line 343 of file voxel_grid.h.
distance_field::VoxelGrid< T >::~VoxelGrid | ( | ) | [virtual] |
Definition at line 403 of file voxel_grid.h.
distance_field::VoxelGrid< T >::VoxelGrid | ( | ) |
Default constructor for the VoxelGrid.
This is only useful if resize() is called after construction to set the size and resolution of the VoxelGrid.
Definition at line 351 of file voxel_grid.h.
T & distance_field::VoxelGrid< T >::getCell | ( | int | x, |
int | y, | ||
int | z | ||
) | [inline] |
Gives the value of the given location (x,y,z) in the discretized voxel grid space.
The address here is in the discretized space of the voxel grid, where the cell indicated by the constructor arguments (origin_x, origin_y, origin_z) is cell (0,0,0), and the cell indicated by (origin_x+x_size, origin_y+y_size, origin_z+z_size) will be (size_x/resolution, size_y/resolution, size_z/resolution).
[in] | x | The X index of the desired cell |
[in] | y | The Y index of the desired cell |
[in] | z | The Z index of the desired cell |
Definition at line 480 of file voxel_grid.h.
T & distance_field::VoxelGrid< T >::getCell | ( | const Eigen::Vector3i & | pos | ) | [inline] |
Definition at line 492 of file voxel_grid.h.
const T & distance_field::VoxelGrid< T >::getCell | ( | int | x, |
int | y, | ||
int | z | ||
) | const [inline] |
Definition at line 486 of file voxel_grid.h.
const T & distance_field::VoxelGrid< T >::getCell | ( | const Eigen::Vector3i & | pos | ) | const [inline] |
Definition at line 498 of file voxel_grid.h.
int distance_field::VoxelGrid< T >::getCellFromLocation | ( | Dimension | dim, |
double | loc | ||
) | const [inline, protected] |
Gets the cell number from the location.
Gets the cell number in a given dimension given a world value. No validity check.
[in] | dim | The dimension of the query |
[in] | loc | The world location along that dimension |
Definition at line 516 of file voxel_grid.h.
double distance_field::VoxelGrid< T >::getLocationFromCell | ( | Dimension | dim, |
int | cell | ||
) | const [inline, protected] |
Gets the center of the cell in world coordinates along the given dimension. No validity check.
[in] | dim | The dimension of the query |
[in] | cell | The cell along the given dimension |
Definition at line 536 of file voxel_grid.h.
int distance_field::VoxelGrid< T >::getNumCells | ( | Dimension | dim | ) | const [inline] |
Gets the number of cells in the indicated dimension.
[in] | dim | The dimension for the query |
Definition at line 457 of file voxel_grid.h.
double distance_field::VoxelGrid< T >::getOrigin | ( | Dimension | dim | ) | const [inline] |
Gets the origin (miniumum point) of the indicated dimension.
[in] | dim | The dimension for the query |
Definition at line 451 of file voxel_grid.h.
double distance_field::VoxelGrid< T >::getResolution | ( | ) | const [inline] |
Gets the resolution in arbitrary consistent units.
Definition at line 439 of file voxel_grid.h.
double distance_field::VoxelGrid< T >::getResolution | ( | Dimension | dim | ) | const [inline] |
deprecated. Use the version with no arguments.
Definition at line 445 of file voxel_grid.h.
double distance_field::VoxelGrid< T >::getSize | ( | Dimension | dim | ) | const [inline] |
Gets the size in arbitrary units of the indicated dimension.
[in] | dim | The dimension for the query |
Definition at line 433 of file voxel_grid.h.
void distance_field::VoxelGrid< T >::gridToWorld | ( | int | x, |
int | y, | ||
int | z, | ||
double & | world_x, | ||
double & | world_y, | ||
double & | world_z | ||
) | const [inline] |
Converts grid coordinates to world coordinates.
Converts from an set of integer indices to a world location given the origin and resolution parameters. There is no check whether or not the cell or world locations lie within the represented region.
[in] | x | The integer X location |
[in] | y | The integer Y location |
[in] | z | The integer Z location |
[out] | world_x | The computed world X location |
[out] | world_y | The computed world X location |
[out] | world_z | The computed world X location |
Definition at line 548 of file voxel_grid.h.
void distance_field::VoxelGrid< T >::gridToWorld | ( | const Eigen::Vector3i & | grid, |
Eigen::Vector3i & | world | ||
) | const [inline] |
Definition at line 556 of file voxel_grid.h.
bool distance_field::VoxelGrid< T >::isCellValid | ( | int | x, |
int | y, | ||
int | z | ||
) | const [inline] |
Checks if the given cell in integer coordinates is within the voxel grid.
[in] | x | The integer X location |
[in] | y | The integer Y location |
[in] | z | The integer Z location |
Definition at line 409 of file voxel_grid.h.
bool distance_field::VoxelGrid< T >::isCellValid | ( | const Eigen::Vector3i & | pos | ) | const [inline] |
Definition at line 415 of file voxel_grid.h.
bool distance_field::VoxelGrid< T >::isCellValid | ( | Dimension | dim, |
int | cell | ||
) | const [inline] |
Checks if the indicated index is valid along a particular dimension.
[in] | dim | The dimension for the query |
[in] | cell | The index along that dimension |
Definition at line 421 of file voxel_grid.h.
distance_field::VoxelGrid< T >::MOVEIT_DECLARE_PTR_MEMBER | ( | VoxelGrid< T > | ) |
const T & distance_field::VoxelGrid< T >::operator() | ( | double | x, |
double | y, | ||
double | z | ||
) | const [inline] |
Operator that gets the value of the given location (x, y, z) given the discretization of the volume. The location represents a location in the original coordinate frame used to construct the voxel grid.
[in] | x | X component of the desired location |
[in] | y | Y component of the desired location |
[in] | z | Z component of the desired location |
Definition at line 463 of file voxel_grid.h.
const T & distance_field::VoxelGrid< T >::operator() | ( | const Eigen::Vector3d & | pos | ) | const [inline] |
Definition at line 474 of file voxel_grid.h.
int distance_field::VoxelGrid< T >::ref | ( | int | x, |
int | y, | ||
int | z | ||
) | const [inline, protected] |
Gets the 1D index into the array, with no validity check.
[in] | x | The integer X location |
[in] | y | The integer Y location |
[in] | z | The integer Z location |
Definition at line 427 of file voxel_grid.h.
void distance_field::VoxelGrid< T >::reset | ( | const T & | initial | ) | [inline] |
Sets every cell in the voxel grid to the supplied data.
[in] | initial | The template variable to which to set the data |
Definition at line 542 of file voxel_grid.h.
void distance_field::VoxelGrid< T >::resize | ( | double | size_x, |
double | size_y, | ||
double | size_z, | ||
double | resolution, | ||
double | origin_x, | ||
double | origin_y, | ||
double | origin_z, | ||
T | default_object | ||
) |
Resize the VoxelGrid.
This discards all the data in the voxel grid and reinitializes it with a new size and resolution. This is mainly useful if the size or resolution is not known until after the voxelgrid is constructed.
[in] | size_x | Size of the X axis in meters |
[in] | size_y | Size of the Y axis in meters |
[in] | size_z | Size of the Z axis in meters |
[in] | resolution | Resolution of a single cell in meters |
[in] | origin_x | Minimum point along the X axis of the volume |
[in] | origin_y | Minimum point along the Y axis of the volume |
[in] | origin_z | Minimum point along the Z axis of the volume |
Definition at line 368 of file voxel_grid.h.
void distance_field::VoxelGrid< T >::setCell | ( | int | x, |
int | y, | ||
int | z, | ||
const T & | obj | ||
) | [inline] |
Sets the value of the given location (x,y,z) in the discretized voxel grid space to supplied value.
The address here is in the discretized space of the voxel grid, where the cell indicated by the constructor arguments (origin_x, origin_y, origin_z) is cell (0,0,0), and the cell indicated by (origin_x+x_size, origin_y+y_size, origin_z+z_size) will be (size_x/resolution, size_y/resolution, size_z/resolution).
If the arguments do not indicate a valid cell, corruption and/or SEGFAULTS will occur.
[in] | x | The X index of the desired cell |
[in] | y | The Y index of the desired cell |
[in] | z | The Z index of the desired cell |
[out] | obj | The data to place into the given cell |
Definition at line 504 of file voxel_grid.h.
void distance_field::VoxelGrid< T >::setCell | ( | const Eigen::Vector3i & | pos, |
const T & | obj | ||
) | [inline] |
Definition at line 510 of file voxel_grid.h.
bool distance_field::VoxelGrid< T >::worldToGrid | ( | double | world_x, |
double | world_y, | ||
double | world_z, | ||
int & | x, | ||
int & | y, | ||
int & | z | ||
) | const [inline] |
Converts from a world location to a set of integer indices. Does check whether or not the cell being returned is valid. The returned indices will be computed even if they are invalid.
[in] | world_x | The world X location |
[in] | world_y | The world Y location |
[in] | world_z | The world Z location |
[out] | x | The computed integer X location |
[out] | y | The computed integer X location |
[out] | z | The computed integer X location |
Definition at line 564 of file voxel_grid.h.
bool distance_field::VoxelGrid< T >::worldToGrid | ( | const Eigen::Vector3i & | world, |
Eigen::Vector3i & | grid | ||
) | const [inline] |
Definition at line 573 of file voxel_grid.h.
T* distance_field::VoxelGrid< T >::data_ [protected] |
Storage for the full set of data elements.
Definition at line 290 of file voxel_grid.h.
T*** distance_field::VoxelGrid< T >::data_ptrs_ [protected] |
3D array of pointers to the data elements
Definition at line 292 of file voxel_grid.h.
T distance_field::VoxelGrid< T >::default_object_ [protected] |
The default object to return in case of out-of-bounds query.
Definition at line 291 of file voxel_grid.h.
int distance_field::VoxelGrid< T >::num_cells_[3] [protected] |
The number of cells in each dimension (in Dimension order)
Definition at line 298 of file voxel_grid.h.
int distance_field::VoxelGrid< T >::num_cells_total_ [protected] |
The total number of voxels in the grid.
Definition at line 299 of file voxel_grid.h.
double distance_field::VoxelGrid< T >::oo_resolution_ [protected] |
1.0/resolution_
Definition at line 295 of file voxel_grid.h.
double distance_field::VoxelGrid< T >::origin_[3] [protected] |
The origin (minumum point) of each dimension in meters (in Dimension order)
Definition at line 296 of file voxel_grid.h.
double distance_field::VoxelGrid< T >::origin_minus_[3] [protected] |
origin - 0.5/resolution
Definition at line 297 of file voxel_grid.h.
double distance_field::VoxelGrid< T >::resolution_ [protected] |
The resolution of each dimension in meters (in Dimension order)
Definition at line 294 of file voxel_grid.h.
double distance_field::VoxelGrid< T >::size_[3] [protected] |
The size of each dimension in meters (in Dimension order)
Definition at line 293 of file voxel_grid.h.
int distance_field::VoxelGrid< T >::stride1_ [protected] |
The step to take when stepping between consecutive X members in the 1D array.
Definition at line 300 of file voxel_grid.h.
int distance_field::VoxelGrid< T >::stride2_ [protected] |
The step to take when stepping between consecutive Y members given an X in the 1D array.
Definition at line 301 of file voxel_grid.h.