struct mola::KeyframePointCloudMap::RegroupParams

Overview

Parameters for regroupKeyframes().

#include <KeyframePointCloudMap.h>

struct RegroupParams
{
    // fields

    double voxel_size = 0;
    double edge_overlap = 0.75;
    double core_fraction = 0.85;
    double extent_factor = 2.0;
    double merge_decimate_voxel = 0;
    double island_merge_fraction = 0.025;
    bool unify_all = false;
};

Fields

double voxel_size = 0

Voxel resolution [m] used to compute pairwise cloud overlaps. If <=0, it is auto-derived from the median per-keyframe sensing radius.

double edge_overlap = 0.75

Minimum pairwise voxel-overlap (Jaccard-min, in [0,1]) required to create an edge in the keyframe adjacency graph, i.e. for two keyframes to be candidates for merging into the same super-keyframe.

double core_fraction = 0.85

Inner-core fraction, in (0,1], of a super-keyframe’s spatial extent. A member keyframe whose center lies within core_fraction * extent of the seed is marked “covered” (deep inside, single-KF localization is reliable there). Members in the outer band stay available to seed/join neighboring super-keyframes, which is what produces the deliberate inter-group overlap. The outer (overlap) band is (1 - core_fraction) of the extent, so the default of 0.85 yields ~15% overlap between neighboring super-keyframes.

double extent_factor = 2.0

Spatial extent cap of a super-keyframe, as a multiple of the seed keyframe’s own sensing radius (half its cloud bounding-box diagonal). This auto-sizes groups non-uniformly: large outdoors (long range), small indoors.

double merge_decimate_voxel = 0

If >0, voxel-downsample each merged super-keyframe cloud at this resolution [m] to bound the point-count blow-up from the deliberate overlap. This is strongly recommended for large maps. Per-point view-direction fields, when present, are carried over (first point kept per voxel).

double island_merge_fraction = 0.025

Any cluster whose total point count falls below this fraction of the largest cluster’s point count is treated as an “island”: too small to usefully stand on its own as a super-keyframe (it would mislead proximity-based nearest-keyframe search at runtime see TCreationOptions::density_penalty_min_points while contributing little real geometry). Islands are absorbed into their nearest neighboring cluster (by center distance) instead of being emitted as their own super-keyframe. Set to 0 to disable (old behavior: every cluster becomes its own super-keyframe, however small). Default 0.025 = 2.5%.

bool unify_all = false

If true, bypass the overlap-graph clustering entirely and merge ALL keyframes into a single super-keyframe, anchored at the pose of the first (oldest) keyframe. Useful to turn a whole session’s keyframe map into one wide, self-contained keyframe e.g. so a subsequent session’s localization always sees the full previous map instead of only the max_search_keyframes nearest of many small keyframes, which under-covers stop-and-rotate scanning patterns. merge_decimate_voxel still applies to bound the resulting cloud size; all other clustering parameters above are ignored. Default false.