Conscience Core
Classes | Functions | Variables
conscience_core::lidar::directions Namespace Reference

Classes

struct  CscAvailableDirection
 
struct  VoxelAccum
 

Functions

double estimateFreeDistanceForLidarScan (double directionYawRads, const mrpt::obs::CObservation2DRangeScan &scan, double entityWidthMeters, double entityLengthMeters, double minClusterDistanceMeters, int minClusterSize, double maxDepthMeters)
 
optional< pair< int, double > > getBestDirectionForScan (CObservation2DRangeScan *scan, const vector< CscAvailableDirection > &authorizedDirections, double entityWidth, double entityLength, map< int, double > *computedDirections)
 
void saveScanWithBestDirectionAsPng (const mrpt::obs::CObservation2DRangeScan &scan, double bestYaw, const std::string &bestDirName, const fs::path &filename, double entityWidth, double entityLength)
 
double cmToMeters (double v)
 
int voxelIndex (double v, double voxelSizeMeters)
 
double estimateFreeDistanceFrontMetersForLidarScan3d (const LidarValuesSnapshot &scan, const CscSize3d &entitySizeCm, double voxelSizeMeters, int minVoxelPointCount, double maxDepthMeters, double minObstacleYMeters, double maxObstacleYMeters)
 

Variables

struct CSC_DLL_IMPORTEXPORT CscAvailableDirection
 
static const CscAvailableDirection AVAILABLE_DIRECTION_FORWARD = {0.0, "forward"}
 
static const CscAvailableDirection AVAILABLE_DIRECTION_LEFT = {M_PI_2, "left"}
 
static const CscAvailableDirection AVAILABLE_DIRECTION_RIGHT = {-M_PI_2, "right"}
 
static const CscAvailableDirection AVAILABLE_DIRECTION_BACK = {M_PI, "back"}
 
static const vector< CscAvailableDirectionAVAILABLE_ALL_DIRECTIONS
 

Function Documentation

◆ cmToMeters()

double conscience_core::lidar::directions::cmToMeters ( double  v)

◆ estimateFreeDistanceForLidarScan()

double conscience_core::lidar::directions::estimateFreeDistanceForLidarScan ( double  directionYawRads,
const mrpt::obs::CObservation2DRangeScan &  scan,
double  entityWidthMeters,
double  entityLengthMeters,
double  minClusterDistanceMeters,
int  minClusterSize,
double  maxDepthMeters 
)

◆ estimateFreeDistanceFrontMetersForLidarScan3d()

double conscience_core::lidar::directions::estimateFreeDistanceFrontMetersForLidarScan3d ( const LidarValuesSnapshot scan,
const CscSize3d entitySizeCm,
double  voxelSizeMeters,
int  minVoxelPointCount,
double  maxDepthMeters,
double  minObstacleYMeters,
double  maxObstacleYMeters = std::numeric_limits< double >::infinity() 
)

Returns free distance in front of the robot.

Coordinates:

  • x: front
  • y: up
  • z: right

Corridor:

  • x >= 0
  • abs(z) <= entitySize.z / 2
  • y is filtered with minObstacleY/maxObstacleY

Ground handling:

  • points below minObstacleYMeters are ignored
  • for a robot on flat ground with y=0 near wheel contact level, typical minObstacleYMeters = 0.03 to 0.08

Voxel rule:

  • points are accumulated in 3D voxels
  • a voxel becomes an obstacle when point count >= minVoxelPointCount
  • nearest obstacle voxel gives the free distance

Result:

  • nearestObstacleX - entityLength / 2
  • clamped to [0, maxDepthMeters]

◆ getBestDirectionForScan()

optional< pair< int, double > > conscience_core::lidar::directions::getBestDirectionForScan ( CObservation2DRangeScan *  scan,
const vector< CscAvailableDirection > &  authorizedDirections,
double  entityWidth,
double  entityLength,
map< int, double > *  computedDirections 
)

◆ saveScanWithBestDirectionAsPng()

void conscience_core::lidar::directions::saveScanWithBestDirectionAsPng ( const mrpt::obs::CObservation2DRangeScan &  scan,
double  bestYaw,
const std::string &  bestDirName,
const fs::path &  filename,
double  entityWidth,
double  entityLength 
)

◆ voxelIndex()

int conscience_core::lidar::directions::voxelIndex ( double  v,
double  voxelSizeMeters 
)

Variable Documentation

◆ AVAILABLE_ALL_DIRECTIONS

const vector<CscAvailableDirection> conscience_core::lidar::directions::AVAILABLE_ALL_DIRECTIONS
static

◆ AVAILABLE_DIRECTION_BACK

const CscAvailableDirection conscience_core::lidar::directions::AVAILABLE_DIRECTION_BACK = {M_PI, "back"}
static

◆ AVAILABLE_DIRECTION_FORWARD

const CscAvailableDirection conscience_core::lidar::directions::AVAILABLE_DIRECTION_FORWARD = {0.0, "forward"}
static

◆ AVAILABLE_DIRECTION_LEFT

const CscAvailableDirection conscience_core::lidar::directions::AVAILABLE_DIRECTION_LEFT = {M_PI_2, "left"}
static

◆ AVAILABLE_DIRECTION_RIGHT

const CscAvailableDirection conscience_core::lidar::directions::AVAILABLE_DIRECTION_RIGHT = {-M_PI_2, "right"}
static

◆ CscAvailableDirection

conscience_core::lidar::directions::AVAILABLE_DIRECTION_FORWARD
static const CscAvailableDirection AVAILABLE_DIRECTION_FORWARD
Definition: CscSlamEngine.h:747
conscience_core::lidar::directions::AVAILABLE_DIRECTION_LEFT
static const CscAvailableDirection AVAILABLE_DIRECTION_LEFT
Definition: CscSlamEngine.h:748
conscience_core::lidar::directions::AVAILABLE_DIRECTION_RIGHT
static const CscAvailableDirection AVAILABLE_DIRECTION_RIGHT
Definition: CscSlamEngine.h:749
conscience_core::lidar::directions::AVAILABLE_DIRECTION_BACK
static const CscAvailableDirection AVAILABLE_DIRECTION_BACK
Definition: CscSlamEngine.h:750