Class EsdfOccIntegrator

Nested Relationships

Class Documentation

class EsdfOccIntegrator

Builds an ESDF layer out of a given occupancy layer.

Public Functions

EsdfOccIntegrator(const Config &config, Layer<OccupancyVoxel> *occ_layer, Layer<EsdfVoxel> *esdf_layer)
void updateFromOccLayerBatch()

Fixed is overloaded as occupied in this case.

Only batch operations are currently supported for the occupancy map.

void updateFromOccBlocks(const BlockIndexList &occ_blocks)
void processOpenSet()
void getNeighborsAndDistances(const BlockIndex &block_index, const VoxelIndex &voxel_index, AlignedVector<VoxelKey> *neighbors, AlignedVector<float> *distances, AlignedVector<Eigen::Vector3i> *directions) const

Uses 26-connectivity and quasi-Euclidean distances.

Directions is the direction that the neighbor voxel lives in. If you need the direction FROM the neighbor voxel TO the current voxel, take negative of the given direction.

void getNeighbor(const BlockIndex &block_index, const VoxelIndex &voxel_index, const Eigen::Vector3i &direction, BlockIndex *neighbor_block_index, VoxelIndex *neighbor_voxel_index) const

Protected Attributes

Config config_
Layer<OccupancyVoxel> *occ_layer_
Layer<EsdfVoxel> *esdf_layer_
BucketQueue<VoxelKey> open_

Open Queue for incremental updates.

Contains global voxel indices for the ESDF layer.

AlignedQueue<VoxelKey> raise_

Raise set for updates; these are values that used to be in the fixed frontier and now have a higher value, or their children which need to have their values invalidated.

size_t esdf_voxels_per_side_
FloatingPoint esdf_voxel_size_
struct Config

Public Members

FloatingPoint max_distance_m = 2.0

Maximum distance to calculate the actual distance to.

Any values above this will be set to default_distance_m.

FloatingPoint default_distance_m = 2.0

Default distance set for unknown values and values > max_distance_m.

int num_buckets = 20

Number of buckets for the bucketed priority queue.