RTAB-Map 0.23.10
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
485 bool isValid() const {
486 return !(_id == 0 &&
487 _stamp == 0.0 &&
488 _imageRaw.empty() &&
489 _imageCompressed.empty() &&
490 _depthOrRightRaw.empty() &&
491 _depthOrRightCompressed.empty() &&
492 _depthConfidenceRaw.empty() &&
493 _depthConfidenceCompressed.empty() &&
494 _laserScanRaw.isEmpty() &&
495 _laserScanCompressed.isEmpty() &&
496 _cameraModels.empty() &&
497 _stereoCameraModels.empty() &&
498 _userDataRaw.empty() &&
499 _userDataCompressed.empty() &&
500 _keypoints.size() == 0 &&
501 _descriptors.empty() &&
502 _groundCellsRaw.empty() &&
503 _groundCellsCompressed.empty() &&
504 _obstacleCellsRaw.empty() &&
505 _obstacleCellsCompressed.empty() &&
506 _emptyCellsRaw.empty() &&
507 _emptyCellsCompressed.empty() &&
508 imu_.empty());
509 }
510
515 int id() const {return _id;}
516
521 void setId(int id) {_id = id;}
522
527 double stamp() const {return _stamp;}
528
533 void setStamp(double stamp) {_stamp = stamp;}
534
540 const cv::Mat & imageCompressed() const {return _imageCompressed;}
541
547 const cv::Mat & depthOrRightCompressed() const {return _depthOrRightCompressed;}
548
554 const cv::Mat & depthConfidenceCompressed() const {return _depthConfidenceCompressed;}
555
560 const LaserScan & laserScanCompressed() const {return _laserScanCompressed;}
561
566 const cv::Mat & imageRaw() const {return _imageRaw;}
567
573 const cv::Mat & depthOrRightRaw() const {return _depthOrRightRaw;}
574
579 const cv::Mat & depthConfidenceRaw() const {return _depthConfidenceRaw;}
580
585 const LaserScan & laserScanRaw() const {return _laserScanRaw;}
586
592 void setRGBDImage(const cv::Mat & rgb, const cv::Mat & depth, const CameraModel & model, bool clearPreviousData = true);
593 void setRGBDImage(const cv::Mat & rgb, const cv::Mat & depth, const cv::Mat & depth_confidence, const CameraModel & model, bool clearPreviousData = true);
594 void setRGBDImage(const cv::Mat & rgb, const cv::Mat & depth, const std::vector<CameraModel> & models, bool clearPreviousData = true);
595 void setRGBDImage(const cv::Mat & rgb, const cv::Mat & depth, const cv::Mat & depth_confidence, const std::vector<CameraModel> & models, bool clearPreviousData = true);
596 void setStereoImage(const cv::Mat & left, const cv::Mat & right, const StereoCameraModel & stereoCameraModel, bool clearPreviousData = true);
597 void setStereoImage(const cv::Mat & left, const cv::Mat & right, const std::vector<StereoCameraModel> & stereoCameraModels, bool clearPreviousData = true);
598
604 void setLaserScan(const LaserScan & laserScan, bool clearPreviousData = true);
605
610 void setCameraModel(const CameraModel & model) {_cameraModels.clear(); _cameraModels.push_back(model);}
611
616 void setCameraModels(const std::vector<CameraModel> & models) {_cameraModels = models;}
617
622 void setStereoCameraModel(const StereoCameraModel & stereoCameraModel) {_stereoCameraModels.clear(); _stereoCameraModels.push_back(stereoCameraModel);}
623
628 void setStereoCameraModels(const std::vector<StereoCameraModel> & stereoCameraModels) {_stereoCameraModels = stereoCameraModels;}
629
639 cv::Mat depthRaw() const {return !(_depthOrRightRaw.type()==CV_8UC1 || _depthOrRightRaw.type()==CV_8UC3) ? _depthOrRightRaw : cv::Mat();}
640
650 cv::Mat rightRaw() const {return _depthOrRightRaw.type()==CV_8UC1 || _depthOrRightRaw.type()==CV_8UC3 ? _depthOrRightRaw : cv::Mat();}
651
652 // Use setRGBDImage() or setStereoImage() with clearNotUpdated=false or removeRawData() instead. To be backward compatible, this function doesn't clear compressed data.
653 RTABMAP_DEPRECATED void setImageRaw(const cv::Mat & image);
654 // Use setRGBDImage() or setStereoImage() with clearNotUpdated=false or removeRawData() instead. To be backward compatible, this function doesn't clear compressed data.
655 RTABMAP_DEPRECATED void setDepthOrRightRaw(const cv::Mat & image);
656 // Use setLaserScan() with clearNotUpdated=false or removeRawData() instead. To be backward compatible, this function doesn't clear compressed data.
657 RTABMAP_DEPRECATED void setLaserScanRaw(const LaserScan & scan);
658 // Use setUserData() or removeRawData() instead.
659 RTABMAP_DEPRECATED void setUserDataRaw(const cv::Mat & data);
660
668
687 cv::Mat * imageRaw,
688 cv::Mat * depthOrRightRaw,
689 LaserScan * laserScanRaw = 0,
690 cv::Mat * userDataRaw = 0,
691 cv::Mat * groundCellsRaw = 0,
692 cv::Mat * obstacleCellsRaw = 0,
693 cv::Mat * emptyCellsRaw = 0,
694 cv::Mat * depthConfidenceRaw = 0);
695
711 cv::Mat * imageRaw,
712 cv::Mat * depthOrRightRaw,
713 LaserScan * laserScanRaw = 0,
714 cv::Mat * userDataRaw = 0,
715 cv::Mat * groundCellsRaw = 0,
716 cv::Mat * obstacleCellsRaw = 0,
717 cv::Mat * emptyCellsRaw = 0,
718 cv::Mat * depthConfidenceRaw = 0) const;
719
724 const std::vector<CameraModel> & cameraModels() const {return _cameraModels;}
725
730 const std::vector<StereoCameraModel> & stereoCameraModels() const {return _stereoCameraModels;}
731
740 void setUserData(const cv::Mat & userData, bool clearPreviousData = true);
741 const cv::Mat & userDataRaw() const {return _userDataRaw;}
742 const cv::Mat & userDataCompressed() const {return _userDataCompressed;}
743
758 const cv::Mat & ground,
759 const cv::Mat & obstacles,
760 const cv::Mat & empty,
761 float cellSize,
762 const cv::Point3f & viewPoint);
767 const cv::Mat & gridGroundCellsRaw() const {return _groundCellsRaw;}
768
774 const cv::Mat & gridGroundCellsCompressed() const {return _groundCellsCompressed;}
775
780 const cv::Mat & gridObstacleCellsRaw() const {return _obstacleCellsRaw;}
781
787 const cv::Mat & gridObstacleCellsCompressed() const {return _obstacleCellsCompressed;}
788
793 const cv::Mat & gridEmptyCellsRaw() const {return _emptyCellsRaw;}
794
800 const cv::Mat & gridEmptyCellsCompressed() const {return _emptyCellsCompressed;}
801
806 float gridCellSize() const {return _cellSize;}
807
812 const cv::Point3f & gridViewPoint() const {return _viewPoint;}
813
824 void setFeatures(const std::vector<cv::KeyPoint> & keypoints, const std::vector<cv::Point3f> & keypoints3D, const cv::Mat & descriptors);
825
830 const std::vector<cv::KeyPoint> & keypoints() const {return _keypoints;}
831
836 const std::vector<cv::Point3f> & keypoints3D() const {return _keypoints3D;}
837
842 const cv::Mat & descriptors() const {return _descriptors;}
843
848 void addGlobalDescriptor(const GlobalDescriptor & descriptor) {_globalDescriptors.push_back(descriptor);}
849
854 void setGlobalDescriptors(const std::vector<GlobalDescriptor> & descriptors) {_globalDescriptors = descriptors;}
855
859 void clearGlobalDescriptors() {_globalDescriptors.clear();}
860
865 const std::vector<GlobalDescriptor> & globalDescriptors() const {return _globalDescriptors;}
866
871 void setGroundTruth(const Transform & pose) {groundTruth_ = pose;}
872
877 const Transform & groundTruth() const {return groundTruth_;}
878
884 void setGlobalPose(const Transform & pose, const cv::Mat & covariance) {globalPose_ = pose; globalPoseCovariance_ = covariance;}
885
890 const Transform & globalPose() const {return globalPose_;}
891
896 const cv::Mat & globalPoseCovariance() const {return globalPoseCovariance_;}
897
902 void setGPS(const GPS & gps) {gps_ = gps;}
903
908 const GPS & gps() const {return gps_;}
909
916 void setIMU(const IMU & imu);
917
922 const IMU & imu() const {return imu_;}
923
928 void setEnvSensors(const EnvSensors & sensors) {_envSensors = sensors;}
929
934 void addEnvSensor(const EnvSensor & sensor) {_envSensors.insert(std::make_pair(sensor.type(), sensor));}
935
940 const EnvSensors & envSensors() const {return _envSensors;}
941
947 void setLandmarks(const Landmarks & landmarks) {_landmarks = landmarks;}
948
953 const Landmarks & landmarks() const {return _landmarks;}
954
963 unsigned long getMemoryUsed() const;
968 void clearCompressedData(bool images = true, bool scan = true, bool userData = true, bool occupancyGrid = true);
973 void clearRawData(bool images = true, bool scan = true, bool userData = true, bool occupancyGrid = true);
974
984 int isPointVisibleFromCameras(const cv::Point3f & pt) const;
985
986#ifdef HAVE_OPENCV_CUDEV
991 const cv::cuda::GpuMat & imageRawGpu() const {return _imageRawGpu;}
992
997 void setImageRawGpu(const cv::cuda::GpuMat & image) {_imageRawGpu = image;}
998
1003 const cv::cuda::GpuMat & depthOrRightRawGpu() const {return _depthOrRightRawGpu;}
1004
1009 void setDepthOrRightRawGpu(const cv::cuda::GpuMat & image) {_depthOrRightRawGpu = image;}
1010#endif
1011
1012private:
1013 int _id;
1014 double _stamp;
1015
1016 // Compressed data
1017 cv::Mat _imageCompressed;
1018 cv::Mat _depthOrRightCompressed;
1019 cv::Mat _depthConfidenceCompressed;
1020 LaserScan _laserScanCompressed;
1021
1022 // Raw data
1023 cv::Mat _imageRaw;
1024 cv::Mat _depthOrRightRaw;
1025 cv::Mat _depthConfidenceRaw;
1026 LaserScan _laserScanRaw;
1027
1028 // Camera models
1029 std::vector<CameraModel> _cameraModels;
1030 std::vector<StereoCameraModel> _stereoCameraModels;
1031
1032 // User data
1033 cv::Mat _userDataCompressed;
1034 cv::Mat _userDataRaw;
1035
1036 // Occupancy grid
1037 cv::Mat _groundCellsCompressed;
1038 cv::Mat _obstacleCellsCompressed;
1039 cv::Mat _emptyCellsCompressed;
1040 cv::Mat _groundCellsRaw;
1041 cv::Mat _obstacleCellsRaw;
1042 cv::Mat _emptyCellsRaw;
1043 float _cellSize;
1044 cv::Point3f _viewPoint;
1045
1046 // Environmental sensors
1047 EnvSensors _envSensors;
1048
1049 // Landmarks
1050 Landmarks _landmarks;
1051
1052 // Visual features
1053 std::vector<cv::KeyPoint> _keypoints;
1054 std::vector<cv::Point3f> _keypoints3D;
1055 cv::Mat _descriptors;
1056
1057 // Global descriptors
1058 std::vector<GlobalDescriptor> _globalDescriptors;
1059
1060 // Poses
1061 Transform groundTruth_;
1062 Transform globalPose_;
1063 cv::Mat globalPoseCovariance_;
1064
1065 // Sensor fusion
1066 GPS gps_;
1067 IMU imu_;
1068
1069#ifdef HAVE_OPENCV_CUDEV
1076 cv::cuda::GpuMat _imageRawGpu;
1077 cv::cuda::GpuMat _depthOrRightRawGpu;
1078#endif
1079};
1080
1081}
1082
1083
1084#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:922
const cv::Mat & depthConfidenceRaw() const
Returns the raw depth confidence map.
Definition SensorData.h:579
const cv::Mat & gridObstacleCellsRaw() const
Returns raw obstacle cells.
Definition SensorData.h:780
void addEnvSensor(const EnvSensor &sensor)
Adds a single environmental sensor.
Definition SensorData.h:934
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:560
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:908
cv::Mat depthRaw() const
Returns the depth image (convenience method)
Definition SensorData.h:639
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:573
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:767
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:859
const cv::Mat & gridEmptyCellsRaw() const
Returns raw empty cells.
Definition SensorData.h:793
const EnvSensors & envSensors() const
Returns all environmental sensors.
Definition SensorData.h:940
void setId(int id)
Sets the sensor data ID.
Definition SensorData.h:521
const cv::Mat & gridObstacleCellsCompressed() const
Returns compressed obstacle cells.
Definition SensorData.h:787
const cv::Point3f & gridViewPoint() const
Returns the occupancy grid viewpoint.
Definition SensorData.h:812
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:890
double stamp() const
Returns the timestamp.
Definition SensorData.h:527
const cv::Mat & globalPoseCovariance() const
Returns the global pose covariance.
Definition SensorData.h:896
void setStamp(double stamp)
Sets the timestamp.
Definition SensorData.h:533
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:842
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:724
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:871
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:884
const Landmarks & landmarks() const
Returns landmarks.
Definition SensorData.h:953
int id() const
Returns the sensor data ID.
Definition SensorData.h:515
const cv::Mat & depthOrRightCompressed() const
Returns the compressed depth or right stereo image.
Definition SensorData.h:547
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:806
void uncompressData()
Uncompresses all compressed data in-place.
cv::Mat rightRaw() const
Returns the right stereo image (convenience method)
Definition SensorData.h:650
const cv::Mat & imageCompressed() const
Returns the compressed RGB/grayscale image.
Definition SensorData.h:540
const std::vector< StereoCameraModel > & stereoCameraModels() const
Returns the stereo camera models.
Definition SensorData.h:730
const std::vector< cv::Point3f > & keypoints3D() const
Returns the 3D keypoints.
Definition SensorData.h:836
void setStereoCameraModel(const StereoCameraModel &stereoCameraModel)
Sets a single stereo camera model (clears previous models)
Definition SensorData.h:622
void setEnvSensors(const EnvSensors &sensors)
Sets all environmental sensors.
Definition SensorData.h:928
const cv::Mat & gridGroundCellsCompressed() const
Returns compressed ground cells.
Definition SensorData.h:774
void setStereoCameraModels(const std::vector< StereoCameraModel > &stereoCameraModels)
Sets multiple stereo camera models.
Definition SensorData.h:628
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:854
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:800
void addGlobalDescriptor(const GlobalDescriptor &descriptor)
Adds a global descriptor.
Definition SensorData.h:848
void setUserData(const cv::Mat &userData, bool clearPreviousData=true)
const std::vector< GlobalDescriptor > & globalDescriptors() const
Returns all global descriptors.
Definition SensorData.h:865
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:902
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:485
void setCameraModel(const CameraModel &model)
Sets a single camera model (clears previous models)
Definition SensorData.h:610
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:566
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:554
const LaserScan & laserScanRaw() const
Returns the raw laser scan.
Definition SensorData.h:585
const Transform & groundTruth() const
Returns the ground truth pose.
Definition SensorData.h:877
void setLandmarks(const Landmarks &landmarks)
Sets landmarks.
Definition SensorData.h:947
void setCameraModels(const std::vector< CameraModel > &models)
Sets multiple camera models.
Definition SensorData.h:616
const std::vector< cv::KeyPoint > & keypoints() const
Returns the 2D keypoints.
Definition SensorData.h:830
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