mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-02 17:40:23 +08:00
0.14.3: exposed all gui widgets to public API. CloudViewer: fixed camera orientation reset
This commit is contained in:
@@ -1,53 +1,55 @@
|
||||
/*
|
||||
Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of the Universite de Sherbrooke nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef ABOUTDIALOG_H_
|
||||
#define ABOUTDIALOG_H_
|
||||
|
||||
#include <QDialog>
|
||||
#include <QtCore/QUrl>
|
||||
|
||||
class Ui_aboutDialog;
|
||||
|
||||
namespace rtabmap {
|
||||
|
||||
class AboutDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
AboutDialog(QWidget * parent = 0);
|
||||
|
||||
virtual ~AboutDialog();
|
||||
|
||||
private:
|
||||
Ui_aboutDialog * _ui;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif /* ABOUTDIALOG_H_ */
|
||||
/*
|
||||
Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of the Universite de Sherbrooke nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef RTABMAP_ABOUTDIALOG_H_
|
||||
#define RTABMAP_ABOUTDIALOG_H_
|
||||
|
||||
#include "rtabmap/gui/RtabmapGuiExp.h" // DLL export/import defines
|
||||
|
||||
#include <QDialog>
|
||||
#include <QtCore/QUrl>
|
||||
|
||||
class Ui_aboutDialog;
|
||||
|
||||
namespace rtabmap {
|
||||
|
||||
class RTABMAPGUI_EXP AboutDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
AboutDialog(QWidget * parent = 0);
|
||||
|
||||
virtual ~AboutDialog();
|
||||
|
||||
private:
|
||||
Ui_aboutDialog * _ui;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif /* ABOUTDIALOG_H_ */
|
||||
@@ -25,8 +25,8 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef CALIBRATIONDIALOG_H_
|
||||
#define CALIBRATIONDIALOG_H_
|
||||
#ifndef RTABMAP_CALIBRATIONDIALOG_H_
|
||||
#define RTABMAP_CALIBRATIONDIALOG_H_
|
||||
|
||||
#include "rtabmap/gui/RtabmapGuiExp.h" // DLL export/import defines
|
||||
|
||||
|
||||
@@ -25,8 +25,8 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef CAMERAVIEWER_H_
|
||||
#define CAMERAVIEWER_H_
|
||||
#ifndef RTABMAP_CAMERAVIEWER_H_
|
||||
#define RTABMAP_CAMERAVIEWER_H_
|
||||
|
||||
#include "rtabmap/gui/RtabmapGuiExp.h" // DLL export/import defines
|
||||
|
||||
|
||||
@@ -25,8 +25,8 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef CLOUDVIEWER_H_
|
||||
#define CLOUDVIEWER_H_
|
||||
#ifndef RTABMAP_CLOUDVIEWER_H_
|
||||
#define RTABMAP_CLOUDVIEWER_H_
|
||||
|
||||
#include "rtabmap/gui/RtabmapGuiExp.h" // DLL export/import defines
|
||||
|
||||
|
||||
@@ -25,8 +25,8 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef CONSOLEWIDGET_H_
|
||||
#define CONSOLEWIDGET_H_
|
||||
#ifndef RTABMAP_CONSOLEWIDGET_H_
|
||||
#define RTABMAP_CONSOLEWIDGET_H_
|
||||
|
||||
#include "rtabmap/gui/RtabmapGuiExp.h" // DLL export/import defines
|
||||
|
||||
|
||||
@@ -1,66 +1,68 @@
|
||||
/*
|
||||
Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of the Universite de Sherbrooke nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef CREATESIMPLECALIBRATIONDIALOG_H_
|
||||
#define CREATESIMPLECALIBRATIONDIALOG_H_
|
||||
|
||||
#include <QDialog>
|
||||
#include <QSettings>
|
||||
|
||||
class Ui_createSimpleCalibrationDialog;
|
||||
|
||||
namespace rtabmap {
|
||||
|
||||
class CreateSimpleCalibrationDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
CreateSimpleCalibrationDialog(
|
||||
const QString & savingFolder = ".",
|
||||
const QString & cameraName = "",
|
||||
QWidget * parent = 0);
|
||||
|
||||
virtual ~CreateSimpleCalibrationDialog();
|
||||
|
||||
void setCameraInfoDir(const QString & folder) {savingFolder_ = folder;}
|
||||
const QString & cameraName() const {return cameraName_;}
|
||||
|
||||
private slots:
|
||||
void updateStereoView();
|
||||
void updateSaveStatus();
|
||||
void saveCalibration();
|
||||
|
||||
private:
|
||||
Ui_createSimpleCalibrationDialog * ui_;
|
||||
QString savingFolder_;
|
||||
QString cameraName_;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif /* CREATESIMPLECALIBRATIONDIALOG_H_ */
|
||||
/*
|
||||
Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of the Universite de Sherbrooke nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef RTABMAP_CREATESIMPLECALIBRATIONDIALOG_H_
|
||||
#define RTABMAP_CREATESIMPLECALIBRATIONDIALOG_H_
|
||||
|
||||
#include "rtabmap/gui/RtabmapGuiExp.h" // DLL export/import defines
|
||||
|
||||
#include <QDialog>
|
||||
#include <QSettings>
|
||||
|
||||
class Ui_createSimpleCalibrationDialog;
|
||||
|
||||
namespace rtabmap {
|
||||
|
||||
class RTABMAPGUI_EXP CreateSimpleCalibrationDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
CreateSimpleCalibrationDialog(
|
||||
const QString & savingFolder = ".",
|
||||
const QString & cameraName = "",
|
||||
QWidget * parent = 0);
|
||||
|
||||
virtual ~CreateSimpleCalibrationDialog();
|
||||
|
||||
void setCameraInfoDir(const QString & folder) {savingFolder_ = folder;}
|
||||
const QString & cameraName() const {return cameraName_;}
|
||||
|
||||
private slots:
|
||||
void updateStereoView();
|
||||
void updateSaveStatus();
|
||||
void saveCalibration();
|
||||
|
||||
private:
|
||||
Ui_createSimpleCalibrationDialog * ui_;
|
||||
QString savingFolder_;
|
||||
QString cameraName_;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif /* CREATESIMPLECALIBRATIONDIALOG_H_ */
|
||||
@@ -25,8 +25,8 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef DATARECORDER_H_
|
||||
#define DATARECORDER_H_
|
||||
#ifndef RTABMAP_DATARECORDER_H_
|
||||
#define RTABMAP_DATARECORDER_H_
|
||||
|
||||
#include "rtabmap/gui/RtabmapGuiExp.h" // DLL export/import defines
|
||||
|
||||
|
||||
@@ -25,8 +25,8 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef DATABASEVIEWER_H_
|
||||
#define DATABASEVIEWER_H_
|
||||
#ifndef RTABMAP_DATABASEVIEWER_H_
|
||||
#define RTABMAP_DATABASEVIEWER_H_
|
||||
|
||||
#include "rtabmap/gui/RtabmapGuiExp.h" // DLL export/import defines
|
||||
|
||||
|
||||
@@ -25,8 +25,10 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef GUILIB_SRC_DEPTHCALIBRATIONDIALOG_H_
|
||||
#define GUILIB_SRC_DEPTHCALIBRATIONDIALOG_H_
|
||||
#ifndef RTABMAP_DEPTHCALIBRATIONDIALOG_H_
|
||||
#define RTABMAP_DEPTHCALIBRATIONDIALOG_H_
|
||||
|
||||
#include "rtabmap/gui/RtabmapGuiExp.h" // DLL export/import defines
|
||||
|
||||
#include <QDialog>
|
||||
#include <QMap>
|
||||
@@ -44,7 +46,7 @@ namespace rtabmap {
|
||||
|
||||
class ProgressDialog;
|
||||
|
||||
class DepthCalibrationDialog : public QDialog
|
||||
class RTABMAPGUI_EXP DepthCalibrationDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
@@ -25,8 +25,10 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef EDITDEPTHAREA_H
|
||||
#define EDITDEPTHAREA_H
|
||||
#ifndef RTABMAP_EDITDEPTHAREA_H
|
||||
#define RTABMAP_EDITDEPTHAREA_H
|
||||
|
||||
#include "rtabmap/gui/RtabmapGuiExp.h" // DLL export/import defines
|
||||
|
||||
#include <QColor>
|
||||
#include <QImage>
|
||||
@@ -39,7 +41,7 @@ class QAction;
|
||||
|
||||
namespace rtabmap {
|
||||
|
||||
class EditDepthArea : public QWidget
|
||||
class RTABMAPGUI_EXP EditDepthArea : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
@@ -1,71 +1,73 @@
|
||||
/*
|
||||
Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of the Universite de Sherbrooke nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef EXPORTBUNDLERDIALOG_H_
|
||||
#define EXPORTBUNDLERDIALOG_H_
|
||||
|
||||
#include <QDialog>
|
||||
#include <QSettings>
|
||||
|
||||
class Ui_ExportBundlerDialog;
|
||||
|
||||
namespace rtabmap {
|
||||
|
||||
class ExportBundlerDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
ExportBundlerDialog(QWidget * parent = 0);
|
||||
|
||||
virtual ~ExportBundlerDialog();
|
||||
|
||||
void saveSettings(QSettings & settings, const QString & group = "") const;
|
||||
void loadSettings(QSettings & settings, const QString & group = "");
|
||||
|
||||
void setWorkingDirectory(const QString & path);
|
||||
|
||||
QString outputPath() const;
|
||||
|
||||
double maxLinearSpeed() const;
|
||||
double maxAngularSpeed() const;
|
||||
double laplacianThreshold() const;
|
||||
|
||||
signals:
|
||||
void configChanged();
|
||||
|
||||
private slots:
|
||||
void getPath();
|
||||
void restoreDefaults();
|
||||
|
||||
private:
|
||||
Ui_ExportBundlerDialog * _ui;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif /* EXPORTBUNDLERDIALOG_H_ */
|
||||
/*
|
||||
Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of the Universite de Sherbrooke nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef RTABMAP_EXPORTBUNDLERDIALOG_H_
|
||||
#define RTABMAP_EXPORTBUNDLERDIALOG_H_
|
||||
|
||||
#include "rtabmap/gui/RtabmapGuiExp.h" // DLL export/import defines
|
||||
|
||||
#include <QDialog>
|
||||
#include <QSettings>
|
||||
|
||||
class Ui_ExportBundlerDialog;
|
||||
|
||||
namespace rtabmap {
|
||||
|
||||
class RTABMAPGUI_EXP ExportBundlerDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
ExportBundlerDialog(QWidget * parent = 0);
|
||||
|
||||
virtual ~ExportBundlerDialog();
|
||||
|
||||
void saveSettings(QSettings & settings, const QString & group = "") const;
|
||||
void loadSettings(QSettings & settings, const QString & group = "");
|
||||
|
||||
void setWorkingDirectory(const QString & path);
|
||||
|
||||
QString outputPath() const;
|
||||
|
||||
double maxLinearSpeed() const;
|
||||
double maxAngularSpeed() const;
|
||||
double laplacianThreshold() const;
|
||||
|
||||
signals:
|
||||
void configChanged();
|
||||
|
||||
private slots:
|
||||
void getPath();
|
||||
void restoreDefaults();
|
||||
|
||||
private:
|
||||
Ui_ExportBundlerDialog * _ui;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif /* EXPORTBUNDLERDIALOG_H_ */
|
||||
@@ -1,139 +1,141 @@
|
||||
/*
|
||||
Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of the Universite de Sherbrooke nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef EXPORTCLOUDSDIALOG_H_
|
||||
#define EXPORTCLOUDSDIALOG_H_
|
||||
|
||||
#include <QDialog>
|
||||
#include <QMap>
|
||||
#include <QtCore/QSettings>
|
||||
|
||||
#include <rtabmap/core/Signature.h>
|
||||
#include <rtabmap/core/Parameters.h>
|
||||
|
||||
#include <pcl/point_cloud.h>
|
||||
#include <pcl/point_types.h>
|
||||
#include <pcl/PolygonMesh.h>
|
||||
#include <pcl/TextureMesh.h>
|
||||
#include <pcl/pcl_base.h>
|
||||
|
||||
class Ui_ExportCloudsDialog;
|
||||
class QAbstractButton;
|
||||
|
||||
namespace rtabmap {
|
||||
class ProgressDialog;
|
||||
class GainCompensator;
|
||||
class DBDriver;
|
||||
|
||||
class ExportCloudsDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
ExportCloudsDialog(QWidget *parent = 0);
|
||||
|
||||
virtual ~ExportCloudsDialog();
|
||||
|
||||
void saveSettings(QSettings & settings, const QString & group = "") const;
|
||||
void loadSettings(QSettings & settings, const QString & group = "");
|
||||
|
||||
void setDBDriver(const DBDriver * dbDriver) {_dbDriver = dbDriver;}
|
||||
|
||||
void exportClouds(
|
||||
const std::map<int, Transform> & poses,
|
||||
const std::multimap<int, Link> & links,
|
||||
const std::map<int, int> & mapIds,
|
||||
const QMap<int, Signature> & cachedSignatures,
|
||||
const std::map<int, std::pair<pcl::PointCloud<pcl::PointXYZRGB>::Ptr, pcl::IndicesPtr> > & cachedClouds,
|
||||
const std::map<int, cv::Mat> & cachedScans,
|
||||
const QString & workingDirectory,
|
||||
const ParametersMap & parameters);
|
||||
|
||||
void viewClouds(
|
||||
const std::map<int, Transform> & poses,
|
||||
const std::multimap<int, Link> & links,
|
||||
const std::map<int, int> & mapIds,
|
||||
const QMap<int, Signature> & cachedSignatures,
|
||||
const std::map<int, std::pair<pcl::PointCloud<pcl::PointXYZRGB>::Ptr, pcl::IndicesPtr> > & cachedClouds,
|
||||
const std::map<int, cv::Mat> & cachedScans,
|
||||
const QString & workingDirectory,
|
||||
const ParametersMap & parameters);
|
||||
|
||||
static bool removeDirRecursively(const QString & dirName);
|
||||
|
||||
signals:
|
||||
void configChanged();
|
||||
|
||||
public slots:
|
||||
void restoreDefaults();
|
||||
|
||||
private slots:
|
||||
void updateReconstructionFlavor();
|
||||
void selectDistortionModel();
|
||||
void updateMLSGrpVisibility();
|
||||
void cancel();
|
||||
|
||||
private:
|
||||
std::map<int, std::pair<pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr, pcl::IndicesPtr> > getClouds(
|
||||
const std::map<int, Transform> & poses,
|
||||
const QMap<int, Signature> & cachedSignatures,
|
||||
const std::map<int, std::pair<pcl::PointCloud<pcl::PointXYZRGB>::Ptr, pcl::IndicesPtr> > & cachedClouds,
|
||||
const std::map<int, cv::Mat> & cachedScans,
|
||||
const ParametersMap & parameters,
|
||||
bool & has2dScans) const;
|
||||
bool getExportedClouds(
|
||||
const std::map<int, Transform> & poses,
|
||||
const std::multimap<int, Link> & links,
|
||||
const std::map<int, int> & mapIds,
|
||||
const QMap<int, Signature> & cachedSignatures,
|
||||
const std::map<int, std::pair<pcl::PointCloud<pcl::PointXYZRGB>::Ptr, pcl::IndicesPtr> > & cachedClouds,
|
||||
const std::map<int, cv::Mat> & cachedScans,
|
||||
const QString & workingDirectory,
|
||||
const ParametersMap & parameters,
|
||||
std::map<int, pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr> & clouds,
|
||||
std::map<int, pcl::PolygonMesh::Ptr> & meshes,
|
||||
std::map<int, pcl::TextureMesh::Ptr> & textureMeshes,
|
||||
std::vector<std::map<int, pcl::PointXY> > & textureVertexToPixels);
|
||||
void saveClouds(const QString & workingDirectory, const std::map<int, Transform> & poses, const std::map<int, pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr> & clouds, bool binaryMode = true);
|
||||
void saveMeshes(const QString & workingDirectory, const std::map<int, Transform> & poses, const std::map<int, pcl::PolygonMesh::Ptr> & meshes, bool binaryMode = true);
|
||||
void saveTextureMeshes(const QString & workingDirectory, const std::map<int, Transform> & poses, std::map<int, pcl::TextureMesh::Ptr> & textureMeshes, const QMap<int, Signature> & cachedSignatures, const std::vector<std::map<int, pcl::PointXY> > & textureVertexToPixels);
|
||||
|
||||
void setSaveButton();
|
||||
void setOkButton();
|
||||
|
||||
private:
|
||||
Ui_ExportCloudsDialog * _ui;
|
||||
ProgressDialog * _progressDialog;
|
||||
QString _workingDirectory;
|
||||
bool _canceled;
|
||||
GainCompensator * _compensator;
|
||||
const DBDriver * _dbDriver;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif /* EXPORTCLOUDSDIALOG_H_ */
|
||||
/*
|
||||
Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of the Universite de Sherbrooke nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef RTABMAP_EXPORTCLOUDSDIALOG_H_
|
||||
#define RTABMAP_EXPORTCLOUDSDIALOG_H_
|
||||
|
||||
#include "rtabmap/gui/RtabmapGuiExp.h" // DLL export/import defines
|
||||
|
||||
#include <QDialog>
|
||||
#include <QMap>
|
||||
#include <QtCore/QSettings>
|
||||
|
||||
#include <rtabmap/core/Signature.h>
|
||||
#include <rtabmap/core/Parameters.h>
|
||||
|
||||
#include <pcl/point_cloud.h>
|
||||
#include <pcl/point_types.h>
|
||||
#include <pcl/PolygonMesh.h>
|
||||
#include <pcl/TextureMesh.h>
|
||||
#include <pcl/pcl_base.h>
|
||||
|
||||
class Ui_ExportCloudsDialog;
|
||||
class QAbstractButton;
|
||||
|
||||
namespace rtabmap {
|
||||
class ProgressDialog;
|
||||
class GainCompensator;
|
||||
class DBDriver;
|
||||
|
||||
class RTABMAPGUI_EXP ExportCloudsDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
ExportCloudsDialog(QWidget *parent = 0);
|
||||
|
||||
virtual ~ExportCloudsDialog();
|
||||
|
||||
void saveSettings(QSettings & settings, const QString & group = "") const;
|
||||
void loadSettings(QSettings & settings, const QString & group = "");
|
||||
|
||||
void setDBDriver(const DBDriver * dbDriver) {_dbDriver = dbDriver;}
|
||||
|
||||
void exportClouds(
|
||||
const std::map<int, Transform> & poses,
|
||||
const std::multimap<int, Link> & links,
|
||||
const std::map<int, int> & mapIds,
|
||||
const QMap<int, Signature> & cachedSignatures,
|
||||
const std::map<int, std::pair<pcl::PointCloud<pcl::PointXYZRGB>::Ptr, pcl::IndicesPtr> > & cachedClouds,
|
||||
const std::map<int, cv::Mat> & cachedScans,
|
||||
const QString & workingDirectory,
|
||||
const ParametersMap & parameters);
|
||||
|
||||
void viewClouds(
|
||||
const std::map<int, Transform> & poses,
|
||||
const std::multimap<int, Link> & links,
|
||||
const std::map<int, int> & mapIds,
|
||||
const QMap<int, Signature> & cachedSignatures,
|
||||
const std::map<int, std::pair<pcl::PointCloud<pcl::PointXYZRGB>::Ptr, pcl::IndicesPtr> > & cachedClouds,
|
||||
const std::map<int, cv::Mat> & cachedScans,
|
||||
const QString & workingDirectory,
|
||||
const ParametersMap & parameters);
|
||||
|
||||
static bool removeDirRecursively(const QString & dirName);
|
||||
|
||||
signals:
|
||||
void configChanged();
|
||||
|
||||
public slots:
|
||||
void restoreDefaults();
|
||||
|
||||
private slots:
|
||||
void updateReconstructionFlavor();
|
||||
void selectDistortionModel();
|
||||
void updateMLSGrpVisibility();
|
||||
void cancel();
|
||||
|
||||
private:
|
||||
std::map<int, std::pair<pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr, pcl::IndicesPtr> > getClouds(
|
||||
const std::map<int, Transform> & poses,
|
||||
const QMap<int, Signature> & cachedSignatures,
|
||||
const std::map<int, std::pair<pcl::PointCloud<pcl::PointXYZRGB>::Ptr, pcl::IndicesPtr> > & cachedClouds,
|
||||
const std::map<int, cv::Mat> & cachedScans,
|
||||
const ParametersMap & parameters,
|
||||
bool & has2dScans) const;
|
||||
bool getExportedClouds(
|
||||
const std::map<int, Transform> & poses,
|
||||
const std::multimap<int, Link> & links,
|
||||
const std::map<int, int> & mapIds,
|
||||
const QMap<int, Signature> & cachedSignatures,
|
||||
const std::map<int, std::pair<pcl::PointCloud<pcl::PointXYZRGB>::Ptr, pcl::IndicesPtr> > & cachedClouds,
|
||||
const std::map<int, cv::Mat> & cachedScans,
|
||||
const QString & workingDirectory,
|
||||
const ParametersMap & parameters,
|
||||
std::map<int, pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr> & clouds,
|
||||
std::map<int, pcl::PolygonMesh::Ptr> & meshes,
|
||||
std::map<int, pcl::TextureMesh::Ptr> & textureMeshes,
|
||||
std::vector<std::map<int, pcl::PointXY> > & textureVertexToPixels);
|
||||
void saveClouds(const QString & workingDirectory, const std::map<int, Transform> & poses, const std::map<int, pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr> & clouds, bool binaryMode = true);
|
||||
void saveMeshes(const QString & workingDirectory, const std::map<int, Transform> & poses, const std::map<int, pcl::PolygonMesh::Ptr> & meshes, bool binaryMode = true);
|
||||
void saveTextureMeshes(const QString & workingDirectory, const std::map<int, Transform> & poses, std::map<int, pcl::TextureMesh::Ptr> & textureMeshes, const QMap<int, Signature> & cachedSignatures, const std::vector<std::map<int, pcl::PointXY> > & textureVertexToPixels);
|
||||
|
||||
void setSaveButton();
|
||||
void setOkButton();
|
||||
|
||||
private:
|
||||
Ui_ExportCloudsDialog * _ui;
|
||||
ProgressDialog * _progressDialog;
|
||||
QString _workingDirectory;
|
||||
bool _canceled;
|
||||
GainCompensator * _compensator;
|
||||
const DBDriver * _dbDriver;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif /* EXPORTCLOUDSDIALOG_H_ */
|
||||
@@ -1,73 +1,75 @@
|
||||
/*
|
||||
Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of the Universite de Sherbrooke nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef EXPORTDIALOG_H_
|
||||
#define EXPORTDIALOG_H_
|
||||
|
||||
#include <QDialog>
|
||||
#include <QSettings>
|
||||
|
||||
class Ui_ExportDialog;
|
||||
|
||||
namespace rtabmap {
|
||||
|
||||
class ExportDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
ExportDialog(QWidget * parent = 0);
|
||||
|
||||
virtual ~ExportDialog();
|
||||
|
||||
void saveSettings(QSettings & settings, const QString & group) const;
|
||||
void loadSettings(QSettings & settings, const QString & group);
|
||||
|
||||
QString outputPath() const;
|
||||
int framesIgnored() const;
|
||||
double targetFramerate() const;
|
||||
int sessionExported() const;
|
||||
bool isRgbExported() const;
|
||||
bool isDepthExported() const;
|
||||
bool isDepth2dExported() const;
|
||||
bool isOdomExported() const;
|
||||
bool isUserDataExported() const;
|
||||
|
||||
signals:
|
||||
void configChanged();
|
||||
|
||||
private slots:
|
||||
void getPath();
|
||||
void restoreDefaults();
|
||||
|
||||
private:
|
||||
Ui_ExportDialog * _ui;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif /* EXPORTDIALOG_H_ */
|
||||
/*
|
||||
Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of the Universite de Sherbrooke nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef RTABMAP_EXPORTDIALOG_H_
|
||||
#define RTABMAP_EXPORTDIALOG_H_
|
||||
|
||||
#include "rtabmap/gui/RtabmapGuiExp.h" // DLL export/import defines
|
||||
|
||||
#include <QDialog>
|
||||
#include <QSettings>
|
||||
|
||||
class Ui_ExportDialog;
|
||||
|
||||
namespace rtabmap {
|
||||
|
||||
class RTABMAPGUI_EXP ExportDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
ExportDialog(QWidget * parent = 0);
|
||||
|
||||
virtual ~ExportDialog();
|
||||
|
||||
void saveSettings(QSettings & settings, const QString & group) const;
|
||||
void loadSettings(QSettings & settings, const QString & group);
|
||||
|
||||
QString outputPath() const;
|
||||
int framesIgnored() const;
|
||||
double targetFramerate() const;
|
||||
int sessionExported() const;
|
||||
bool isRgbExported() const;
|
||||
bool isDepthExported() const;
|
||||
bool isDepth2dExported() const;
|
||||
bool isOdomExported() const;
|
||||
bool isUserDataExported() const;
|
||||
|
||||
signals:
|
||||
void configChanged();
|
||||
|
||||
private slots:
|
||||
void getPath();
|
||||
void restoreDefaults();
|
||||
|
||||
private:
|
||||
Ui_ExportDialog * _ui;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif /* EXPORTDIALOG_H_ */
|
||||
@@ -25,8 +25,8 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef GRAPHVIEWER_H_
|
||||
#define GRAPHVIEWER_H_
|
||||
#ifndef RTABMAP_GRAPHVIEWER_H_
|
||||
#define RTABMAP_GRAPHVIEWER_H_
|
||||
|
||||
#include "rtabmap/gui/RtabmapGuiExp.h" // DLL export/import defines
|
||||
|
||||
|
||||
@@ -25,8 +25,8 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef IMAGEVIEW_H_
|
||||
#define IMAGEVIEW_H_
|
||||
#ifndef RTABMAP_IMAGEVIEW_H_
|
||||
#define RTABMAP_IMAGEVIEW_H_
|
||||
|
||||
#include "rtabmap/gui/RtabmapGuiExp.h" // DLL export/import defines
|
||||
|
||||
@@ -63,6 +63,7 @@ public:
|
||||
int getAlpha() const {return _alpha;}
|
||||
bool isGraphicsViewMode() const;
|
||||
bool isGraphicsViewScaled() const;
|
||||
const QColor & getDefaultBackgroundColor() const;
|
||||
const QColor & getBackgroundColor() const;
|
||||
|
||||
float viewScale() const;
|
||||
@@ -73,6 +74,7 @@ public:
|
||||
void setLinesShown(bool shown);
|
||||
void setGraphicsViewMode(bool on);
|
||||
void setGraphicsViewScaled(bool scaled);
|
||||
void setDefaultBackgroundColor(const QColor & color);
|
||||
void setBackgroundColor(const QColor & color);
|
||||
|
||||
void setFeatures(const std::multimap<int, cv::KeyPoint> & refWords, const cv::Mat & depth = cv::Mat(), const QColor & color = Qt::yellow);
|
||||
@@ -112,6 +114,7 @@ private:
|
||||
private:
|
||||
QString _savedFileName;
|
||||
int _alpha;
|
||||
QColor _defaultBgColor;
|
||||
|
||||
QMenu * _menu;
|
||||
QAction * _showImage;
|
||||
|
||||
@@ -25,8 +25,8 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef KEYPOINTITEM_H_
|
||||
#define KEYPOINTITEM_H_
|
||||
#ifndef RTABMAP_KEYPOINTITEM_H_
|
||||
#define RTABMAP_KEYPOINTITEM_H_
|
||||
|
||||
#include "rtabmap/gui/RtabmapGuiExp.h" // DLL export/import defines
|
||||
|
||||
|
||||
@@ -25,8 +25,8 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef LOOPCLOSUREVIEWER_H_
|
||||
#define LOOPCLOSUREVIEWER_H_
|
||||
#ifndef RTABMAP_LOOPCLOSUREVIEWER_H_
|
||||
#define RTABMAP_LOOPCLOSUREVIEWER_H_
|
||||
|
||||
#include "rtabmap/gui/RtabmapGuiExp.h" // DLL export/import defines
|
||||
|
||||
|
||||
@@ -25,8 +25,8 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef MAINWINDOW_H_
|
||||
#define MAINWINDOW_H_
|
||||
#ifndef RTABMAP_MAINWINDOW_H_
|
||||
#define RTABMAP_MAINWINDOW_H_
|
||||
|
||||
#include "rtabmap/gui/RtabmapGuiExp.h" // DLL export/import defines
|
||||
|
||||
@@ -96,7 +96,7 @@ public:
|
||||
* @param prefDialog If NULL, a default dialog is created. This
|
||||
* dialog is automatically destroyed with the MainWindow.
|
||||
*/
|
||||
MainWindow(PreferencesDialog * prefDialog = 0, QWidget * parent = 0);
|
||||
MainWindow(PreferencesDialog * prefDialog = 0, QWidget * parent = 0, bool showSplashScreen = true);
|
||||
virtual ~MainWindow();
|
||||
|
||||
QString getWorkingDirectory() const;
|
||||
@@ -106,8 +106,10 @@ public:
|
||||
bool isProcessingStatistics() const {return _processingStatistics;}
|
||||
bool isProcessingOdometry() const {return _processingOdometry;}
|
||||
|
||||
bool isDatabaseUpdated() const { return _databaseUpdated; }
|
||||
|
||||
public slots:
|
||||
void processStats(const rtabmap::Statistics & stat);
|
||||
virtual void processStats(const rtabmap::Statistics & stat);
|
||||
void updateCacheFromDatabase(const QString & path);
|
||||
void openDatabase(const QString & path);
|
||||
void updateParameters(const rtabmap::ParametersMap & parameters);
|
||||
@@ -121,19 +123,31 @@ protected:
|
||||
virtual void keyPressEvent(QKeyEvent *event);
|
||||
virtual bool eventFilter(QObject *obj, QEvent *event);
|
||||
|
||||
private slots:
|
||||
void changeState(MainWindow::State state);
|
||||
protected slots:
|
||||
virtual void changeState(MainWindow::State state);
|
||||
virtual void newDatabase();
|
||||
virtual void openDatabase();
|
||||
virtual bool closeDatabase();
|
||||
virtual void startDetection();
|
||||
virtual void pauseDetection();
|
||||
virtual void stopDetection();
|
||||
virtual void saveConfigGUI();
|
||||
virtual void downloadAllClouds();
|
||||
virtual void downloadPoseGraph();
|
||||
virtual void clearTheCache();
|
||||
virtual void openHelp();
|
||||
virtual void openPreferences();
|
||||
virtual void openPreferencesSource();
|
||||
virtual void setDefaultViews();
|
||||
virtual void resetOdometry();
|
||||
virtual void triggerNewMap();
|
||||
virtual void deleteMemory();
|
||||
|
||||
protected slots:
|
||||
void beep();
|
||||
void cancelProgress();
|
||||
void configGUIModified();
|
||||
void saveConfigGUI();
|
||||
void newDatabase();
|
||||
void openDatabase();
|
||||
bool closeDatabase();
|
||||
void editDatabase();
|
||||
void startDetection();
|
||||
void pauseDetection();
|
||||
void stopDetection();
|
||||
void notifyNoMoreImages();
|
||||
void printLoopClosureIds();
|
||||
void generateGraphDOT();
|
||||
@@ -146,7 +160,6 @@ private slots:
|
||||
void exportOctomap();
|
||||
void postProcessing();
|
||||
void depthCalibration();
|
||||
void deleteMemory();
|
||||
void openWorkingDirectory();
|
||||
void updateEditMenu();
|
||||
void selectStream();
|
||||
@@ -169,14 +182,7 @@ private slots:
|
||||
void cancelGoal();
|
||||
void label();
|
||||
void updateCacheFromDatabase();
|
||||
void downloadAllClouds();
|
||||
void downloadPoseGraph();
|
||||
void anchorCloudsToGroundTruth();
|
||||
void clearTheCache();
|
||||
void openHelp();
|
||||
void openPreferences();
|
||||
void openPreferencesSource();
|
||||
void setDefaultViews();
|
||||
void selectScreenCaptureFormat(bool checked);
|
||||
void takeScreenshot();
|
||||
void updateElapsedTime();
|
||||
@@ -207,8 +213,6 @@ private slots:
|
||||
void exportClouds();
|
||||
void exportBundlerFormat();
|
||||
void viewClouds();
|
||||
void resetOdometry();
|
||||
void triggerNewMap();
|
||||
void dataRecorder();
|
||||
void dataRecorderDestroyed();
|
||||
void updateNodeVisibility(int, bool);
|
||||
@@ -256,6 +260,33 @@ private:
|
||||
void exportPoses(int format);
|
||||
QString captureScreen(bool cacheInRAM = false);
|
||||
|
||||
protected:
|
||||
Ui_mainWindow * ui() { return _ui; }
|
||||
const State & state() const { return _state; }
|
||||
|
||||
const QMap<int, Signature> & cachedSignatures() const { return _cachedSignatures;}
|
||||
const std::map<int, Transform> & currentPosesMap() const { return _currentPosesMap; } // <nodeId, pose>
|
||||
const std::map<int, Transform> & currentGTPosesMap() const { return _currentGTPosesMap; } // <nodeId, pose>
|
||||
const std::multimap<int, Link> & currentLinksMap() const { return _currentLinksMap; } // <nodeFromId, link>
|
||||
const std::map<int, int> & currentMapIds() const { return _currentMapIds; } // <nodeId, mapId>
|
||||
const std::map<int, std::string> & currentLabels() const { return _currentLabels; } // <nodeId, label>
|
||||
const std::map<int, std::pair<pcl::PointCloud<pcl::PointXYZRGB>::Ptr, pcl::IndicesPtr> > & cachedClouds() const { return _cachedClouds; }
|
||||
const std::map<int, cv::Mat> & createdScans() const { return _createdScans; }
|
||||
const std::map<int, pcl::PointCloud<pcl::PointXYZRGB>::Ptr> & createdFeatures() const { return _createdFeatures; }
|
||||
|
||||
const rtabmap::OccupancyGrid * occupancyGrid() const { return _occupancyGrid; }
|
||||
const rtabmap::OctoMap * octomap() const { return _octomap; }
|
||||
|
||||
rtabmap::ProgressDialog * progressDialog() { return _progressDialog; }
|
||||
rtabmap::CloudViewer * cloudViewer() const { return _cloudViewer; }
|
||||
rtabmap::LoopClosureViewer * loopClosureViewer() const { return _loopClosureViewer; }
|
||||
|
||||
void setCloudViewer(rtabmap::CloudViewer * cloudViewer);
|
||||
void setLoopClosureViewer(rtabmap::LoopClosureViewer * loopClosureViewer);
|
||||
|
||||
void setNewDatabasePathOutput(const QString & newDatabasePathOutput) {_newDatabasePathOutput = newDatabasePathOutput;}
|
||||
const QString & newDatabasePathOutput() const { return _newDatabasePathOutput; }
|
||||
|
||||
private:
|
||||
Ui_mainWindow * _ui;
|
||||
|
||||
@@ -320,7 +351,7 @@ private:
|
||||
PdfPlotCurve * _likelihoodCurve;
|
||||
PdfPlotCurve * _rawLikelihoodCurve;
|
||||
|
||||
ProgressDialog * _initProgressDialog;
|
||||
ProgressDialog * _progressDialog;
|
||||
|
||||
CloudViewer * _cloudViewer;
|
||||
LoopClosureViewer * _loopClosureViewer;
|
||||
@@ -341,4 +372,4 @@ private:
|
||||
|
||||
}
|
||||
|
||||
#endif /* MainWindow_H_ */
|
||||
#endif /* RTABMAP_MainWindow_H_ */
|
||||
|
||||
@@ -25,8 +25,10 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef MAPVISIBILITYWIDGET_H_
|
||||
#define MAPVISIBILITYWIDGET_H_
|
||||
#ifndef RTABMAP_MAPVISIBILITYWIDGET_H_
|
||||
#define RTABMAP_MAPVISIBILITYWIDGET_H_
|
||||
|
||||
#include "rtabmap/gui/RtabmapGuiExp.h" // DLL export/import defines
|
||||
|
||||
#include <QWidget>
|
||||
#include <rtabmap/core/Transform.h>
|
||||
@@ -34,7 +36,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
namespace rtabmap {
|
||||
|
||||
class MapVisibilityWidget : public QWidget {
|
||||
class RTABMAPGUI_EXP MapVisibilityWidget : public QWidget {
|
||||
Q_OBJECT;
|
||||
public:
|
||||
MapVisibilityWidget(QWidget * parent = 0);
|
||||
@@ -25,8 +25,8 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef ODOMETRYVIEWER_H_
|
||||
#define ODOMETRYVIEWER_H_
|
||||
#ifndef RTABMAP_ODOMETRYVIEWER_H_
|
||||
#define RTABMAP_ODOMETRYVIEWER_H_
|
||||
|
||||
#include "rtabmap/gui/RtabmapGuiExp.h" // DLL export/import defines
|
||||
|
||||
|
||||
@@ -29,8 +29,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
// Original version from Find-Object: https://github.com/introlab/find-object
|
||||
//
|
||||
|
||||
#ifndef PARAMETERSTOOLBOX_H_
|
||||
#define PARAMETERSTOOLBOX_H_
|
||||
#ifndef RTABMAP_PARAMETERSTOOLBOX_H_
|
||||
#define RTABMAP_PARAMETERSTOOLBOX_H_
|
||||
|
||||
#include "rtabmap/gui/RtabmapGuiExp.h" // DLL export/import defines
|
||||
|
||||
#include <rtabmap/core/Parameters.h>
|
||||
#include <QWidget>
|
||||
@@ -42,7 +44,7 @@ class QComboBox;
|
||||
|
||||
namespace rtabmap {
|
||||
|
||||
class ParametersToolBox: public QWidget
|
||||
class RTABMAPGUI_EXP ParametersToolBox: public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
@@ -25,8 +25,8 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef PDFPLOT_H_
|
||||
#define PDFPLOT_H_
|
||||
#ifndef RTABMAP_PDFPLOT_H_
|
||||
#define RTABMAP_PDFPLOT_H_
|
||||
|
||||
#include "rtabmap/gui/RtabmapGuiExp.h" // DLL export/import defines
|
||||
|
||||
|
||||
@@ -1,94 +1,96 @@
|
||||
/*
|
||||
Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of the Universite de Sherbrooke nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef POSTPROCESSINGDIALOG_H_
|
||||
#define POSTPROCESSINGDIALOG_H_
|
||||
|
||||
#include <QDialog>
|
||||
#include <QtCore/QSettings>
|
||||
|
||||
#include <rtabmap/core/Optimizer.h>
|
||||
|
||||
class Ui_PostProcessingDialog;
|
||||
class QAbstractButton;
|
||||
|
||||
namespace rtabmap {
|
||||
|
||||
class PostProcessingDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
PostProcessingDialog(QWidget * parent = 0);
|
||||
|
||||
virtual ~PostProcessingDialog();
|
||||
|
||||
void saveSettings(QSettings & settings, const QString & group = "") const;
|
||||
void loadSettings(QSettings & settings, const QString & group = "");
|
||||
|
||||
//getters
|
||||
bool isDetectMoreLoopClosures() const;
|
||||
double clusterRadius() const;
|
||||
double clusterAngle() const;
|
||||
int iterations() const;
|
||||
bool isRefineNeighborLinks() const;
|
||||
bool isRefineLoopClosureLinks() const;
|
||||
bool isSBA() const;
|
||||
int sbaIterations() const;
|
||||
double sbaVariance() const;
|
||||
Optimizer::Type sbaType() const;
|
||||
|
||||
//setters
|
||||
void setDetectMoreLoopClosures(bool on);
|
||||
void setClusterRadius(double radius);
|
||||
void setClusterAngle(double angle);
|
||||
void setIterations(int iterations);
|
||||
void setRefineNeighborLinks(bool on);
|
||||
void setRefineLoopClosureLinks(bool on);
|
||||
void setSBA(bool on);
|
||||
void setSBAIterations(int iterations);
|
||||
void setSBAVariance(double variance);
|
||||
void setSBAType(Optimizer::Type type);
|
||||
|
||||
signals:
|
||||
void configChanged();
|
||||
|
||||
public slots:
|
||||
void restoreDefaults();
|
||||
|
||||
private slots:
|
||||
void updateVisibility();
|
||||
void updateButtonBox();
|
||||
|
||||
|
||||
private:
|
||||
Ui_PostProcessingDialog * _ui;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif /* POSTPROCESSINGDIALOG_H_ */
|
||||
/*
|
||||
Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of the Universite de Sherbrooke nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef RTABMAP_POSTPROCESSINGDIALOG_H_
|
||||
#define RTABMAP_POSTPROCESSINGDIALOG_H_
|
||||
|
||||
#include "rtabmap/gui/RtabmapGuiExp.h" // DLL export/import defines
|
||||
|
||||
#include <QDialog>
|
||||
#include <QtCore/QSettings>
|
||||
|
||||
#include <rtabmap/core/Optimizer.h>
|
||||
|
||||
class Ui_PostProcessingDialog;
|
||||
class QAbstractButton;
|
||||
|
||||
namespace rtabmap {
|
||||
|
||||
class RTABMAPGUI_EXP PostProcessingDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
PostProcessingDialog(QWidget * parent = 0);
|
||||
|
||||
virtual ~PostProcessingDialog();
|
||||
|
||||
void saveSettings(QSettings & settings, const QString & group = "") const;
|
||||
void loadSettings(QSettings & settings, const QString & group = "");
|
||||
|
||||
//getters
|
||||
bool isDetectMoreLoopClosures() const;
|
||||
double clusterRadius() const;
|
||||
double clusterAngle() const;
|
||||
int iterations() const;
|
||||
bool isRefineNeighborLinks() const;
|
||||
bool isRefineLoopClosureLinks() const;
|
||||
bool isSBA() const;
|
||||
int sbaIterations() const;
|
||||
double sbaVariance() const;
|
||||
Optimizer::Type sbaType() const;
|
||||
|
||||
//setters
|
||||
void setDetectMoreLoopClosures(bool on);
|
||||
void setClusterRadius(double radius);
|
||||
void setClusterAngle(double angle);
|
||||
void setIterations(int iterations);
|
||||
void setRefineNeighborLinks(bool on);
|
||||
void setRefineLoopClosureLinks(bool on);
|
||||
void setSBA(bool on);
|
||||
void setSBAIterations(int iterations);
|
||||
void setSBAVariance(double variance);
|
||||
void setSBAType(Optimizer::Type type);
|
||||
|
||||
signals:
|
||||
void configChanged();
|
||||
|
||||
public slots:
|
||||
void restoreDefaults();
|
||||
|
||||
private slots:
|
||||
void updateVisibility();
|
||||
void updateButtonBox();
|
||||
|
||||
|
||||
private:
|
||||
Ui_PostProcessingDialog * _ui;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif /* POSTPROCESSINGDIALOG_H_ */
|
||||
@@ -25,8 +25,8 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef PREFERENCESDIALOG_H_
|
||||
#define PREFERENCESDIALOG_H_
|
||||
#ifndef RTABMAP_PREFERENCESDIALOG_H_
|
||||
#define RTABMAP_PREFERENCESDIALOG_H_
|
||||
|
||||
#include "rtabmap/gui/RtabmapGuiExp.h" // DLL export/import defines
|
||||
|
||||
|
||||
@@ -25,8 +25,8 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef PROGRESSDIALOG_H_
|
||||
#define PROGRESSDIALOG_H_
|
||||
#ifndef RTABMAP_PROGRESSDIALOG_H_
|
||||
#define RTABMAP_PROGRESSDIALOG_H_
|
||||
|
||||
#include "rtabmap/gui/RtabmapGuiExp.h" // DLL export/import defines
|
||||
|
||||
|
||||
@@ -25,8 +25,8 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef RECOVERYSTATE_H_
|
||||
#define RECOVERYSTATE_H_
|
||||
#ifndef RTABMAP_RECOVERYSTATE_H_
|
||||
#define RTABMAP_RECOVERYSTATE_H_
|
||||
|
||||
#include "rtabmap/gui/ProgressDialog.h"
|
||||
#include "rtabmap/core/ProgressState.h"
|
||||
@@ -25,8 +25,8 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef STATSTOOLBOX_H_
|
||||
#define STATSTOOLBOX_H_
|
||||
#ifndef RTABMAP_STATSTOOLBOX_H_
|
||||
#define RTABMAP_STATSTOOLBOX_H_
|
||||
|
||||
#include "rtabmap/gui/RtabmapGuiExp.h" // DLL export/import defines
|
||||
|
||||
|
||||
@@ -26,8 +26,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef GUILIB_SRC_TEXTURINGSTATE_H_
|
||||
#define GUILIB_SRC_TEXTURINGSTATE_H_
|
||||
#ifndef RTABMAP_TEXTURINGSTATE_H_
|
||||
#define RTABMAP_TEXTURINGSTATE_H_
|
||||
|
||||
#include "rtabmap/gui/ProgressDialog.h"
|
||||
#include "rtabmap/core/ProgressState.h"
|
||||
@@ -25,7 +25,7 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "AboutDialog.h"
|
||||
#include "rtabmap/gui/AboutDialog.h"
|
||||
#include "rtabmap/core/Parameters.h"
|
||||
#include "rtabmap/core/CameraRGBD.h"
|
||||
#include "rtabmap/core/CameraStereo.h"
|
||||
|
||||
@@ -5,7 +5,7 @@ SET(headers_ui
|
||||
../include/${PROJECT_PREFIX}/gui/MainWindow.h
|
||||
../include/${PROJECT_PREFIX}/gui/PreferencesDialog.h
|
||||
../include/${PROJECT_PREFIX}/gui/DatabaseViewer.h
|
||||
./AboutDialog.h
|
||||
../include/${PROJECT_PREFIX}/gui/AboutDialog.h
|
||||
../include/${PROJECT_PREFIX}/gui/ConsoleWidget.h
|
||||
../include/${PROJECT_PREFIX}/gui/ImageView.h
|
||||
../include/${PROJECT_PREFIX}/gui/PdfPlot.h
|
||||
@@ -19,19 +19,19 @@ SET(headers_ui
|
||||
../include/${PROJECT_PREFIX}/gui/DataRecorder.h
|
||||
../include/${PROJECT_PREFIX}/gui/CameraViewer.h
|
||||
../include/${PROJECT_PREFIX}/gui/CalibrationDialog.h
|
||||
./ExportDialog.h
|
||||
./PostProcessingDialog.h
|
||||
./ExportCloudsDialog.h
|
||||
./ExportBundlerDialog.h
|
||||
./MapVisibilityWidget.h
|
||||
../include/${PROJECT_PREFIX}/gui/ExportDialog.h
|
||||
../include/${PROJECT_PREFIX}/gui/PostProcessingDialog.h
|
||||
../include/${PROJECT_PREFIX}/gui/ExportCloudsDialog.h
|
||||
../include/${PROJECT_PREFIX}/gui/ExportBundlerDialog.h
|
||||
../include/${PROJECT_PREFIX}/gui/MapVisibilityWidget.h
|
||||
../include/${PROJECT_PREFIX}/gui/GraphViewer.h
|
||||
./CreateSimpleCalibrationDialog.h
|
||||
./ParametersToolBox.h
|
||||
./DepthCalibrationDialog.h
|
||||
../include/${PROJECT_PREFIX}/gui/CreateSimpleCalibrationDialog.h
|
||||
../include/${PROJECT_PREFIX}/gui/ParametersToolBox.h
|
||||
../include/${PROJECT_PREFIX}/gui/DepthCalibrationDialog.h
|
||||
./3rdParty/QMultiComboBox.h
|
||||
./TexturingState.h
|
||||
./RecoveryState.h
|
||||
./EditDepthArea.h
|
||||
../include/${PROJECT_PREFIX}/gui/TexturingState.h
|
||||
../include/${PROJECT_PREFIX}/gui/RecoveryState.h
|
||||
../include/${PROJECT_PREFIX}/gui/EditDepthArea.h
|
||||
)
|
||||
|
||||
SET(uis
|
||||
|
||||
@@ -1638,17 +1638,18 @@ void CloudViewer::resetCamera()
|
||||
if((_aFollowCamera->isChecked() || _aLockCamera->isChecked()) && !_lastPose.isNull())
|
||||
{
|
||||
// reset relative to last current pose
|
||||
cv::Point3f pt = util3d::transformPoint(cv::Point3f(_lastPose.x(), _lastPose.y(), _lastPose.z()), _lastPose.rotation()*Transform(-1, 0, 0));
|
||||
if(_aLockViewZ->isChecked())
|
||||
{
|
||||
_visualizer->setCameraPosition(
|
||||
_lastPose.x()-1, _lastPose.y(), _lastPose.z(),
|
||||
pt.x, pt.y, pt.z,
|
||||
_lastPose.x(), _lastPose.y(), _lastPose.z(),
|
||||
0, 0, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
_visualizer->setCameraPosition(
|
||||
_lastPose.x()-1, _lastPose.y(), _lastPose.z(),
|
||||
pt.x, pt.y, pt.z,
|
||||
_lastPose.x(), _lastPose.y(), _lastPose.z(),
|
||||
_lastPose.r31(), _lastPose.r32(), _lastPose.r33());
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "CreateSimpleCalibrationDialog.h"
|
||||
#include "rtabmap/gui/CreateSimpleCalibrationDialog.h"
|
||||
#include "ui_createSimpleCalibrationDialog.h"
|
||||
|
||||
#include "rtabmap/core/CameraModel.h"
|
||||
|
||||
@@ -71,14 +71,14 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#include "rtabmap/core/GeodeticCoords.h"
|
||||
#include "rtabmap/core/Recovery.h"
|
||||
#include "rtabmap/gui/DataRecorder.h"
|
||||
#include "ExportCloudsDialog.h"
|
||||
#include "EditDepthArea.h"
|
||||
#include "rtabmap/gui/ExportCloudsDialog.h"
|
||||
#include "rtabmap/gui/EditDepthArea.h"
|
||||
#include "rtabmap/core/SensorData.h"
|
||||
#include "rtabmap/core/GainCompensator.h"
|
||||
#include "ExportDialog.h"
|
||||
#include "rtabmap/gui/ExportDialog.h"
|
||||
#include "rtabmap/gui/ProgressDialog.h"
|
||||
#include "ParametersToolBox.h"
|
||||
#include "RecoveryState.h"
|
||||
#include "rtabmap/gui/ParametersToolBox.h"
|
||||
#include "rtabmap/gui/RecoveryState.h"
|
||||
#include <pcl/io/pcd_io.h>
|
||||
#include <pcl/io/ply_io.h>
|
||||
#include <pcl/filters/voxel_grid.h>
|
||||
@@ -1436,7 +1436,7 @@ void DatabaseViewer::updateIds()
|
||||
std::multimap<int, Link> links;
|
||||
dbDriver_->getAllLinks(links, true);
|
||||
UDEBUG("%d total links loaded", (int)links.size());
|
||||
|
||||
|
||||
double totalOdom = 0.0;
|
||||
Transform previousPose;
|
||||
int sessions = ids_.size()?1:0;
|
||||
|
||||
@@ -25,7 +25,7 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <DepthCalibrationDialog.h>
|
||||
#include <rtabmap/gui/DepthCalibrationDialog.h>
|
||||
#include "ui_depthCalibrationDialog.h"
|
||||
|
||||
#include "rtabmap/gui/ProgressDialog.h"
|
||||
|
||||
@@ -32,7 +32,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#include <QAction>
|
||||
#include <QInputDialog>
|
||||
|
||||
#include "EditDepthArea.h"
|
||||
#include "rtabmap/gui/EditDepthArea.h"
|
||||
#include <rtabmap/utilite/ULogger.h>
|
||||
#include <rtabmap/utilite/UCv2Qt.h>
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "ExportBundlerDialog.h"
|
||||
#include "rtabmap/gui/ExportBundlerDialog.h"
|
||||
#include "ui_exportBundlerDialog.h"
|
||||
|
||||
#include <QFileDialog>
|
||||
|
||||
@@ -25,11 +25,11 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "ExportCloudsDialog.h"
|
||||
#include "rtabmap/gui/ExportCloudsDialog.h"
|
||||
#include "ui_exportCloudsDialog.h"
|
||||
|
||||
#include "rtabmap/gui/CloudViewer.h"
|
||||
#include "TexturingState.h"
|
||||
#include "rtabmap/gui/TexturingState.h"
|
||||
#include "rtabmap/utilite/ULogger.h"
|
||||
#include "rtabmap/utilite/UConversion.h"
|
||||
#include "rtabmap/utilite/UThread.h"
|
||||
|
||||
@@ -25,7 +25,7 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "ExportDialog.h"
|
||||
#include "rtabmap/gui/ExportDialog.h"
|
||||
#include "ui_exportDialog.h"
|
||||
|
||||
#include <QFileDialog>
|
||||
|
||||
@@ -148,6 +148,7 @@ ImageView::ImageView(QWidget * parent) :
|
||||
QWidget(parent),
|
||||
_savedFileName((QDir::homePath()+ "/") + "picture" + ".png"),
|
||||
_alpha(50),
|
||||
_defaultBgColor(Qt::black),
|
||||
_imageItem(0),
|
||||
_imageDepthItem(0)
|
||||
{
|
||||
@@ -202,6 +203,7 @@ void ImageView::saveSettings(QSettings & settings, const QString & group) const
|
||||
settings.setValue("features_shown", this->isFeaturesShown());
|
||||
settings.setValue("lines_shown", this->isLinesShown());
|
||||
settings.setValue("alpha", this->getAlpha());
|
||||
settings.setValue("bg_color", this->getDefaultBackgroundColor());
|
||||
settings.setValue("graphics_view", this->isGraphicsViewMode());
|
||||
settings.setValue("graphics_view_scale", this->isGraphicsViewScaled());
|
||||
if(!group.isEmpty())
|
||||
@@ -221,6 +223,7 @@ void ImageView::loadSettings(QSettings & settings, const QString & group)
|
||||
this->setFeaturesShown(settings.value("features_shown", this->isFeaturesShown()).toBool());
|
||||
this->setLinesShown(settings.value("lines_shown", this->isLinesShown()).toBool());
|
||||
this->setAlpha(settings.value("alpha", this->getAlpha()).toInt());
|
||||
this->setDefaultBackgroundColor(settings.value("bg_color", this->getDefaultBackgroundColor()).value<QColor>());
|
||||
this->setGraphicsViewMode(settings.value("graphics_view", this->isGraphicsViewMode()).toBool());
|
||||
this->setGraphicsViewScaled(settings.value("graphics_view_scale", this->isGraphicsViewScaled()).toBool());
|
||||
if(!group.isEmpty())
|
||||
@@ -259,6 +262,11 @@ bool ImageView::isGraphicsViewScaled() const
|
||||
return _graphicsViewScaled->isChecked();
|
||||
}
|
||||
|
||||
const QColor & ImageView::getDefaultBackgroundColor() const
|
||||
{
|
||||
return _defaultBgColor;
|
||||
}
|
||||
|
||||
const QColor & ImageView::getBackgroundColor() const
|
||||
{
|
||||
return _graphicsView->backgroundBrush().color();
|
||||
@@ -416,6 +424,12 @@ void ImageView::setGraphicsViewScaled(bool scaled)
|
||||
}
|
||||
}
|
||||
|
||||
void ImageView::setDefaultBackgroundColor(const QColor & color)
|
||||
{
|
||||
_defaultBgColor = color;
|
||||
setBackgroundColor(color);
|
||||
}
|
||||
|
||||
void ImageView::setBackgroundColor(const QColor & color)
|
||||
{
|
||||
_graphicsView->setBackgroundBrush(QBrush(color));
|
||||
|
||||
@@ -53,6 +53,12 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#include "rtabmap/gui/ProgressDialog.h"
|
||||
#include "rtabmap/gui/CloudViewer.h"
|
||||
#include "rtabmap/gui/LoopClosureViewer.h"
|
||||
#include "rtabmap/gui/ExportCloudsDialog.h"
|
||||
#include "rtabmap/gui/ExportBundlerDialog.h"
|
||||
#include "rtabmap/gui/AboutDialog.h"
|
||||
#include "rtabmap/gui/PostProcessingDialog.h"
|
||||
#include "rtabmap/gui/DepthCalibrationDialog.h"
|
||||
#include "rtabmap/gui/RecoveryState.h"
|
||||
|
||||
#include <rtabmap/utilite/UStl.h>
|
||||
#include <rtabmap/utilite/ULogger.h>
|
||||
@@ -62,13 +68,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#include "rtabmap/utilite/UPlot.h"
|
||||
#include "rtabmap/utilite/UCv2Qt.h"
|
||||
|
||||
#include "ExportCloudsDialog.h"
|
||||
#include "ExportBundlerDialog.h"
|
||||
#include "AboutDialog.h"
|
||||
#include "PostProcessingDialog.h"
|
||||
#include "DepthCalibrationDialog.h"
|
||||
#include "RecoveryState.h"
|
||||
|
||||
#include <QtGui/QCloseEvent>
|
||||
#include <QtGui/QPixmap>
|
||||
#include <QtCore/QDir>
|
||||
@@ -130,7 +129,7 @@ inline static void initGuiResource() { Q_INIT_RESOURCE(GuiLib); }
|
||||
|
||||
namespace rtabmap {
|
||||
|
||||
MainWindow::MainWindow(PreferencesDialog * prefDialog, QWidget * parent) :
|
||||
MainWindow::MainWindow(PreferencesDialog * prefDialog, QWidget * parent, bool showSplashScreen) :
|
||||
QMainWindow(parent),
|
||||
_ui(0),
|
||||
_state(kIdle),
|
||||
@@ -177,11 +176,15 @@ MainWindow::MainWindow(PreferencesDialog * prefDialog, QWidget * parent) :
|
||||
|
||||
initGuiResource();
|
||||
|
||||
QPixmap pixmap(":images/RTAB-Map.png");
|
||||
QSplashScreen splash(pixmap);
|
||||
splash.show();
|
||||
splash.showMessage(tr("Loading..."));
|
||||
QApplication::processEvents();
|
||||
QSplashScreen * splash = 0;
|
||||
if (showSplashScreen)
|
||||
{
|
||||
QPixmap pixmap(":images/RTAB-Map.png");
|
||||
splash = new QSplashScreen(pixmap);
|
||||
splash->show();
|
||||
splash->showMessage(tr("Loading..."));
|
||||
QApplication::processEvents();
|
||||
}
|
||||
|
||||
// Create dialogs
|
||||
_aboutDialog = new AboutDialog(this);
|
||||
@@ -265,9 +268,9 @@ MainWindow::MainWindow(PreferencesDialog * prefDialog, QWidget * parent) :
|
||||
_logEventTime->start();
|
||||
|
||||
//Graphics scenes
|
||||
_ui->imageView_source->setBackgroundColor(Qt::black);
|
||||
_ui->imageView_loopClosure->setBackgroundColor(Qt::black);
|
||||
_ui->imageView_odometry->setBackgroundColor(Qt::black);
|
||||
_ui->imageView_source->setBackgroundColor(_ui->imageView_source->getDefaultBackgroundColor());
|
||||
_ui->imageView_loopClosure->setBackgroundColor(_ui->imageView_loopClosure->getDefaultBackgroundColor());
|
||||
_ui->imageView_odometry->setBackgroundColor(_ui->imageView_odometry->getDefaultBackgroundColor());
|
||||
_ui->imageView_odometry->setAlpha(200);
|
||||
_preferencesDialog->loadWidgetState(_ui->imageView_source);
|
||||
_preferencesDialog->loadWidgetState(_ui->imageView_loopClosure);
|
||||
@@ -290,9 +293,9 @@ MainWindow::MainWindow(PreferencesDialog * prefDialog, QWidget * parent) :
|
||||
_ui->rawLikelihoodPlot->addCurve(_rawLikelihoodCurve, false);
|
||||
_ui->rawLikelihoodPlot->showLegend(false);
|
||||
|
||||
_initProgressDialog = new ProgressDialog(this);
|
||||
_initProgressDialog->setMinimumWidth(800);
|
||||
connect(_initProgressDialog, SIGNAL(canceled()), this, SLOT(cancelProgress()));
|
||||
_progressDialog = new ProgressDialog(this);
|
||||
_progressDialog->setMinimumWidth(800);
|
||||
connect(_progressDialog, SIGNAL(canceled()), this, SLOT(cancelProgress()));
|
||||
|
||||
connect(_ui->widget_mapVisibility, SIGNAL(visibilityChanged(int, bool)), this, SLOT(updateNodeVisibility(int, bool)));
|
||||
|
||||
@@ -326,7 +329,7 @@ MainWindow::MainWindow(PreferencesDialog * prefDialog, QWidget * parent) :
|
||||
_ui->toolBar_2->setWindowTitle(tr("Control toolbar"));
|
||||
QAction * a = _ui->menuShow_view->addAction("Progress dialog");
|
||||
a->setCheckable(false);
|
||||
connect(a, SIGNAL(triggered(bool)), _initProgressDialog, SLOT(show()));
|
||||
connect(a, SIGNAL(triggered(bool)), _progressDialog, SLOT(show()));
|
||||
QAction * statusBarAction = _ui->menuShow_view->addAction("Status bar");
|
||||
statusBarAction->setCheckable(true);
|
||||
statusBarAction->setChecked(statusBarShown);
|
||||
@@ -618,7 +621,11 @@ MainWindow::MainWindow(PreferencesDialog * prefDialog, QWidget * parent) :
|
||||
_loopClosureViewer->setDecimation(_preferencesDialog->getCloudDecimation(0));
|
||||
_loopClosureViewer->setMaxDepth(_preferencesDialog->getCloudMaxDepth(0));
|
||||
|
||||
splash.close();
|
||||
if (splash)
|
||||
{
|
||||
splash->close();
|
||||
delete splash;
|
||||
}
|
||||
|
||||
this->setFocus();
|
||||
|
||||
@@ -650,6 +657,30 @@ void MainWindow::setupMainLayout(bool vertical)
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::setCloudViewer(rtabmap::CloudViewer * cloudViewer)
|
||||
{
|
||||
UASSERT(cloudViewer);
|
||||
delete _cloudViewer;
|
||||
_cloudViewer = cloudViewer;
|
||||
_cloudViewer->setParent(_ui->layout_cloudViewer);
|
||||
_cloudViewer->setObjectName("widget_cloudViewer");
|
||||
_ui->layout_cloudViewer->layout()->addWidget(_cloudViewer);
|
||||
|
||||
_cloudViewer->setBackfaceCulling(true, false);
|
||||
_preferencesDialog->loadWidgetState(_cloudViewer);
|
||||
|
||||
connect(_cloudViewer, SIGNAL(configChanged()), this, SLOT(configGUIModified()));
|
||||
}
|
||||
void MainWindow::setLoopClosureViewer(rtabmap::LoopClosureViewer * loopClosureViewer)
|
||||
{
|
||||
UASSERT(loopClosureViewer);
|
||||
delete _loopClosureViewer;
|
||||
_loopClosureViewer = loopClosureViewer;
|
||||
_loopClosureViewer->setParent(_ui->layout_loopClosureViewer);
|
||||
_loopClosureViewer->setObjectName("widget_loopClosureViewer");
|
||||
_ui->layout_loopClosureViewer->layout()->addWidget(_loopClosureViewer);
|
||||
}
|
||||
|
||||
void MainWindow::closeEvent(QCloseEvent* event)
|
||||
{
|
||||
// Try to close all children
|
||||
@@ -950,7 +981,7 @@ void MainWindow::processOdometry(const rtabmap::OdometryEvent & odom, bool dataI
|
||||
UDEBUG("odom ok");
|
||||
lostStateChanged = _cloudViewer->getBackgroundColor() == Qt::darkRed;
|
||||
_cloudViewer->setBackgroundColor(_cloudViewer->getDefaultBackgroundColor());
|
||||
_ui->imageView_odometry->setBackgroundColor(Qt::black);
|
||||
_ui->imageView_odometry->setBackgroundColor(_ui->imageView_odometry->getDefaultBackgroundColor());
|
||||
}
|
||||
|
||||
if(!pose.isNull() && (_ui->dockWidget_cloudViewer->isVisible() || _ui->graphicsView_graphView->isVisible()))
|
||||
@@ -1501,8 +1532,8 @@ void MainWindow::processStats(const rtabmap::Statistics & stat)
|
||||
_ui->imageView_source->clear();
|
||||
_ui->imageView_loopClosure->clear();
|
||||
|
||||
_ui->imageView_source->setBackgroundColor(Qt::black);
|
||||
_ui->imageView_loopClosure->setBackgroundColor(Qt::black);
|
||||
_ui->imageView_source->setBackgroundColor(_ui->imageView_source->getDefaultBackgroundColor());
|
||||
_ui->imageView_loopClosure->setBackgroundColor(_ui->imageView_loopClosure->getDefaultBackgroundColor());
|
||||
|
||||
_ui->label_matchId->clear();
|
||||
}
|
||||
@@ -1970,7 +2001,7 @@ void MainWindow::updateMapCloud(
|
||||
|
||||
if(verboseProgress)
|
||||
{
|
||||
_initProgressDialog->appendText(tr("Map update: %1 nodes shown of %2 (cloud filtering is on)").arg(poses.size()).arg(posesIn.size()));
|
||||
_progressDialog->appendText(tr("Map update: %1 nodes shown of %2 (cloud filtering is on)").arg(poses.size()).arg(posesIn.size()));
|
||||
QApplication::processEvents();
|
||||
}
|
||||
}
|
||||
@@ -2181,8 +2212,8 @@ void MainWindow::updateMapCloud(
|
||||
|
||||
if(verboseProgress)
|
||||
{
|
||||
_initProgressDialog->appendText(tr("Updated cloud %1 (%2/%3)").arg(iter->first).arg(i).arg(poses.size()));
|
||||
_initProgressDialog->incrementStep();
|
||||
_progressDialog->appendText(tr("Updated cloud %1 (%2/%3)").arg(iter->first).arg(i).arg(poses.size()));
|
||||
_progressDialog->incrementStep();
|
||||
if(poses.size() < 200 || i % 100 == 0)
|
||||
{
|
||||
QApplication::processEvents();
|
||||
@@ -3441,13 +3472,13 @@ void MainWindow::processRtabmapEventInit(int status, const QString & info)
|
||||
{
|
||||
if((RtabmapEventInit::Status)status == RtabmapEventInit::kInitializing)
|
||||
{
|
||||
_initProgressDialog->resetProgress();
|
||||
_initProgressDialog->show();
|
||||
_progressDialog->resetProgress();
|
||||
_progressDialog->show();
|
||||
this->changeState(MainWindow::kInitializing);
|
||||
}
|
||||
else if((RtabmapEventInit::Status)status == RtabmapEventInit::kInitialized)
|
||||
{
|
||||
_initProgressDialog->setValue(_initProgressDialog->maximumSteps());
|
||||
_progressDialog->setValue(_progressDialog->maximumSteps());
|
||||
this->changeState(MainWindow::kInitialized);
|
||||
|
||||
if(!_openedDatabasePath.isEmpty())
|
||||
@@ -3457,8 +3488,8 @@ void MainWindow::processRtabmapEventInit(int status, const QString & info)
|
||||
}
|
||||
else if((RtabmapEventInit::Status)status == RtabmapEventInit::kClosing)
|
||||
{
|
||||
_initProgressDialog->resetProgress();
|
||||
_initProgressDialog->show();
|
||||
_progressDialog->resetProgress();
|
||||
_progressDialog->show();
|
||||
if(_state!=kApplicationClosing)
|
||||
{
|
||||
this->changeState(MainWindow::kClosing);
|
||||
@@ -3466,7 +3497,7 @@ void MainWindow::processRtabmapEventInit(int status, const QString & info)
|
||||
}
|
||||
else if((RtabmapEventInit::Status)status == RtabmapEventInit::kClosed)
|
||||
{
|
||||
_initProgressDialog->setValue(_initProgressDialog->maximumSteps());
|
||||
_progressDialog->setValue(_progressDialog->maximumSteps());
|
||||
|
||||
if(_databaseUpdated)
|
||||
{
|
||||
@@ -3544,46 +3575,46 @@ void MainWindow::processRtabmapEventInit(int status, const QString & info)
|
||||
}
|
||||
else
|
||||
{
|
||||
_initProgressDialog->incrementStep();
|
||||
_progressDialog->incrementStep();
|
||||
QString msg(info);
|
||||
if((RtabmapEventInit::Status)status == RtabmapEventInit::kError)
|
||||
{
|
||||
_openedDatabasePath.clear();
|
||||
_newDatabasePath.clear();
|
||||
_newDatabasePathOutput.clear();
|
||||
_initProgressDialog->setAutoClose(false);
|
||||
_progressDialog->setAutoClose(false);
|
||||
msg.prepend(tr("[ERROR] "));
|
||||
_initProgressDialog->appendText(msg);
|
||||
_progressDialog->appendText(msg);
|
||||
this->changeState(MainWindow::kIdle);
|
||||
}
|
||||
else
|
||||
{
|
||||
_initProgressDialog->appendText(msg);
|
||||
_progressDialog->appendText(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::processRtabmapEvent3DMap(const rtabmap::RtabmapEvent3DMap & event)
|
||||
{
|
||||
_initProgressDialog->appendText("Downloading the map... done.");
|
||||
_initProgressDialog->incrementStep();
|
||||
_progressDialog->appendText("Downloading the map... done.");
|
||||
_progressDialog->incrementStep();
|
||||
|
||||
if(event.getCode())
|
||||
{
|
||||
UERROR("Map received with code error %d!", event.getCode());
|
||||
_initProgressDialog->appendText(uFormat("[ERROR] Map received with code error %d!", event.getCode()).c_str());
|
||||
_initProgressDialog->setAutoClose(false);
|
||||
_progressDialog->appendText(uFormat("[ERROR] Map received with code error %d!", event.getCode()).c_str());
|
||||
_progressDialog->setAutoClose(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
_processingDownloadedMap = true;
|
||||
UINFO("Received map!");
|
||||
_initProgressDialog->appendText(tr(" poses = %1").arg(event.getPoses().size()));
|
||||
_initProgressDialog->appendText(tr(" constraints = %1").arg(event.getConstraints().size()));
|
||||
_progressDialog->appendText(tr(" poses = %1").arg(event.getPoses().size()));
|
||||
_progressDialog->appendText(tr(" constraints = %1").arg(event.getConstraints().size()));
|
||||
|
||||
_initProgressDialog->setMaximumSteps(int(event.getSignatures().size()+event.getPoses().size()+1));
|
||||
_initProgressDialog->appendText(QString("Inserting data in the cache (%1 signatures downloaded)...").arg(event.getSignatures().size()));
|
||||
_progressDialog->setMaximumSteps(int(event.getSignatures().size()+event.getPoses().size()+1));
|
||||
_progressDialog->appendText(QString("Inserting data in the cache (%1 signatures downloaded)...").arg(event.getSignatures().size()));
|
||||
QApplication::processEvents();
|
||||
|
||||
int addedSignatures = 0;
|
||||
@@ -3610,34 +3641,34 @@ void MainWindow::processRtabmapEvent3DMap(const rtabmap::RtabmapEvent3DMap & eve
|
||||
_cachedMemoryUsage += iter->second.sensorData().getMemoryUsed();
|
||||
++addedSignatures;
|
||||
}
|
||||
_initProgressDialog->incrementStep();
|
||||
_progressDialog->incrementStep();
|
||||
QApplication::processEvents();
|
||||
}
|
||||
_initProgressDialog->appendText(tr("Inserted %1 new signatures.").arg(addedSignatures));
|
||||
_initProgressDialog->incrementStep();
|
||||
_progressDialog->appendText(tr("Inserted %1 new signatures.").arg(addedSignatures));
|
||||
_progressDialog->incrementStep();
|
||||
QApplication::processEvents();
|
||||
|
||||
_initProgressDialog->appendText("Inserting data in the cache... done.");
|
||||
_progressDialog->appendText("Inserting data in the cache... done.");
|
||||
|
||||
if(event.getPoses().size())
|
||||
{
|
||||
_initProgressDialog->appendText("Updating the 3D map cloud...");
|
||||
_initProgressDialog->incrementStep();
|
||||
_initProgressDialog->setCancelButtonVisible(true);
|
||||
_progressDialog->appendText("Updating the 3D map cloud...");
|
||||
_progressDialog->incrementStep();
|
||||
_progressDialog->setCancelButtonVisible(true);
|
||||
_progressCanceled = false;
|
||||
QApplication::processEvents();
|
||||
std::map<int, Transform> poses = event.getPoses();
|
||||
alignPosesToGroundTruth(poses, groundTruth);
|
||||
this->updateMapCloud(poses, event.getConstraints(), mapIds, labels, groundTruth, true);
|
||||
_initProgressDialog->appendText("Updating the 3D map cloud... done.");
|
||||
_progressDialog->appendText("Updating the 3D map cloud... done.");
|
||||
}
|
||||
else
|
||||
{
|
||||
_initProgressDialog->appendText("No poses received! The map cloud cannot be updated...");
|
||||
_progressDialog->appendText("No poses received! The map cloud cannot be updated...");
|
||||
UINFO("Map received is empty! Cannot update the map cloud...");
|
||||
}
|
||||
|
||||
_initProgressDialog->appendText(tr("%1 locations are updated to/inserted in the cache.").arg(event.getPoses().size()));
|
||||
_progressDialog->appendText(tr("%1 locations are updated to/inserted in the cache.").arg(event.getPoses().size()));
|
||||
|
||||
if(!_preferencesDialog->isImagesKept())
|
||||
{
|
||||
@@ -3652,8 +3683,8 @@ void MainWindow::processRtabmapEvent3DMap(const rtabmap::RtabmapEvent3DMap & eve
|
||||
}
|
||||
_processingDownloadedMap = false;
|
||||
}
|
||||
_initProgressDialog->setValue(_initProgressDialog->maximumSteps());
|
||||
_initProgressDialog->setCancelButtonVisible(false);
|
||||
_progressDialog->setValue(_progressDialog->maximumSteps());
|
||||
_progressDialog->setCancelButtonVisible(false);
|
||||
_progressCanceled = false;
|
||||
}
|
||||
|
||||
@@ -4158,7 +4189,7 @@ void MainWindow::beep()
|
||||
void MainWindow::cancelProgress()
|
||||
{
|
||||
_progressCanceled = true;
|
||||
_initProgressDialog->appendText(tr("Canceled!"));
|
||||
_progressDialog->appendText(tr("Canceled!"));
|
||||
}
|
||||
|
||||
void MainWindow::configGUIModified()
|
||||
@@ -5094,11 +5125,11 @@ void MainWindow::postProcessing()
|
||||
return;
|
||||
}
|
||||
|
||||
_initProgressDialog->resetProgress();
|
||||
_initProgressDialog->clear();
|
||||
_initProgressDialog->show();
|
||||
_initProgressDialog->appendText("Post-processing beginning!");
|
||||
_initProgressDialog->setCancelButtonVisible(true);
|
||||
_progressDialog->resetProgress();
|
||||
_progressDialog->clear();
|
||||
_progressDialog->show();
|
||||
_progressDialog->appendText("Post-processing beginning!");
|
||||
_progressDialog->setCancelButtonVisible(true);
|
||||
_progressCanceled = false;
|
||||
|
||||
int totalSteps = 0;
|
||||
@@ -5114,8 +5145,8 @@ void MainWindow::postProcessing()
|
||||
{
|
||||
totalSteps+=1;
|
||||
}
|
||||
_initProgressDialog->setMaximumSteps(totalSteps);
|
||||
_initProgressDialog->show();
|
||||
_progressDialog->setMaximumSteps(totalSteps);
|
||||
_progressDialog->show();
|
||||
|
||||
ParametersMap parameters = _preferencesDialog->getAllParameters();
|
||||
Optimizer * optimizer = Optimizer::create(parameters);
|
||||
@@ -5138,7 +5169,7 @@ void MainWindow::postProcessing()
|
||||
UASSERT(detectLoopClosureIterations>0);
|
||||
for(int n=0; n<detectLoopClosureIterations && !_progressCanceled; ++n)
|
||||
{
|
||||
_initProgressDialog->appendText(tr("Looking for more loop closures, clustering poses... (iteration=%1/%2, radius=%3 m angle=%4 degrees)")
|
||||
_progressDialog->appendText(tr("Looking for more loop closures, clustering poses... (iteration=%1/%2, radius=%3 m angle=%4 degrees)")
|
||||
.arg(n+1).arg(detectLoopClosureIterations).arg(clusterRadius).arg(clusterAngle));
|
||||
|
||||
std::multimap<int, int> clusters = graph::radiusPosesClustering(
|
||||
@@ -5146,8 +5177,8 @@ void MainWindow::postProcessing()
|
||||
clusterRadius,
|
||||
clusterAngle*CV_PI/180.0);
|
||||
|
||||
_initProgressDialog->setMaximumSteps(_initProgressDialog->maximumSteps()+(int)clusters.size());
|
||||
_initProgressDialog->appendText(tr("Looking for more loop closures, clustering poses... found %1 clusters.").arg(clusters.size()));
|
||||
_progressDialog->setMaximumSteps(_progressDialog->maximumSteps()+(int)clusters.size());
|
||||
_progressDialog->appendText(tr("Looking for more loop closures, clustering poses... found %1 clusters.").arg(clusters.size()));
|
||||
QApplication::processEvents();
|
||||
|
||||
int i=0;
|
||||
@@ -5353,7 +5384,7 @@ void MainWindow::postProcessing()
|
||||
if(!msg.empty())
|
||||
{
|
||||
UWARN("%s", msg.c_str());
|
||||
_initProgressDialog->appendText(tr("%1").arg(msg.c_str()));
|
||||
_progressDialog->appendText(tr("%1").arg(msg.c_str()));
|
||||
QApplication::processEvents();
|
||||
updateConstraint = false;
|
||||
}
|
||||
@@ -5367,7 +5398,7 @@ void MainWindow::postProcessing()
|
||||
|
||||
_currentLinksMap.insert(std::make_pair(from, Link(from, to, Link::kUserClosure, transform, info.covariance.inv())));
|
||||
++loopClosuresAdded;
|
||||
_initProgressDialog->appendText(tr("Detected loop closure %1->%2! (%3/%4)").arg(from).arg(to).arg(i+1).arg(clusters.size()));
|
||||
_progressDialog->appendText(tr("Detected loop closure %1->%2! (%3/%4)").arg(from).arg(to).arg(i+1).arg(clusters.size()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5375,9 +5406,9 @@ void MainWindow::postProcessing()
|
||||
}
|
||||
}
|
||||
QApplication::processEvents();
|
||||
_initProgressDialog->incrementStep();
|
||||
_progressDialog->incrementStep();
|
||||
}
|
||||
_initProgressDialog->appendText(tr("Iteration %1/%2: Detected %3 loop closures!").arg(n+1).arg(detectLoopClosureIterations).arg(addedLinks.size()/2));
|
||||
_progressDialog->appendText(tr("Iteration %1/%2: Detected %3 loop closures!").arg(n+1).arg(detectLoopClosureIterations).arg(addedLinks.size()/2));
|
||||
if(addedLinks.size() == 0)
|
||||
{
|
||||
break;
|
||||
@@ -5385,7 +5416,7 @@ void MainWindow::postProcessing()
|
||||
|
||||
if(n+1 < detectLoopClosureIterations)
|
||||
{
|
||||
_initProgressDialog->appendText(tr("Optimizing graph with new links (%1 nodes, %2 constraints)...")
|
||||
_progressDialog->appendText(tr("Optimizing graph with new links (%1 nodes, %2 constraints)...")
|
||||
.arg(odomPoses.size()).arg(_currentLinksMap.size()));
|
||||
QApplication::processEvents();
|
||||
|
||||
@@ -5401,11 +5432,11 @@ void MainWindow::postProcessing()
|
||||
linksOut);
|
||||
optimizedPoses = optimizer->optimize(fromId, posesOut, linksOut);
|
||||
_currentPosesMap = optimizedPoses;
|
||||
_initProgressDialog->appendText(tr("Optimizing graph with new links... done!"));
|
||||
_progressDialog->appendText(tr("Optimizing graph with new links... done!"));
|
||||
}
|
||||
}
|
||||
UINFO("Added %d loop closures.", loopClosuresAdded);
|
||||
_initProgressDialog->appendText(tr("Total new loop closures detected=%1").arg(loopClosuresAdded));
|
||||
_progressDialog->appendText(tr("Total new loop closures detected=%1").arg(loopClosuresAdded));
|
||||
}
|
||||
|
||||
if(!_progressCanceled && (refineNeighborLinks || refineLoopClosureLinks))
|
||||
@@ -5413,10 +5444,10 @@ void MainWindow::postProcessing()
|
||||
UDEBUG("");
|
||||
if(refineLoopClosureLinks)
|
||||
{
|
||||
_initProgressDialog->setMaximumSteps(_initProgressDialog->maximumSteps()+loopClosuresAdded);
|
||||
_progressDialog->setMaximumSteps(_progressDialog->maximumSteps()+loopClosuresAdded);
|
||||
}
|
||||
// TODO: support ICP from laser scans?
|
||||
_initProgressDialog->appendText(tr("Refining links..."));
|
||||
_progressDialog->appendText(tr("Refining links..."));
|
||||
QApplication::processEvents();
|
||||
|
||||
RegistrationIcp regIcp(parameters);
|
||||
@@ -5432,8 +5463,8 @@ void MainWindow::postProcessing()
|
||||
int from = iter->second.from();
|
||||
int to = iter->second.to();
|
||||
|
||||
_initProgressDialog->appendText(tr("Refining link %1->%2 (%3/%4)").arg(from).arg(to).arg(i+1).arg(_currentLinksMap.size()));
|
||||
_initProgressDialog->incrementStep();
|
||||
_progressDialog->appendText(tr("Refining link %1->%2 (%3/%4)").arg(from).arg(to).arg(i+1).arg(_currentLinksMap.size()));
|
||||
_progressDialog->incrementStep();
|
||||
QApplication::processEvents();
|
||||
|
||||
if(!_cachedSignatures.contains(from))
|
||||
@@ -5467,7 +5498,7 @@ void MainWindow::postProcessing()
|
||||
else
|
||||
{
|
||||
QString str = tr("Cannot refine link %1->%2 (%3").arg(from).arg(to).arg(info.rejectedMsg.c_str());
|
||||
_initProgressDialog->appendText(str, Qt::darkYellow);
|
||||
_progressDialog->appendText(str, Qt::darkYellow);
|
||||
UWARN("%s", str.toStdString().c_str());
|
||||
warn = true;
|
||||
}
|
||||
@@ -5484,17 +5515,17 @@ void MainWindow::postProcessing()
|
||||
str = tr("Cannot refine link %1->%2 (scans empty!)").arg(from).arg(to);
|
||||
}
|
||||
|
||||
_initProgressDialog->appendText(str, Qt::darkYellow);
|
||||
_progressDialog->appendText(str, Qt::darkYellow);
|
||||
UWARN("%s", str.toStdString().c_str());
|
||||
warn = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
_initProgressDialog->appendText(tr("Refining links...done!"));
|
||||
_progressDialog->appendText(tr("Refining links...done!"));
|
||||
}
|
||||
|
||||
_initProgressDialog->appendText(tr("Optimizing graph with updated links (%1 nodes, %2 constraints)...")
|
||||
_progressDialog->appendText(tr("Optimizing graph with updated links (%1 nodes, %2 constraints)...")
|
||||
.arg(odomPoses.size()).arg(_currentLinksMap.size()));
|
||||
|
||||
int fromId = optimizeFromGraphEnd?odomPoses.rbegin()->first:odomPoses.begin()->first;
|
||||
@@ -5508,13 +5539,13 @@ void MainWindow::postProcessing()
|
||||
posesOut,
|
||||
linksOut);
|
||||
optimizedPoses = optimizer->optimize(fromId, posesOut, linksOut);
|
||||
_initProgressDialog->appendText(tr("Optimizing graph with updated links... done!"));
|
||||
_initProgressDialog->incrementStep();
|
||||
_progressDialog->appendText(tr("Optimizing graph with updated links... done!"));
|
||||
_progressDialog->incrementStep();
|
||||
|
||||
if(!_progressCanceled && sba)
|
||||
{
|
||||
UASSERT(Optimizer::isAvailable(sbaType));
|
||||
_initProgressDialog->appendText(tr("SBA (%1 nodes, %2 constraints, %3 iterations)...")
|
||||
_progressDialog->appendText(tr("SBA (%1 nodes, %2 constraints, %3 iterations)...")
|
||||
.arg(optimizedPoses.size()).arg(linksOut.size()).arg(sbaIterations));
|
||||
QApplication::processEvents();
|
||||
uSleep(100);
|
||||
@@ -5529,17 +5560,17 @@ void MainWindow::postProcessing()
|
||||
if(newPoses.size())
|
||||
{
|
||||
optimizedPoses = newPoses;
|
||||
_initProgressDialog->appendText(tr("SBA... done!"));
|
||||
_progressDialog->appendText(tr("SBA... done!"));
|
||||
}
|
||||
else
|
||||
{
|
||||
_initProgressDialog->appendText(tr("SBA... failed!"));
|
||||
_initProgressDialog->setAutoClose(false);
|
||||
_progressDialog->appendText(tr("SBA... failed!"));
|
||||
_progressDialog->setAutoClose(false);
|
||||
}
|
||||
_initProgressDialog->incrementStep();
|
||||
_progressDialog->incrementStep();
|
||||
}
|
||||
|
||||
_initProgressDialog->appendText(tr("Updating map..."));
|
||||
_progressDialog->appendText(tr("Updating map..."));
|
||||
alignPosesToGroundTruth(optimizedPoses, _currentGTPosesMap);
|
||||
this->updateMapCloud(
|
||||
optimizedPoses,
|
||||
@@ -5548,16 +5579,16 @@ void MainWindow::postProcessing()
|
||||
std::map<int, std::string>(_currentLabels),
|
||||
std::map<int, Transform>(_currentGTPosesMap),
|
||||
false);
|
||||
_initProgressDialog->appendText(tr("Updating map... done!"));
|
||||
_progressDialog->appendText(tr("Updating map... done!"));
|
||||
|
||||
if(warn)
|
||||
{
|
||||
_initProgressDialog->setAutoClose(false);
|
||||
_progressDialog->setAutoClose(false);
|
||||
}
|
||||
|
||||
_initProgressDialog->setValue(_initProgressDialog->maximumSteps());
|
||||
_initProgressDialog->appendText("Post-processing finished!");
|
||||
_initProgressDialog->setCancelButtonVisible(false);
|
||||
_progressDialog->setValue(_progressDialog->maximumSteps());
|
||||
_progressDialog->appendText("Post-processing finished!");
|
||||
_progressDialog->setCancelButtonVisible(false);
|
||||
_progressCanceled = false;
|
||||
|
||||
delete optimizer;
|
||||
@@ -5816,9 +5847,9 @@ void MainWindow::updateCacheFromDatabase(const QString & path)
|
||||
if(driver->openConnection(path.toStdString()))
|
||||
{
|
||||
UINFO("Update cache...");
|
||||
_initProgressDialog->resetProgress();
|
||||
_initProgressDialog->show();
|
||||
_initProgressDialog->appendText(tr("Downloading the map from \"%1\" (without poses and links)...")
|
||||
_progressDialog->resetProgress();
|
||||
_progressDialog->show();
|
||||
_progressDialog->appendText(tr("Downloading the map from \"%1\" (without poses and links)...")
|
||||
.arg(path));
|
||||
|
||||
std::set<int> ids;
|
||||
@@ -5879,9 +5910,9 @@ void MainWindow::downloadAllClouds()
|
||||
}
|
||||
|
||||
UINFO("Download clouds...");
|
||||
_initProgressDialog->resetProgress();
|
||||
_initProgressDialog->show();
|
||||
_initProgressDialog->appendText(tr("Downloading the map (global=%1 ,optimized=%2)...")
|
||||
_progressDialog->resetProgress();
|
||||
_progressDialog->show();
|
||||
_progressDialog->appendText(tr("Downloading the map (global=%1 ,optimized=%2)...")
|
||||
.arg(global?"true":"false").arg(optimized?"true":"false"));
|
||||
this->post(new RtabmapEventCmd(RtabmapEventCmd::kCmdPublish3DMap, global, optimized, false));
|
||||
}
|
||||
@@ -5923,9 +5954,9 @@ void MainWindow::downloadPoseGraph()
|
||||
}
|
||||
|
||||
UINFO("Download the graph...");
|
||||
_initProgressDialog->resetProgress();
|
||||
_initProgressDialog->show();
|
||||
_initProgressDialog->appendText(tr("Downloading the graph (global=%1 ,optimized=%2)...")
|
||||
_progressDialog->resetProgress();
|
||||
_progressDialog->show();
|
||||
_progressDialog->appendText(tr("Downloading the graph (global=%1 ,optimized=%2)...")
|
||||
.arg(global?"true":"false").arg(optimized?"true":"false"));
|
||||
|
||||
this->post(new RtabmapEventCmd(RtabmapEventCmd::kCmdPublish3DMap, global, optimized, true));
|
||||
@@ -5993,9 +6024,9 @@ void MainWindow::clearTheCache()
|
||||
_ui->imageView_source->clear();
|
||||
_ui->imageView_loopClosure->clear();
|
||||
_ui->imageView_odometry->clear();
|
||||
_ui->imageView_source->setBackgroundColor(Qt::black);
|
||||
_ui->imageView_loopClosure->setBackgroundColor(Qt::black);
|
||||
_ui->imageView_odometry->setBackgroundColor(Qt::black);
|
||||
_ui->imageView_source->setBackgroundColor(_ui->imageView_source->getDefaultBackgroundColor());
|
||||
_ui->imageView_loopClosure->setBackgroundColor(_ui->imageView_loopClosure->getDefaultBackgroundColor());
|
||||
_ui->imageView_odometry->setBackgroundColor(_ui->imageView_odometry->getDefaultBackgroundColor());
|
||||
#ifdef RTABMAP_OCTOMAP
|
||||
// re-create one if the resolution has changed
|
||||
UASSERT(_octomap != 0);
|
||||
@@ -6169,20 +6200,20 @@ void MainWindow::selectScreenCaptureFormat(bool checked)
|
||||
}
|
||||
targetDir += QDir::separator();
|
||||
|
||||
_initProgressDialog->resetProgress();
|
||||
_initProgressDialog->show();
|
||||
_initProgressDialog->setMaximumSteps(_autoScreenCaptureCachedImages.size());
|
||||
_progressDialog->resetProgress();
|
||||
_progressDialog->show();
|
||||
_progressDialog->setMaximumSteps(_autoScreenCaptureCachedImages.size());
|
||||
int i=0;
|
||||
for(QMap<QString, QByteArray>::iterator iter=_autoScreenCaptureCachedImages.begin(); iter!=_autoScreenCaptureCachedImages.end(); ++iter)
|
||||
{
|
||||
QPixmap figure;
|
||||
figure.loadFromData(iter.value(), "PNG");
|
||||
figure.save(targetDir + iter.key(), "PNG");
|
||||
_initProgressDialog->appendText(tr("Saved image \"%1\" (%2/%3).").arg(targetDir + iter.key()).arg(++i).arg(_autoScreenCaptureCachedImages.size()));
|
||||
_initProgressDialog->incrementStep();
|
||||
_progressDialog->appendText(tr("Saved image \"%1\" (%2/%3).").arg(targetDir + iter.key()).arg(++i).arg(_autoScreenCaptureCachedImages.size()));
|
||||
_progressDialog->incrementStep();
|
||||
}
|
||||
_autoScreenCaptureCachedImages.clear();
|
||||
_initProgressDialog->setValue(_initProgressDialog->maximumSteps());
|
||||
_progressDialog->setValue(_progressDialog->maximumSteps());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6563,9 +6594,9 @@ void MainWindow::exportImages()
|
||||
tr("Data in the cache don't seem to have images (tested node %1). Calibration file will not be saved. Try refreshing the cache (with clouds).").arg(poses.rbegin()->first));
|
||||
}
|
||||
|
||||
_initProgressDialog->resetProgress();
|
||||
_initProgressDialog->show();
|
||||
_initProgressDialog->setMaximumSteps(_cachedSignatures.size());
|
||||
_progressDialog->resetProgress();
|
||||
_progressDialog->show();
|
||||
_progressDialog->setMaximumSteps(_cachedSignatures.size());
|
||||
|
||||
unsigned int saved = 0;
|
||||
for(std::map<int, Transform>::iterator iter=poses.begin(); iter!=poses.end(); ++iter)
|
||||
@@ -6602,22 +6633,22 @@ void MainWindow::exportImages()
|
||||
warn = true;
|
||||
}
|
||||
saved += warn?0:1;
|
||||
_initProgressDialog->appendText(info, !warn?Qt::black:Qt::darkYellow);
|
||||
_initProgressDialog->incrementStep();
|
||||
_progressDialog->appendText(info, !warn?Qt::black:Qt::darkYellow);
|
||||
_progressDialog->incrementStep();
|
||||
QApplication::processEvents();
|
||||
|
||||
}
|
||||
if(saved!=poses.size())
|
||||
{
|
||||
_initProgressDialog->setAutoClose(false);
|
||||
_initProgressDialog->appendText(tr("%1 images of %2 saved to \"%3\".").arg(saved).arg(poses.size()).arg(path));
|
||||
_progressDialog->setAutoClose(false);
|
||||
_progressDialog->appendText(tr("%1 images of %2 saved to \"%3\".").arg(saved).arg(poses.size()).arg(path));
|
||||
}
|
||||
else
|
||||
{
|
||||
_initProgressDialog->appendText(tr("%1 images saved to \"%2\".").arg(saved).arg(path));
|
||||
_progressDialog->appendText(tr("%1 images saved to \"%2\".").arg(saved).arg(path));
|
||||
}
|
||||
|
||||
_initProgressDialog->setValue(_initProgressDialog->maximumSteps());
|
||||
_progressDialog->setValue(_progressDialog->maximumSteps());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "MapVisibilityWidget.h"
|
||||
#include "rtabmap/gui/MapVisibilityWidget.h"
|
||||
|
||||
#include <QCheckBox>
|
||||
#include <QVBoxLayout>
|
||||
|
||||
@@ -32,7 +32,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#include <rtabmap/core/Parameters.h>
|
||||
#include <rtabmap/core/Optimizer.h>
|
||||
|
||||
#include "ParametersToolBox.h"
|
||||
#include "rtabmap/gui/ParametersToolBox.h"
|
||||
#include <QComboBox>
|
||||
#include <QDoubleSpinBox>
|
||||
#include <QLineEdit>
|
||||
|
||||
@@ -25,7 +25,7 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "PostProcessingDialog.h"
|
||||
#include "rtabmap/gui/PostProcessingDialog.h"
|
||||
#include "ui_postProcessingDialog.h"
|
||||
|
||||
#include <QPushButton>
|
||||
|
||||
@@ -68,11 +68,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#include "rtabmap/gui/CloudViewer.h"
|
||||
#include "rtabmap/gui/ImageView.h"
|
||||
#include "rtabmap/gui/GraphViewer.h"
|
||||
#include "ExportCloudsDialog.h"
|
||||
#include "ExportBundlerDialog.h"
|
||||
#include "PostProcessingDialog.h"
|
||||
#include "CreateSimpleCalibrationDialog.h"
|
||||
#include "DepthCalibrationDialog.h"
|
||||
#include "rtabmap/gui/ExportCloudsDialog.h"
|
||||
#include "rtabmap/gui/ExportBundlerDialog.h"
|
||||
#include "rtabmap/gui/PostProcessingDialog.h"
|
||||
#include "rtabmap/gui/CreateSimpleCalibrationDialog.h"
|
||||
#include "rtabmap/gui/DepthCalibrationDialog.h"
|
||||
|
||||
#include <rtabmap/utilite/ULogger.h>
|
||||
#include <rtabmap/utilite/UConversion.h>
|
||||
|
||||
@@ -21,16 +21,7 @@
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
@@ -61,8 +52,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>388</width>
|
||||
<height>242</height>
|
||||
<width>438</width>
|
||||
<height>202</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout" columnstretch="0,1">
|
||||
@@ -253,8 +244,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>387</width>
|
||||
<height>242</height>
|
||||
<width>437</width>
|
||||
<height>202</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_2" columnstretch="0,1">
|
||||
@@ -434,16 +425,7 @@
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="leftMargin">
|
||||
<number>12</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>12</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>12</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<property name="margin">
|
||||
<number>12</number>
|
||||
</property>
|
||||
<item>
|
||||
@@ -499,16 +481,7 @@
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<property name="leftMargin">
|
||||
<number>12</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>12</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>12</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<property name="margin">
|
||||
<number>12</number>
|
||||
</property>
|
||||
<item>
|
||||
@@ -579,7 +552,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>1547</width>
|
||||
<height>25</height>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
<widget class="QMenu" name="menuFile">
|
||||
@@ -1070,16 +1043,7 @@
|
||||
</attribute>
|
||||
<widget class="QWidget" name="dockWidgetContents_3">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_10">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
@@ -1133,8 +1097,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>340</width>
|
||||
<height>186</height>
|
||||
<width>274</width>
|
||||
<height>192</height>
|
||||
</rect>
|
||||
</property>
|
||||
<attribute name="label">
|
||||
@@ -1269,8 +1233,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>282</width>
|
||||
<height>626</height>
|
||||
<width>206</width>
|
||||
<height>520</height>
|
||||
</rect>
|
||||
</property>
|
||||
<attribute name="label">
|
||||
@@ -1632,8 +1596,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>205</width>
|
||||
<height>117</height>
|
||||
<width>152</width>
|
||||
<height>96</height>
|
||||
</rect>
|
||||
</property>
|
||||
<attribute name="label">
|
||||
@@ -1732,8 +1696,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>185</width>
|
||||
<height>487</height>
|
||||
<width>138</width>
|
||||
<height>381</height>
|
||||
</rect>
|
||||
</property>
|
||||
<attribute name="label">
|
||||
@@ -1835,16 +1799,7 @@
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
@@ -1957,16 +1912,7 @@
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
@@ -2097,16 +2043,7 @@
|
||||
</attribute>
|
||||
<widget class="QWidget" name="dockWidgetContents_7">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_13">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
@@ -2124,16 +2061,7 @@
|
||||
</attribute>
|
||||
<widget class="QWidget" name="dockWidgetContents_5">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_7">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
@@ -2178,16 +2106,7 @@
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
@@ -2436,7 +2355,7 @@
|
||||
<customwidget>
|
||||
<class>rtabmap::ParametersToolBox</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>ParametersToolBox.h</header>
|
||||
<header>../include/rtabmap/gui/ParametersToolBox.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>1012</width>
|
||||
<height>25</height>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
<widget class="QMenu" name="menuFile">
|
||||
@@ -319,16 +319,7 @@
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
@@ -366,16 +357,7 @@
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
@@ -618,16 +600,7 @@
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
@@ -648,16 +621,7 @@
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
@@ -678,16 +642,7 @@
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
@@ -708,16 +663,7 @@
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
</layout>
|
||||
@@ -735,16 +681,7 @@
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
</layout>
|
||||
@@ -765,16 +702,7 @@
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
@@ -795,16 +723,7 @@
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
@@ -828,16 +747,7 @@
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
@@ -907,16 +817,7 @@
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
@@ -1485,7 +1386,7 @@
|
||||
<customwidget>
|
||||
<class>rtabmap::MapVisibilityWidget</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>MapVisibilityWidget.h</header>
|
||||
<header>../include/rtabmap/gui/MapVisibilityWidget.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
|
||||
Reference in New Issue
Block a user