DBReader now inherits from Camera (so that CameraThread's post processing stuff can be used with a database stream)

This commit is contained in:
matlabbe
2016-06-21 11:22:24 -04:00
parent cdddb1209e
commit 0ec39e3c77
20 changed files with 435 additions and 642 deletions

View File

@@ -76,7 +76,7 @@ protected:
/**
* returned rgb and depth images should be already rectified if calibration was loaded
*/
virtual SensorData captureImage() = 0;
virtual SensorData captureImage(CameraInfo * info = 0) = 0;
int getNextSeqID() {return ++_seq;}

View File

@@ -43,7 +43,8 @@ public:
timeDisparity(0.0f),
timeMirroring(0.0f),
timeImageDecimation(0.0f),
timeScanFromDepth(0.0f)
timeScanFromDepth(0.0f),
odomCovariance(cv::Mat::eye(6,6,CV_64FC1))
{
}
virtual ~CameraInfo() {}
@@ -55,6 +56,8 @@ public:
float timeMirroring;
float timeImageDecimation;
float timeScanFromDepth;
Transform odomPose;
cv::Mat odomCovariance;
};
} // namespace rtabmap

View File

@@ -119,7 +119,7 @@ public:
}
protected:
virtual SensorData captureImage();
virtual SensorData captureImage(CameraInfo * info = 0);
private:
std::string _path;
@@ -194,7 +194,7 @@ public:
const std::string & getFilePath() const {return _filePath;}
protected:
virtual SensorData captureImage();
virtual SensorData captureImage(CameraInfo * info = 0);
private:
// File type

View File

@@ -97,7 +97,7 @@ public:
virtual std::string getSerial() const;
protected:
virtual SensorData captureImage();
virtual SensorData captureImage(CameraInfo * info = 0);
private:
pcl::Grabber* interface_;
@@ -131,7 +131,7 @@ public:
virtual std::string getSerial() const {return "";} // unknown with OpenCV
protected:
virtual SensorData captureImage();
virtual SensorData captureImage(CameraInfo * info = 0);
private:
bool _asus;
@@ -168,7 +168,7 @@ public:
void setOpenNI2StampsAndIDsUsed(bool used) {_openNI2StampsAndIDsUsed = used;}
protected:
virtual SensorData captureImage();
virtual SensorData captureImage(CameraInfo * info = 0);
private:
openni::Device * _device;
@@ -204,7 +204,7 @@ public:
virtual std::string getSerial() const;
protected:
virtual SensorData captureImage();
virtual SensorData captureImage(CameraInfo * info = 0);
private:
int deviceId_;
@@ -249,7 +249,7 @@ public:
virtual std::string getSerial() const;
protected:
virtual SensorData captureImage();
virtual SensorData captureImage(CameraInfo * info = 0);
private:
int deviceId_;
@@ -291,7 +291,7 @@ public:
virtual std::string getSerial() const;
protected:
virtual SensorData captureImage();
virtual SensorData captureImage(CameraInfo * info = 0);
private:
CameraImages cameraDepth_;

View File

@@ -70,7 +70,7 @@ public:
virtual std::string getSerial() const;
protected:
virtual SensorData captureImage();
virtual SensorData captureImage(CameraInfo * info = 0);
private:
DC1394Device *device_;
@@ -95,7 +95,7 @@ public:
virtual std::string getSerial() const;
protected:
virtual SensorData captureImage();
virtual SensorData captureImage(CameraInfo * info = 0);
private:
FlyCapture2::Camera * camera_;
@@ -134,7 +134,7 @@ public:
virtual std::string getSerial() const;
protected:
virtual SensorData captureImage();
virtual SensorData captureImage(CameraInfo * info = 0);
private:
sl::zed::Camera * zed_;
@@ -177,7 +177,7 @@ public:
virtual std::string getSerial() const;
protected:
virtual SensorData captureImage();
virtual SensorData captureImage(CameraInfo * info = 0);
private:
CameraImages * camera2_;
@@ -213,7 +213,7 @@ public:
virtual std::string getSerial() const;
protected:
virtual SensorData captureImage();
virtual SensorData captureImage(CameraInfo * info = 0);
private:
cv::VideoCapture capture_;

View File

@@ -30,11 +30,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "rtabmap/core/RtabmapExp.h" // DLL export/import defines
#include <rtabmap/utilite/UThreadNode.h>
#include <rtabmap/utilite/UTimer.h>
#include <rtabmap/utilite/UEventsSender.h>
#include <rtabmap/core/Transform.h>
#include <rtabmap/core/OdometryEvent.h>
#include <rtabmap/core/Camera.h>
#include <opencv2/core/core.hpp>
@@ -45,36 +43,45 @@ namespace rtabmap {
class DBDriver;
class RTABMAP_EXP DBReader : public UThreadNode, public UEventsSender {
class RTABMAP_EXP DBReader : public Camera {
public:
DBReader(const std::string & databasePath,
float frameRate = 0.0f,
float frameRate = 0.0f, // -1 = use Database stamps, 0 = inf
bool odometryIgnored = false,
bool ignoreGoalDelay = false,
bool goalsIgnored = false,
int startIndex = 0,
int cameraIndex = -1);
DBReader(const std::list<std::string> & databasePaths,
float frameRate = 0.0f,
float frameRate = 0.0f, // -1 = use Database stamps, 0 = inf
bool odometryIgnored = false,
bool ignoreGoalDelay = false,
bool goalsIgnored = false,
int startIndex = 0,
int cameraIndex = -1);
virtual ~DBReader();
bool init(int startIndex=0);
void setFrameRate(float frameRate);
OdometryEvent getNextData();
virtual bool init(
const std::string & calibrationFolder = ".",
const std::string & cameraName = "");
virtual bool isCalibrated() const;
virtual std::string getSerial() const;
bool isOdometryIgnored() const {return _odometryIgnored;}
protected:
virtual void mainLoopBegin();
virtual void mainLoop();
virtual SensorData captureImage(CameraInfo * info = 0);
private:
SensorData getNextData(CameraInfo * info = 0);
private:
std::list<std::string> _paths;
float _frameRate; // -1 = use Database stamps, 0 = inf
bool _odometryIgnored;
bool _ignoreGoalDelay;
bool _goalsIgnored;
int _startIndex;
int _cameraIndex;
DBDriver * _dbDriver;
@@ -83,6 +90,7 @@ private:
std::set<int>::iterator _currentId;
double _previousStamp;
int _previousMapID;
bool _calibrated;
};
} /* namespace rtabmap */