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

#include <CscRealEntity3dLidarValues.h>

Classes

struct  QueuedRangeImage
 

Public Member Functions

 CscRealEntity3dLidarValues (const vector< float > &verticalAnglesRad)
 
const vector< float > & getVerticalAnglesRad () const
 
void clear ()
 
void integrateFrame (uint16_t rows, uint16_t cols, uint32_t frameId, bool isKeyFrame, const uint8_t *data, size_t count, const LidarImuData &imu, LidarExtrinsics lidarExtrinsics)
 Integrates a LiDAR frame (keyframe or diff) into the current range image. More...
 
map< double, double > get2DSliceAtHeight (double targetY=15, double tolerance=20) const
 
bool getLatest (QueuedRangeImage &out)
 

Static Public Member Functions

static vector< float > loadVerticalAnglesRadFromCsvFile (const string &filePath, const string &elevationHeaderName="elevation")
 Load vertical beam angles (in radians) from a CSV calibration file. More...
 

Constructor & Destructor Documentation

◆ CscRealEntity3dLidarValues()

conscience_core::lidar::CscRealEntity3dLidarValues::CscRealEntity3dLidarValues ( const vector< float > &  verticalAnglesRad)
explicit

Member Function Documentation

◆ clear()

void conscience_core::lidar::CscRealEntity3dLidarValues::clear ( )

◆ get2DSliceAtHeight()

map< double, double > conscience_core::lidar::CscRealEntity3dLidarValues::get2DSliceAtHeight ( double  targetY = 15,
double  tolerance = 20 
) const

◆ getLatest()

bool conscience_core::lidar::CscRealEntity3dLidarValues::getLatest ( QueuedRangeImage out)

◆ getVerticalAnglesRad()

const vector< float > & conscience_core::lidar::CscRealEntity3dLidarValues::getVerticalAnglesRad ( ) const

◆ integrateFrame()

void conscience_core::lidar::CscRealEntity3dLidarValues::integrateFrame ( uint16_t  rows,
uint16_t  cols,
uint32_t  frameId,
bool  isKeyFrame,
const uint8_t *  data,
size_t  count,
const LidarImuData imu,
LidarExtrinsics  lidarExtrinsics 
)

Integrates a LiDAR frame (keyframe or diff) into the current range image.

Parameters
rowsNumber of vertical rings (e.g. 128)
colsNumber of horizontal bins (e.g. 1800)
frameIdFrame identifier
isKeyFrameTrue = full frame, False = sparse diff update
dataPointer to encoded binary payload
countNumber of encoded pixels
imuAssociated IMU data

Payload format (per item): Keyframe: [3B rc][2B range] Diff: [3B rc][2B range][2B dr]

rc packing (24 bits, little-endian): row = bits [0..6], col = bits [7..17]

range_q4mm: uint16 → meters = value * 0.004

Behavior:

  • keyframe → reset + rebuild
  • diff → update only provided pixels

◆ loadVerticalAnglesRadFromCsvFile()

vector< float > conscience_core::lidar::CscRealEntity3dLidarValues::loadVerticalAnglesRadFromCsvFile ( const string &  filePath,
const string &  elevationHeaderName = "elevation" 
)
static

Load vertical beam angles (in radians) from a CSV calibration file.

This function parses a CSV file containing LiDAR calibration data and extracts the elevation (vertical) angle for each channel (ring). The column containing the elevation values is identified dynamically using the provided header name.

Expected CSV format:

  • First line: header row (e.g. "Channel,Elevation,Azimuth")
  • Subsequent lines: one entry per laser channel

Behavior:

  • Finds the column index matching elevationHeaderName (case-insensitive)
  • Reads each row and extracts the elevation value (in degrees)
  • Converts each value to radians
  • Preserves the order of rows (must match ring indices from the sensor)
Parameters
filePathPath to the CSV calibration file
elevationHeaderNameName (case insensitive) of the column containing elevation values (default: "elevation")
Returns
std::vector<float> Vector of elevation angles in radians, indexed by ring
Exceptions
std::runtime_errorif the file cannot be read or the column is not found

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