#include <Csc3dCartographyProcessor.h>
Configuration for the 3D cartography pipeline.
Default values are tuned for high-definition final cartography in centimeters.
Unit convention:
Design intent:
| bool conscience_core::lidar::CartographyConfig::accumulateStaticBootstrap = true |
| 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.
| bool conscience_core::lidar::CartographyConfig::enableGroundLevelling = false |
Enables final ground-levelling after map merge.
false:
true:
| 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.
| bool conscience_core::lidar::CartographyConfig::enableYawMultistart = true |
| bool conscience_core::lidar::CartographyConfig::fallbackToOdometryWhenGicpRejected = false |
| 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.
| 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.
| 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.
| 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.
| 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.
| double conscience_core::lidar::CartographyConfig::loopClosureThreshold = 30.0 |
Maximum accepted RMSE for a verified loop closure.
Expressed in centimeters.
Default: 30 cm.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| double conscience_core::lidar::CartographyConfig::maxTranslationCorrection = 20.0f |
| 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.
| bool conscience_core::lidar::CartographyConfig::odometryOnlyMode = false |
| float conscience_core::lidar::CartographyConfig::odometryTranslationScale = 0.7f |
| float conscience_core::lidar::CartographyConfig::odometryYawClampDeg = 8.0f |
| double conscience_core::lidar::CartographyConfig::ransacDistanceThreshold = 5.0 |
Maximum point-to-plane distance for RANSAC ground-plane inliers.
Expressed in centimeters.
Default: 5 cm.
| 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.
| 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.
| 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.
| float conscience_core::lidar::CartographyConfig::staticBootstrapMaxTranslationCm = 2.0f |
| float conscience_core::lidar::CartographyConfig::staticBootstrapMaxYawDeg = 1.0f |
| 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.
| bool conscience_core::lidar::CartographyConfig::useOdometryInitialGuess = true |
| 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.
| std::vector<float> conscience_core::lidar::CartographyConfig::yawMultistartOffsetsDeg |