RTAB-Map 0.24.0
Real-Time Appearance-Based Mapping
Loading...
Searching...
No Matches
SensorData.h
1/*
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
3All rights reserved.
4
5Redistribution and use in source and binary forms, with or without
6modification, are permitted provided that the following conditions are met:
7 * Redistributions of source code must retain the above copyright
8 notice, this list of conditions and the following disclaimer.
9 * Redistributions in binary form must reproduce the above copyright
10 notice, this list of conditions and the following disclaimer in the
11 documentation and/or other materials provided with the distribution.
12 * Neither the name of the Universite de Sherbrooke nor the
13 names of its contributors may be used to endorse or promote products
14 derived from this software without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*/
27
28#ifndef SENSORDATA_H_
29#define SENSORDATA_H_
30
31#include <rtabmap/core/rtabmap_core_export.h>
32#include <rtabmap/core/Transform.h>
33#include <rtabmap/core/CameraModel.h>
34#include <rtabmap/core/StereoCameraModel.h>
35#include <opencv2/core/core.hpp>
36#if CV_MAJOR_VERSION < 5
37#include <opencv2/features2d/features2d.hpp>
38#else
39#include <opencv2/features.hpp>
40#endif
41#include <rtabmap/core/LaserScan.h>
42#include <rtabmap/core/IMU.h>
43#include <rtabmap/core/GPS.h>
44#include <rtabmap/core/EnvSensor.h>
45#include <rtabmap/core/Landmark.h>
46#include <rtabmap/core/GlobalDescriptor.h>
47
48namespace rtabmap
49{
50
96class RTABMAP_CORE_EXPORT SensorData
97{
98public:
106
120 const cv::Mat & image,
121 int id = 0,
122 double stamp = 0.0,
123 const cv::Mat & userData = cv::Mat());
124
138 const cv::Mat & image,
139 const CameraModel & cameraModel,
140 int id = 0,
141 double stamp = 0.0,
142 const cv::Mat & userData = cv::Mat());
143
157 const cv::Mat & rgb,
158 const cv::Mat & depth,
159 const CameraModel & cameraModel,
160 int id = 0,
161 double stamp = 0.0,
162 const cv::Mat & userData = cv::Mat());
163
178 const cv::Mat & rgb,
179 const cv::Mat & depth,
180 const cv::Mat & depth_confidence,
181 const CameraModel & cameraModel,
182 int id = 0,
183 double stamp = 0.0,
184 const cv::Mat & userData = cv::Mat());
185
200 const LaserScan & laserScan,
201 const cv::Mat & rgb,
202 const cv::Mat & depth,
203 const CameraModel & cameraModel,
204 int id = 0,
205 double stamp = 0.0,
206 const cv::Mat & userData = cv::Mat());
207
223 const LaserScan & laserScan,
224 const cv::Mat & rgb,
225 const cv::Mat & depth,
226 const cv::Mat & depthConfidence,
227 const CameraModel & cameraModel,
228 int id = 0,
229 double stamp = 0.0,
230 const cv::Mat & userData = cv::Mat());
231
282 const cv::Mat & rgb,
283 const cv::Mat & depth,
284 const std::vector<CameraModel> & cameraModels,
285 int id = 0,
286 double stamp = 0.0,
287 const cv::Mat & userData = cv::Mat());
288
305 const cv::Mat & rgb,
306 const cv::Mat & depth,
307 const cv::Mat & depthConfidence,
308 const std::vector<CameraModel> & cameraModels,
309 int id = 0,
310 double stamp = 0.0,
311 const cv::Mat & userData = cv::Mat());
312
329 const LaserScan & laserScan,
330 const cv::Mat & rgb,
331 const cv::Mat & depth,
332 const std::vector<CameraModel> & cameraModels,
333 int id = 0,
334 double stamp = 0.0,
335 const cv::Mat & userData = cv::Mat());
336
354 const LaserScan & laserScan,
355 const cv::Mat & rgb,
356 const cv::Mat & depth,
357 const cv::Mat & depthConfidence,
358 const std::vector<CameraModel> & cameraModels,
359 int id = 0,
360 double stamp = 0.0,
361 const cv::Mat & userData = cv::Mat());
362
376 const cv::Mat & left,
377 const cv::Mat & right,
378 const StereoCameraModel & cameraModel,
379 int id = 0,
380 double stamp = 0.0,
381 const cv::Mat & userData = cv::Mat());
382
397 const LaserScan & laserScan,
398 const cv::Mat & left,
399 const cv::Mat & right,
400 const StereoCameraModel & cameraModel,
401 int id = 0,
402 double stamp = 0.0,
403 const cv::Mat & userData = cv::Mat());
404
420 const cv::Mat & rgb,
421 const cv::Mat & depth,
422 const std::vector<StereoCameraModel> & cameraModels,
423 int id = 0,
424 double stamp = 0.0,
425 const cv::Mat & userData = cv::Mat());
426
441 const LaserScan & laserScan,
442 const cv::Mat & rgb,
443 const cv::Mat & depth,
444 const std::vector<StereoCameraModel> & cameraModels,
445 int id = 0,
446 double stamp = 0.0,
447 const cv::Mat & userData = cv::Mat());
448
460 const IMU & imu,
461 int id = 0,
462 double stamp = 0.0);
463
467 virtual ~SensorData();
468
491 bool isValid() const {
492 bool hasCameraModel = false;
493 for (size_t i=0; i < _cameraModels.size() && !hasCameraModel; ++i)
494 hasCameraModel = _cameraModels[i].isValidForProjection();
495 if (!hasCameraModel)
496 for (size_t i=0; i < _stereoCameraModels.size() && !hasCameraModel; ++i)
497 hasCameraModel = _stereoCameraModels[i].isValidForProjection();
498
499 return !(_id == 0 &&
500 _imageRaw.empty() &&
501 _imageCompressed.empty() &&
502 _depthOrRightRaw.empty() &&
503 _depthOrRightCompressed.empty() &&
504 _depthConfidenceRaw.empty() &&
505 _depthConfidenceCompressed.empty() &&
506 _laserScanRaw.isEmpty() &&
507 _laserScanCompressed.isEmpty() &&
508 !hasCameraModel &&
509 _userDataRaw.empty() &&
510 _userDataCompressed.empty() &&
511 _keypoints.size() == 0 &&
512 _descriptors.empty() &&
513 _groundCellsRaw.empty() &&
514 _groundCellsCompressed.empty() &&
515 _obstacleCellsRaw.empty() &&
516 _obstacleCellsCompressed.empty() &&
517 _emptyCellsRaw.empty() &&
518 _emptyCellsCompressed.empty() &&
519 imu_.empty());
520 }
521
526 int id() const {return _id;}
527
532 void setId(int id) {_id = id;}
533
538 double stamp() const {return _stamp;}
539
544 void setStamp(double stamp) {_stamp = stamp;}
545
551 const cv::Mat & imageCompressed() const {return _imageCompressed;}
552
558 const cv::Mat & depthOrRightCompressed() const {return _depthOrRightCompressed;}
559
565 const cv::Mat & depthConfidenceCompressed() const {return _depthConfidenceCompressed;}
566
571 const LaserScan & laserScanCompressed() const {return _laserScanCompressed;}
572
577 const cv::Mat & imageRaw() const {return _imageRaw;}
578
584 const cv::Mat & depthOrRightRaw() const {return _depthOrRightRaw;}
585
590 const cv::Mat & depthConfidenceRaw() const {return _depthConfidenceRaw;}
591
596 const LaserScan & laserScanRaw() const {return _laserScanRaw;}
597
605 void setRGBDImage(const cv::Mat & rgb, const cv::Mat & depth, const CameraModel & model, bool clearPreviousData = true);
606 void setRGBDImage(const cv::Mat & rgb, const cv::Mat & depth, const cv::Mat & depth_confidence, const CameraModel & model, bool clearPreviousData = true);
607 void setRGBDImage(const cv::Mat & rgb, const cv::Mat & depth, const std::vector<CameraModel> & models, bool clearPreviousData = true);
608 void setRGBDImage(const cv::Mat & rgb, const cv::Mat & depth, const cv::Mat & depth_confidence, const std::vector<CameraModel> & models, bool clearPreviousData = true);
609 void setStereoImage(const cv::Mat & left, const cv::Mat & right, const StereoCameraModel & stereoCameraModel, bool clearPreviousData = true);
610 void setStereoImage(const cv::Mat & left, const cv::Mat & right, const std::vector<StereoCameraModel> & stereoCameraModels, bool clearPreviousData = true);
611
617 void setLaserScan(const LaserScan & laserScan, bool clearPreviousData = true);
618
623 void setCameraModel(const CameraModel & model) {_cameraModels.clear(); _cameraModels.push_back(model);}
624
629 void setCameraModels(const std::vector<CameraModel> & models) {_cameraModels = models;}
630
635 void setStereoCameraModel(const StereoCameraModel & stereoCameraModel) {_stereoCameraModels.clear(); _stereoCameraModels.push_back(stereoCameraModel);}
636
641 void setStereoCameraModels(const std::vector<StereoCameraModel> & stereoCameraModels) {_stereoCameraModels = stereoCameraModels;}
642
652 cv::Mat depthRaw() const {return !(_depthOrRightRaw.type()==CV_8UC1 || _depthOrRightRaw.type()==CV_8UC3) ? _depthOrRightRaw : cv::Mat();}
653
663 cv::Mat rightRaw() const {return _depthOrRightRaw.type()==CV_8UC1 || _depthOrRightRaw.type()==CV_8UC3 ? _depthOrRightRaw : cv::Mat();}
664
665 // Use setRGBDImage() or setStereoImage() with clearNotUpdated=false or removeRawData() instead. To be backward compatible, this function doesn't clear compressed data.
666 RTABMAP_DEPRECATED void setImageRaw(const cv::Mat & image);
667 // Use setRGBDImage() or setStereoImage() with clearNotUpdated=false or removeRawData() instead. To be backward compatible, this function doesn't clear compressed data.
668 RTABMAP_DEPRECATED void setDepthOrRightRaw(const cv::Mat & image);
669 // Use setLaserScan() with clearNotUpdated=false or removeRawData() instead. To be backward compatible, this function doesn't clear compressed data.
670 RTABMAP_DEPRECATED void setLaserScanRaw(const LaserScan & scan);
671 // Use setUserData() or removeRawData() instead.
672 RTABMAP_DEPRECATED void setUserDataRaw(const cv::Mat & data);
673
681
700 cv::Mat * imageRaw,
701 cv::Mat * depthOrRightRaw,
702 LaserScan * laserScanRaw = 0,
703 cv::Mat * userDataRaw = 0,
704 cv::Mat * groundCellsRaw = 0,
705 cv::Mat * obstacleCellsRaw = 0,
706 cv::Mat * emptyCellsRaw = 0,
707 cv::Mat * depthConfidenceRaw = 0);
708
724 cv::Mat * imageRaw,
725 cv::Mat * depthOrRightRaw,
726 LaserScan * laserScanRaw = 0,
727 cv::Mat * userDataRaw = 0,
728 cv::Mat * groundCellsRaw = 0,
729 cv::Mat * obstacleCellsRaw = 0,
730 cv::Mat * emptyCellsRaw = 0,
731 cv::Mat * depthConfidenceRaw = 0) const;
732
737 const std::vector<CameraModel> & cameraModels() const {return _cameraModels;}
738
743 const std::vector<StereoCameraModel> & stereoCameraModels() const {return _stereoCameraModels;}
744
757 void setUserData(const cv::Mat & userData, bool clearPreviousData = true);
758 const cv::Mat & userDataRaw() const {return _userDataRaw;}
759 const cv::Mat & userDataCompressed() const {return _userDataCompressed;}
760
775 const cv::Mat & ground,
776 const cv::Mat & obstacles,
777 const cv::Mat & empty,
778 float cellSize,
779 const cv::Point3f & viewPoint);
784 const cv::Mat & gridGroundCellsRaw() const {return _groundCellsRaw;}
785
791 const cv::Mat & gridGroundCellsCompressed() const {return _groundCellsCompressed;}
792
797 const cv::Mat & gridObstacleCellsRaw() const {return _obstacleCellsRaw;}
798
804 const cv::Mat & gridObstacleCellsCompressed() const {return _obstacleCellsCompressed;}
805
810 const cv::Mat & gridEmptyCellsRaw() const {return _emptyCellsRaw;}
811
817 const cv::Mat & gridEmptyCellsCompressed() const {return _emptyCellsCompressed;}
818
823 float gridCellSize() const {return _cellSize;}
824
829 const cv::Point3f & gridViewPoint() const {return _viewPoint;}
830
841 void setFeatures(const std::vector<cv::KeyPoint> & keypoints, const std::vector<cv::Point3f> & keypoints3D, const cv::Mat & descriptors);
842
847 const std::vector<cv::KeyPoint> & keypoints() const {return _keypoints;}
848
853 const std::vector<cv::Point3f> & keypoints3D() const {return _keypoints3D;}
854
859 const cv::Mat & descriptors() const {return _descriptors;}
860
865 void addGlobalDescriptor(const GlobalDescriptor & descriptor) {_globalDescriptors.push_back(descriptor);}
866
871 void setGlobalDescriptors(const std::vector<GlobalDescriptor> & descriptors) {_globalDescriptors = descriptors;}
872
876 void clearGlobalDescriptors() {_globalDescriptors.clear();}
877
882 const std::vector<GlobalDescriptor> & globalDescriptors() const {return _globalDescriptors;}
883
888 void setGroundTruth(const Transform & pose) {groundTruth_ = pose;}
889
894 const Transform & groundTruth() const {return groundTruth_;}
895
901 void setGlobalPose(const Transform & pose, const cv::Mat & covariance) {globalPose_ = pose; globalPoseCovariance_ = covariance;}
902
907 const Transform & globalPose() const {return globalPose_;}
908
913 const cv::Mat & globalPoseCovariance() const {return globalPoseCovariance_;}
914
919 void setGPS(const GPS & gps) {gps_ = gps;}
920
925 const GPS & gps() const {return gps_;}
926
933 void setIMU(const IMU & imu);
934
939 const IMU & imu() const {return imu_;}
940
945 void setEnvSensors(const EnvSensors & sensors) {_envSensors = sensors;}
946
951 void addEnvSensor(const EnvSensor & sensor) {_envSensors.insert(std::make_pair(sensor.type(), sensor));}
952
957 const EnvSensors & envSensors() const {return _envSensors;}
958
964 void setLandmarks(const Landmarks & landmarks) {_landmarks = landmarks;}
965
970 const Landmarks & landmarks() const {return _landmarks;}
971
980 unsigned long getMemoryUsed() const;
985 void clearCompressedData(bool images = true, bool scan = true, bool userData = true, bool occupancyGrid = true);
990 void clearRawData(bool images = true, bool scan = true, bool userData = true, bool occupancyGrid = true);
991
1001 int isPointVisibleFromCameras(const cv::Point3f & pt) const;
1002
1003#ifdef HAVE_OPENCV_CUDEV
1008 const cv::cuda::GpuMat & imageRawGpu() const {return _imageRawGpu;}
1009
1014 void setImageRawGpu(const cv::cuda::GpuMat & image) {_imageRawGpu = image;}
1015
1020 const cv::cuda::GpuMat & depthOrRightRawGpu() const {return _depthOrRightRawGpu;}
1021
1026 void setDepthOrRightRawGpu(const cv::cuda::GpuMat & image) {_depthOrRightRawGpu = image;}
1027#endif
1028
1029private:
1031 bool keepCameraModel(const CameraModel & model, const cv::Mat & rgb, const cv::Mat & depth, bool clearPreviousData) const;
1032
1033 int _id;
1034 double _stamp;
1035
1036 // Compressed data
1037 cv::Mat _imageCompressed;
1038 cv::Mat _depthOrRightCompressed;
1039 cv::Mat _depthConfidenceCompressed;
1040 LaserScan _laserScanCompressed;
1041
1042 // Raw data
1043 cv::Mat _imageRaw;
1044 cv::Mat _depthOrRightRaw;
1045 cv::Mat _depthConfidenceRaw;
1046 LaserScan _laserScanRaw;
1047
1048 // Camera models
1049 std::vector<CameraModel> _cameraModels;
1050 std::vector<StereoCameraModel> _stereoCameraModels;
1051
1052 // User data
1053 cv::Mat _userDataCompressed;
1054 cv::Mat _userDataRaw;
1055
1056 // Occupancy grid
1057 cv::Mat _groundCellsCompressed;
1058 cv::Mat _obstacleCellsCompressed;
1059 cv::Mat _emptyCellsCompressed;
1060 cv::Mat _groundCellsRaw;
1061 cv::Mat _obstacleCellsRaw;
1062 cv::Mat _emptyCellsRaw;
1063 float _cellSize;
1064 cv::Point3f _viewPoint;
1065
1066 // Environmental sensors
1067 EnvSensors _envSensors;
1068
1069 // Landmarks
1070 Landmarks _landmarks;
1071
1072 // Visual features
1073 std::vector<cv::KeyPoint> _keypoints;
1074 std::vector<cv::Point3f> _keypoints3D;
1075 cv::Mat _descriptors;
1076
1077 // Global descriptors
1078 std::vector<GlobalDescriptor> _globalDescriptors;
1079
1080 // Poses
1081 Transform groundTruth_;
1082 Transform globalPose_;
1083 cv::Mat globalPoseCovariance_;
1084
1085 // Sensor fusion
1086 GPS gps_;
1087 IMU imu_;
1088
1089#ifdef HAVE_OPENCV_CUDEV
1096 cv::cuda::GpuMat _imageRawGpu;
1097 cv::cuda::GpuMat _depthOrRightRawGpu;
1098#endif
1099};
1100
1101}
1102
1103
1104#endif /* SENSORDATA_H_ */
Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection,...
Definition CameraModel.h:53
Single environmental measurement (type, value, timestamp).
Definition EnvSensor.h:51
const Type & type() const
Definition EnvSensor.h:101
WGS84 GPS fix attached to a sensor sample or graph node.
Definition GPS.h:47
Inertial measurement sample (ROS sensor_msgs/Imu-like fields).
Definition IMU.h:57
Represents 2D or 3D laser scan data with support for multiple point data formats.
Definition LaserScan.h:46
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
const IMU & imu() const
Returns IMU data.
Definition SensorData.h:939
const cv::Mat & depthConfidenceRaw() const
Returns the raw depth confidence map.
Definition SensorData.h:590
const cv::Mat & gridObstacleCellsRaw() const
Returns raw obstacle cells.
Definition SensorData.h:797
void addEnvSensor(const EnvSensor &sensor)
Adds a single environmental sensor.
Definition SensorData.h:951
SensorData(const cv::Mat &image, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
Mono camera constructor.
const LaserScan & laserScanCompressed() const
Returns the compressed laser scan.
Definition SensorData.h:571
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.
const GPS & gps() const
Returns GPS data.
Definition SensorData.h:925
cv::Mat depthRaw() const
Returns the depth image (convenience method)
Definition SensorData.h:652
void setRGBDImage(const cv::Mat &rgb, const cv::Mat &depth, const CameraModel &model, bool clearPreviousData=true)
void setIMU(const IMU &imu)
Sets IMU data.
const cv::Mat & depthOrRightRaw() const
Returns the raw depth or right stereo image.
Definition SensorData.h:584
SensorData(const IMU &imu, int id=0, double stamp=0.0)
IMU-only constructor.
const cv::Mat & gridGroundCellsRaw() const
Returns raw ground cells.
Definition SensorData.h:784
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)
int isPointVisibleFromCameras(const cv::Point3f &pt) const
Checks if a 3D point is visible from any camera.
void clearCompressedData(bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true)
void clearGlobalDescriptors()
Clears all global descriptors.
Definition SensorData.h:876
const cv::Mat & gridEmptyCellsRaw() const
Returns raw empty cells.
Definition SensorData.h:810
const EnvSensors & envSensors() const
Returns all environmental sensors.
Definition SensorData.h:957
void setId(int id)
Sets the sensor data ID.
Definition SensorData.h:532
const cv::Mat & gridObstacleCellsCompressed() const
Returns compressed obstacle cells.
Definition SensorData.h:804
const cv::Point3f & gridViewPoint() const
Returns the occupancy grid viewpoint.
Definition SensorData.h:829
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.
void clearRawData(bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true)
const Transform & globalPose() const
Returns the global pose.
Definition SensorData.h:907
double stamp() const
Returns the timestamp.
Definition SensorData.h:538
const cv::Mat & globalPoseCovariance() const
Returns the global pose covariance.
Definition SensorData.h:913
void setStamp(double stamp)
Sets the timestamp.
Definition SensorData.h:544
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 & descriptors() const
Returns the feature descriptors.
Definition SensorData.h:859
unsigned long getMemoryUsed() const
Computes the memory usage of this sensor data.
const std::vector< CameraModel > & cameraModels() const
Returns the camera models.
Definition SensorData.h:737
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.
void setGroundTruth(const Transform &pose)
Sets the ground truth pose.
Definition SensorData.h:888
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.
void setGlobalPose(const Transform &pose, const cv::Mat &covariance)
Sets the global pose with covariance.
Definition SensorData.h:901
const Landmarks & landmarks() const
Returns landmarks.
Definition SensorData.h:970
int id() const
Returns the sensor data ID.
Definition SensorData.h:526
const cv::Mat & depthOrRightCompressed() const
Returns the compressed depth or right stereo image.
Definition SensorData.h:558
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.
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 setLaserScan(const LaserScan &laserScan, bool clearPreviousData=true)
SensorData()
Default constructor.
virtual ~SensorData()
Virtual destructor.
float gridCellSize() const
Returns the occupancy grid cell size.
Definition SensorData.h:823
void uncompressData()
Uncompresses all compressed data in-place.
cv::Mat rightRaw() const
Returns the right stereo image (convenience method)
Definition SensorData.h:663
const cv::Mat & imageCompressed() const
Returns the compressed RGB/grayscale image.
Definition SensorData.h:551
const std::vector< StereoCameraModel > & stereoCameraModels() const
Returns the stereo camera models.
Definition SensorData.h:743
const std::vector< cv::Point3f > & keypoints3D() const
Returns the 3D keypoints.
Definition SensorData.h:853
void setStereoCameraModel(const StereoCameraModel &stereoCameraModel)
Sets a single stereo camera model (clears previous models)
Definition SensorData.h:635
void setEnvSensors(const EnvSensors &sensors)
Sets all environmental sensors.
Definition SensorData.h:945
const cv::Mat & gridGroundCellsCompressed() const
Returns compressed ground cells.
Definition SensorData.h:791
void setStereoCameraModels(const std::vector< StereoCameraModel > &stereoCameraModels)
Sets multiple stereo camera models.
Definition SensorData.h:641
SensorData(const cv::Mat &image, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
Appearance-only constructor.
void setGlobalDescriptors(const std::vector< GlobalDescriptor > &descriptors)
Sets all global descriptors.
Definition SensorData.h:871
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 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.
const cv::Mat & gridEmptyCellsCompressed() const
Returns compressed empty cells.
Definition SensorData.h:817
void addGlobalDescriptor(const GlobalDescriptor &descriptor)
Adds a global descriptor.
Definition SensorData.h:865
void setUserData(const cv::Mat &userData, bool clearPreviousData=true)
const std::vector< GlobalDescriptor > & globalDescriptors() const
Returns all global descriptors.
Definition SensorData.h:882
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)
void setGPS(const GPS &gps)
Sets GPS data.
Definition SensorData.h:919
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.
bool isValid() const
Checks if the sensor data is valid.
Definition SensorData.h:491
void setCameraModel(const CameraModel &model)
Sets a single camera model (clears previous models)
Definition SensorData.h:623
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 &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.
const cv::Mat & imageRaw() const
Returns the raw RGB/grayscale image.
Definition SensorData.h:577
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.
const cv::Mat & depthConfidenceCompressed() const
Returns the compressed depth confidence map.
Definition SensorData.h:565
const LaserScan & laserScanRaw() const
Returns the raw laser scan.
Definition SensorData.h:596
const Transform & groundTruth() const
Returns the ground truth pose.
Definition SensorData.h:894
void setLandmarks(const Landmarks &landmarks)
Sets landmarks.
Definition SensorData.h:964
void setCameraModels(const std::vector< CameraModel > &models)
Sets multiple camera models.
Definition SensorData.h:629
const std::vector< cv::KeyPoint > & keypoints() const
Returns the 2D keypoints.
Definition SensorData.h:847
A class representing a calibrated stereo camera system.
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
std::map< int, Landmark > Landmarks
Map of landmark id → Landmark (typically positive keys).
Definition Landmark.h:113
std::map< EnvSensor::Type, EnvSensor > EnvSensors
Map of environmental readings keyed by EnvSensor::Type (at most one per type).
Definition EnvSensor.h:114