Conscience Core
Classes | Public Member Functions | Static Public Attributes | List of all members
conscience_core::lidar::CscSlamEngine Class Reference

#include <CscSlamEngine.h>

Classes

struct  MapToImageParams
 
struct  PhantomCluster
 
struct  PhantomClusterTracked
 
struct  Slam3dParams
 

Public Member Functions

 CscSlamEngine (const string &entitySerialNumber, bool isSimulatedEntity, CscEntityPositionManager *positionManager, CscLidarEngine *lidarEngine)
 
 ~CscSlamEngine ()
 
void stop ()
 
void start (CscPoint3dOriented *initialPosition=nullptr)
 
const CscPoint3dgetEntityStartPosition () const
 
const CscQuaterniongetEntityStartOrientation () const
 
fs::path saveCartography ()
 
bool loadCartography (const fs::path &cartographyDir)
 
bool loadLatestCartography ()
 
bool hasLoadedCartography ()
 
bool isStarted () const
 
bool isStartedAndReady () const
 
void consumeLidarValues ()
 
void forceLocalisationPosition (double xInMeters, double zInMeters, double headingInRad)
 
void saveMrpt2dMapToPng (const string &filename, const MapToImageParams &params)
 
CscPoint3dtransformToWorld3dPosition (const TPoint2D &pointSlam2d) const
 
vector< CscPoint3d * > getMapAsWorldPoints (double threshold=defaultCellOccupiedThreshold) const
 
constexpr CscSlamCellOccupancyStatus getCellStatus (float cellValue, double occupiedThreshold=defaultCellOccupiedThreshold)
 
void clearCartography ()
 
mrpt::math::TPose2D getEntityPose2dMrpt () const
 
CscPoint3dOrientedgetEntityPose3d () const
 
ptr< CObservation2DRangeScan > getLidarScan () const
 
ptr< COccupancyGridMap2D > getSLAMMap () const
 
bool is3dSlamInitialized () const
 
uint64_t add3dMapVoxelChangesListener (function< void(const CscSlam3dMapVoxelChanges &changes)> callback, CscSlam3dMapVoxelChanges *changes=nullptr)
 
void remove3dMapVoxelChangesListener (uint64_t listenerId)
 
vector< CscSlam3dMapVoxelKeyget3dMapVoxelsCopy () const
 

Static Public Attributes

static constexpr double defaultCellOccupiedThreshold = 0.14
 

Constructor & Destructor Documentation

◆ CscSlamEngine()

conscience_core::lidar::CscSlamEngine::CscSlamEngine ( const string &  entitySerialNumber,
bool  isSimulatedEntity,
CscEntityPositionManager positionManager,
CscLidarEngine lidarEngine 
)

◆ ~CscSlamEngine()

conscience_core::lidar::CscSlamEngine::~CscSlamEngine ( )

Member Function Documentation

◆ add3dMapVoxelChangesListener()

uint64_t conscience_core::lidar::CscSlamEngine::add3dMapVoxelChangesListener ( function< void(const CscSlam3dMapVoxelChanges &changes)>  callback,
CscSlam3dMapVoxelChanges changes = nullptr 
)

Adds a listener to be notified on SLAM map changes.

Parameters
changesoutput parameter - will be set to first (hence full) rebuild changes, if not null. Otherwise ignored. It is the start point for future diffs
Returns
listener id which can be latter used to remove listener

◆ clearCartography()

void conscience_core::lidar::CscSlamEngine::clearCartography ( )

◆ consumeLidarValues()

void conscience_core::lidar::CscSlamEngine::consumeLidarValues ( )

◆ forceLocalisationPosition()

void conscience_core::lidar::CscSlamEngine::forceLocalisationPosition ( double  xInMeters,
double  zInMeters,
double  headingInRad 
)

◆ get3dMapVoxelsCopy()

vector< CscSlam3dMapVoxelKey > conscience_core::lidar::CscSlamEngine::get3dMapVoxelsCopy ( ) const
Returns
return voxels of current SLAM 3D map. Grid precision is CscSlam3dMapVoxelGrid::voxelSizeMeters
See also
CscSlam3dMapVoxelKey
CscSlam3dMapVoxelGrid::voxelSizeMeters

◆ getCellStatus()

constexpr CscSlamCellOccupancyStatus conscience_core::lidar::CscSlamEngine::getCellStatus ( float  cellValue,
double  occupiedThreshold = defaultCellOccupiedThreshold 
)
inlineconstexpr

◆ getEntityPose2dMrpt()

TPose2D conscience_core::lidar::CscSlamEngine::getEntityPose2dMrpt ( ) const

returns internal mrpt pose - DO NOT USE except for string optimization purpose

See also
CscSlamEngine::getEntityPose3d()

◆ getEntityPose3d()

CscPoint3dOriented * conscience_core::lidar::CscSlamEngine::getEntityPose3d ( ) const

Return 3D pose, in Conscience world ref frame

Returns
entity pose in 3D, WARNING : only yaw (Y axis) is filled in rotation fields in 2D

◆ getEntityStartOrientation()

const CscQuaternion & conscience_core::lidar::CscSlamEngine::getEntityStartOrientation ( ) const

Orientation when cartography started. It means this that this should be invert applied to the cartography points to convert to world positions.

Warning
this rotation already removes "base" rotation on all entities, so this rotation is compared to "still / looking forward" entity. Please see extractNavigationQuaternionFromEntityQuaternion
See also
extractNavigationQuaternionFromEntityQuaternion(..)
Returns
entity orientation when SLAM cartography started

◆ getEntityStartPosition()

const CscPoint3d & conscience_core::lidar::CscSlamEngine::getEntityStartPosition ( ) const

Position when cartography started. It means this is the offset for the cartography points to convert to world positions.

Returns
entity position when SLAM cartography started

◆ getLidarScan()

ptr< CObservation2DRangeScan > conscience_core::lidar::CscSlamEngine::getLidarScan ( ) const

returns internal mrpt last lidar scan - DO NOT USE except for string optimization purpose

◆ getMapAsWorldPoints()

vector< CscPoint3d * > conscience_core::lidar::CscSlamEngine::getMapAsWorldPoints ( double  threshold = defaultCellOccupiedThreshold) const

◆ getSLAMMap()

ptr< COccupancyGridMap2D > conscience_core::lidar::CscSlamEngine::getSLAMMap ( ) const

returns internal mrpt map - DO NOT USE except for string optimization purpose

See also
CscSlamEngine::getMapAsWorldPoints()

◆ hasLoadedCartography()

bool conscience_core::lidar::CscSlamEngine::hasLoadedCartography ( )

◆ is3dSlamInitialized()

bool conscience_core::lidar::CscSlamEngine::is3dSlamInitialized ( ) const

◆ isStarted()

bool conscience_core::lidar::CscSlamEngine::isStarted ( ) const

◆ isStartedAndReady()

bool conscience_core::lidar::CscSlamEngine::isStartedAndReady ( ) const

◆ loadCartography()

bool conscience_core::lidar::CscSlamEngine::loadCartography ( const fs::path &  cartographyDir)

◆ loadLatestCartography()

bool conscience_core::lidar::CscSlamEngine::loadLatestCartography ( )

◆ remove3dMapVoxelChangesListener()

void conscience_core::lidar::CscSlamEngine::remove3dMapVoxelChangesListener ( uint64_t  listenerId)

◆ saveCartography()

fs::path conscience_core::lidar::CscSlamEngine::saveCartography ( )

saves SLAM cartography in a dedicated and optimized format to a new subdirectory of CARTOGRAPHY_STORAGE_DIRECTORY

Returns
the path to the directory containing the cartography

◆ saveMrpt2dMapToPng()

void conscience_core::lidar::CscSlamEngine::saveMrpt2dMapToPng ( const string &  filename,
const MapToImageParams params 
)

◆ start()

void conscience_core::lidar::CscSlamEngine::start ( CscPoint3dOriented initialPosition = nullptr)

◆ stop()

void conscience_core::lidar::CscSlamEngine::stop ( )

◆ transformToWorld3dPosition()

CscPoint3d * conscience_core::lidar::CscSlamEngine::transformToWorld3dPosition ( const TPoint2D &  pointSlam2d) const

Member Data Documentation

◆ defaultCellOccupiedThreshold

constexpr double conscience_core::lidar::CscSlamEngine::defaultCellOccupiedThreshold = 0.14
staticconstexpr

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