RTAB-Map 0.23.10
Real-Time Appearance-Based Mapping
Loading...
Searching...
No Matches
rtabmap::SensorData Class Reference

Container class for all sensor data captured at a specific time. More...

#include <SensorData.h>

Public Member Functions

 SensorData ()
 Default constructor.
 
 SensorData (const cv::Mat &image, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
 Appearance-only constructor.
 
 SensorData (const cv::Mat &image, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
 Mono camera constructor.
 
 SensorData (const cv::Mat &rgb, const cv::Mat &depth, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
 RGB-D constructor.
 
 SensorData (const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depth_confidence, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
 RGB-D constructor with depth confidence.
 
 SensorData (const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
 RGB-D constructor with laser scan.
 
 SensorData (const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depthConfidence, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
 RGB-D constructor with depth confidence and laser scan.
 
 SensorData (const cv::Mat &rgb, const cv::Mat &depth, const std::vector< CameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
 Multi-camera RGB-D constructor.
 
 SensorData (const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depthConfidence, const std::vector< CameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
 Multi-camera RGB-D constructor with depth confidence.
 
 SensorData (const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const std::vector< CameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
 Multi-camera RGB-D constructor with laser scan.
 
 SensorData (const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depthConfidence, const std::vector< CameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
 Multi-camera RGB-D constructor with depth confidence and laser scan.
 
 SensorData (const cv::Mat &left, const cv::Mat &right, const StereoCameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
 Stereo camera constructor.
 
 SensorData (const LaserScan &laserScan, const cv::Mat &left, const cv::Mat &right, const StereoCameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
 Stereo camera constructor with laser scan.
 
 SensorData (const cv::Mat &rgb, const cv::Mat &depth, const std::vector< StereoCameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
 Multi-camera stereo constructor.
 
 SensorData (const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const std::vector< StereoCameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
 Multi-camera stereo constructor with laser scan.
 
 SensorData (const IMU &imu, int id=0, double stamp=0.0)
 IMU-only constructor.
 
virtual ~SensorData ()
 Virtual destructor.
 
bool isValid () const
 Checks if the sensor data is valid.
 
int id () const
 Returns the sensor data ID.
 
void setId (int id)
 Sets the sensor data ID.
 
double stamp () const
 Returns the timestamp.
 
void setStamp (double stamp)
 Sets the timestamp.
 
const cv::Mat & imageCompressed () const
 Returns the compressed RGB/grayscale image.
 
const cv::Mat & depthOrRightCompressed () const
 Returns the compressed depth or right stereo image.
 
const cv::Mat & depthConfidenceCompressed () const
 Returns the compressed depth confidence map.
 
const LaserScanlaserScanCompressed () const
 Returns the compressed laser scan.
 
const cv::Mat & imageRaw () const
 Returns the raw RGB/grayscale image.
 
const cv::Mat & depthOrRightRaw () const
 Returns the raw depth or right stereo image.
 
const cv::Mat & depthConfidenceRaw () const
 Returns the raw depth confidence map.
 
const LaserScanlaserScanRaw () const
 Returns the raw laser scan.
 
void setRGBDImage (const cv::Mat &rgb, const cv::Mat &depth, const CameraModel &model, bool clearPreviousData=true)
 
void setRGBDImage (const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depth_confidence, const CameraModel &model, bool clearPreviousData=true)
 
void setRGBDImage (const cv::Mat &rgb, const cv::Mat &depth, const std::vector< CameraModel > &models, bool clearPreviousData=true)
 
void setRGBDImage (const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depth_confidence, const std::vector< CameraModel > &models, bool clearPreviousData=true)
 
void setStereoImage (const cv::Mat &left, const cv::Mat &right, const StereoCameraModel &stereoCameraModel, bool clearPreviousData=true)
 
void setStereoImage (const cv::Mat &left, const cv::Mat &right, const std::vector< StereoCameraModel > &stereoCameraModels, bool clearPreviousData=true)
 
void setLaserScan (const LaserScan &laserScan, bool clearPreviousData=true)
 
void setCameraModel (const CameraModel &model)
 Sets a single camera model (clears previous models)
 
void setCameraModels (const std::vector< CameraModel > &models)
 Sets multiple camera models.
 
void setStereoCameraModel (const StereoCameraModel &stereoCameraModel)
 Sets a single stereo camera model (clears previous models)
 
void setStereoCameraModels (const std::vector< StereoCameraModel > &stereoCameraModels)
 Sets multiple stereo camera models.
 
cv::Mat depthRaw () const
 Returns the depth image (convenience method)
 
cv::Mat rightRaw () const
 Returns the right stereo image (convenience method)
 
RTABMAP_DEPRECATED void setImageRaw (const cv::Mat &image)
 
RTABMAP_DEPRECATED void setDepthOrRightRaw (const cv::Mat &image)
 
RTABMAP_DEPRECATED void setLaserScanRaw (const LaserScan &scan)
 
RTABMAP_DEPRECATED void setUserDataRaw (const cv::Mat &data)
 
void uncompressData ()
 Uncompresses all compressed data in-place.
 
void uncompressData (cv::Mat *imageRaw, cv::Mat *depthOrRightRaw, LaserScan *laserScanRaw=0, cv::Mat *userDataRaw=0, cv::Mat *groundCellsRaw=0, cv::Mat *obstacleCellsRaw=0, cv::Mat *emptyCellsRaw=0, cv::Mat *depthConfidenceRaw=0)
 Uncompresses compressed data into provided output buffers.
 
void uncompressDataConst (cv::Mat *imageRaw, cv::Mat *depthOrRightRaw, LaserScan *laserScanRaw=0, cv::Mat *userDataRaw=0, cv::Mat *groundCellsRaw=0, cv::Mat *obstacleCellsRaw=0, cv::Mat *emptyCellsRaw=0, cv::Mat *depthConfidenceRaw=0) const
 Uncompresses compressed data into provided output buffers (const version)
 
const std::vector< CameraModel > & cameraModels () const
 Returns the camera models.
 
const std::vector< StereoCameraModel > & stereoCameraModels () const
 Returns the stereo camera models.
 
void setUserData (const cv::Mat &userData, bool clearPreviousData=true)
 
const cv::Mat & userDataRaw () const
 
const cv::Mat & userDataCompressed () const
 
void setOccupancyGrid (const cv::Mat &ground, const cv::Mat &obstacles, const cv::Mat &empty, float cellSize, const cv::Point3f &viewPoint)
 Sets occupancy grid data.
 
const cv::Mat & gridGroundCellsRaw () const
 Returns raw ground cells.
 
const cv::Mat & gridGroundCellsCompressed () const
 Returns compressed ground cells.
 
const cv::Mat & gridObstacleCellsRaw () const
 Returns raw obstacle cells.
 
const cv::Mat & gridObstacleCellsCompressed () const
 Returns compressed obstacle cells.
 
const cv::Mat & gridEmptyCellsRaw () const
 Returns raw empty cells.
 
const cv::Mat & gridEmptyCellsCompressed () const
 Returns compressed empty cells.
 
float gridCellSize () const
 Returns the occupancy grid cell size.
 
const cv::Point3f & gridViewPoint () const
 Returns the occupancy grid viewpoint.
 
void setFeatures (const std::vector< cv::KeyPoint > &keypoints, const std::vector< cv::Point3f > &keypoints3D, const cv::Mat &descriptors)
 Sets visual features (keypoints, 3D points, descriptors)
 
const std::vector< cv::KeyPoint > & keypoints () const
 Returns the 2D keypoints.
 
const std::vector< cv::Point3f > & keypoints3D () const
 Returns the 3D keypoints.
 
const cv::Mat & descriptors () const
 Returns the feature descriptors.
 
void addGlobalDescriptor (const GlobalDescriptor &descriptor)
 Adds a global descriptor.
 
void setGlobalDescriptors (const std::vector< GlobalDescriptor > &descriptors)
 Sets all global descriptors.
 
void clearGlobalDescriptors ()
 Clears all global descriptors.
 
const std::vector< GlobalDescriptor > & globalDescriptors () const
 Returns all global descriptors.
 
void setGroundTruth (const Transform &pose)
 Sets the ground truth pose.
 
const TransformgroundTruth () const
 Returns the ground truth pose.
 
void setGlobalPose (const Transform &pose, const cv::Mat &covariance)
 Sets the global pose with covariance.
 
const TransformglobalPose () const
 Returns the global pose.
 
const cv::Mat & globalPoseCovariance () const
 Returns the global pose covariance.
 
void setGPS (const GPS &gps)
 Sets GPS data.
 
const GPSgps () const
 Returns GPS data.
 
void setIMU (const IMU &imu)
 Sets IMU data.
 
const IMUimu () const
 Returns IMU data.
 
void setEnvSensors (const EnvSensors &sensors)
 Sets all environmental sensors.
 
void addEnvSensor (const EnvSensor &sensor)
 Adds a single environmental sensor.
 
const EnvSensorsenvSensors () const
 Returns all environmental sensors.
 
void setLandmarks (const Landmarks &landmarks)
 Sets landmarks.
 
const Landmarkslandmarks () const
 Returns landmarks.
 
unsigned long getMemoryUsed () const
 Computes the memory usage of this sensor data.
 
void clearCompressedData (bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true)
 
void clearRawData (bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true)
 
int isPointVisibleFromCameras (const cv::Point3f &pt) const
 Checks if a 3D point is visible from any camera.
 

Detailed Description

Container class for all sensor data captured at a specific time.

SensorData is a comprehensive container class that holds all types of sensor data captured at a specific timestamp, including:

  • Visual data: RGB images, depth images, stereo image pairs (left/right)
  • 3D data: Laser scans, 3D point clouds
  • Camera models: Mono camera models, stereo camera models (single or multiple)
  • Features: Keypoints, 3D keypoints, descriptors
  • Global descriptors: Scene-level descriptors for place recognition
  • Sensor fusion: IMU data, GPS data, environmental sensors
  • Metadata: Ground truth poses, global poses with covariance, landmarks
  • User data: Custom data matrices
  • Occupancy grids: Ground, obstacle, and empty cells

The class supports both raw and compressed data formats:

  • Raw data: Uncompressed images, depth maps, laser scans
  • Compressed data: JPEG-compressed images, compressed depth, compressed scans

Data compression is automatically detected when setting data:

  • A matrix of type CV_8UC1 with 1 row is considered compressed
  • Use uncompressData() to decompress compressed data

The class supports multiple sensor configurations:

  • Appearance-only: Single RGB image
  • Mono: RGB image with camera model
  • RGB-D: RGB + depth with camera model(s)
  • Stereo: Left + right images with stereo camera model(s)
  • IMU-only: IMU data without images
  • Multi-camera: Multiple camera models (RGB-D or stereo)
  • Combined: Any combination with laser scans, IMU, GPS, etc.
Note
If id=0 is provided to constructors, an ID is automatically generated.
The class manages memory efficiently by storing either raw or compressed data (or both), allowing for memory optimization in large datasets.
See also
CameraModel
StereoCameraModel
LaserScan
IMU
GPS
SensorEvent

Definition at line 96 of file SensorData.h.

Constructor & Destructor Documentation

◆ SensorData() [1/16]

rtabmap::SensorData::SensorData ( )

Default constructor.

Creates an empty SensorData object with all fields initialized to default values. The ID will be 0 (invalid), and no sensor data will be present.

◆ SensorData() [2/16]

rtabmap::SensorData::SensorData ( const cv::Mat &  image,
int  id = 0,
double  stamp = 0.0,
const cv::Mat &  userData = cv::Mat() 
)

Appearance-only constructor.

Creates a SensorData object with a single RGB or grayscale image. No camera model is provided, so this is suitable for appearance-based place recognition without 3D reconstruction.

Parameters
imageRGB or grayscale image (CV_8UC1 or CV_8UC3)
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
userDataOptional user-defined data matrix

◆ SensorData() [3/16]

rtabmap::SensorData::SensorData ( const cv::Mat &  image,
const CameraModel cameraModel,
int  id = 0,
double  stamp = 0.0,
const cv::Mat &  userData = cv::Mat() 
)

Mono camera constructor.

Creates a SensorData object with a single RGB or grayscale image and a mono camera model for 3D projection.

Parameters
imageRGB or grayscale image (CV_8UC1 or CV_8UC3)
cameraModelCamera model for the image
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
userDataOptional user-defined data matrix

◆ SensorData() [4/16]

rtabmap::SensorData::SensorData ( const cv::Mat &  rgb,
const cv::Mat &  depth,
const CameraModel cameraModel,
int  id = 0,
double  stamp = 0.0,
const cv::Mat &  userData = cv::Mat() 
)

RGB-D constructor.

Creates a SensorData object with RGB and depth images and a camera model.

Parameters
rgbRGB or grayscale image (CV_8UC1 or CV_8UC3)
depthDepth image (CV_16UC1 for millimeters or CV_32FC1 for meters)
cameraModelCamera model for RGB-D projection
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
userDataOptional user-defined data matrix

◆ SensorData() [5/16]

rtabmap::SensorData::SensorData ( const cv::Mat &  rgb,
const cv::Mat &  depth,
const cv::Mat &  depth_confidence,
const CameraModel cameraModel,
int  id = 0,
double  stamp = 0.0,
const cv::Mat &  userData = cv::Mat() 
)

RGB-D constructor with depth confidence.

Creates a SensorData object with RGB, depth, and depth confidence images.

Parameters
rgbRGB or grayscale image (CV_8UC1 or CV_8UC3)
depthDepth image (CV_16UC1 for millimeters or CV_32FC1 for meters)
depth_confidenceDepth confidence map (CV_8UC1, typically 0-100)
cameraModelCamera model for RGB-D projection
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
userDataOptional user-defined data matrix

◆ SensorData() [6/16]

rtabmap::SensorData::SensorData ( const LaserScan laserScan,
const cv::Mat &  rgb,
const cv::Mat &  depth,
const CameraModel cameraModel,
int  id = 0,
double  stamp = 0.0,
const cv::Mat &  userData = cv::Mat() 
)

RGB-D constructor with laser scan.

Creates a SensorData object with RGB, depth, camera model, and laser scan.

Parameters
laserScan2D or 3D laser scan
rgbRGB or grayscale image (CV_8UC1 or CV_8UC3)
depthDepth image (CV_16UC1 for millimeters or CV_32FC1 for meters)
cameraModelCamera model for RGB-D projection
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
userDataOptional user-defined data matrix

◆ SensorData() [7/16]

rtabmap::SensorData::SensorData ( const LaserScan laserScan,
const cv::Mat &  rgb,
const cv::Mat &  depth,
const cv::Mat &  depthConfidence,
const CameraModel cameraModel,
int  id = 0,
double  stamp = 0.0,
const cv::Mat &  userData = cv::Mat() 
)

RGB-D constructor with depth confidence and laser scan.

Creates a SensorData object with RGB, depth, depth confidence, camera model, and laser scan.

Parameters
laserScan2D or 3D laser scan
rgbRGB or grayscale image (CV_8UC1 or CV_8UC3)
depthDepth image (CV_16UC1 for millimeters or CV_32FC1 for meters)
depthConfidenceDepth confidence map (CV_8UC1)
cameraModelCamera model for RGB-D projection
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
userDataOptional user-defined data matrix

◆ SensorData() [8/16]

rtabmap::SensorData::SensorData ( const cv::Mat &  rgb,
const cv::Mat &  depth,
const std::vector< CameraModel > &  cameraModels,
int  id = 0,
double  stamp = 0.0,
const cv::Mat &  userData = cv::Mat() 
)

Multi-camera RGB-D constructor.

Creates a SensorData object with RGB, depth, and multiple camera models. rgb and depth images should contain stitched images from multiple cameras. All stitched images should have the same resolution.

Parameters
rgbRGB or grayscale image (CV_8UC1 or CV_8UC3)
depthDepth image (CV_16UC1 for millimeters or CV_32FC1 for meters)
cameraModelsVector of camera models
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
userDataOptional user-defined data matrix
Example: Stitching two camera images horizontally
#include <rtabmap/core/Camera.h>
#include <opencv2/imgproc/imgproc.hpp>
// Assume camera1 and camera2 are Camera* instances
Camera* camera1 = ...; // First camera
Camera* camera2 = ...; // Second camera
// Capture SensorData from both cameras
SensorData data1 = camera1->takeImage();
SensorData data2 = camera2->takeImage();
// Extract images and depth
cv::Mat image1 = data1.imageRaw(); // 640x480
cv::Mat depth1 = data1.depthOrRightRaw(); // 640x480
cv::Mat image2 = data2.imageRaw(); // 640x480
cv::Mat depth2 = data2.depthOrRightRaw(); // 640x480
// Stitch images horizontally
cv::Mat stitchedRgb;
cv::hconcat(image1, image2, stitchedRgb); // Result: 1280x480
cv::Mat stitchedDepth;
cv::hconcat(depth1, depth2, stitchedDepth); // Result: 1280x480
// Get camera models from both SensorData objects
std::vector<CameraModel> models = data1.cameraModels();
std::vector<CameraModel> models2 = data2.cameraModels();
models.insert(models.end(), models2.begin(), models2.end());
// Create SensorData with stitched images
SensorData stitchedData(stitchedRgb, stitchedDepth, models, 0, data1.stamp());
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
const cv::Mat & depthOrRightRaw() const
Returns the raw depth or right stereo image.
Definition SensorData.h:573
double stamp() const
Returns the timestamp.
Definition SensorData.h:527
const std::vector< CameraModel > & cameraModels() const
Returns the camera models.
Definition SensorData.h:724
const cv::Mat & imageRaw() const
Returns the raw RGB/grayscale image.
Definition SensorData.h:566

◆ SensorData() [9/16]

rtabmap::SensorData::SensorData ( const cv::Mat &  rgb,
const cv::Mat &  depth,
const cv::Mat &  depthConfidence,
const std::vector< CameraModel > &  cameraModels,
int  id = 0,
double  stamp = 0.0,
const cv::Mat &  userData = cv::Mat() 
)

Multi-camera RGB-D constructor with depth confidence.

Creates a SensorData object with RGB, depth, depth confidence, and multiple camera models.

Parameters
rgbRGB or grayscale image (CV_8UC1 or CV_8UC3)
depthDepth image (CV_16UC1 for millimeters or CV_32FC1 for meters)
depthConfidenceDepth confidence map (CV_8UC1)
cameraModelsVector of camera models
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
userDataOptional user-defined data matrix
See also
SensorData(const cv::Mat&, const cv::Mat&, const std::vector<CameraModel>&, int, double, const cv::Mat&) for an example of stitching images from multiple cameras.

◆ SensorData() [10/16]

rtabmap::SensorData::SensorData ( const LaserScan laserScan,
const cv::Mat &  rgb,
const cv::Mat &  depth,
const std::vector< CameraModel > &  cameraModels,
int  id = 0,
double  stamp = 0.0,
const cv::Mat &  userData = cv::Mat() 
)

Multi-camera RGB-D constructor with laser scan.

Creates a SensorData object with RGB, depth, multiple camera models, and laser scan.

Parameters
laserScan2D or 3D laser scan
rgbRGB or grayscale image (CV_8UC1 or CV_8UC3)
depthDepth image (CV_16UC1 for millimeters or CV_32FC1 for meters)
cameraModelsVector of camera models
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
userDataOptional user-defined data matrix
See also
SensorData(const cv::Mat&, const cv::Mat&, const std::vector<CameraModel>&, int, double, const cv::Mat&) for an example of stitching images from multiple cameras.

◆ SensorData() [11/16]

rtabmap::SensorData::SensorData ( const LaserScan laserScan,
const cv::Mat &  rgb,
const cv::Mat &  depth,
const cv::Mat &  depthConfidence,
const std::vector< CameraModel > &  cameraModels,
int  id = 0,
double  stamp = 0.0,
const cv::Mat &  userData = cv::Mat() 
)

Multi-camera RGB-D constructor with depth confidence and laser scan.

Creates a SensorData object with RGB, depth, depth confidence, multiple camera models, and laser scan.

Parameters
laserScan2D or 3D laser scan
rgbRGB or grayscale image (CV_8UC1 or CV_8UC3)
depthDepth image (CV_16UC1 for millimeters or CV_32FC1 for meters)
depthConfidenceDepth confidence map (CV_8UC1)
cameraModelsVector of camera models
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
userDataOptional user-defined data matrix
See also
SensorData(const cv::Mat&, const cv::Mat&, const std::vector<CameraModel>&, int, double, const cv::Mat&) for an example of stitching images from multiple cameras.

◆ SensorData() [12/16]

rtabmap::SensorData::SensorData ( const cv::Mat &  left,
const cv::Mat &  right,
const StereoCameraModel cameraModel,
int  id = 0,
double  stamp = 0.0,
const cv::Mat &  userData = cv::Mat() 
)

Stereo camera constructor.

Creates a SensorData object with left and right stereo images and a stereo camera model.

Parameters
leftLeft stereo image (CV_8UC1 or CV_8UC3)
rightRight stereo image (CV_8UC1 or CV_8UC3)
cameraModelStereo camera model for disparity computation
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
userDataOptional user-defined data matrix

◆ SensorData() [13/16]

rtabmap::SensorData::SensorData ( const LaserScan laserScan,
const cv::Mat &  left,
const cv::Mat &  right,
const StereoCameraModel cameraModel,
int  id = 0,
double  stamp = 0.0,
const cv::Mat &  userData = cv::Mat() 
)

Stereo camera constructor with laser scan.

Creates a SensorData object with left and right stereo images, stereo camera model, and laser scan.

Parameters
laserScan2D or 3D laser scan
leftLeft stereo image (CV_8UC1 or CV_8UC3)
rightRight stereo image (CV_8UC1 or CV_8UC3)
cameraModelStereo camera model for disparity computation
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
userDataOptional user-defined data matrix

◆ SensorData() [14/16]

rtabmap::SensorData::SensorData ( const cv::Mat &  rgb,
const cv::Mat &  depth,
const std::vector< StereoCameraModel > &  cameraModels,
int  id = 0,
double  stamp = 0.0,
const cv::Mat &  userData = cv::Mat() 
)

Multi-camera stereo constructor.

Creates a SensorData object with left and right stereo images and multiple stereo camera models.

Parameters
rgbLeft stereo image (CV_8UC1 or CV_8UC3)
depthRight stereo image (CV_8UC1 or CV_8UC3)
cameraModelsVector of stereo camera models
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
userDataOptional user-defined data matrix
See also
SensorData(const cv::Mat&, const cv::Mat&, const std::vector<CameraModel>&, int, double, const cv::Mat&) for an example of stitching images from multiple cameras.

◆ SensorData() [15/16]

rtabmap::SensorData::SensorData ( const LaserScan laserScan,
const cv::Mat &  rgb,
const cv::Mat &  depth,
const std::vector< StereoCameraModel > &  cameraModels,
int  id = 0,
double  stamp = 0.0,
const cv::Mat &  userData = cv::Mat() 
)

Multi-camera stereo constructor with laser scan.

Creates a SensorData object with left and right stereo images, multiple stereo camera models, and laser scan.

Parameters
laserScan2D or 3D laser scan
rgbLeft stereo image (CV_8UC1 or CV_8UC3)
depthRight stereo image (CV_8UC1 or CV_8UC3)
cameraModelsVector of stereo camera models
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
userDataOptional user-defined data matrix

◆ SensorData() [16/16]

rtabmap::SensorData::SensorData ( const IMU imu,
int  id = 0,
double  stamp = 0.0 
)

IMU-only constructor.

Creates a SensorData object with only IMU data (no images). Useful for IMU-only odometry or sensor fusion scenarios.

Parameters
imuIMU data (accelerometer, gyroscope, orientation)
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds

Member Function Documentation

◆ isValid()

bool rtabmap::SensorData::isValid ( ) const
inline

Checks if the sensor data is valid.

Returns true if the sensor data contains at least one of:

  • Valid ID (> 0) or non-zero stamp
  • Images (raw or compressed)
  • Depth/right images (raw or compressed)
  • Depth confidence (raw or compressed)
  • Laser scan (raw or compressed)
  • Camera models (mono or stereo)
  • User data (raw or compressed)
  • Keypoints and descriptors
  • IMU data
Returns
True if the sensor data contains any valid information, false otherwise

Definition at line 485 of file SensorData.h.

◆ id()

int rtabmap::SensorData::id ( ) const
inline

Returns the sensor data ID.

Returns
The unique sensor data ID (0 if invalid/uninitialized)

Definition at line 515 of file SensorData.h.

◆ setId()

void rtabmap::SensorData::setId ( int  id)
inline

Sets the sensor data ID.

Parameters
idThe unique sensor data ID

Definition at line 521 of file SensorData.h.

◆ stamp()

double rtabmap::SensorData::stamp ( ) const
inline

Returns the timestamp.

Returns
Timestamp in seconds (typically seconds since epoch)

Definition at line 527 of file SensorData.h.

◆ setStamp()

void rtabmap::SensorData::setStamp ( double  stamp)
inline

Sets the timestamp.

Parameters
stampTimestamp in seconds

Definition at line 533 of file SensorData.h.

◆ imageCompressed()

const cv::Mat & rtabmap::SensorData::imageCompressed ( ) const
inline

Returns the compressed RGB/grayscale image.

Returns
Compressed image (CV_8UC1 with 1 row, JPEG/PNG-compressed bytes)
Note
Use Compression::uncompressImage() to uncompress the image.

Definition at line 540 of file SensorData.h.

◆ depthOrRightCompressed()

const cv::Mat & rtabmap::SensorData::depthOrRightCompressed ( ) const
inline

Returns the compressed depth or right stereo image.

Returns
Compressed depth/right image (CV_8UC1 with 1 row, compressed bytes)
Note
Use Compression::uncompressImage() to uncompress the image.

Definition at line 547 of file SensorData.h.

◆ depthConfidenceCompressed()

const cv::Mat & rtabmap::SensorData::depthConfidenceCompressed ( ) const
inline

Returns the compressed depth confidence map.

Returns
Compressed depth confidence (CV_8UC1 with 1 row, compressed bytes)
Note
Use Compression::uncompressData() to uncompress the data.

Definition at line 554 of file SensorData.h.

◆ laserScanCompressed()

const LaserScan & rtabmap::SensorData::laserScanCompressed ( ) const
inline

Returns the compressed laser scan.

Returns
Compressed laser scan

Definition at line 560 of file SensorData.h.

◆ imageRaw()

const cv::Mat & rtabmap::SensorData::imageRaw ( ) const
inline

Returns the raw RGB/grayscale image.

Returns
Raw image (CV_8UC1 for grayscale or CV_8UC3 for RGB)

Definition at line 566 of file SensorData.h.

◆ depthOrRightRaw()

const cv::Mat & rtabmap::SensorData::depthOrRightRaw ( ) const
inline

Returns the raw depth or right stereo image.

Returns
Raw depth (CV_16UC1 for millimeters or CV_32FC1 for meters) or right stereo image (CV_8UC1 or CV_8UC3)

Definition at line 573 of file SensorData.h.

◆ depthConfidenceRaw()

const cv::Mat & rtabmap::SensorData::depthConfidenceRaw ( ) const
inline

Returns the raw depth confidence map.

Returns
Raw depth confidence (CV_8UC1, typically 0-100)

Definition at line 579 of file SensorData.h.

◆ laserScanRaw()

const LaserScan & rtabmap::SensorData::laserScanRaw ( ) const
inline

Returns the raw laser scan.

Returns
Raw laser scan (2D or 3D)

Definition at line 585 of file SensorData.h.

◆ setRGBDImage()

void rtabmap::SensorData::setRGBDImage ( const cv::Mat &  rgb,
const cv::Mat &  depth,
const CameraModel model,
bool  clearPreviousData = true 
)

Set image data. Detect automatically if raw or compressed. A matrix of type CV_8UC1 with 1 row is considered as compressed.

Parameters
clearPreviousData,clearprevious raw and compressed images before setting the new ones.

◆ setLaserScan()

void rtabmap::SensorData::setLaserScan ( const LaserScan laserScan,
bool  clearPreviousData = true 
)

Set laser scan data. Detect automatically if raw or compressed. A matrix of type CV_8UC1 with 1 row is considered as compressed.

Parameters
clearPreviousData,clearprevious raw and compressed scans before setting the new one.

◆ setCameraModel()

void rtabmap::SensorData::setCameraModel ( const CameraModel model)
inline

Sets a single camera model (clears previous models)

Parameters
modelCamera model to set

Definition at line 610 of file SensorData.h.

◆ setCameraModels()

void rtabmap::SensorData::setCameraModels ( const std::vector< CameraModel > &  models)
inline

Sets multiple camera models.

Parameters
modelsVector of camera models

Definition at line 616 of file SensorData.h.

◆ setStereoCameraModel()

void rtabmap::SensorData::setStereoCameraModel ( const StereoCameraModel stereoCameraModel)
inline

Sets a single stereo camera model (clears previous models)

Parameters
stereoCameraModelStereo camera model to set

Definition at line 622 of file SensorData.h.

◆ setStereoCameraModels()

void rtabmap::SensorData::setStereoCameraModels ( const std::vector< StereoCameraModel > &  stereoCameraModels)
inline

Sets multiple stereo camera models.

Parameters
stereoCameraModelsVector of stereo camera models

Definition at line 628 of file SensorData.h.

◆ depthRaw()

cv::Mat rtabmap::SensorData::depthRaw ( ) const
inline

Returns the depth image (convenience method)

Returns the depth image if _depthOrRightRaw contains depth data (not a right stereo image). Depth images are CV_16UC1 or CV_32FC1, while right stereo images are CV_8UC1 or CV_8UC3.

Returns
Depth image if available, empty Mat if right stereo image or empty

Definition at line 639 of file SensorData.h.

◆ rightRaw()

cv::Mat rtabmap::SensorData::rightRaw ( ) const
inline

Returns the right stereo image (convenience method)

Returns the right stereo image if _depthOrRightRaw contains stereo data (not a depth image). Right stereo images are CV_8UC1 or CV_8UC3, while depth images are CV_16UC1 or CV_32FC1.

Returns
Right stereo image if available, empty Mat if depth image or empty

Definition at line 650 of file SensorData.h.

◆ uncompressData() [1/2]

void rtabmap::SensorData::uncompressData ( )

Uncompresses all compressed data in-place.

Decompresses all compressed images, depth, laser scans, and user data, storing the results in the raw data members. This modifies the object.

◆ uncompressData() [2/2]

void rtabmap::SensorData::uncompressData ( cv::Mat *  imageRaw,
cv::Mat *  depthOrRightRaw,
LaserScan laserScanRaw = 0,
cv::Mat *  userDataRaw = 0,
cv::Mat *  groundCellsRaw = 0,
cv::Mat *  obstacleCellsRaw = 0,
cv::Mat *  emptyCellsRaw = 0,
cv::Mat *  depthConfidenceRaw = 0 
)

Uncompresses compressed data into provided output buffers.

Decompresses compressed data and stores results in the provided output buffers. If a buffer pointer is null, that data type is skipped. The raw fields of the object is updated with the uncompressed data so that consecutive calls with same field should not trigger a uncompression again.

Parameters
imageRawOutput buffer for uncompressed RGB/grayscale image
depthOrRightRawOutput buffer for uncompressed depth or right stereo image
laserScanRawOutput buffer for uncompressed laser scan
userDataRawOutput buffer for uncompressed user data
groundCellsRawOutput buffer for uncompressed ground occupancy grid cells
obstacleCellsRawOutput buffer for uncompressed obstacle occupancy grid cells
emptyCellsRawOutput buffer for uncompressed empty occupancy grid cells
depthConfidenceRawOutput buffer for uncompressed depth confidence

◆ uncompressDataConst()

void rtabmap::SensorData::uncompressDataConst ( cv::Mat *  imageRaw,
cv::Mat *  depthOrRightRaw,
LaserScan laserScanRaw = 0,
cv::Mat *  userDataRaw = 0,
cv::Mat *  groundCellsRaw = 0,
cv::Mat *  obstacleCellsRaw = 0,
cv::Mat *  emptyCellsRaw = 0,
cv::Mat *  depthConfidenceRaw = 0 
) const

Uncompresses compressed data into provided output buffers (const version)

Same as uncompressData() but does not modify the object's internal state.

Parameters
imageRawOutput buffer for uncompressed RGB/grayscale image
depthOrRightRawOutput buffer for uncompressed depth or right stereo image
laserScanRawOutput buffer for uncompressed laser scan
userDataRawOutput buffer for uncompressed user data
groundCellsRawOutput buffer for uncompressed ground occupancy grid cells
obstacleCellsRawOutput buffer for uncompressed obstacle occupancy grid cells
emptyCellsRawOutput buffer for uncompressed empty occupancy grid cells
depthConfidenceRawOutput buffer for uncompressed depth confidence

◆ cameraModels()

const std::vector< CameraModel > & rtabmap::SensorData::cameraModels ( ) const
inline

Returns the camera models.

Returns
Const reference to vector of mono camera models

Definition at line 724 of file SensorData.h.

◆ stereoCameraModels()

const std::vector< StereoCameraModel > & rtabmap::SensorData::stereoCameraModels ( ) const
inline

Returns the stereo camera models.

Returns
Const reference to vector of stereo camera models

Definition at line 730 of file SensorData.h.

◆ setUserData()

void rtabmap::SensorData::setUserData ( const cv::Mat &  userData,
bool  clearPreviousData = true 
)

Set user data. Detect automatically if raw or compressed. If raw, the data is compressed too. A matrix of type CV_8UC1 with 1 row is considered as compressed. If you have one dimension unsigned 8 bits raw data, make sure to transpose it (to have multiple rows instead of multiple columns) in order to be detected as not compressed.

Parameters
clearPreviousData,clearprevious raw and compressed user data before setting the new one.

◆ userDataRaw()

const cv::Mat & rtabmap::SensorData::userDataRaw ( ) const
inline

Definition at line 741 of file SensorData.h.

◆ userDataCompressed()

const cv::Mat & rtabmap::SensorData::userDataCompressed ( ) const
inline

Definition at line 742 of file SensorData.h.

◆ setOccupancyGrid()

void rtabmap::SensorData::setOccupancyGrid ( const cv::Mat &  ground,
const cv::Mat &  obstacles,
const cv::Mat &  empty,
float  cellSize,
const cv::Point3f &  viewPoint 
)

Sets occupancy grid data.

Sets the occupancy grid with ground, obstacle, and empty cells. The data is automatically detected as raw or compressed. If raw, it will be compressed automatically.

Parameters
groundGround cells matrix
obstaclesObstacle cells matrix
emptyEmpty cells matrix
cellSizeSize of each grid cell in meters
viewPointViewpoint/origin of the occupancy grid (3D point)

◆ gridGroundCellsRaw()

const cv::Mat & rtabmap::SensorData::gridGroundCellsRaw ( ) const
inline

Returns raw ground cells.

Returns
Const reference to raw ground cells matrix

Definition at line 767 of file SensorData.h.

◆ gridGroundCellsCompressed()

const cv::Mat & rtabmap::SensorData::gridGroundCellsCompressed ( ) const
inline

Returns compressed ground cells.

Returns
Const reference to compressed ground cells matrix
Note
Use Compression::uncompressData() to uncompress the data.

Definition at line 774 of file SensorData.h.

◆ gridObstacleCellsRaw()

const cv::Mat & rtabmap::SensorData::gridObstacleCellsRaw ( ) const
inline

Returns raw obstacle cells.

Returns
Const reference to raw obstacle cells matrix

Definition at line 780 of file SensorData.h.

◆ gridObstacleCellsCompressed()

const cv::Mat & rtabmap::SensorData::gridObstacleCellsCompressed ( ) const
inline

Returns compressed obstacle cells.

Returns
Const reference to compressed obstacle cells matrix
Note
Use Compression::uncompressData() to uncompress the data.

Definition at line 787 of file SensorData.h.

◆ gridEmptyCellsRaw()

const cv::Mat & rtabmap::SensorData::gridEmptyCellsRaw ( ) const
inline

Returns raw empty cells.

Returns
Const reference to raw empty cells matrix

Definition at line 793 of file SensorData.h.

◆ gridEmptyCellsCompressed()

const cv::Mat & rtabmap::SensorData::gridEmptyCellsCompressed ( ) const
inline

Returns compressed empty cells.

Returns
Const reference to compressed empty cells matrix
Note
Use Compression::uncompressData() to uncompress the data.

Definition at line 800 of file SensorData.h.

◆ gridCellSize()

float rtabmap::SensorData::gridCellSize ( ) const
inline

Returns the occupancy grid cell size.

Returns
Cell size in meters

Definition at line 806 of file SensorData.h.

◆ gridViewPoint()

const cv::Point3f & rtabmap::SensorData::gridViewPoint ( ) const
inline

Returns the occupancy grid viewpoint.

Returns
Const reference to viewpoint/origin 3D point

Definition at line 812 of file SensorData.h.

◆ setFeatures()

void rtabmap::SensorData::setFeatures ( const std::vector< cv::KeyPoint > &  keypoints,
const std::vector< cv::Point3f > &  keypoints3D,
const cv::Mat &  descriptors 
)

Sets visual features (keypoints, 3D points, descriptors)

Sets the visual features extracted from the images. All arrays must have matching sizes (one keypoint per 3D point and descriptor).

Parameters
keypoints2D keypoints in image coordinates
keypoints3D3D points corresponding to keypoints (in base_link frame)
descriptorsFeature descriptors matrix (one row per keypoint)

◆ keypoints()

const std::vector< cv::KeyPoint > & rtabmap::SensorData::keypoints ( ) const
inline

Returns the 2D keypoints.

Returns
Const reference to vector of 2D keypoints

Definition at line 830 of file SensorData.h.

◆ keypoints3D()

const std::vector< cv::Point3f > & rtabmap::SensorData::keypoints3D ( ) const
inline

Returns the 3D keypoints.

Returns
Const reference to vector of 3D points (in base_link frame)

Definition at line 836 of file SensorData.h.

◆ descriptors()

const cv::Mat & rtabmap::SensorData::descriptors ( ) const
inline

Returns the feature descriptors.

Returns
Const reference to descriptors matrix (one row per keypoint)

Definition at line 842 of file SensorData.h.

◆ addGlobalDescriptor()

void rtabmap::SensorData::addGlobalDescriptor ( const GlobalDescriptor descriptor)
inline

Adds a global descriptor.

Parameters
descriptorGlobal descriptor to add

Definition at line 848 of file SensorData.h.

◆ setGlobalDescriptors()

void rtabmap::SensorData::setGlobalDescriptors ( const std::vector< GlobalDescriptor > &  descriptors)
inline

Sets all global descriptors.

Parameters
descriptorsVector of global descriptors

Definition at line 854 of file SensorData.h.

◆ clearGlobalDescriptors()

void rtabmap::SensorData::clearGlobalDescriptors ( )
inline

Clears all global descriptors.

Definition at line 859 of file SensorData.h.

◆ globalDescriptors()

const std::vector< GlobalDescriptor > & rtabmap::SensorData::globalDescriptors ( ) const
inline

Returns all global descriptors.

Returns
Const reference to vector of global descriptors

Definition at line 865 of file SensorData.h.

◆ setGroundTruth()

void rtabmap::SensorData::setGroundTruth ( const Transform pose)
inline

Sets the ground truth pose.

Parameters
poseGround truth transform (for evaluation purposes)

Definition at line 871 of file SensorData.h.

◆ groundTruth()

const Transform & rtabmap::SensorData::groundTruth ( ) const
inline

Returns the ground truth pose.

Returns
Const reference to ground truth transform

Definition at line 877 of file SensorData.h.

◆ setGlobalPose()

void rtabmap::SensorData::setGlobalPose ( const Transform pose,
const cv::Mat &  covariance 
)
inline

Sets the global pose with covariance.

Parameters
poseGlobal pose transform
covariancePose covariance matrix (6x6, CV_64FC1)

Definition at line 884 of file SensorData.h.

◆ globalPose()

const Transform & rtabmap::SensorData::globalPose ( ) const
inline

Returns the global pose.

Returns
Const reference to global pose transform

Definition at line 890 of file SensorData.h.

◆ globalPoseCovariance()

const cv::Mat & rtabmap::SensorData::globalPoseCovariance ( ) const
inline

Returns the global pose covariance.

Returns
Const reference to pose covariance matrix (6x6, CV_64FC1)

Definition at line 896 of file SensorData.h.

◆ setGPS()

void rtabmap::SensorData::setGPS ( const GPS gps)
inline

Sets GPS data.

Parameters
gpsGPS data (latitude, longitude, altitude, etc.)

Definition at line 902 of file SensorData.h.

◆ gps()

const GPS & rtabmap::SensorData::gps ( ) const
inline

Returns GPS data.

Returns
Const reference to GPS data

Definition at line 908 of file SensorData.h.

◆ setIMU()

void rtabmap::SensorData::setIMU ( const IMU imu)

Sets IMU data.

Parameters
imuIMU data (accelerometer, gyroscope, orientation)
Warning
Asserts that all orientation, angular velocity and linear acceleration values are finite.

◆ imu()

const IMU & rtabmap::SensorData::imu ( ) const
inline

Returns IMU data.

Returns
Const reference to IMU data

Definition at line 922 of file SensorData.h.

◆ setEnvSensors()

void rtabmap::SensorData::setEnvSensors ( const EnvSensors sensors)
inline

Sets all environmental sensors.

Parameters
sensorsMap of environmental sensor types to sensor data

Definition at line 928 of file SensorData.h.

◆ addEnvSensor()

void rtabmap::SensorData::addEnvSensor ( const EnvSensor sensor)
inline

Adds a single environmental sensor.

Parameters
sensorEnvironmental sensor to add

Definition at line 934 of file SensorData.h.

◆ envSensors()

const EnvSensors & rtabmap::SensorData::envSensors ( ) const
inline

Returns all environmental sensors.

Returns
Const reference to map of environmental sensors

Definition at line 940 of file SensorData.h.

◆ setLandmarks()

void rtabmap::SensorData::setLandmarks ( const Landmarks landmarks)
inline

Sets landmarks.

Parameters
landmarksMap of landmark IDs to landmark data
Note
Landmark IDs should be positive and non-zero.

Definition at line 947 of file SensorData.h.

◆ landmarks()

const Landmarks & rtabmap::SensorData::landmarks ( ) const
inline

Returns landmarks.

Returns
Const reference to map of landmarks

Definition at line 953 of file SensorData.h.

◆ getMemoryUsed()

unsigned long rtabmap::SensorData::getMemoryUsed ( ) const

Computes the memory usage of this sensor data.

Calculates the approximate memory footprint including all images, laser scans, features, descriptors, and other data structures.

Returns
Memory usage in bytes

◆ clearCompressedData()

void rtabmap::SensorData::clearCompressedData ( bool  images = true,
bool  scan = true,
bool  userData = true,
bool  occupancyGrid = true 
)

Clear compressed rgb/depth (left/right) images, compressed laser scan and compressed user data. Raw data are kept is set.

◆ clearRawData()

void rtabmap::SensorData::clearRawData ( bool  images = true,
bool  scan = true,
bool  userData = true,
bool  occupancyGrid = true 
)

Clear raw rgb/depth (left/right) images, raw laser scan and raw user data. Compressed data are kept is set.

◆ isPointVisibleFromCameras()

int rtabmap::SensorData::isPointVisibleFromCameras ( const cv::Point3f &  pt) const

Checks if a 3D point is visible from any camera.

Projects the 3D point into all camera models and checks if it falls within the image bounds.

Parameters
pt3D point in robot frame (base_link)
Returns
Camera index (>=0) of the first camera found with the point visible, -1 if the point is not visible by any camera.

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