mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-01 17:10:26 +08:00
Refactored Camera classes and Preferences->Source menu
This commit is contained in:
@@ -86,13 +86,6 @@ public:
|
||||
kMonitoringPaused
|
||||
};
|
||||
|
||||
enum SrcType {
|
||||
kSrcUndefined,
|
||||
kSrcVideo,
|
||||
kSrcImages,
|
||||
kSrcStream
|
||||
};
|
||||
|
||||
public:
|
||||
/**
|
||||
* @param prefDialog If NULL, a default dialog is created. This
|
||||
@@ -141,10 +134,7 @@ private slots:
|
||||
void deleteMemory();
|
||||
void openWorkingDirectory();
|
||||
void updateEditMenu();
|
||||
void selectImages();
|
||||
void selectVideo();
|
||||
void selectStream();
|
||||
void selectDatabase();
|
||||
void selectOpenni();
|
||||
void selectFreenect();
|
||||
void selectOpenniCv();
|
||||
@@ -161,6 +151,7 @@ private slots:
|
||||
void downloadPoseGraph();
|
||||
void clearTheCache();
|
||||
void openPreferences();
|
||||
void openPreferencesSource();
|
||||
void setDefaultViews();
|
||||
void selectScreenCaptureFormat(bool checked);
|
||||
void takeScreenshot();
|
||||
@@ -252,9 +243,6 @@ private:
|
||||
rtabmap::DBReader * _dbReader;
|
||||
rtabmap::OdometryThread * _odomThread;
|
||||
|
||||
SrcType _srcType;
|
||||
QString _srcPath;
|
||||
|
||||
//Dialogs
|
||||
PreferencesDialog * _preferencesDialog;
|
||||
AboutDialog * _aboutDialog;
|
||||
|
||||
@@ -58,6 +58,7 @@ protected:
|
||||
virtual void handleEvent(UEvent * event);
|
||||
|
||||
private slots:
|
||||
void reset();
|
||||
void processData(const rtabmap::OdometryEvent & odom);
|
||||
|
||||
private:
|
||||
|
||||
@@ -59,7 +59,7 @@ namespace rtabmap {
|
||||
|
||||
class Signature;
|
||||
class LoopClosureViewer;
|
||||
class CameraRGBD;
|
||||
class Camera;
|
||||
class CalibrationDialog;
|
||||
|
||||
class RTABMAPGUI_EXP PreferencesDialog : public QDialog
|
||||
@@ -79,19 +79,27 @@ public:
|
||||
Q_DECLARE_FLAGS(PANEL_FLAGS, PanelFlag);
|
||||
|
||||
enum Src {
|
||||
kSrcUndef,
|
||||
kSrcUsbDevice,
|
||||
kSrcImages,
|
||||
kSrcVideo,
|
||||
kSrcOpenNI_PCL,
|
||||
kSrcFreenect,
|
||||
kSrcOpenNI_CV,
|
||||
kSrcOpenNI_CV_ASUS,
|
||||
kSrcOpenNI2,
|
||||
kSrcFreenect2,
|
||||
kSrcStereoDC1394,
|
||||
kSrcStereoFlyCapture2,
|
||||
kSrcStereoImages
|
||||
kSrcUndef = -1,
|
||||
|
||||
kSrcRGBD = 0,
|
||||
kSrcOpenNI_PCL = 0,
|
||||
kSrcFreenect = 1,
|
||||
kSrcOpenNI_CV = 2,
|
||||
kSrcOpenNI_CV_ASUS = 3,
|
||||
kSrcOpenNI2 = 4,
|
||||
kSrcFreenect2 = 5,
|
||||
|
||||
kSrcStereo = 100,
|
||||
kSrcDC1394 = 100,
|
||||
kSrcFlyCapture2 = 101,
|
||||
kSrcStereoImages = 102,
|
||||
|
||||
kSrcRGB = 200,
|
||||
kSrcUsbDevice = 200,
|
||||
kSrcImages = 201,
|
||||
kSrcVideo = 202,
|
||||
|
||||
kSrcDatabase = 300
|
||||
};
|
||||
|
||||
public:
|
||||
@@ -100,6 +108,7 @@ public:
|
||||
|
||||
virtual QString getIniFilePath() const;
|
||||
void init();
|
||||
void setCurrentPanelToSource();
|
||||
|
||||
// save stuff
|
||||
void saveSettings();
|
||||
@@ -162,26 +171,23 @@ public:
|
||||
// source panel
|
||||
double getGeneralInputRate() const;
|
||||
bool isSourceMirroring() const;
|
||||
bool isSourceImageUsed() const;
|
||||
bool isSourceDatabaseUsed() const;
|
||||
bool isSourceRGBDUsed() const;
|
||||
PreferencesDialog::Src getSourceImageType() const;
|
||||
QString getSourceImageTypeStr() const;
|
||||
int getSourceWidth() const;
|
||||
int getSourceHeight() const;
|
||||
QString getCalibrationName() const;
|
||||
PreferencesDialog::Src getSourceType() const;
|
||||
PreferencesDialog::Src getSourceDriver() const;
|
||||
QString getSourceDriverStr() const;
|
||||
QString getSourceDevice() const;
|
||||
|
||||
QString getSourceImagesPath() const; //Images group
|
||||
QString getSourceImagesSuffix() const; //Images group
|
||||
int getSourceImagesSuffixIndex() const; //Images group
|
||||
int getSourceImagesStartPos() const; //Images group
|
||||
bool getSourceImagesRefreshDir() const; //Images group
|
||||
QString getSourceVideoPath() const; //Video group
|
||||
int getSourceUsbDeviceId() const; //UsbDevice group
|
||||
QString getSourceDatabasePath() const; //Database group
|
||||
bool getSourceDatabaseOdometryIgnored() const; //Database group
|
||||
bool getSourceDatabaseGoalDelayIgnored() const; //Database group
|
||||
int getSourceDatabaseStartPos() const; //Database group
|
||||
bool getSourceDatabaseStampsUsed() const;//Database group
|
||||
Src getSourceRGBD() const; // Openni group
|
||||
bool getSourceOpenni2AutoWhiteBalance() const; //Openni group
|
||||
bool getSourceOpenni2AutoExposure() const; //Openni group
|
||||
int getSourceOpenni2Exposure() const; //Openni group
|
||||
@@ -189,9 +195,8 @@ public:
|
||||
bool getSourceOpenni2Mirroring() const; //Openni group
|
||||
int getSourceFreenect2Format() const; //Openni group
|
||||
bool isSourceRGBDColorOnly() const;
|
||||
QString getSourceOpenniDevice() const; //Openni group
|
||||
Transform getSourceOpenniLocalTransform() const; //Openni group
|
||||
CameraRGBD * createCameraRGBD(bool forCalibration = false); // return camera should be deleted if not null
|
||||
Transform getSourceLocalTransform() const; //Openni group
|
||||
Camera * createCamera(bool useRawImages = false); // return camera should be deleted if not null
|
||||
|
||||
int getIgnoredDCComponents() const;
|
||||
|
||||
@@ -221,9 +226,7 @@ public slots:
|
||||
void setDetectionRate(double value);
|
||||
void setTimeLimit(float value);
|
||||
void setSLAMMode(bool enabled);
|
||||
void selectSourceImage(Src src = kSrcUndef);
|
||||
void selectSourceDatabase(bool user = false);
|
||||
void selectSourceRGBD(Src src = kSrcUndef);
|
||||
void selectSourceDriver(Src src);
|
||||
void calibrate();
|
||||
|
||||
private slots:
|
||||
@@ -251,11 +254,19 @@ private slots:
|
||||
void setupTreeView();
|
||||
void updateBasicParameter();
|
||||
void openDatabaseViewer();
|
||||
void selectSourceDatabase();
|
||||
void selectSourceStereoImagesStamps();
|
||||
void selectSourceStereoImagesPath();
|
||||
void selectSourceImagesPath();
|
||||
void selectSourceVideoPath();
|
||||
void selectSourceOniPath();
|
||||
void selectSourceOni2Path();
|
||||
void updateSourceGrpVisibility();
|
||||
void updateRGBDCameraGroupBoxVisibility();
|
||||
void updateRGBCameraGroupBoxVisibility();
|
||||
void updateStereoCameraGroupBoxVisibility();
|
||||
void testOdometry();
|
||||
void testRGBDCamera();
|
||||
void testCamera();
|
||||
|
||||
protected:
|
||||
virtual void showEvent ( QShowEvent * event );
|
||||
|
||||
@@ -28,6 +28,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#include "AboutDialog.h"
|
||||
#include "rtabmap/core/Rtabmap.h"
|
||||
#include "rtabmap/core/CameraRGBD.h"
|
||||
#include "rtabmap/core/CameraStereo.h"
|
||||
#include "rtabmap/core/Graph.h"
|
||||
#include "ui_aboutDialog.h"
|
||||
#include <opencv2/core/version.hpp>
|
||||
|
||||
@@ -167,6 +167,7 @@ void CalibrationDialog::setStereoMode(bool stereo)
|
||||
ui_->lineEdit_R_2->setVisible(stereo_);
|
||||
ui_->lineEdit_P_2->setVisible(stereo_);
|
||||
ui_->radioButton_stereoRectified->setVisible(stereo_);
|
||||
ui_->checkBox_switchImages->setVisible(stereo_);
|
||||
}
|
||||
|
||||
void CalibrationDialog::setBoardWidth(int width)
|
||||
@@ -234,8 +235,7 @@ void CalibrationDialog::handleEvent(UEvent * event)
|
||||
if(event->getClassName().compare("CameraEvent") == 0)
|
||||
{
|
||||
rtabmap::CameraEvent * e = (rtabmap::CameraEvent *)event;
|
||||
if(e->getCode() == rtabmap::CameraEvent::kCodeImage ||
|
||||
e->getCode() == rtabmap::CameraEvent::kCodeImageDepth)
|
||||
if(e->getCode() == rtabmap::CameraEvent::kCodeData)
|
||||
{
|
||||
processingData_ = true;
|
||||
QMetaObject::invokeMethod(this, "processImages",
|
||||
|
||||
@@ -32,6 +32,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#include <rtabmap/gui/ImageView.h>
|
||||
#include <rtabmap/gui/CloudViewer.h>
|
||||
#include <rtabmap/gui/UCv2Qt.h>
|
||||
#include <rtabmap/utilite/ULogger.h>
|
||||
#include <QtCore/QMetaType>
|
||||
#include <QHBoxLayout>
|
||||
#include <QVBoxLayout>
|
||||
@@ -76,17 +77,33 @@ CameraViewer::~CameraViewer()
|
||||
void CameraViewer::showImage(const rtabmap::SensorData & data)
|
||||
{
|
||||
processingImages_ = true;
|
||||
imageView_->setImage(uCvMat2QImage(data.imageRaw()));
|
||||
imageView_->setImageDepth(uCvMat2QImage(data.depthOrRightRaw()));
|
||||
if(!data.depthOrRightRaw().empty() && (data.stereoCameraModel().isValid() || data.cameraModels().size()))
|
||||
if(!data.imageRaw().empty())
|
||||
{
|
||||
cloudView_->addOrUpdateCloud("cloud", util3d::cloudFromSensorData(data));
|
||||
imageView_->setImage(uCvMat2QImage(data.imageRaw()));
|
||||
}
|
||||
if(!data.depthOrRightRaw().empty())
|
||||
{
|
||||
imageView_->setImageDepth(uCvMat2QImage(data.depthOrRightRaw()));
|
||||
}
|
||||
if((data.stereoCameraModel().isValid() || data.cameraModels().size()))
|
||||
{
|
||||
if(!data.imageRaw().empty() && !data.depthOrRightRaw().empty())
|
||||
{
|
||||
cloudView_->addOrUpdateCloud("cloud", util3d::cloudRGBFromSensorData(data));
|
||||
cloudView_->setVisible(true);
|
||||
cloudView_->update();
|
||||
}
|
||||
else if(!data.depthOrRightRaw().empty())
|
||||
{
|
||||
cloudView_->addOrUpdateCloud("cloud", util3d::cloudFromSensorData(data));
|
||||
cloudView_->setVisible(true);
|
||||
cloudView_->update();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cloudView_->setVisible(false);
|
||||
}
|
||||
cloudView_->update();
|
||||
processingImages_ = false;
|
||||
}
|
||||
|
||||
@@ -95,8 +112,7 @@ void CameraViewer::handleEvent(UEvent * event)
|
||||
if(event->getClassName().compare("CameraEvent") == 0)
|
||||
{
|
||||
CameraEvent * camEvent = (CameraEvent*)event;
|
||||
if(camEvent->getCode() == CameraEvent::kCodeImageDepth ||
|
||||
camEvent->getCode() == CameraEvent::kCodeImage)
|
||||
if(camEvent->getCode() == CameraEvent::kCodeData)
|
||||
{
|
||||
if(camEvent->data().isValid())
|
||||
{
|
||||
|
||||
@@ -171,8 +171,7 @@ void DataRecorder::handleEvent(UEvent * event)
|
||||
if(event->getClassName().compare("CameraEvent") == 0)
|
||||
{
|
||||
CameraEvent * camEvent = (CameraEvent*)event;
|
||||
if(camEvent->getCode() == CameraEvent::kCodeImageDepth ||
|
||||
camEvent->getCode() == CameraEvent::kCodeImage)
|
||||
if(camEvent->getCode() == CameraEvent::kCodeData)
|
||||
{
|
||||
if(camEvent->data().isValid())
|
||||
{
|
||||
|
||||
@@ -29,5 +29,6 @@
|
||||
<file>images/sense.png</file>
|
||||
<file>images/xtion_pro_live.png</file>
|
||||
<file>images/bumblebee2.png</file>
|
||||
<file>images/webcam.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
||||
@@ -29,7 +29,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
#include "ui_mainWindow.h"
|
||||
|
||||
#include "rtabmap/core/Camera.h"
|
||||
#include "rtabmap/core/CameraRGB.h"
|
||||
#include "rtabmap/core/CameraStereo.h"
|
||||
#include "rtabmap/core/CameraThread.h"
|
||||
#include "rtabmap/core/CameraEvent.h"
|
||||
#include "rtabmap/core/DBReader.h"
|
||||
@@ -118,7 +119,6 @@ MainWindow::MainWindow(PreferencesDialog * prefDialog, QWidget * parent) :
|
||||
_camera(0),
|
||||
_dbReader(0),
|
||||
_odomThread(0),
|
||||
_srcType(kSrcUndefined),
|
||||
_preferencesDialog(0),
|
||||
_aboutDialog(0),
|
||||
_exportDialog(0),
|
||||
@@ -338,7 +338,7 @@ MainWindow::MainWindow(PreferencesDialog * prefDialog, QWidget * parent) :
|
||||
_ui->actionPost_processing->setEnabled(false);
|
||||
|
||||
QToolButton* toolButton = new QToolButton(this);
|
||||
toolButton->setMenu(_ui->menuRGB_D_camera);
|
||||
toolButton->setMenu(_ui->menuSelect_source);
|
||||
toolButton->setPopupMode(QToolButton::InstantPopup);
|
||||
toolButton->setIcon(QIcon(":images/kinect_xbox_360.png"));
|
||||
toolButton->setToolTip("Select sensor driver");
|
||||
@@ -351,10 +351,8 @@ MainWindow::MainWindow(PreferencesDialog * prefDialog, QWidget * parent) :
|
||||
#endif
|
||||
|
||||
//Settings menu
|
||||
connect(_ui->actionImageFiles, SIGNAL(triggered()), this, SLOT(selectImages()));
|
||||
connect(_ui->actionVideo, SIGNAL(triggered()), this, SLOT(selectVideo()));
|
||||
connect(_ui->actionMore_options, SIGNAL(triggered()), this, SLOT(openPreferencesSource()));
|
||||
connect(_ui->actionUsbCamera, SIGNAL(triggered()), this, SLOT(selectStream()));
|
||||
connect(_ui->actionDatabase, SIGNAL(triggered()), this, SLOT(selectDatabase()));
|
||||
connect(_ui->actionOpenNI_PCL, SIGNAL(triggered()), this, SLOT(selectOpenni()));
|
||||
connect(_ui->actionOpenNI_PCL_ASUS, SIGNAL(triggered()), this, SLOT(selectOpenni()));
|
||||
connect(_ui->actionFreenect, SIGNAL(triggered()), this, SLOT(selectFreenect()));
|
||||
@@ -2113,39 +2111,26 @@ void MainWindow::applyPrefSettings(PreferencesDialog::PANEL_FLAGS flags)
|
||||
// Camera settings...
|
||||
_ui->doubleSpinBox_stats_imgRate->setValue(_preferencesDialog->getGeneralInputRate());
|
||||
this->updateSelectSourceMenu();
|
||||
QString src;
|
||||
if(_preferencesDialog->isSourceImageUsed())
|
||||
{
|
||||
src = _preferencesDialog->getSourceImageTypeStr();
|
||||
}
|
||||
else if(_preferencesDialog->isSourceDatabaseUsed())
|
||||
{
|
||||
src = "Database";
|
||||
}
|
||||
_ui->label_stats_source->setText(src);
|
||||
_ui->label_stats_source->setText(_preferencesDialog->getSourceDriverStr());
|
||||
|
||||
if(_camera)
|
||||
{
|
||||
_camera->setImageRate(_preferencesDialog->getGeneralInputRate());
|
||||
|
||||
if(_camera->cameraRGBD() && dynamic_cast<CameraOpenNI2*>(_camera->cameraRGBD()) != 0)
|
||||
if(_camera->camera() && dynamic_cast<CameraOpenNI2*>(_camera->camera()) != 0)
|
||||
{
|
||||
((CameraOpenNI2*)_camera->cameraRGBD())->setAutoWhiteBalance(_preferencesDialog->getSourceOpenni2AutoWhiteBalance());
|
||||
((CameraOpenNI2*)_camera->cameraRGBD())->setAutoExposure(_preferencesDialog->getSourceOpenni2AutoExposure());
|
||||
((CameraOpenNI2*)_camera->camera())->setAutoWhiteBalance(_preferencesDialog->getSourceOpenni2AutoWhiteBalance());
|
||||
((CameraOpenNI2*)_camera->camera())->setAutoExposure(_preferencesDialog->getSourceOpenni2AutoExposure());
|
||||
if(CameraOpenNI2::exposureGainAvailable())
|
||||
{
|
||||
((CameraOpenNI2*)_camera->cameraRGBD())->setExposure(_preferencesDialog->getSourceOpenni2Exposure());
|
||||
((CameraOpenNI2*)_camera->cameraRGBD())->setGain(_preferencesDialog->getSourceOpenni2Gain());
|
||||
((CameraOpenNI2*)_camera->camera())->setExposure(_preferencesDialog->getSourceOpenni2Exposure());
|
||||
((CameraOpenNI2*)_camera->camera())->setGain(_preferencesDialog->getSourceOpenni2Gain());
|
||||
}
|
||||
}
|
||||
if(_camera->camera())
|
||||
if(_camera)
|
||||
{
|
||||
_camera->camera()->setMirroringEnabled(_preferencesDialog->isSourceMirroring());
|
||||
}
|
||||
if(_camera->cameraRGBD())
|
||||
{
|
||||
_camera->cameraRGBD()->setMirroringEnabled(_preferencesDialog->isSourceMirroring());
|
||||
_camera->cameraRGBD()->setColorOnly(_preferencesDialog->isSourceRGBDColorOnly());
|
||||
_camera->setMirroringEnabled(_preferencesDialog->isSourceMirroring());
|
||||
_camera->setColorOnly(_preferencesDialog->isSourceRGBDColorOnly());
|
||||
}
|
||||
}
|
||||
if(_dbReader)
|
||||
@@ -2433,23 +2418,25 @@ bool MainWindow::eventFilter(QObject *obj, QEvent *event)
|
||||
|
||||
void MainWindow::updateSelectSourceMenu()
|
||||
{
|
||||
_ui->actionUsbCamera->setChecked(_preferencesDialog->isSourceImageUsed() && _preferencesDialog->getSourceImageType() == PreferencesDialog::kSrcUsbDevice);
|
||||
_ui->actionImageFiles->setChecked(_preferencesDialog->isSourceImageUsed() && _preferencesDialog->getSourceImageType() == PreferencesDialog::kSrcImages);
|
||||
_ui->actionVideo->setChecked(_preferencesDialog->isSourceImageUsed() && _preferencesDialog->getSourceImageType() == PreferencesDialog::kSrcVideo);
|
||||
_ui->actionUsbCamera->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcUsbDevice);
|
||||
|
||||
_ui->actionDatabase->setChecked(_preferencesDialog->isSourceDatabaseUsed());
|
||||
_ui->actionMore_options->setChecked(
|
||||
_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcDatabase ||
|
||||
_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcImages ||
|
||||
_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcVideo ||
|
||||
_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcStereoImages);
|
||||
|
||||
_ui->actionOpenNI_PCL->setChecked(_preferencesDialog->isSourceRGBDUsed() && _preferencesDialog->getSourceRGBD() == PreferencesDialog::kSrcOpenNI_PCL);
|
||||
_ui->actionOpenNI_PCL_ASUS->setChecked(_preferencesDialog->isSourceRGBDUsed() && _preferencesDialog->getSourceRGBD() == PreferencesDialog::kSrcOpenNI_PCL);
|
||||
_ui->actionFreenect->setChecked(_preferencesDialog->isSourceRGBDUsed() && _preferencesDialog->getSourceRGBD() == PreferencesDialog::kSrcFreenect);
|
||||
_ui->actionOpenNI_CV->setChecked(_preferencesDialog->isSourceRGBDUsed() && _preferencesDialog->getSourceRGBD() == PreferencesDialog::kSrcOpenNI_CV);
|
||||
_ui->actionOpenNI_CV_ASUS->setChecked(_preferencesDialog->isSourceRGBDUsed() && _preferencesDialog->getSourceRGBD() == PreferencesDialog::kSrcOpenNI_CV_ASUS);
|
||||
_ui->actionOpenNI2->setChecked(_preferencesDialog->isSourceRGBDUsed() && _preferencesDialog->getSourceRGBD() == PreferencesDialog::kSrcOpenNI2);
|
||||
_ui->actionOpenNI2_kinect->setChecked(_preferencesDialog->isSourceRGBDUsed() && _preferencesDialog->getSourceRGBD() == PreferencesDialog::kSrcOpenNI2);
|
||||
_ui->actionOpenNI2_sense->setChecked(_preferencesDialog->isSourceRGBDUsed() && _preferencesDialog->getSourceRGBD() == PreferencesDialog::kSrcOpenNI2);
|
||||
_ui->actionFreenect2->setChecked(_preferencesDialog->isSourceRGBDUsed() && _preferencesDialog->getSourceRGBD() == PreferencesDialog::kSrcFreenect2);
|
||||
_ui->actionStereoDC1394->setChecked(_preferencesDialog->isSourceRGBDUsed() && _preferencesDialog->getSourceRGBD() == PreferencesDialog::kSrcStereoDC1394);
|
||||
_ui->actionStereoFlyCapture2->setChecked(_preferencesDialog->isSourceRGBDUsed() && _preferencesDialog->getSourceRGBD() == PreferencesDialog::kSrcStereoFlyCapture2);
|
||||
_ui->actionOpenNI_PCL->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcOpenNI_PCL);
|
||||
_ui->actionOpenNI_PCL_ASUS->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcOpenNI_PCL);
|
||||
_ui->actionFreenect->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcFreenect);
|
||||
_ui->actionOpenNI_CV->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcOpenNI_CV);
|
||||
_ui->actionOpenNI_CV_ASUS->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcOpenNI_CV_ASUS);
|
||||
_ui->actionOpenNI2->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcOpenNI2);
|
||||
_ui->actionOpenNI2_kinect->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcOpenNI2);
|
||||
_ui->actionOpenNI2_sense->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcOpenNI2);
|
||||
_ui->actionFreenect2->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcFreenect2);
|
||||
_ui->actionStereoDC1394->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcDC1394);
|
||||
_ui->actionStereoFlyCapture2->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcFlyCapture2);
|
||||
}
|
||||
|
||||
void MainWindow::changeImgRateSetting()
|
||||
@@ -2674,11 +2661,9 @@ void MainWindow::startDetection()
|
||||
{
|
||||
ParametersMap parameters = _preferencesDialog->getAllParameters();
|
||||
// verify source with input rates
|
||||
if((_preferencesDialog->isSourceImageUsed() &&
|
||||
(_preferencesDialog->getSourceImageType() == PreferencesDialog::kSrcImages ||
|
||||
_preferencesDialog->getSourceImageType() == PreferencesDialog::kSrcVideo))
|
||||
||
|
||||
_preferencesDialog->isSourceDatabaseUsed())
|
||||
if(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcImages ||
|
||||
_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcVideo ||
|
||||
_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcDatabase)
|
||||
{
|
||||
float inputRate = _preferencesDialog->getGeneralInputRate();
|
||||
float detectionRate = uStr2Float(parameters.at(Parameters::kRtabmapDetectionRate()));
|
||||
@@ -2748,9 +2733,7 @@ void MainWindow::startDetection()
|
||||
}
|
||||
|
||||
// Adjust pre-requirements
|
||||
if( !_preferencesDialog->isSourceImageUsed() &&
|
||||
!_preferencesDialog->isSourceDatabaseUsed() &&
|
||||
!_preferencesDialog->isSourceRGBDUsed())
|
||||
if(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcUndef)
|
||||
{
|
||||
QMessageBox::warning(this,
|
||||
tr("RTAB-Map"),
|
||||
@@ -2760,41 +2743,19 @@ void MainWindow::startDetection()
|
||||
return;
|
||||
}
|
||||
|
||||
if(_preferencesDialog->isSourceRGBDUsed())
|
||||
{
|
||||
CameraRGBD * camera = _preferencesDialog->createCameraRGBD();
|
||||
|
||||
if(!camera->init(_preferencesDialog->getCameraInfoDir().toStdString()))
|
||||
if(_preferencesDialog->getSourceDriver() < PreferencesDialog::kSrcDatabase)
|
||||
{
|
||||
Camera * camera = _preferencesDialog->createCamera();
|
||||
if(!camera)
|
||||
{
|
||||
ULOGGER_WARN("init camera failed... ");
|
||||
QMessageBox::warning(this,
|
||||
tr("RTAB-Map"),
|
||||
tr("Camera initialization failed..."));
|
||||
emit stateChanged(kInitialized);
|
||||
delete camera;
|
||||
camera = 0;
|
||||
if(_odomThread)
|
||||
{
|
||||
delete _odomThread;
|
||||
_odomThread = 0;
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if(dynamic_cast<CameraOpenNI2*>(camera) != 0)
|
||||
{
|
||||
((CameraOpenNI2*)camera)->setAutoWhiteBalance(_preferencesDialog->getSourceOpenni2AutoWhiteBalance());
|
||||
((CameraOpenNI2*)camera)->setAutoExposure(_preferencesDialog->getSourceOpenni2AutoExposure());
|
||||
((CameraOpenNI2*)camera)->setMirroring(_preferencesDialog->getSourceOpenni2Mirroring());
|
||||
if(CameraOpenNI2::exposureGainAvailable())
|
||||
{
|
||||
((CameraOpenNI2*)camera)->setExposure(_preferencesDialog->getSourceOpenni2Exposure());
|
||||
((CameraOpenNI2*)camera)->setGain(_preferencesDialog->getSourceOpenni2Gain());
|
||||
}
|
||||
}
|
||||
camera->setMirroringEnabled(_preferencesDialog->isSourceMirroring());
|
||||
camera->setColorOnly(_preferencesDialog->isSourceRGBDColorOnly());
|
||||
|
||||
_camera = new CameraThread(camera);
|
||||
_camera->setMirroringEnabled(_preferencesDialog->isSourceMirroring());
|
||||
_camera->setColorOnly(_preferencesDialog->isSourceRGBDColorOnly());
|
||||
|
||||
//Create odometry thread if rgbd slam
|
||||
if(uStr2Bool(parameters.at(Parameters::kRGBDEnabled()).c_str()))
|
||||
@@ -2823,6 +2784,7 @@ void MainWindow::startDetection()
|
||||
{
|
||||
UERROR("OdomThread must be already deleted here?!");
|
||||
delete _odomThread;
|
||||
_odomThread = 0;
|
||||
}
|
||||
Odometry * odom;
|
||||
if(_preferencesDialog->getOdomStrategy() == 1)
|
||||
@@ -2845,7 +2807,7 @@ void MainWindow::startDetection()
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(_preferencesDialog->isSourceDatabaseUsed())
|
||||
else if(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcDatabase)
|
||||
{
|
||||
_dbReader = new DBReader(_preferencesDialog->getSourceDatabasePath().toStdString(),
|
||||
_preferencesDialog->getSourceDatabaseStampsUsed()?-1:_preferencesDialog->getGeneralInputRate(),
|
||||
@@ -2902,58 +2864,6 @@ void MainWindow::startDetection()
|
||||
UEventsManager::createPipe(_dbReader, _odomThread, "CameraEvent");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(_preferencesDialog->isSourceImageUsed())
|
||||
{
|
||||
Camera * camera = 0;
|
||||
// Change type of the camera...
|
||||
//
|
||||
int sourceType = _preferencesDialog->getSourceImageType();
|
||||
UASSERT(sourceType >= PreferencesDialog::kSrcUsbDevice && sourceType <= PreferencesDialog::kSrcVideo);
|
||||
if(sourceType == PreferencesDialog::kSrcImages) //Images
|
||||
{
|
||||
camera = new CameraImages(
|
||||
_preferencesDialog->getSourceImagesPath().append(QDir::separator()).toStdString(),
|
||||
_preferencesDialog->getSourceImagesStartPos(),
|
||||
_preferencesDialog->getSourceImagesRefreshDir(),
|
||||
_preferencesDialog->getGeneralInputRate(),
|
||||
_preferencesDialog->getSourceWidth(),
|
||||
_preferencesDialog->getSourceHeight());
|
||||
}
|
||||
else if(sourceType == PreferencesDialog::kSrcVideo)
|
||||
{
|
||||
camera = new CameraVideo(
|
||||
_preferencesDialog->getSourceVideoPath().toStdString(),
|
||||
_preferencesDialog->getGeneralInputRate(),
|
||||
_preferencesDialog->getSourceWidth(),
|
||||
_preferencesDialog->getSourceHeight());
|
||||
}
|
||||
else //if(sourceType == PreferencesDialog::kSrcUsbDevice)
|
||||
{
|
||||
camera = new CameraVideo(
|
||||
_preferencesDialog->getSourceUsbDeviceId(),
|
||||
_preferencesDialog->getGeneralInputRate(),
|
||||
_preferencesDialog->getSourceWidth(),
|
||||
_preferencesDialog->getSourceHeight());
|
||||
}
|
||||
|
||||
if(!camera->init())
|
||||
{
|
||||
ULOGGER_WARN("init camera failed... ");
|
||||
QMessageBox::warning(this,
|
||||
tr("RTAB-Map"),
|
||||
tr("Camera initialization failed..."));
|
||||
emit stateChanged(kInitialized);
|
||||
delete camera;
|
||||
camera = 0;
|
||||
return;
|
||||
}
|
||||
camera->setMirroringEnabled(_preferencesDialog->isSourceMirroring());
|
||||
|
||||
_camera = new CameraThread(camera);
|
||||
}
|
||||
}
|
||||
|
||||
if(_dataRecorder)
|
||||
{
|
||||
@@ -3810,64 +3720,49 @@ void MainWindow::updateEditMenu()
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::selectImages()
|
||||
{
|
||||
_preferencesDialog->selectSourceImage(PreferencesDialog::kSrcImages);
|
||||
}
|
||||
|
||||
void MainWindow::selectVideo()
|
||||
{
|
||||
_preferencesDialog->selectSourceImage(PreferencesDialog::kSrcVideo);
|
||||
}
|
||||
|
||||
void MainWindow::selectStream()
|
||||
{
|
||||
_preferencesDialog->selectSourceImage(PreferencesDialog::kSrcUsbDevice);
|
||||
}
|
||||
|
||||
void MainWindow::selectDatabase()
|
||||
{
|
||||
_preferencesDialog->selectSourceDatabase(true);
|
||||
_preferencesDialog->selectSourceDriver(PreferencesDialog::kSrcUsbDevice);
|
||||
}
|
||||
|
||||
void MainWindow::selectOpenni()
|
||||
{
|
||||
_preferencesDialog->selectSourceRGBD(PreferencesDialog::kSrcOpenNI_PCL);
|
||||
_preferencesDialog->selectSourceDriver(PreferencesDialog::kSrcOpenNI_PCL);
|
||||
}
|
||||
|
||||
void MainWindow::selectFreenect()
|
||||
{
|
||||
_preferencesDialog->selectSourceRGBD(PreferencesDialog::kSrcFreenect);
|
||||
_preferencesDialog->selectSourceDriver(PreferencesDialog::kSrcFreenect);
|
||||
}
|
||||
|
||||
void MainWindow::selectOpenniCv()
|
||||
{
|
||||
_preferencesDialog->selectSourceRGBD(PreferencesDialog::kSrcOpenNI_CV);
|
||||
_preferencesDialog->selectSourceDriver(PreferencesDialog::kSrcOpenNI_CV);
|
||||
}
|
||||
|
||||
void MainWindow::selectOpenniCvAsus()
|
||||
{
|
||||
_preferencesDialog->selectSourceRGBD(PreferencesDialog::kSrcOpenNI_CV_ASUS);
|
||||
_preferencesDialog->selectSourceDriver(PreferencesDialog::kSrcOpenNI_CV_ASUS);
|
||||
}
|
||||
|
||||
void MainWindow::selectOpenni2()
|
||||
{
|
||||
_preferencesDialog->selectSourceRGBD(PreferencesDialog::kSrcOpenNI2);
|
||||
_preferencesDialog->selectSourceDriver(PreferencesDialog::kSrcOpenNI2);
|
||||
}
|
||||
|
||||
void MainWindow::selectFreenect2()
|
||||
{
|
||||
_preferencesDialog->selectSourceRGBD(PreferencesDialog::kSrcFreenect2);
|
||||
_preferencesDialog->selectSourceDriver(PreferencesDialog::kSrcFreenect2);
|
||||
}
|
||||
|
||||
void MainWindow::selectStereoDC1394()
|
||||
{
|
||||
_preferencesDialog->selectSourceRGBD(PreferencesDialog::kSrcStereoDC1394);
|
||||
_preferencesDialog->selectSourceDriver(PreferencesDialog::kSrcDC1394);
|
||||
}
|
||||
|
||||
void MainWindow::selectStereoFlyCapture2()
|
||||
{
|
||||
_preferencesDialog->selectSourceRGBD(PreferencesDialog::kSrcStereoFlyCapture2);
|
||||
_preferencesDialog->selectSourceDriver(PreferencesDialog::kSrcFlyCapture2);
|
||||
}
|
||||
|
||||
|
||||
@@ -4116,6 +4011,13 @@ void MainWindow::openPreferences()
|
||||
_preferencesDialog->exec();
|
||||
}
|
||||
|
||||
void MainWindow::openPreferencesSource()
|
||||
{
|
||||
_preferencesDialog->setCurrentPanelToSource();
|
||||
openPreferences();
|
||||
this->updateSelectSourceMenu();
|
||||
}
|
||||
|
||||
void MainWindow::setDefaultViews()
|
||||
{
|
||||
_ui->dockWidget_posterior->setVisible(false);
|
||||
|
||||
@@ -97,8 +97,10 @@ OdometryViewer::OdometryViewer(int maxClouds, int decimation, float voxelSize, f
|
||||
decimationSpin_->setMaximum(16);
|
||||
decimationSpin_->setValue(decimation);
|
||||
timeLabel_ = new QLabel(this);
|
||||
QPushButton * resetButton = new QPushButton("reset", this);
|
||||
QPushButton * clearButton = new QPushButton("clear", this);
|
||||
QPushButton * closeButton = new QPushButton("close", this);
|
||||
connect(resetButton, SIGNAL(clicked()), this, SLOT(reset()));
|
||||
connect(clearButton, SIGNAL(clicked()), this, SLOT(clear()));
|
||||
connect(closeButton, SIGNAL(clicked()), this, SLOT(reject()));
|
||||
|
||||
@@ -121,6 +123,7 @@ OdometryViewer::OdometryViewer(int maxClouds, int decimation, float voxelSize, f
|
||||
hlayout2->addWidget(decimationSpin_);
|
||||
hlayout2->addWidget(timeLabel_);
|
||||
hlayout2->addStretch(1);
|
||||
hlayout2->addWidget(resetButton);
|
||||
hlayout2->addWidget(clearButton);
|
||||
hlayout2->addWidget(closeButton);
|
||||
|
||||
@@ -140,6 +143,11 @@ OdometryViewer::~OdometryViewer()
|
||||
UDEBUG("");
|
||||
}
|
||||
|
||||
void OdometryViewer::reset()
|
||||
{
|
||||
this->post(new OdometryResetEvent());
|
||||
}
|
||||
|
||||
void OdometryViewer::clear()
|
||||
{
|
||||
addedClouds_.clear();
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
BIN
guilib/src/images/webcam.png
Normal file
BIN
guilib/src/images/webcam.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
@@ -95,16 +95,22 @@
|
||||
</property>
|
||||
<widget class="QMenu" name="menuImage">
|
||||
<property name="title">
|
||||
<string>Image-only</string>
|
||||
<string>RGB camera</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../GuiLib.qrc">
|
||||
<normaloff>:/images/webcam.png</normaloff>:/images/webcam.png</iconset>
|
||||
</property>
|
||||
<addaction name="actionUsbCamera"/>
|
||||
<addaction name="actionImageFiles"/>
|
||||
<addaction name="actionVideo"/>
|
||||
</widget>
|
||||
<widget class="QMenu" name="menuRGB_D_camera">
|
||||
<property name="title">
|
||||
<string>RGB-D camera</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../GuiLib.qrc">
|
||||
<normaloff>:/images/kinect_xbox_360.png</normaloff>:/images/kinect_xbox_360.png</iconset>
|
||||
</property>
|
||||
<widget class="QMenu" name="menuKinect_for_Xbox_360">
|
||||
<property name="title">
|
||||
<string>Kinect</string>
|
||||
@@ -150,7 +156,20 @@
|
||||
</property>
|
||||
<addaction name="actionFreenect2"/>
|
||||
</widget>
|
||||
<widget class="QMenu" name="menuBumblebee2">
|
||||
<addaction name="menuKinect_for_Xbox_360"/>
|
||||
<addaction name="menuXtion_PRO_LIVE"/>
|
||||
<addaction name="menuSense_3D_scanner"/>
|
||||
<addaction name="menuKinect_v2"/>
|
||||
</widget>
|
||||
<widget class="QMenu" name="menuStereo_camera">
|
||||
<property name="title">
|
||||
<string>Stereo camera</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../GuiLib.qrc">
|
||||
<normaloff>:/images/bumblebee2.png</normaloff>:/images/bumblebee2.png</iconset>
|
||||
</property>
|
||||
<widget class="QMenu" name="menuBumblebee2_2">
|
||||
<property name="title">
|
||||
<string>Bumblebee2</string>
|
||||
</property>
|
||||
@@ -161,15 +180,12 @@
|
||||
<addaction name="actionStereoDC1394"/>
|
||||
<addaction name="actionStereoFlyCapture2"/>
|
||||
</widget>
|
||||
<addaction name="menuKinect_for_Xbox_360"/>
|
||||
<addaction name="menuXtion_PRO_LIVE"/>
|
||||
<addaction name="menuSense_3D_scanner"/>
|
||||
<addaction name="menuKinect_v2"/>
|
||||
<addaction name="menuBumblebee2"/>
|
||||
<addaction name="menuBumblebee2_2"/>
|
||||
</widget>
|
||||
<addaction name="menuRGB_D_camera"/>
|
||||
<addaction name="menuStereo_camera"/>
|
||||
<addaction name="menuImage"/>
|
||||
<addaction name="actionDatabase"/>
|
||||
<addaction name="actionMore_options"/>
|
||||
</widget>
|
||||
<addaction name="menuSelect_source"/>
|
||||
<addaction name="separator"/>
|
||||
@@ -946,34 +962,14 @@
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../GuiLib.qrc">
|
||||
<normaloff>:/images/webcam.png</normaloff>:/images/webcam.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Usb camera</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionImageFiles">
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Images...</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionVideo">
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Video...</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionDatabase">
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Database...</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionGenerate_local_map">
|
||||
<property name="text">
|
||||
<string>Generate graph local map (*.dot)...</string>
|
||||
@@ -1203,7 +1199,7 @@
|
||||
</action>
|
||||
<action name="actionStereoFlyCapture2">
|
||||
<property name="text">
|
||||
<string>StereoFlyCapture2</string>
|
||||
<string>FlyCapture2</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionSend_goal">
|
||||
@@ -1226,6 +1222,14 @@
|
||||
<string>Default views</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionMore_options">
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>More options...</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user