Map

This section describes the configuration options for the ROS server and the map.

General

These settings control the general behavior of the ROS server. They are nested in the top level config under map/general.

struct WavemapServerConfig : public wavemap::ConfigBase<WavemapServerConfig, 8, LoggingLevel>

Config struct for wavemap’s ROS server.

Public Members

std::string world_frame = "odom"

Name of the coordinate frame in which to store the map.

Will be used as the frame_id for ROS TF lookups.

Seconds<FloatingPoint> thresholding_period = 1.f

Time period controlling how often the map is thresholded.

To disable thresholding, set it to a negative number [not recommended].

Seconds<FloatingPoint> pruning_period = 10.f

Time period controlling how often the map is pruned.

To disable pruning, set it to a negative number.

Seconds<FloatingPoint> publication_period = 10.f

Time period controlling how often the map is published.

To disable map publishing, set it to a negative number.

int max_num_blocks_per_msg = 1000

Maximum number of blocks to transmit per wavemap map message.

Used to control the maximum message size. Only works in combination with hash-based map data structures.

int num_threads = std::max(1, static_cast<int>(std::thread::hardware_concurrency()))

Maximum number of threads to use.

Defaults to the number of threads supported by the CPU.

LoggingLevel logging_level = LoggingLevel::kInfo

Minimum severity level for ROS logging messages to be logged.

bool allow_reset_map_service = false

Whether or not to allow resetting the map through the reset_map service.

Data structures

These settings control the data structure that is used to store the map. They are nested in the top level config under map/data_structure.

The following three data structures are fully supported by wavemap’s ROS server: wavelet_octree, hashed_wavelet_octree or hashed_chunked_wavelet_octree. For general use, we recommend the hashed_wavelet_octree data structure. If you need the best possible performance, the hashed_chunked_wavelet_octree data structure is faster and uses less RAM. However, it is still under active development.

Wavelet octree

Selected by setting map/data_structure/type: "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.

Hashed wavelet octree

Selected by setting map/data_structure/type: "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.

Hashed chunked wavelet octree

Selected by setting map/data_structure/type: "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.