mirror of
https://github.com/introlab/rtabmap_ros.git
synced 2026-10-04 00:37:46 +08:00
fixed crash when activating octomap while mapping
This commit is contained in:
+22
-28
@@ -233,6 +233,10 @@ MainWindow::MainWindow(PreferencesDialog * prefDialog, QWidget * parent) :
|
|||||||
_preferencesDialog->loadWindowGeometry(_aboutDialog);
|
_preferencesDialog->loadWindowGeometry(_aboutDialog);
|
||||||
setupMainLayout(_preferencesDialog->isVerticalLayoutUsed());
|
setupMainLayout(_preferencesDialog->isVerticalLayoutUsed());
|
||||||
|
|
||||||
|
#ifdef RTABMAP_OCTOMAP
|
||||||
|
_octomap = new OctoMap(_preferencesDialog->getGridMapResolution());
|
||||||
|
#endif
|
||||||
|
|
||||||
// Timer
|
// Timer
|
||||||
_oneSecondTimer = new QTimer(this);
|
_oneSecondTimer = new QTimer(this);
|
||||||
_oneSecondTimer->setInterval(1000);
|
_oneSecondTimer->setInterval(1000);
|
||||||
@@ -268,10 +272,6 @@ MainWindow::MainWindow(PreferencesDialog * prefDialog, QWidget * parent) :
|
|||||||
_ui->rawLikelihoodPlot->addCurve(_rawLikelihoodCurve, false);
|
_ui->rawLikelihoodPlot->addCurve(_rawLikelihoodCurve, false);
|
||||||
_ui->rawLikelihoodPlot->showLegend(false);
|
_ui->rawLikelihoodPlot->showLegend(false);
|
||||||
|
|
||||||
_ui->doubleSpinBox_stats_imgRate->setValue(_preferencesDialog->getGeneralInputRate());
|
|
||||||
_ui->doubleSpinBox_stats_detectionRate->setValue(_preferencesDialog->getDetectionRate());
|
|
||||||
_ui->doubleSpinBox_stats_timeLimit->setValue(_preferencesDialog->getTimeLimit());
|
|
||||||
|
|
||||||
_initProgressDialog = new ProgressDialog(this);
|
_initProgressDialog = new ProgressDialog(this);
|
||||||
_initProgressDialog->setWindowTitle(tr("Progress dialog"));
|
_initProgressDialog->setWindowTitle(tr("Progress dialog"));
|
||||||
_initProgressDialog->setMinimumWidth(800);
|
_initProgressDialog->setMinimumWidth(800);
|
||||||
@@ -474,6 +474,9 @@ MainWindow::MainWindow(PreferencesDialog * prefDialog, QWidget * parent) :
|
|||||||
_ui->dockWidget_imageView->installEventFilter(this);
|
_ui->dockWidget_imageView->installEventFilter(this);
|
||||||
|
|
||||||
// more connects...
|
// more connects...
|
||||||
|
_ui->doubleSpinBox_stats_imgRate->setValue(_preferencesDialog->getGeneralInputRate());
|
||||||
|
_ui->doubleSpinBox_stats_detectionRate->setValue(_preferencesDialog->getDetectionRate());
|
||||||
|
_ui->doubleSpinBox_stats_timeLimit->setValue(_preferencesDialog->getTimeLimit());
|
||||||
connect(_ui->doubleSpinBox_stats_imgRate, SIGNAL(editingFinished()), this, SLOT(changeImgRateSetting()));
|
connect(_ui->doubleSpinBox_stats_imgRate, SIGNAL(editingFinished()), this, SLOT(changeImgRateSetting()));
|
||||||
connect(_ui->doubleSpinBox_stats_detectionRate, SIGNAL(editingFinished()), this, SLOT(changeDetectionRateSetting()));
|
connect(_ui->doubleSpinBox_stats_detectionRate, SIGNAL(editingFinished()), this, SLOT(changeDetectionRateSetting()));
|
||||||
connect(_ui->doubleSpinBox_stats_timeLimit, SIGNAL(editingFinished()), this, SLOT(changeTimeLimitSetting()));
|
connect(_ui->doubleSpinBox_stats_timeLimit, SIGNAL(editingFinished()), this, SLOT(changeTimeLimitSetting()));
|
||||||
@@ -570,11 +573,6 @@ MainWindow::MainWindow(PreferencesDialog * prefDialog, QWidget * parent) :
|
|||||||
_loopClosureViewer->setDecimation(_preferencesDialog->getCloudDecimation(0));
|
_loopClosureViewer->setDecimation(_preferencesDialog->getCloudDecimation(0));
|
||||||
_loopClosureViewer->setMaxDepth(_preferencesDialog->getCloudMaxDepth(0));
|
_loopClosureViewer->setMaxDepth(_preferencesDialog->getCloudMaxDepth(0));
|
||||||
|
|
||||||
//update ui
|
|
||||||
_ui->doubleSpinBox_stats_detectionRate->setValue(_preferencesDialog->getDetectionRate());
|
|
||||||
_ui->doubleSpinBox_stats_timeLimit->setValue(_preferencesDialog->getTimeLimit());
|
|
||||||
_ui->actionSLAM_mode->setChecked(_preferencesDialog->isSLAMMode());
|
|
||||||
|
|
||||||
splash.close();
|
splash.close();
|
||||||
|
|
||||||
this->setFocus();
|
this->setFocus();
|
||||||
@@ -2071,7 +2069,7 @@ void MainWindow::updateMapCloud(
|
|||||||
_ui->actionExport_2D_Grid_map_bmp_png->setEnabled(!_gridLocalMaps.empty() || !_projectionLocalMaps.empty());
|
_ui->actionExport_2D_Grid_map_bmp_png->setEnabled(!_gridLocalMaps.empty() || !_projectionLocalMaps.empty());
|
||||||
_ui->actionView_scans->setEnabled(!_createdScans.empty());
|
_ui->actionView_scans->setEnabled(!_createdScans.empty());
|
||||||
#ifdef RTABMAP_OCTOMAP
|
#ifdef RTABMAP_OCTOMAP
|
||||||
_ui->actionExport_octomap->setEnabled(_octomap && _octomap->octree()->size());
|
_ui->actionExport_octomap->setEnabled(_octomap->octree()->size());
|
||||||
#else
|
#else
|
||||||
_ui->actionExport_octomap->setEnabled(false);
|
_ui->actionExport_octomap->setEnabled(false);
|
||||||
#endif
|
#endif
|
||||||
@@ -2220,7 +2218,7 @@ void MainWindow::updateMapCloud(
|
|||||||
|
|
||||||
#ifdef RTABMAP_OCTOMAP
|
#ifdef RTABMAP_OCTOMAP
|
||||||
_cloudViewer->removeOctomap();
|
_cloudViewer->removeOctomap();
|
||||||
if(_preferencesDialog->isOctomapShown() && _octomap)
|
if(_preferencesDialog->isOctomapShown())
|
||||||
{
|
{
|
||||||
UDEBUG("");
|
UDEBUG("");
|
||||||
UTimer time;
|
UTimer time;
|
||||||
@@ -2636,9 +2634,8 @@ void MainWindow::createAndAddProjectionMap(
|
|||||||
{
|
{
|
||||||
// Update octomap
|
// Update octomap
|
||||||
#ifdef RTABMAP_OCTOMAP
|
#ifdef RTABMAP_OCTOMAP
|
||||||
if(_octomap &&
|
if(_octomap->addedNodes().empty() ||
|
||||||
(_octomap->addedNodes().empty() ||
|
nodeId > _octomap->addedNodes().rbegin()->first)
|
||||||
nodeId > _octomap->addedNodes().rbegin()->first))
|
|
||||||
{
|
{
|
||||||
if(_preferencesDialog->projMapFrame())
|
if(_preferencesDialog->projMapFrame())
|
||||||
{
|
{
|
||||||
@@ -4042,11 +4039,8 @@ void MainWindow::startDetection()
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef RTABMAP_OCTOMAP
|
#ifdef RTABMAP_OCTOMAP
|
||||||
if(_octomap)
|
UASSERT(_octomap != 0);
|
||||||
{
|
delete _octomap;
|
||||||
delete _octomap;
|
|
||||||
_octomap = 0;
|
|
||||||
}
|
|
||||||
_octomap = new OctoMap(_preferencesDialog->getGridMapResolution());
|
_octomap = new OctoMap(_preferencesDialog->getGridMapResolution());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -5055,10 +5049,10 @@ void MainWindow::clearTheCache()
|
|||||||
_ui->imageView_loopClosure->setBackgroundColor(Qt::black);
|
_ui->imageView_loopClosure->setBackgroundColor(Qt::black);
|
||||||
_ui->imageView_odometry->setBackgroundColor(Qt::black);
|
_ui->imageView_odometry->setBackgroundColor(Qt::black);
|
||||||
#ifdef RTABMAP_OCTOMAP
|
#ifdef RTABMAP_OCTOMAP
|
||||||
if(_octomap)
|
// re-create one if the resolution has changed
|
||||||
{
|
UASSERT(_octomap != 0);
|
||||||
_octomap->clear();
|
delete _octomap;
|
||||||
}
|
_octomap = new OctoMap(_preferencesDialog->getGridMapResolution());
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5445,7 +5439,7 @@ void MainWindow::viewClouds()
|
|||||||
void MainWindow::exportOctomap()
|
void MainWindow::exportOctomap()
|
||||||
{
|
{
|
||||||
#ifdef RTABMAP_OCTOMAP
|
#ifdef RTABMAP_OCTOMAP
|
||||||
if(_octomap && _octomap->octree()->size())
|
if(_octomap->octree()->size())
|
||||||
{
|
{
|
||||||
QString path = QFileDialog::getSaveFileName(
|
QString path = QFileDialog::getSaveFileName(
|
||||||
this,
|
this,
|
||||||
@@ -5927,7 +5921,7 @@ void MainWindow::changeState(MainWindow::State newState)
|
|||||||
_ui->actionExport_2D_Grid_map_bmp_png->setEnabled(!_gridLocalMaps.empty() || !_projectionLocalMaps.empty());
|
_ui->actionExport_2D_Grid_map_bmp_png->setEnabled(!_gridLocalMaps.empty() || !_projectionLocalMaps.empty());
|
||||||
_ui->actionView_scans->setEnabled(!_createdScans.empty());
|
_ui->actionView_scans->setEnabled(!_createdScans.empty());
|
||||||
#ifdef RTABMAP_OCTOMAP
|
#ifdef RTABMAP_OCTOMAP
|
||||||
_ui->actionExport_octomap->setEnabled(_octomap && _octomap->octree()->size());
|
_ui->actionExport_octomap->setEnabled(_octomap->octree()->size());
|
||||||
#else
|
#else
|
||||||
_ui->actionExport_octomap->setEnabled(false);
|
_ui->actionExport_octomap->setEnabled(false);
|
||||||
#endif
|
#endif
|
||||||
@@ -5988,7 +5982,7 @@ void MainWindow::changeState(MainWindow::State newState)
|
|||||||
_ui->actionExport_2D_Grid_map_bmp_png->setEnabled(!_gridLocalMaps.empty() || !_projectionLocalMaps.empty());
|
_ui->actionExport_2D_Grid_map_bmp_png->setEnabled(!_gridLocalMaps.empty() || !_projectionLocalMaps.empty());
|
||||||
_ui->actionView_scans->setEnabled(!_createdScans.empty());
|
_ui->actionView_scans->setEnabled(!_createdScans.empty());
|
||||||
#ifdef RTABMAP_OCTOMAP
|
#ifdef RTABMAP_OCTOMAP
|
||||||
_ui->actionExport_octomap->setEnabled(_octomap && _octomap->octree()->size());
|
_ui->actionExport_octomap->setEnabled(_octomap->octree()->size());
|
||||||
#else
|
#else
|
||||||
_ui->actionExport_octomap->setEnabled(false);
|
_ui->actionExport_octomap->setEnabled(false);
|
||||||
#endif
|
#endif
|
||||||
@@ -6111,7 +6105,7 @@ void MainWindow::changeState(MainWindow::State newState)
|
|||||||
_ui->actionExport_2D_Grid_map_bmp_png->setEnabled(!_gridLocalMaps.empty() || !_projectionLocalMaps.empty());
|
_ui->actionExport_2D_Grid_map_bmp_png->setEnabled(!_gridLocalMaps.empty() || !_projectionLocalMaps.empty());
|
||||||
_ui->actionView_scans->setEnabled(!_createdScans.empty());
|
_ui->actionView_scans->setEnabled(!_createdScans.empty());
|
||||||
#ifdef RTABMAP_OCTOMAP
|
#ifdef RTABMAP_OCTOMAP
|
||||||
_ui->actionExport_octomap->setEnabled(_octomap && _octomap->octree()->size());
|
_ui->actionExport_octomap->setEnabled(_octomap->octree()->size());
|
||||||
#else
|
#else
|
||||||
_ui->actionExport_octomap->setEnabled(false);
|
_ui->actionExport_octomap->setEnabled(false);
|
||||||
#endif
|
#endif
|
||||||
@@ -6176,7 +6170,7 @@ void MainWindow::changeState(MainWindow::State newState)
|
|||||||
_ui->actionExport_2D_Grid_map_bmp_png->setEnabled(!_gridLocalMaps.empty() || !_projectionLocalMaps.empty());
|
_ui->actionExport_2D_Grid_map_bmp_png->setEnabled(!_gridLocalMaps.empty() || !_projectionLocalMaps.empty());
|
||||||
_ui->actionView_scans->setEnabled(!_createdScans.empty());
|
_ui->actionView_scans->setEnabled(!_createdScans.empty());
|
||||||
#ifdef RTABMAP_OCTOMAP
|
#ifdef RTABMAP_OCTOMAP
|
||||||
_ui->actionExport_octomap->setEnabled(_octomap && _octomap->octree()->size());
|
_ui->actionExport_octomap->setEnabled(_octomap->octree()->size());
|
||||||
#else
|
#else
|
||||||
_ui->actionExport_octomap->setEnabled(false);
|
_ui->actionExport_octomap->setEnabled(false);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user