RTAB-Map 0.23.12
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
744 void setUserData(const cv::Mat & userData, bool clearPreviousData = true);
745 const cv::Mat & userDataRaw() const {return _userDataRaw;}
746 const cv::Mat & userDataCompressed() const {return _userDataCompressed;}
747
762 const cv::Mat & ground,
763 const cv::Mat & obstacles,
764 const cv::Mat & empty,
765 float cellSize,
766 const cv::Point3f & viewPoint);
771 const cv::Mat & gridGroundCellsRaw() const {return _groundCellsRaw;}
772
778 const cv::Mat & gridGroundCellsCompressed() const {return _groundCellsCompressed;}
779
784 const cv::Mat & gridObstacleCellsRaw() const {return _obstacleCellsRaw;}
785
791 const cv::Mat & gridObstacleCellsCompressed() const {return _obstacleCellsCompressed;}
792
797 const cv::Mat & gridEmptyCellsRaw() const {return _emptyCellsRaw;}
798
804 const cv::Mat & gridEmptyCellsCompressed() const {return _emptyCellsCompressed;}
805
810 float gridCellSize() const {return _cellSize;}
811
816 const cv::Point3f & gridViewPoint() const {return _viewPoint;}
817
828 void setFeatures(const std::vector<cv::KeyPoint> & keypoints, const std::vector<cv::Point3f> & keypoints3D, const cv::Mat & descriptors);
829
834 const std::vector<cv::KeyPoint> & keypoints() const {return _keypoints;}
835
840 const std::vector<cv::Point3f> & keypoints3D() const {return _keypoints3D;}
841
846 const cv::Mat & descriptors() const {return _descriptors;}
847
852 void addGlobalDescriptor(const GlobalDescriptor & descriptor) {_globalDescriptors.push_back(descriptor);}
853
858 void setGlobalDescriptors(const std::vector<GlobalDescriptor> & descriptors) {_globalDescriptors = descriptors;}
859
863 void clearGlobalDescriptors() {_globalDescriptors.clear();}
864
869 const std::vector<GlobalDescriptor> & globalDescriptors() const {return _globalDescriptors;}
870
875 void setGroundTruth(const Transform & pose) {groundTruth_ = pose;}
876
881 const Transform & groundTruth() const {return groundTruth_;}
882
888 void setGlobalPose(const Transform & pose, const cv::Mat & covariance) {globalPose_ = pose; globalPoseCovariance_ = covariance;}
889
894 const Transform & globalPose() const {return globalPose_;}
895
900 const cv::Mat & globalPoseCovariance() const {return globalPoseCovariance_;}
901
906 void setGPS(const GPS & gps) {gps_ = gps;}
907
912 const GPS & gps() const {return gps_;}
913
920 void setIMU(const IMU & imu);
921
926 const IMU & imu() const {return imu_;}
927
932 void setEnvSensors(const EnvSensors & sensors) {_envSensors = sensors;}
933
938 void addEnvSensor(const EnvSensor & sensor) {_envSensors.insert(std::make_pair(sensor.type(), sensor));}
939
944 const EnvSensors & envSensors() const {return _envSensors;}
945
951 void setLandmarks(const Landmarks & landmarks) {_landmarks = landmarks;}
952
957 const Landmarks & landmarks() const {return _landmarks;}
958
967 unsigned long getMemoryUsed() const;
972 void clearCompressedData(bool images = true, bool scan = true, bool userData = true, bool occupancyGrid = true);
977 void clearRawData(bool images = true, bool scan = true, bool userData = true, bool occupancyGrid = true);
978
988 int isPointVisibleFromCameras(const cv::Point3f & pt) const;
989
990#ifdef HAVE_OPENCV_CUDEV
995 const cv::cuda::GpuMat & imageRawGpu() const {return _imageRawGpu;}
996
1001 void setImageRawGpu(const cv::cuda::GpuMat & image) {_imageRawGpu = image;}
1002
1007 const cv::cuda::GpuMat & depthOrRightRawGpu() const {return _depthOrRightRawGpu;}
1008
1013 void setDepthOrRightRawGpu(const cv::cuda::GpuMat & image) {_depthOrRightRawGpu = image;}
1014#endif
1015
1016private:
1017 int _id;
1018 double _stamp;
1019
1020 // Compressed data
1021 cv::Mat _imageCompressed;
1022 cv::Mat _depthOrRightCompressed;
1023 cv::Mat _depthConfidenceCompressed;
1024 LaserScan _laserScanCompressed;
1025
1026 // Raw data
1027 cv::Mat _imageRaw;
1028 cv::Mat _depthOrRightRaw;
1029 cv::Mat _depthConfidenceRaw;
1030 LaserScan _laserScanRaw;
1031
1032 // Camera models
1033 std::vector<CameraModel> _cameraModels;
1034 std::vector<StereoCameraModel> _stereoCameraModels;
1035
1036 // User data
1037 cv::Mat _userDataCompressed;
1038 cv::Mat _userDataRaw;
1039
1040 // Occupancy grid
1041 cv::Mat _groundCellsCompressed;
1042 cv::Mat _obstacleCellsCompressed;
1043 cv::Mat _emptyCellsCompressed;
1044 cv::Mat _groundCellsRaw;
1045 cv::Mat _obstacleCellsRaw;
1046 cv::Mat _emptyCellsRaw;
1047 float _cellSize;
1048 cv::Point3f _viewPoint;
1049
1050 // Environmental sensors
1051 EnvSensors _envSensors;
1052
1053 // Landmarks
1054 Landmarks _landmarks;
1055
1056 // Visual features
1057 std::vector<cv::KeyPoint> _keypoints;
1058 std::vector<cv::Point3f> _keypoints3D;
1059 cv::Mat _descriptors;
1060
1061 // Global descriptors
1062 std::vector<GlobalDescriptor> _globalDescriptors;
1063
1064 // Poses
1065 Transform groundTruth_;
1066 Transform globalPose_;
1067 cv::Mat globalPoseCovariance_;
1068
1069 // Sensor fusion
1070 GPS gps_;
1071 IMU imu_;
1072
1073#ifdef HAVE_OPENCV_CUDEV
1080 cv::cuda::GpuMat _imageRawGpu;
1081 cv::cuda::GpuMat _depthOrRightRawGpu;
1082#endif
1083};
1084
1085}
1086
1087
1088#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:926
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:784
void addEnvSensor(const EnvSensor &sensor)
Adds a single environmental sensor.
Definition SensorData.h:938
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:912
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:771
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:863
const cv::Mat & gridEmptyCellsRaw() const
Returns raw empty cells.
Definition SensorData.h:797
const EnvSensors & envSensors() const
Returns all environmental sensors.
Definition SensorData.h:944
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:791
const cv::Point3f & gridViewPoint() const
Returns the occupancy grid viewpoint.
Definition SensorData.h:816
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:894
double stamp() const
Returns the timestamp.
Definition SensorData.h:527
const cv::Mat & globalPoseCovariance() const
Returns the global pose covariance.
Definition SensorData.h:900
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:846
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:875
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:888
const Landmarks & landmarks() const
Returns landmarks.
Definition SensorData.h:957
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:810
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:840
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:932
const cv::Mat & gridGroundCellsCompressed() const
Returns compressed ground cells.
Definition SensorData.h:778
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:858
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:804
void addGlobalDescriptor(const GlobalDescriptor &descriptor)
Adds a global descriptor.
Definition SensorData.h:852
void setUserData(const cv::Mat &userData, bool clearPreviousData=true)
const std::vector< GlobalDescriptor > & globalDescriptors() const
Returns all global descriptors.
Definition SensorData.h:869
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:906
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:881
void setLandmarks(const Landmarks &landmarks)
Sets landmarks.
Definition SensorData.h:951
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:834
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