RTAB-Map 0.23.13
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
603 void setRGBDImage(const cv::Mat & rgb, const cv::Mat & depth, const CameraModel & model, bool clearPreviousData = true);
604 void setRGBDImage(const cv::Mat & rgb, const cv::Mat & depth, const cv::Mat & depth_confidence, const CameraModel & model, bool clearPreviousData = true);
605 void setRGBDImage(const cv::Mat & rgb, const cv::Mat & depth, const std::vector<CameraModel> & models, bool clearPreviousData = true);
606 void setRGBDImage(const cv::Mat & rgb, const cv::Mat & depth, const cv::Mat & depth_confidence, const std::vector<CameraModel> & models, bool clearPreviousData = true);
607 void setStereoImage(const cv::Mat & left, const cv::Mat & right, const StereoCameraModel & stereoCameraModel, bool clearPreviousData = true);
608 void setStereoImage(const cv::Mat & left, const cv::Mat & right, const std::vector<StereoCameraModel> & stereoCameraModels, bool clearPreviousData = true);
609
615 void setLaserScan(const LaserScan & laserScan, bool clearPreviousData = true);
616
621 void setCameraModel(const CameraModel & model) {_cameraModels.clear(); _cameraModels.push_back(model);}
622
627 void setCameraModels(const std::vector<CameraModel> & models) {_cameraModels = models;}
628
633 void setStereoCameraModel(const StereoCameraModel & stereoCameraModel) {_stereoCameraModels.clear(); _stereoCameraModels.push_back(stereoCameraModel);}
634
639 void setStereoCameraModels(const std::vector<StereoCameraModel> & stereoCameraModels) {_stereoCameraModels = stereoCameraModels;}
640
650 cv::Mat depthRaw() const {return !(_depthOrRightRaw.type()==CV_8UC1 || _depthOrRightRaw.type()==CV_8UC3) ? _depthOrRightRaw : cv::Mat();}
651
661 cv::Mat rightRaw() const {return _depthOrRightRaw.type()==CV_8UC1 || _depthOrRightRaw.type()==CV_8UC3 ? _depthOrRightRaw : cv::Mat();}
662
663 // Use setRGBDImage() or setStereoImage() with clearNotUpdated=false or removeRawData() instead. To be backward compatible, this function doesn't clear compressed data.
664 RTABMAP_DEPRECATED void setImageRaw(const cv::Mat & image);
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 setDepthOrRightRaw(const cv::Mat & image);
667 // Use setLaserScan() with clearNotUpdated=false or removeRawData() instead. To be backward compatible, this function doesn't clear compressed data.
668 RTABMAP_DEPRECATED void setLaserScanRaw(const LaserScan & scan);
669 // Use setUserData() or removeRawData() instead.
670 RTABMAP_DEPRECATED void setUserDataRaw(const cv::Mat & data);
671
679
698 cv::Mat * imageRaw,
699 cv::Mat * depthOrRightRaw,
700 LaserScan * laserScanRaw = 0,
701 cv::Mat * userDataRaw = 0,
702 cv::Mat * groundCellsRaw = 0,
703 cv::Mat * obstacleCellsRaw = 0,
704 cv::Mat * emptyCellsRaw = 0,
705 cv::Mat * depthConfidenceRaw = 0);
706
722 cv::Mat * imageRaw,
723 cv::Mat * depthOrRightRaw,
724 LaserScan * laserScanRaw = 0,
725 cv::Mat * userDataRaw = 0,
726 cv::Mat * groundCellsRaw = 0,
727 cv::Mat * obstacleCellsRaw = 0,
728 cv::Mat * emptyCellsRaw = 0,
729 cv::Mat * depthConfidenceRaw = 0) const;
730
735 const std::vector<CameraModel> & cameraModels() const {return _cameraModels;}
736
741 const std::vector<StereoCameraModel> & stereoCameraModels() const {return _stereoCameraModels;}
742
755 void setUserData(const cv::Mat & userData, bool clearPreviousData = true);
756 const cv::Mat & userDataRaw() const {return _userDataRaw;}
757 const cv::Mat & userDataCompressed() const {return _userDataCompressed;}
758
773 const cv::Mat & ground,
774 const cv::Mat & obstacles,
775 const cv::Mat & empty,
776 float cellSize,
777 const cv::Point3f & viewPoint);
782 const cv::Mat & gridGroundCellsRaw() const {return _groundCellsRaw;}
783
789 const cv::Mat & gridGroundCellsCompressed() const {return _groundCellsCompressed;}
790
795 const cv::Mat & gridObstacleCellsRaw() const {return _obstacleCellsRaw;}
796
802 const cv::Mat & gridObstacleCellsCompressed() const {return _obstacleCellsCompressed;}
803
808 const cv::Mat & gridEmptyCellsRaw() const {return _emptyCellsRaw;}
809
815 const cv::Mat & gridEmptyCellsCompressed() const {return _emptyCellsCompressed;}
816
821 float gridCellSize() const {return _cellSize;}
822
827 const cv::Point3f & gridViewPoint() const {return _viewPoint;}
828
839 void setFeatures(const std::vector<cv::KeyPoint> & keypoints, const std::vector<cv::Point3f> & keypoints3D, const cv::Mat & descriptors);
840
845 const std::vector<cv::KeyPoint> & keypoints() const {return _keypoints;}
846
851 const std::vector<cv::Point3f> & keypoints3D() const {return _keypoints3D;}
852
857 const cv::Mat & descriptors() const {return _descriptors;}
858
863 void addGlobalDescriptor(const GlobalDescriptor & descriptor) {_globalDescriptors.push_back(descriptor);}
864
869 void setGlobalDescriptors(const std::vector<GlobalDescriptor> & descriptors) {_globalDescriptors = descriptors;}
870
874 void clearGlobalDescriptors() {_globalDescriptors.clear();}
875
880 const std::vector<GlobalDescriptor> & globalDescriptors() const {return _globalDescriptors;}
881
886 void setGroundTruth(const Transform & pose) {groundTruth_ = pose;}
887
892 const Transform & groundTruth() const {return groundTruth_;}
893
899 void setGlobalPose(const Transform & pose, const cv::Mat & covariance) {globalPose_ = pose; globalPoseCovariance_ = covariance;}
900
905 const Transform & globalPose() const {return globalPose_;}
906
911 const cv::Mat & globalPoseCovariance() const {return globalPoseCovariance_;}
912
917 void setGPS(const GPS & gps) {gps_ = gps;}
918
923 const GPS & gps() const {return gps_;}
924
931 void setIMU(const IMU & imu);
932
937 const IMU & imu() const {return imu_;}
938
943 void setEnvSensors(const EnvSensors & sensors) {_envSensors = sensors;}
944
949 void addEnvSensor(const EnvSensor & sensor) {_envSensors.insert(std::make_pair(sensor.type(), sensor));}
950
955 const EnvSensors & envSensors() const {return _envSensors;}
956
962 void setLandmarks(const Landmarks & landmarks) {_landmarks = landmarks;}
963
968 const Landmarks & landmarks() const {return _landmarks;}
969
978 unsigned long getMemoryUsed() const;
983 void clearCompressedData(bool images = true, bool scan = true, bool userData = true, bool occupancyGrid = true);
988 void clearRawData(bool images = true, bool scan = true, bool userData = true, bool occupancyGrid = true);
989
999 int isPointVisibleFromCameras(const cv::Point3f & pt) const;
1000
1001#ifdef HAVE_OPENCV_CUDEV
1006 const cv::cuda::GpuMat & imageRawGpu() const {return _imageRawGpu;}
1007
1012 void setImageRawGpu(const cv::cuda::GpuMat & image) {_imageRawGpu = image;}
1013
1018 const cv::cuda::GpuMat & depthOrRightRawGpu() const {return _depthOrRightRawGpu;}
1019
1024 void setDepthOrRightRawGpu(const cv::cuda::GpuMat & image) {_depthOrRightRawGpu = image;}
1025#endif
1026
1027private:
1028 int _id;
1029 double _stamp;
1030
1031 // Compressed data
1032 cv::Mat _imageCompressed;
1033 cv::Mat _depthOrRightCompressed;
1034 cv::Mat _depthConfidenceCompressed;
1035 LaserScan _laserScanCompressed;
1036
1037 // Raw data
1038 cv::Mat _imageRaw;
1039 cv::Mat _depthOrRightRaw;
1040 cv::Mat _depthConfidenceRaw;
1041 LaserScan _laserScanRaw;
1042
1043 // Camera models
1044 std::vector<CameraModel> _cameraModels;
1045 std::vector<StereoCameraModel> _stereoCameraModels;
1046
1047 // User data
1048 cv::Mat _userDataCompressed;
1049 cv::Mat _userDataRaw;
1050
1051 // Occupancy grid
1052 cv::Mat _groundCellsCompressed;
1053 cv::Mat _obstacleCellsCompressed;
1054 cv::Mat _emptyCellsCompressed;
1055 cv::Mat _groundCellsRaw;
1056 cv::Mat _obstacleCellsRaw;
1057 cv::Mat _emptyCellsRaw;
1058 float _cellSize;
1059 cv::Point3f _viewPoint;
1060
1061 // Environmental sensors
1062 EnvSensors _envSensors;
1063
1064 // Landmarks
1065 Landmarks _landmarks;
1066
1067 // Visual features
1068 std::vector<cv::KeyPoint> _keypoints;
1069 std::vector<cv::Point3f> _keypoints3D;
1070 cv::Mat _descriptors;
1071
1072 // Global descriptors
1073 std::vector<GlobalDescriptor> _globalDescriptors;
1074
1075 // Poses
1076 Transform groundTruth_;
1077 Transform globalPose_;
1078 cv::Mat globalPoseCovariance_;
1079
1080 // Sensor fusion
1081 GPS gps_;
1082 IMU imu_;
1083
1084#ifdef HAVE_OPENCV_CUDEV
1091 cv::cuda::GpuMat _imageRawGpu;
1092 cv::cuda::GpuMat _depthOrRightRawGpu;
1093#endif
1094};
1095
1096}
1097
1098
1099#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:937
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:795
void addEnvSensor(const EnvSensor &sensor)
Adds a single environmental sensor.
Definition SensorData.h:949
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:923
cv::Mat depthRaw() const
Returns the depth image (convenience method)
Definition SensorData.h:650
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:782
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:874
const cv::Mat & gridEmptyCellsRaw() const
Returns raw empty cells.
Definition SensorData.h:808
const EnvSensors & envSensors() const
Returns all environmental sensors.
Definition SensorData.h:955
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:802
const cv::Point3f & gridViewPoint() const
Returns the occupancy grid viewpoint.
Definition SensorData.h:827
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:905
double stamp() const
Returns the timestamp.
Definition SensorData.h:538
const cv::Mat & globalPoseCovariance() const
Returns the global pose covariance.
Definition SensorData.h:911
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:857
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:735
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:886
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:899
const Landmarks & landmarks() const
Returns landmarks.
Definition SensorData.h:968
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:821
void uncompressData()
Uncompresses all compressed data in-place.
cv::Mat rightRaw() const
Returns the right stereo image (convenience method)
Definition SensorData.h:661
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:741
const std::vector< cv::Point3f > & keypoints3D() const
Returns the 3D keypoints.
Definition SensorData.h:851
void setStereoCameraModel(const StereoCameraModel &stereoCameraModel)
Sets a single stereo camera model (clears previous models)
Definition SensorData.h:633
void setEnvSensors(const EnvSensors &sensors)
Sets all environmental sensors.
Definition SensorData.h:943
const cv::Mat & gridGroundCellsCompressed() const
Returns compressed ground cells.
Definition SensorData.h:789
void setStereoCameraModels(const std::vector< StereoCameraModel > &stereoCameraModels)
Sets multiple stereo camera models.
Definition SensorData.h:639
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:869
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:815
void addGlobalDescriptor(const GlobalDescriptor &descriptor)
Adds a global descriptor.
Definition SensorData.h:863
void setUserData(const cv::Mat &userData, bool clearPreviousData=true)
const std::vector< GlobalDescriptor > & globalDescriptors() const
Returns all global descriptors.
Definition SensorData.h:880
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:917
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:621
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:892
void setLandmarks(const Landmarks &landmarks)
Sets landmarks.
Definition SensorData.h:962
void setCameraModels(const std::vector< CameraModel > &models)
Sets multiple camera models.
Definition SensorData.h:627
const std::vector< cv::KeyPoint > & keypoints() const
Returns the 2D keypoints.
Definition SensorData.h:845
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