Map
The settings in the config’s map
section control the data structure used to store the map. We currently recommend using either the hashed_chunked_wavelet_octree
or hashed_wavelet_octree
data structure. The hashed_chunked_wavelet_octree
data structure provides the best performance in terms of computational speed and RAM usage. In case you’re interested in modifying wavemap’s code, the hashed_wavelet_octree
data structure is simpler while still offering good performance. For learning purposes, we also briefly discuss wavemap’s simplest wavelet-based data structure: the wavelet_octree
.
Wavelet octree
Selected by setting map/type
to "wavelet_octree"
.
The wavelet_octree
is the simplest of the wavelet-based data structures and stores the wavelet coefficients in a standard octree. This data structure can be useful in case you need the entire map to be contained in a single tree and don’t mind sacrificing performance.
-
struct WaveletOctreeConfig : public wavemap::ConfigBase<WaveletOctreeConfig, 4>
Config struct for the wavelet octree volumetric data structure.
Public Members
-
Meters<FloatingPoint> min_cell_width = 0.1f
Maximum resolution of the map, set as the width of the smallest cell that it can represent.
-
FloatingPoint min_log_odds = -2.f
Lower threshold for the occupancy values stored in the map, in log-odds.
-
FloatingPoint max_log_odds = 4.f
Upper threshold for the occupancy values stored in the map, in log-odds.
-
IndexElement tree_height = 14
Height of the octree used to store the map.
-
Meters<FloatingPoint> min_cell_width = 0.1f
Hashed wavelet octree
Selected by setting map/type
to "hashed_wavelet_octree"
.
The hashed_wavelet_octree
combines the strengths of wavelet octrees with block-hashing. At the top level, the map is split into blocks which are accessed through a hash table. Each block in turn contains a small wavelet octree.
-
struct HashedWaveletOctreeConfig : public wavemap::ConfigBase<HashedWaveletOctreeConfig, 5>
Config struct for the hashed wavelet octree volumetric data structure.
Public Members
-
Meters<FloatingPoint> min_cell_width = 0.1f
Maximum resolution of the map, set as the width of the smallest cell that it can represent.
-
FloatingPoint min_log_odds = -2.f
Lower threshold for the occupancy values stored in the map, in log-odds.
-
FloatingPoint max_log_odds = 4.f
Upper threshold for the occupancy values stored in the map, in log-odds.
-
IndexElement tree_height = 6
Height of the octree in each hashed block.
-
Seconds<FloatingPoint> only_prune_blocks_if_unused_for = 5.f
Only prune blocks if they have not been updated for at least this amount of time.
Useful to avoid pruning blocks that are still being updated, whose nodes would most likely directly be reallocated if pruned.
-
Meters<FloatingPoint> min_cell_width = 0.1f
Hashed chunked wavelet octree
Selected by setting map/type
to "hashed_chunked_wavelet_octree"
.
The hashed_chunked_wavelet_octree
is similar to the hashed_wavelet_octree
, but instead of storing all octree nodes separately it groups them into chunks.
-
struct HashedChunkedWaveletOctreeConfig : public wavemap::ConfigBase<HashedChunkedWaveletOctreeConfig, 5>
Config struct for the hashed chunked wavelet octree volumetric data structure.
Public Members
-
Meters<FloatingPoint> min_cell_width = 0.1f
Maximum resolution of the map, set as the width of the smallest cell that it can represent.
-
FloatingPoint min_log_odds = -2.f
Lower threshold for the occupancy values stored in the map, in log-odds.
-
FloatingPoint max_log_odds = 4.f
Upper threshold for the occupancy values stored in the map, in log-odds.
-
IndexElement tree_height = 6
Height of the octree in each hashed block.
-
Seconds<FloatingPoint> only_prune_blocks_if_unused_for = 5.f
Only prune blocks if they have not been updated for at least this amount of time.
Useful to avoid pruning blocks that are still being updated, whose nodes would most likely directly be reallocated if pruned.
-
Meters<FloatingPoint> min_cell_width = 0.1f