Conscience Core
Public Attributes | List of all members
conscience_core::lidar::CartographyConfig Struct Reference

#include <Csc3dCartographyProcessor.h>

Public Attributes

float voxelLeafSize = 5.0f
 
float finalVoxelLeafSize = 2.0f
 
double maxEdgeRmse = 30.0
 
float maxAngleDeg = 45.0f
 
bool odometryOnlyMode = false
 
double maxTranslationCorrection = 20.0f
 
bool useOdometryInitialGuess = true
 
bool fallbackToOdometryWhenGicpRejected = false
 
bool enableYawMultistart = true
 
float odometryYawClampDeg = 8.0f
 
float odometryTranslationScale = 0.7f
 
bool accumulateStaticBootstrap = true
 
float staticBootstrapMaxTranslationCm = 2.0f
 
float staticBootstrapMaxYawDeg = 1.0f
 
std::vector< float > yawMultistartOffsetsDeg
 
int localMapWindowSize = 5
 
int lumMaxIterations = 50
 
int lumOverlapWindow = 10
 
double gicpResolution = 10.0
 
double spatialLoopDist = 500.0
 
int temporalLoopGap = 50
 
double loopClosureThreshold = 30.0
 
float dynVoxelSize = 20.0f
 
int minFrameObservations = 1
 
int ransacMaxIterations = 200
 
double ransacDistanceThreshold = 5.0
 
int ransacMinInliers = 1000
 
bool enableSpatialFilter = true
 
float maxAbsCoord = 1500.0f
 
float maxRange = 1500.0f
 
bool enableGroundLevelling = false
 
float groundMaxTiltDeg = 15.0f
 
float groundMinUpDot = 0.95f
 

Detailed Description

Configuration for the 3D cartography pipeline.

Default values are tuned for high-definition final cartography in centimeters.

Unit convention:

Design intent:

Member Data Documentation

◆ accumulateStaticBootstrap

bool conscience_core::lidar::CartographyConfig::accumulateStaticBootstrap = true

◆ dynVoxelSize

float conscience_core::lidar::CartographyConfig::dynVoxelSize = 20.0f

Voxel size used for dynamic-object filtering.

Points are kept only if their voxel is observed by enough frames. Larger values are more tolerant to slight pose noise.

Default: 20 cm.

◆ enableGroundLevelling

bool conscience_core::lidar::CartographyConfig::enableGroundLevelling = false

Enables final ground-levelling after map merge.

false:

  • disables RANSAC ground-plane correction entirely
  • keeps the merged cloud in the pose/odometry frame
  • safest default

true:

  • runs constrained ground-plane detection
  • only accepts a plane whose normal is close to Y-up
  • applies a corrective rotation to the final cloud

◆ enableSpatialFilter

bool conscience_core::lidar::CartographyConfig::enableSpatialFilter = true

Enables an optional spatial pre-filter before voxel-grid processing.

This removes points outside a configured bounding range before registration and merging. It is mainly used to reject physically invalid or excessively distant points that would inflate the cloud bounding box and slow down PCL voxelization.

Default: enabled.

◆ enableYawMultistart

bool conscience_core::lidar::CartographyConfig::enableYawMultistart = true

◆ fallbackToOdometryWhenGicpRejected

bool conscience_core::lidar::CartographyConfig::fallbackToOdometryWhenGicpRejected = false

◆ finalVoxelLeafSize

float conscience_core::lidar::CartographyConfig::finalVoxelLeafSize = 2.0f

Final voxel size applied after merging raw frames.

This controls the output cartography density. Smaller values preserve more detail but increase output size.

Default: 2 cm, intended for HD final cartography.

◆ gicpResolution

double conscience_core::lidar::CartographyConfig::gicpResolution = 10.0

Resolution used internally by FastVGICP.

Larger values make registration faster and smoother. Smaller values can improve detail but are slower and less stable.

Default: 10 cm.

◆ groundMaxTiltDeg

float conscience_core::lidar::CartographyConfig::groundMaxTiltDeg = 15.0f

Maximum accepted angle between detected ground normal and world up axis.

Only used when enableGroundLevelling is true. Expressed in degrees.

Default: 15 degrees.

◆ groundMinUpDot

float conscience_core::lidar::CartographyConfig::groundMinUpDot = 0.95f

Minimum dot product between detected ground normal and Y-up.

0.95 ≈ max tilt of 18 degrees. Stricter values reduce false ground detection.

Only used when enableGroundLevelling is true.

◆ localMapWindowSize

int conscience_core::lidar::CartographyConfig::localMapWindowSize = 5

Number of recent frames used to build the local scan-to-map target.

A small window keeps odometry fast and avoids overloading GICP. Final HD quality is not reduced by this value because final merging uses the raw frames, not only the local map.

Default: 5 frames.

◆ loopClosureThreshold

double conscience_core::lidar::CartographyConfig::loopClosureThreshold = 30.0

Maximum accepted RMSE for a verified loop closure.

Expressed in centimeters.

Default: 30 cm.

◆ lumMaxIterations

int conscience_core::lidar::CartographyConfig::lumMaxIterations = 50

Maximum number of iterations for LUM / graph optimization.

Only relevant when loop closure optimization is enabled.

Default: 50 iterations.

◆ lumOverlapWindow

int conscience_core::lidar::CartographyConfig::lumOverlapWindow = 10

Frame overlap window used by loop-closure / graph optimization logic.

This should stay moderate for short recordings.

Default: 10 frames.

◆ maxAbsCoord

float conscience_core::lidar::CartographyConfig::maxAbsCoord = 1500.0f

Maximum absolute coordinate accepted on each axis.

A point is rejected if abs(x), abs(y), or abs(z) is greater than this value. Expressed in centimeters.

◆ maxAngleDeg

float conscience_core::lidar::CartographyConfig::maxAngleDeg = 45.0f

Maximum accepted angular deviation from the motion guess.

Used as a safety gate to reject unstable GICP rotations.

Default: 45 degrees.

◆ maxEdgeRmse

double conscience_core::lidar::CartographyConfig::maxEdgeRmse = 30.0

Maximum accepted GICP edge RMSE.

If an incremental alignment produces a higher RMSE, the pose is rejected and the previous pose is reused as a fallback.

Default: 30 cm.

◆ maxRange

float conscience_core::lidar::CartographyConfig::maxRange = 1500.0f

Maximum radial distance accepted from the sensor origin.

A point is rejected if sqrt(x² + y² + z²) is greater than this value. Expressed in centimeters.

◆ maxTranslationCorrection

double conscience_core::lidar::CartographyConfig::maxTranslationCorrection = 20.0f

◆ minFrameObservations

int conscience_core::lidar::CartographyConfig::minFrameObservations = 1

Minimum number of distinct frames that must observe a dynamic-filter voxel.

For short recordings, keep this low. A value higher than the frame count would remove the entire map unless clamped.

Default: 1, suitable for first-pass HD reconstruction validation.

◆ odometryOnlyMode

bool conscience_core::lidar::CartographyConfig::odometryOnlyMode = false

◆ odometryTranslationScale

float conscience_core::lidar::CartographyConfig::odometryTranslationScale = 0.7f

◆ odometryYawClampDeg

float conscience_core::lidar::CartographyConfig::odometryYawClampDeg = 8.0f

◆ ransacDistanceThreshold

double conscience_core::lidar::CartographyConfig::ransacDistanceThreshold = 5.0

Maximum point-to-plane distance for RANSAC ground-plane inliers.

Expressed in centimeters.

Default: 5 cm.

◆ ransacMaxIterations

int conscience_core::lidar::CartographyConfig::ransacMaxIterations = 200

Maximum number of RANSAC iterations for ground-plane estimation.

Only relevant when ground levelling is enabled.

Default: 200 iterations.

◆ ransacMinInliers

int conscience_core::lidar::CartographyConfig::ransacMinInliers = 1000

Minimum number of inliers required to accept the RANSAC ground plane.

Raise this value to avoid accepting small walls or vertical surfaces as ground.

Default: 1000 inliers.

◆ spatialLoopDist

double conscience_core::lidar::CartographyConfig::spatialLoopDist = 500.0

Maximum spatial distance between two poses for loop-closure candidacy.

Expressed in centimeters.

Default: 500 cm = 5 m.

◆ staticBootstrapMaxTranslationCm

float conscience_core::lidar::CartographyConfig::staticBootstrapMaxTranslationCm = 2.0f

◆ staticBootstrapMaxYawDeg

float conscience_core::lidar::CartographyConfig::staticBootstrapMaxYawDeg = 1.0f

◆ temporalLoopGap

int conscience_core::lidar::CartographyConfig::temporalLoopGap = 50

Minimum temporal gap between two frames before considering loop closure.

Prevents near-consecutive frames from being treated as loop closures.

Default: 50 frames.

◆ useOdometryInitialGuess

bool conscience_core::lidar::CartographyConfig::useOdometryInitialGuess = true

◆ voxelLeafSize

float conscience_core::lidar::CartographyConfig::voxelLeafSize = 5.0f

Voxel size used to downsample frames before odometry / GICP.

This does not define the final map resolution. Larger values speed up registration but reduce alignment detail.

Default: 5 cm.

◆ yawMultistartOffsetsDeg

std::vector<float> conscience_core::lidar::CartographyConfig::yawMultistartOffsetsDeg
Initial value:
= {
-20.0f,
-12.0f,
-6.0f,
0.0f,
6.0f,
12.0f,
20.0f
}

The documentation for this struct was generated from the following file: