Conscience Core
Public Types | Public Member Functions | List of all members
conscience_core::lidar::CscSlam3dProbabilisticVoxelGrid Class Reference

#include <CscSlamEngine.h>

Public Types

using VoxelMap = std::unordered_map< CscSlam3dMapVoxelKey, CscSlam3dProbabilisticVoxel, CscSlam3dMapVoxelKeyHash >
 

Public Member Functions

 CscSlam3dProbabilisticVoxelGrid (float voxelSizeMeters=0.03f)
 
CscSlam3dMapVoxelKey mrptPointToVoxel (double x, double y, double z) const
 
CscSlam3dProbabilisticVoxeltouchVoxel (const CscSlam3dMapVoxelKey &key, uint64_t frameIndex)
 
std::optional< CscSlam3dMapVoxelDiffaddMissVoxel (const CscSlam3dMapVoxelKey &key, uint64_t frameIndex)
 
std::vector< CscSlam3dMapVoxelDiffintegrateRayMrpt (double originX, double originY, double originZ, double hitX, double hitY, double hitZ, uint64_t frameIndex, std::unordered_set< CscSlam3dMapVoxelKey, CscSlam3dMapVoxelKeyHash > &frameHitVoxels, std::unordered_set< CscSlam3dMapVoxelKey, CscSlam3dMapVoxelKeyHash > &frameMissVoxels)
 
optional< CscSlam3dMapVoxelDiffaddPointMrpt (double x, double y, double z, uint64_t frameIndex)
 
void clear ()
 
size_t size () const
 
bool empty () const
 
float getVoxelSizeMeters () const
 
const VoxelMapgetVoxelsUnsafe () const
 
float getVisibleThreshold () const
 
CscSlam3dMapVoxelGrid buildVisibleVoxelGrid () const
 
void eraseDeadVoxels ()
 
size_t visibleVoxelCount () const
 
std::vector< CscSlam3dMapVoxelKeycollectFarNeighborCandidates (int minNeighborCount, int minHits) const
 
std::vector< CscSlam3dMapVoxelKeypurgeFarNeighborCandidates (const std::vector< CscSlam3dMapVoxelKey > &candidates, int minNeighborCount, int minHits)
 

Member Typedef Documentation

◆ VoxelMap

Constructor & Destructor Documentation

◆ CscSlam3dProbabilisticVoxelGrid()

conscience_core::lidar::CscSlam3dProbabilisticVoxelGrid::CscSlam3dProbabilisticVoxelGrid ( float  voxelSizeMeters = 0.03f)
explicit

Member Function Documentation

◆ addMissVoxel()

std::optional< CscSlam3dMapVoxelDiff > conscience_core::lidar::CscSlam3dProbabilisticVoxelGrid::addMissVoxel ( const CscSlam3dMapVoxelKey key,
uint64_t  frameIndex 
)

◆ addPointMrpt()

std::optional< CscSlam3dMapVoxelDiff > conscience_core::lidar::CscSlam3dProbabilisticVoxelGrid::addPointMrpt ( double  x,
double  y,
double  z,
uint64_t  frameIndex 
)

◆ buildVisibleVoxelGrid()

CscSlam3dMapVoxelGrid conscience_core::lidar::CscSlam3dProbabilisticVoxelGrid::buildVisibleVoxelGrid ( ) const

heavy - see visibleVoxelCount() for an optimized count

See also
visibleVoxelCount()

◆ clear()

void conscience_core::lidar::CscSlam3dProbabilisticVoxelGrid::clear ( )

◆ collectFarNeighborCandidates()

std::vector< CscSlam3dMapVoxelKey > conscience_core::lidar::CscSlam3dProbabilisticVoxelGrid::collectFarNeighborCandidates ( int  minNeighborCount,
int  minHits 
) const

◆ empty()

bool conscience_core::lidar::CscSlam3dProbabilisticVoxelGrid::empty ( ) const

◆ eraseDeadVoxels()

void conscience_core::lidar::CscSlam3dProbabilisticVoxelGrid::eraseDeadVoxels ( )

◆ getVisibleThreshold()

float conscience_core::lidar::CscSlam3dProbabilisticVoxelGrid::getVisibleThreshold ( ) const
Returns
beneath this threshold, a voxel of the grid would be considered as not visible (because improbable / confidence too low)

◆ getVoxelSizeMeters()

float conscience_core::lidar::CscSlam3dProbabilisticVoxelGrid::getVoxelSizeMeters ( ) const

◆ getVoxelsUnsafe()

const CscSlam3dProbabilisticVoxelGrid::VoxelMap & conscience_core::lidar::CscSlam3dProbabilisticVoxelGrid::getVoxelsUnsafe ( ) const

◆ integrateRayMrpt()

std::vector< CscSlam3dMapVoxelDiff > conscience_core::lidar::CscSlam3dProbabilisticVoxelGrid::integrateRayMrpt ( double  originX,
double  originY,
double  originZ,
double  hitX,
double  hitY,
double  hitZ,
uint64_t  frameIndex,
std::unordered_set< CscSlam3dMapVoxelKey, CscSlam3dMapVoxelKeyHash > &  frameHitVoxels,
std::unordered_set< CscSlam3dMapVoxelKey, CscSlam3dMapVoxelKeyHash > &  frameMissVoxels 
)

Integrates ray, and records as missed every voxel crossing ray until hit, and registers hit on target voxel

◆ mrptPointToVoxel()

CscSlam3dMapVoxelKey conscience_core::lidar::CscSlam3dProbabilisticVoxelGrid::mrptPointToVoxel ( double  x,
double  y,
double  z 
) const

◆ purgeFarNeighborCandidates()

std::vector< CscSlam3dMapVoxelKey > conscience_core::lidar::CscSlam3dProbabilisticVoxelGrid::purgeFarNeighborCandidates ( const std::vector< CscSlam3dMapVoxelKey > &  candidates,
int  minNeighborCount,
int  minHits 
)

◆ size()

size_t conscience_core::lidar::CscSlam3dProbabilisticVoxelGrid::size ( ) const

◆ touchVoxel()

CscSlam3dProbabilisticVoxel & conscience_core::lidar::CscSlam3dProbabilisticVoxelGrid::touchVoxel ( const CscSlam3dMapVoxelKey key,
uint64_t  frameIndex 
)

◆ visibleVoxelCount()

size_t conscience_core::lidar::CscSlam3dProbabilisticVoxelGrid::visibleVoxelCount ( ) const

The documentation for this class was generated from the following files: