29 #include <pcl/pcl_config.h>
30 #if PCL_VERSION_COMPARE(>=, 1, 8, 0)
40 #include <QtCore/QSettings>
41 #include <QtCore/QDir>
42 #include <QtCore/QTimer>
45 #include <QButtonGroup>
46 #include <QFileDialog>
47 #include <QInputDialog>
48 #include <QMessageBox>
49 #include <QtGui/QStandardItemModel>
50 #include <QMainWindow>
51 #include <QProgressDialog>
54 #include <QFormLayout>
55 #include <QDesktopServices>
56 #include <QtGui/QCloseEvent>
58 #include "ui_preferencesDialog.h"
60 #include "rtabmap/core/Version.h"
94 #include "camera_tof_icp_ini.h"
95 #include "lidar3d_icp_ini.h"
97 #include <opencv2/opencv_modules.hpp>
99 #if CV_MAJOR_VERSION < 3
100 #ifdef HAVE_OPENCV_GPU
101 #include <opencv2/gpu/gpu.hpp>
104 #ifdef HAVE_OPENCV_CUDAFEATURES2D
105 #include <opencv2/core/cuda.hpp>
115 _obsoletePanels(kPanelDummy),
119 _progressDialog(new QProgressDialog(
this)),
131 _ui =
new Ui_preferencesDialog();
134 bool haveCuda =
false;
135 #if CV_MAJOR_VERSION < 3
136 #ifdef HAVE_OPENCV_GPU
137 haveCuda = cv::gpu::getCudaEnabledDeviceCount() != 0;
140 #ifdef HAVE_OPENCV_CUDAFEATURES2D
141 haveCuda = cv::cuda::getCudaEnabledDeviceCount() != 0;
146 _ui->surf_checkBox_gpuVersion->setChecked(
false);
147 _ui->surf_checkBox_gpuVersion->setEnabled(
false);
148 _ui->label_surf_checkBox_gpuVersion->setEnabled(
false);
149 _ui->surf_doubleSpinBox_gpuKeypointsRatio->setEnabled(
false);
150 _ui->label_surf_checkBox_gpuKeypointsRatio->setEnabled(
false);
152 _ui->fastGpu->setChecked(
false);
153 _ui->fastGpu->setEnabled(
false);
154 _ui->label_fastGPU->setEnabled(
false);
155 _ui->fastKeypointRatio->setEnabled(
false);
156 _ui->label_fastGPUKptRatio->setEnabled(
false);
158 _ui->checkBox_ORBGpu->setChecked(
false);
159 _ui->checkBox_ORBGpu->setEnabled(
false);
160 _ui->label_orbGpu->setEnabled(
false);
162 _ui->checkBox_GFTT_gpu->setEnabled(
false);
163 _ui->label_GFTT_gpu->setEnabled(
false);
166 _ui->comboBox_dictionary_strategy->setItemData(4, 0, Qt::UserRole - 1);
167 _ui->reextract_nn->setItemData(4, 0, Qt::UserRole - 1);
169 #ifndef RTABMAP_CUDASIFT
170 _ui->sift_checkBox_gpu->setEnabled(
false);
171 _ui->sift_label_gpu->setEnabled(
false);
172 _ui->sift_doubleSpinBox_gaussianDiffThreshold->setEnabled(
false);
173 _ui->sift_label_gaussianThreshold->setEnabled(
false);
174 _ui->sift_checkBox_upscale->setEnabled(
false);
175 _ui->sift_label_upscale->setEnabled(
false);
178 #ifndef HAVE_OPENCV_CUDAOPTFLOW
179 _ui->odom_flow_gpu->setEnabled(
false);
180 _ui->label_odom_flow_gpu->setEnabled(
false);
181 _ui->stereo_flow_gpu->setEnabled(
false);
182 _ui->label_stereo_flow_gpu->setEnabled(
false);
185 #ifndef RTABMAP_OCTOMAP
186 _ui->groupBox_octomap->setChecked(
false);
187 _ui->groupBox_octomap->setEnabled(
false);
190 #ifndef RTABMAP_GRIDMAP
191 _ui->checkBox_elevation_shown->setChecked(
false);
192 _ui->checkBox_elevation_shown->setEnabled(
false);
193 _ui->label_show_elevation->setEnabled(
false);
196 #ifndef RTABMAP_REALSENSE_SLAM
197 _ui->checkbox_realsenseOdom->setChecked(
false);
198 _ui->checkbox_realsenseOdom->setEnabled(
false);
199 _ui->label_realsenseOdom->setEnabled(
false);
202 #ifndef RTABMAP_FOVIS
203 _ui->odom_strategy->setItemData(2, 0, Qt::UserRole - 1);
205 #ifndef RTABMAP_VISO2
206 _ui->odom_strategy->setItemData(3, 0, Qt::UserRole - 1);
209 _ui->odom_strategy->setItemData(4, 0, Qt::UserRole - 1);
211 #ifndef RTABMAP_ORB_SLAM
212 _ui->odom_strategy->setItemData(5, 0, Qt::UserRole - 1);
213 #elif RTABMAP_ORB_SLAM == 3
214 _ui->odom_strategy->setItemText(5,
"ORB SLAM 3");
215 _ui->groupBox_odomORBSLAM->setTitle(
"ORB SLAM 3");
217 _ui->odom_strategy->setItemText(5,
"ORB SLAM 2");
218 _ui->groupBox_odomORBSLAM->setTitle(
"ORB SLAM 2");
220 #ifndef RTABMAP_OKVIS
221 _ui->odom_strategy->setItemData(6, 0, Qt::UserRole - 1);
224 _ui->odom_strategy->setItemData(7, 0, Qt::UserRole - 1);
226 #ifndef RTABMAP_MSCKF_VIO
227 _ui->odom_strategy->setItemData(8, 0, Qt::UserRole - 1);
230 _ui->odom_strategy->setItemData(9, 0, Qt::UserRole - 1);
232 #ifndef RTABMAP_OPENVINS
233 _ui->odom_strategy->setItemData(10, 0, Qt::UserRole - 1);
235 #ifndef RTABMAP_FLOAM
236 _ui->odom_strategy->setItemData(11, 0, Qt::UserRole - 1);
238 #ifndef RTABMAP_OPEN3D
239 _ui->odom_strategy->setItemData(12, 0, Qt::UserRole - 1);
242 #if CV_MAJOR_VERSION < 3
243 _ui->stereosgbm_mode->setItemData(2, 0, Qt::UserRole - 1);
247 #ifndef RTABMAP_NONFREE
248 _ui->comboBox_detector_strategy->setItemData(0, 0, Qt::UserRole - 1);
249 _ui->comboBox_detector_strategy->setItemData(12, 0, Qt::UserRole - 1);
250 _ui->comboBox_detector_strategy->setItemData(14, 0, Qt::UserRole - 1);
251 _ui->vis_feature_detector->setItemData(0, 0, Qt::UserRole - 1);
252 _ui->vis_feature_detector->setItemData(12, 0, Qt::UserRole - 1);
253 _ui->vis_feature_detector->setItemData(14, 0, Qt::UserRole - 1);
257 #if CV_MAJOR_VERSION < 3 || (CV_MAJOR_VERSION == 4 && CV_MINOR_VERSION <= 3) || (CV_MAJOR_VERSION == 3 && (CV_MINOR_VERSION < 4 || (CV_MINOR_VERSION==4 && CV_SUBMINOR_VERSION<11)))
258 #ifndef RTABMAP_NONFREE
259 _ui->comboBox_detector_strategy->setItemData(1, 0, Qt::UserRole - 1);
260 _ui->vis_feature_detector->setItemData(1, 0, Qt::UserRole - 1);
263 #if CV_MAJOR_VERSION < 4 || (CV_MAJOR_VERSION == 4 && CV_MINOR_VERSION < 8)
264 _ui->sift_checkBox_preciseUpscale->setEnabled(
false);
265 _ui->sift_label_preciseUpscale->setEnabled(
false);
268 #if CV_MAJOR_VERSION >= 3 && !defined(HAVE_OPENCV_XFEATURES2D)
269 _ui->comboBox_detector_strategy->setItemData(3, 0, Qt::UserRole - 1);
270 _ui->comboBox_detector_strategy->setItemData(4, 0, Qt::UserRole - 1);
271 _ui->comboBox_detector_strategy->setItemData(5, 0, Qt::UserRole - 1);
272 _ui->comboBox_detector_strategy->setItemData(6, 0, Qt::UserRole - 1);
273 _ui->comboBox_detector_strategy->setItemData(12, 0, Qt::UserRole - 1);
274 _ui->comboBox_detector_strategy->setItemData(13, 0, Qt::UserRole - 1);
275 _ui->comboBox_detector_strategy->setItemData(14, 0, Qt::UserRole - 1);
276 _ui->vis_feature_detector->setItemData(3, 0, Qt::UserRole - 1);
277 _ui->vis_feature_detector->setItemData(4, 0, Qt::UserRole - 1);
278 _ui->vis_feature_detector->setItemData(5, 0, Qt::UserRole - 1);
279 _ui->vis_feature_detector->setItemData(6, 0, Qt::UserRole - 1);
280 _ui->vis_feature_detector->setItemData(12, 0, Qt::UserRole - 1);
281 _ui->vis_feature_detector->setItemData(13, 0, Qt::UserRole - 1);
282 _ui->vis_feature_detector->setItemData(14, 0, Qt::UserRole - 1);
285 #ifndef RTABMAP_ORB_OCTREE
286 _ui->comboBox_detector_strategy->setItemData(10, 0, Qt::UserRole - 1);
287 _ui->vis_feature_detector->setItemData(10, 0, Qt::UserRole - 1);
290 #ifndef RTABMAP_TORCH
291 _ui->comboBox_detector_strategy->setItemData(11, 0, Qt::UserRole - 1);
292 _ui->vis_feature_detector->setItemData(11, 0, Qt::UserRole - 1);
295 #ifndef RTABMAP_PYTHON
296 _ui->comboBox_detector_strategy->setItemData(15, 0, Qt::UserRole - 1);
297 _ui->vis_feature_detector->setItemData(15, 0, Qt::UserRole - 1);
298 _ui->reextract_nn->setItemData(6, 0, Qt::UserRole - 1);
299 _ui->comboBox_globalDescriptorExtractor->setItemData(1, 0, Qt::UserRole - 1);
302 #if !defined(HAVE_OPENCV_XFEATURES2D) || (CV_MAJOR_VERSION == 3 && (CV_MINOR_VERSION<4 || CV_MINOR_VERSION==4 && CV_SUBMINOR_VERSION<1))
303 _ui->reextract_nn->setItemData(7, 0, Qt::UserRole - 1);
306 #if CV_MAJOR_VERSION >= 3
307 _ui->groupBox_fast_opencv2->setEnabled(
false);
309 _ui->comboBox_detector_strategy->setItemData(9, 0, Qt::UserRole - 1);
310 _ui->comboBox_detector_strategy->setItemData(13, 0, Qt::UserRole - 1);
311 _ui->comboBox_detector_strategy->setItemData(14, 0, Qt::UserRole - 1);
312 _ui->vis_feature_detector->setItemData(9, 0, Qt::UserRole - 1);
313 _ui->vis_feature_detector->setItemData(13, 0, Qt::UserRole - 1);
314 _ui->vis_feature_detector->setItemData(14, 0, Qt::UserRole - 1);
317 _ui->comboBox_cameraImages_odomFormat->setItemData(4, 0, Qt::UserRole - 1);
318 _ui->comboBox_cameraImages_gtFormat->setItemData(4, 0, Qt::UserRole - 1);
321 _ui->graphOptimization_type->setItemData(1, 0, Qt::UserRole - 1);
322 _ui->odom_f2m_bundleStrategy->setItemData(1, 0, Qt::UserRole - 1);
323 _ui->loopClosure_bundle->setItemData(1, 0, Qt::UserRole - 1);
324 _ui->groupBoxx_g2o->setEnabled(
false);
326 #ifdef RTABMAP_ORB_SLAM
330 _ui->graphOptimization_type->setItemData(1, 0, Qt::UserRole - 1);
335 _ui->comboBox_g2o_solver->setItemData(0, 0, Qt::UserRole - 1);
339 _ui->comboBox_g2o_solver->setItemData(2, 0, Qt::UserRole - 1);
343 _ui->graphOptimization_type->setItemData(0, 0, Qt::UserRole - 1);
347 _ui->graphOptimization_type->setItemData(2, 0, Qt::UserRole - 1);
351 _ui->odom_f2m_bundleStrategy->setItemData(2, 0, Qt::UserRole - 1);
352 _ui->loopClosure_bundle->setItemData(2, 0, Qt::UserRole - 1);
356 _ui->graphOptimization_type->setItemData(3, 0, Qt::UserRole - 1);
357 _ui->odom_f2m_bundleStrategy->setItemData(3, 0, Qt::UserRole - 1);
358 _ui->loopClosure_bundle->setItemData(3, 0, Qt::UserRole - 1);
360 #ifdef RTABMAP_VERTIGO
364 _ui->graphOptimization_robust->setEnabled(
false);
366 #ifndef RTABMAP_POINTMATCHER
367 _ui->comboBox_icpStrategy->setItemData(1, 0, Qt::UserRole - 1);
369 #ifndef RTABMAP_CCCORELIB
370 _ui->comboBox_icpStrategy->setItemData(2, 0, Qt::UserRole - 1);
409 _ui->comboBox_odom_sensor->setItemData(1, 0, Qt::UserRole - 1);
422 _ui->comboBox_odom_sensor->setItemData(2, 0, Qt::UserRole - 1);
426 _ui->comboBox_stereoZed_resolution->setItemData(1, 0, Qt::UserRole - 1);
427 _ui->comboBox_stereoZed_resolution->setItemData(4, 0, Qt::UserRole - 1);
428 _ui->comboBox_stereoZed_resolution->setItemData(6, 0, Qt::UserRole - 1);
429 _ui->comboBox_stereoZed_quality->setItemData(3, 0, Qt::UserRole - 1);
450 _ui->comboBox_odom_sensor->setItemData(3, 0, Qt::UserRole - 1);
455 #if PCL_VERSION_COMPARE(<, 1, 7, 2)
456 _ui->checkBox_showFrustums->setEnabled(
false);
457 _ui->checkBox_showFrustums->setChecked(
false);
458 _ui->checkBox_showOdomFrustums->setEnabled(
false);
459 _ui->checkBox_showOdomFrustums->setChecked(
false);
463 #if CV_MAJOR_VERSION < 3 || (CV_MAJOR_VERSION == 3 && (CV_MINOR_VERSION <4 || (CV_MINOR_VERSION ==4 && CV_SUBMINOR_VERSION<2)))
464 _ui->ArucoDictionary->setItemData(17, 0, Qt::UserRole - 1);
465 _ui->ArucoDictionary->setItemData(18, 0, Qt::UserRole - 1);
466 _ui->ArucoDictionary->setItemData(19, 0, Qt::UserRole - 1);
467 _ui->ArucoDictionary->setItemData(20, 0, Qt::UserRole - 1);
469 #ifndef HAVE_OPENCV_ARUCO
470 _ui->label_markerDetection->setText(
_ui->label_markerDetection->text()+
" This option works only if OpenCV has been built with \"aruco\" module.");
473 #ifndef RTABMAP_MADGWICK
474 _ui->comboBox_imuFilter_strategy->setItemData(1, 0, Qt::UserRole - 1);
478 UASSERT(
_ui->odom_registration->count() == 4);
491 _ui->predictionPlot->showLegend(
false);
493 QButtonGroup * buttonGroup =
new QButtonGroup(
this);
494 buttonGroup->addButton(
_ui->radioButton_basic);
495 buttonGroup->addButton(
_ui->radioButton_advanced);
498 connect(
_ui->buttonBox_global, SIGNAL(
clicked(QAbstractButton *)),
this, SLOT(
closeDialog(QAbstractButton *)));
499 connect(
_ui->buttonBox_local, SIGNAL(
clicked(QAbstractButton *)),
this, SLOT(
resetApply(QAbstractButton *)));
505 connect(
_ui->radioButton_basic, SIGNAL(toggled(
bool)),
this, SLOT(
setupTreeView()));
618 for(
int i=0;
i<2; ++
i)
698 _ui->comboBox_loggerFilter->SetDisplayText(
"Select:");
703 connect(
_ui->general_doubleSpinBox_imgRate, SIGNAL(valueChanged(
double)),
_ui->doubleSpinBox_OdomORBSLAMFps, SLOT(setValue(
double)));
707 _ui->stackedWidget_src->setCurrentIndex(
_ui->comboBox_sourceType->currentIndex());
708 connect(
_ui->comboBox_sourceType, SIGNAL(currentIndexChanged(
int)),
_ui->stackedWidget_src, SLOT(setCurrentIndex(
int)));
714 _ui->stackedWidget_image->setCurrentIndex(
_ui->source_comboBox_image_type->currentIndex());
715 connect(
_ui->source_comboBox_image_type, SIGNAL(currentIndexChanged(
int)),
_ui->stackedWidget_image, SLOT(setCurrentIndex(
int)));
746 connect(
_ui->source_checkBox_stereoToDepthDB, SIGNAL(toggled(
bool)),
_ui->checkbox_stereo_depthGenerated, SLOT(setChecked(
bool)));
747 connect(
_ui->checkbox_stereo_depthGenerated, SIGNAL(toggled(
bool)),
_ui->source_checkBox_stereoToDepthDB, SLOT(setChecked(
bool)));
750 _ui->stackedWidget_rgbd->setCurrentIndex(
_ui->comboBox_cameraRGBD->currentIndex());
751 connect(
_ui->comboBox_cameraRGBD, SIGNAL(currentIndexChanged(
int)),
_ui->stackedWidget_rgbd, SLOT(setCurrentIndex(
int)));
753 _ui->stackedWidget_stereo->setCurrentIndex(
_ui->comboBox_cameraStereo->currentIndex());
754 connect(
_ui->comboBox_cameraStereo, SIGNAL(currentIndexChanged(
int)),
_ui->stackedWidget_stereo, SLOT(setCurrentIndex(
int)));
799 connect(
_ui->lineEdit_cameraRGBDImages_path_rgb, SIGNAL(textChanged(
const QString &)),
this, SLOT(
makeObsoleteSourcePanel()));
800 connect(
_ui->lineEdit_cameraRGBDImages_path_depth, SIGNAL(textChanged(
const QString &)),
this, SLOT(
makeObsoleteSourcePanel()));
808 connect(
_ui->lineEdit_cameraImages_laser_transform, SIGNAL(textChanged(
const QString &)),
this, SLOT(
makeObsoleteSourcePanel()));
816 connect(
_ui->lineEdit_cameraImages_imu_transform, SIGNAL(textChanged(
const QString &)),
this, SLOT(
makeObsoleteSourcePanel()));
826 connect(
_ui->lineEdit_cameraStereoImages_path_left, SIGNAL(textChanged(
const QString &)),
this, SLOT(
makeObsoleteSourcePanel()));
827 connect(
_ui->lineEdit_cameraStereoImages_path_right, SIGNAL(textChanged(
const QString &)),
this, SLOT(
makeObsoleteSourcePanel()));
866 connect(
_ui->comboBox_depthai_subpixel_fractional_bits, SIGNAL(currentIndexChanged(
int)),
this, SLOT(
makeObsoleteSourcePanel()));
907 connect(
_ui->lineEdit_odom_sensor_path_calibration, SIGNAL(textChanged(
const QString &)),
this, SLOT(
makeObsoleteSourcePanel()));
915 connect(
_ui->comboBox_imuFilter_strategy, SIGNAL(currentIndexChanged(
int)),
_ui->stackedWidget_imuFilter, SLOT(setCurrentIndex(
int)));
916 _ui->stackedWidget_imuFilter->setCurrentIndex(
_ui->comboBox_imuFilter_strategy->currentIndex());
921 connect(
_ui->comboBox_lidar_src, SIGNAL(currentIndexChanged(
int)),
_ui->stackedWidget_lidar_src, SLOT(setCurrentIndex(
int)));
922 _ui->stackedWidget_lidar_src->setCurrentIndex(
_ui->comboBox_lidar_src->currentIndex());
931 connect(
_ui->doubleSpinBox_source_scanNormalsForceGroundUp, SIGNAL(valueChanged(
double)),
this, SLOT(
makeObsoleteSourcePanel()));
946 connect(
_ui->general_doubleSpinBox_timeThr, SIGNAL(valueChanged(
double)),
_ui->general_doubleSpinBox_timeThr_2, SLOT(setValue(
double)));
947 connect(
_ui->general_doubleSpinBox_hardThr, SIGNAL(valueChanged(
double)),
_ui->general_doubleSpinBox_hardThr_2, SLOT(setValue(
double)));
948 connect(
_ui->doubleSpinBox_similarityThreshold, SIGNAL(valueChanged(
double)),
_ui->doubleSpinBox_similarityThreshold_2, SLOT(setValue(
double)));
949 connect(
_ui->general_doubleSpinBox_detectionRate, SIGNAL(valueChanged(
double)),
_ui->general_doubleSpinBox_detectionRate_2, SLOT(setValue(
double)));
950 connect(
_ui->general_spinBox_imagesBufferSize, SIGNAL(valueChanged(
int)),
_ui->general_spinBox_imagesBufferSize_2, SLOT(setValue(
int)));
951 connect(
_ui->general_spinBox_maxStMemSize, SIGNAL(valueChanged(
int)),
_ui->general_spinBox_maxStMemSize_2, SLOT(setValue(
int)));
955 connect(
_ui->doubleSpinBox_similarityThreshold_2, SIGNAL(editingFinished()),
this, SLOT(
updateBasicParameter()));
956 connect(
_ui->general_doubleSpinBox_detectionRate_2, SIGNAL(editingFinished()),
this, SLOT(
updateBasicParameter()));
957 connect(
_ui->general_spinBox_imagesBufferSize_2, SIGNAL(editingFinished()),
this, SLOT(
updateBasicParameter()));
968 _ui->groupBox_publishing->setObjectName(Parameters::kRtabmapPublishStats().
c_str());
969 _ui->general_checkBox_publishRawData->setObjectName(Parameters::kRtabmapPublishLastSignature().
c_str());
970 _ui->general_checkBox_publishPdf->setObjectName(Parameters::kRtabmapPublishPdf().
c_str());
971 _ui->general_checkBox_publishLikelihood->setObjectName(Parameters::kRtabmapPublishLikelihood().
c_str());
972 _ui->general_checkBox_publishRMSE->setObjectName(Parameters::kRtabmapComputeRMSE().
c_str());
973 _ui->general_checkBox_saveWMState->setObjectName(Parameters::kRtabmapSaveWMState().
c_str());
974 _ui->general_checkBox_publishRAM->setObjectName(Parameters::kRtabmapPublishRAMUsage().
c_str());
975 _ui->general_checkBox_statisticLogsBufferedInRAM->setObjectName(Parameters::kRtabmapStatisticLogsBufferedInRAM().
c_str());
976 _ui->groupBox_statistics->setObjectName(Parameters::kRtabmapStatisticLogged().
c_str());
977 _ui->general_checkBox_statisticLoggedHeaders->setObjectName(Parameters::kRtabmapStatisticLoggedHeaders().
c_str());
978 _ui->general_doubleSpinBox_timeThr->setObjectName(Parameters::kRtabmapTimeThr().
c_str());
979 _ui->general_spinBox_memoryThr->setObjectName(Parameters::kRtabmapMemoryThr().
c_str());
980 _ui->general_doubleSpinBox_detectionRate->setObjectName(Parameters::kRtabmapDetectionRate().
c_str());
981 _ui->general_spinBox_imagesBufferSize->setObjectName(Parameters::kRtabmapImageBufferSize().
c_str());
982 _ui->general_checkBox_createIntermediateNodes->setObjectName(Parameters::kRtabmapCreateIntermediateNodes().
c_str());
983 _ui->general_spinBox_maxRetrieved->setObjectName(Parameters::kRtabmapMaxRetrieved().
c_str());
984 _ui->general_spinBox_max_republished->setObjectName(Parameters::kRtabmapMaxRepublished().
c_str());
985 _ui->general_checkBox_startNewMapOnLoopClosure->setObjectName(Parameters::kRtabmapStartNewMapOnLoopClosure().
c_str());
986 _ui->general_checkBox_startNewMapOnGoodSignature->setObjectName(Parameters::kRtabmapStartNewMapOnGoodSignature().
c_str());
987 _ui->general_checkBox_imagesAlreadyRectified->setObjectName(Parameters::kRtabmapImagesAlreadyRectified().
c_str());
988 _ui->general_checkBox_rectifyOnlyFeatures->setObjectName(Parameters::kRtabmapRectifyOnlyFeatures().
c_str());
989 _ui->checkBox_rtabmap_loopGPS->setObjectName(Parameters::kRtabmapLoopGPS().
c_str());
990 _ui->lineEdit_workingDirectory->setObjectName(Parameters::kRtabmapWorkingDirectory().
c_str());
994 _ui->general_checkBox_keepRawData->setObjectName(Parameters::kMemImageKept().
c_str());
995 _ui->general_checkBox_keepBinaryData->setObjectName(Parameters::kMemBinDataKept().
c_str());
996 _ui->general_checkBox_saveIntermediateNodeData->setObjectName(Parameters::kMemIntermediateNodeDataKept().
c_str());
997 _ui->lineEdit_rgbCompressionFormat->setObjectName(Parameters::kMemImageCompressionFormat().
c_str());
998 _ui->general_checkBox_keepDescriptors->setObjectName(Parameters::kMemRawDescriptorsKept().
c_str());
999 _ui->general_checkBox_saveDepth16bits->setObjectName(Parameters::kMemSaveDepth16Format().
c_str());
1000 _ui->general_checkBox_compressionParallelized->setObjectName(Parameters::kMemCompressionParallelized().
c_str());
1001 _ui->general_checkBox_reduceGraph->setObjectName(Parameters::kMemReduceGraph().
c_str());
1002 _ui->general_checkBox_keepNotLinkedNodes->setObjectName(Parameters::kMemNotLinkedNodesKept().
c_str());
1003 _ui->general_spinBox_maxStMemSize->setObjectName(Parameters::kMemSTMSize().
c_str());
1004 _ui->doubleSpinBox_similarityThreshold->setObjectName(Parameters::kMemRehearsalSimilarity().
c_str());
1005 _ui->general_checkBox_SLAM_mode->setObjectName(Parameters::kMemIncrementalMemory().
c_str());
1006 _ui->general_checkBox_saveLocalizationData->setObjectName(Parameters::kMemLocalizationDataSaved().
c_str());
1007 _ui->general_doubleSpinBox_recentWmRatio->setObjectName(Parameters::kMemRecentWmRatio().
c_str());
1008 _ui->general_checkBox_transferSortingByWeightId->setObjectName(Parameters::kMemTransferSortingByWeightId().
c_str());
1009 _ui->general_checkBox_RehearsalIdUpdatedToNewOne->setObjectName(Parameters::kMemRehearsalIdUpdatedToNewOne().
c_str());
1010 _ui->general_checkBox_generateIds->setObjectName(Parameters::kMemGenerateIds().
c_str());
1011 _ui->general_checkBox_badSignaturesIgnored->setObjectName(Parameters::kMemBadSignaturesIgnored().
c_str());
1012 _ui->general_checkBox_createMapLabels->setObjectName(Parameters::kMemMapLabelsAdded().
c_str());
1013 _ui->general_checkBox_initWMWithAllNodes->setObjectName(Parameters::kMemInitWMWithAllNodes().
c_str());
1014 _ui->checkBox_localSpaceScanMatchingIDsSaved->setObjectName(Parameters::kRGBDScanMatchingIdsSavedInLinks().
c_str());
1015 _ui->checkBox_localSpaceCreateGlobalScanMap->setObjectName(Parameters::kRGBDProximityGlobalScanMap().
c_str());
1016 _ui->spinBox_imagePreDecimation->setObjectName(Parameters::kMemImagePreDecimation().
c_str());
1017 _ui->spinBox_imagePostDecimation->setObjectName(Parameters::kMemImagePostDecimation().
c_str());
1018 _ui->general_spinBox_laserScanDownsample->setObjectName(Parameters::kMemLaserScanDownsampleStepSize().
c_str());
1019 _ui->general_doubleSpinBox_laserScanVoxelSize->setObjectName(Parameters::kMemLaserScanVoxelSize().
c_str());
1020 _ui->general_spinBox_laserScanNormalK->setObjectName(Parameters::kMemLaserScanNormalK().
c_str());
1021 _ui->general_doubleSpinBox_laserScanNormalRadius->setObjectName(Parameters::kMemLaserScanNormalRadius().
c_str());
1022 _ui->checkBox_useOdomFeatures->setObjectName(Parameters::kMemUseOdomFeatures().
c_str());
1023 _ui->memCovOffDiagIgnored->setObjectName(Parameters::kMemCovOffDiagIgnored().
c_str());
1024 _ui->general_checkBox_rotateImagesUpsideUp->setObjectName(Parameters::kMemRotateImagesUpsideUp().
c_str());
1027 _ui->checkBox_dbInMemory->setObjectName(Parameters::kDbSqlite3InMemory().
c_str());
1028 _ui->spinBox_dbCacheSize->setObjectName(Parameters::kDbSqlite3CacheSize().
c_str());
1029 _ui->comboBox_dbJournalMode->setObjectName(Parameters::kDbSqlite3JournalMode().
c_str());
1030 _ui->comboBox_dbSynchronous->setObjectName(Parameters::kDbSqlite3Synchronous().
c_str());
1031 _ui->comboBox_dbTempStore->setObjectName(Parameters::kDbSqlite3TempStore().
c_str());
1032 _ui->lineEdit_targetDatabaseVersion->setObjectName(Parameters::kDbTargetVersion().
c_str());
1036 _ui->general_doubleSpinBox_hardThr->setObjectName(Parameters::kRtabmapLoopThr().
c_str());
1037 _ui->general_doubleSpinBox_agressiveThr->setObjectName(Parameters::kRGBDAggressiveLoopThr().
c_str());
1038 _ui->general_doubleSpinBox_loopRatio->setObjectName(Parameters::kRtabmapLoopRatio().
c_str());
1039 _ui->comboBox_virtualPlaceLikelihoodRatio->setObjectName(Parameters::kRtabmapVirtualPlaceLikelihoodRatio().
c_str());
1040 _ui->comboBox_globalDescriptorExtractor->setObjectName(Parameters::kMemGlobalDescriptorStrategy().
c_str());
1044 _ui->general_doubleSpinBox_vp->setObjectName(Parameters::kBayesVirtualPlacePriorThr().
c_str());
1045 _ui->lineEdit_bayes_predictionLC->setObjectName(Parameters::kBayesPredictionLC().
c_str());
1046 _ui->checkBox_bayes_fullPredictionUpdate->setObjectName(Parameters::kBayesFullPredictionUpdate().
c_str());
1047 connect(
_ui->lineEdit_bayes_predictionLC, SIGNAL(textChanged(
const QString &)),
this, SLOT(
updatePredictionPlot()));
1050 _ui->comboBox_dictionary_strategy->setObjectName(Parameters::kKpNNStrategy().
c_str());
1051 _ui->checkBox_dictionary_incremental->setObjectName(Parameters::kKpIncrementalDictionary().
c_str());
1052 _ui->checkBox_kp_incrementalFlann->setObjectName(Parameters::kKpIncrementalFlann().
c_str());
1053 _ui->checkBox_kp_byteToFloat->setObjectName(Parameters::kKpByteToFloat().
c_str());
1054 _ui->surf_doubleSpinBox_rebalancingFactor->setObjectName(Parameters::kKpFlannRebalancingFactor().
c_str());
1055 _ui->comboBox_detector_strategy->setObjectName(Parameters::kKpDetectorStrategy().
c_str());
1056 _ui->surf_doubleSpinBox_nndrRatio->setObjectName(Parameters::kKpNndrRatio().
c_str());
1057 _ui->surf_doubleSpinBox_maxDepth->setObjectName(Parameters::kKpMaxDepth().
c_str());
1058 _ui->surf_doubleSpinBox_minDepth->setObjectName(Parameters::kKpMinDepth().
c_str());
1059 _ui->checkBox_memDepthAsMask->setObjectName(Parameters::kMemDepthAsMask().
c_str());
1060 _ui->checkBox_memStereoFromMotion->setObjectName(Parameters::kMemStereoFromMotion().
c_str());
1061 _ui->surf_spinBox_wordsPerImageTarget->setObjectName(Parameters::kKpMaxFeatures().
c_str());
1062 _ui->checkBox_kp_ssc->setObjectName(Parameters::kKpSSC().
c_str());
1063 _ui->spinBox_KPGridRows->setObjectName(Parameters::kKpGridRows().
c_str());
1064 _ui->spinBox_KPGridCols->setObjectName(Parameters::kKpGridCols().
c_str());
1065 _ui->surf_doubleSpinBox_ratioBadSign->setObjectName(Parameters::kKpBadSignRatio().
c_str());
1066 _ui->checkBox_kp_tfIdfLikelihoodUsed->setObjectName(Parameters::kKpTfIdfLikelihoodUsed().
c_str());
1067 _ui->checkBox_kp_parallelized->setObjectName(Parameters::kKpParallelized().
c_str());
1068 _ui->lineEdit_kp_roi->setObjectName(Parameters::kKpRoiRatios().
c_str());
1069 _ui->lineEdit_dictionaryPath->setObjectName(Parameters::kKpDictionaryPath().
c_str());
1071 _ui->checkBox_kp_newWordsComparedTogether->setObjectName(Parameters::kKpNewWordsComparedTogether().
c_str());
1072 _ui->subpix_winSize_kp->setObjectName(Parameters::kKpSubPixWinSize().
c_str());
1073 _ui->subpix_iterations_kp->setObjectName(Parameters::kKpSubPixIterations().
c_str());
1074 _ui->subpix_eps_kp->setObjectName(Parameters::kKpSubPixEps().
c_str());
1076 _ui->subpix_winSize->setObjectName(Parameters::kKpSubPixWinSize().
c_str());
1077 _ui->subpix_iterations->setObjectName(Parameters::kKpSubPixIterations().
c_str());
1078 _ui->subpix_eps->setObjectName(Parameters::kKpSubPixEps().
c_str());
1081 _ui->surf_doubleSpinBox_hessianThr->setObjectName(Parameters::kSURFHessianThreshold().
c_str());
1082 _ui->surf_spinBox_octaves->setObjectName(Parameters::kSURFOctaves().
c_str());
1083 _ui->surf_spinBox_octaveLayers->setObjectName(Parameters::kSURFOctaveLayers().
c_str());
1084 _ui->checkBox_surfExtended->setObjectName(Parameters::kSURFExtended().
c_str());
1085 _ui->surf_checkBox_upright->setObjectName(Parameters::kSURFUpright().
c_str());
1086 _ui->surf_checkBox_gpuVersion->setObjectName(Parameters::kSURFGpuVersion().
c_str());
1087 _ui->surf_doubleSpinBox_gpuKeypointsRatio->setObjectName(Parameters::kSURFGpuKeypointsRatio().
c_str());
1090 _ui->sift_spinBox_nOctaveLayers->setObjectName(Parameters::kSIFTNOctaveLayers().
c_str());
1091 _ui->sift_doubleSpinBox_contrastThr->setObjectName(Parameters::kSIFTContrastThreshold().
c_str());
1092 _ui->sift_doubleSpinBox_edgeThr->setObjectName(Parameters::kSIFTEdgeThreshold().
c_str());
1093 _ui->sift_doubleSpinBox_sigma->setObjectName(Parameters::kSIFTSigma().
c_str());
1094 _ui->sift_checkBox_preciseUpscale->setObjectName(Parameters::kSIFTPreciseUpscale().
c_str());
1095 _ui->sift_checkBox_rootsift->setObjectName(Parameters::kSIFTRootSIFT().
c_str());
1096 _ui->sift_checkBox_gpu->setObjectName(Parameters::kSIFTGpu().
c_str());
1097 _ui->sift_doubleSpinBox_gaussianDiffThreshold->setObjectName(Parameters::kSIFTGaussianThreshold().
c_str());
1098 _ui->sift_checkBox_upscale->setObjectName(Parameters::kSIFTUpscale().
c_str());
1101 _ui->briefBytes->setObjectName(Parameters::kBRIEFBytes().
c_str());
1104 _ui->fastSuppressNonMax->setObjectName(Parameters::kFASTNonmaxSuppression().
c_str());
1105 _ui->fastThreshold->setObjectName(Parameters::kFASTThreshold().
c_str());
1106 _ui->fastThresholdMin->setObjectName(Parameters::kFASTMinThreshold().
c_str());
1107 _ui->fastThresholdMax->setObjectName(Parameters::kFASTMaxThreshold().
c_str());
1108 _ui->fastGridRows->setObjectName(Parameters::kFASTGridRows().
c_str());
1109 _ui->fastGridCols->setObjectName(Parameters::kFASTGridCols().
c_str());
1110 _ui->fastGpu->setObjectName(Parameters::kFASTGpu().
c_str());
1111 _ui->fastKeypointRatio->setObjectName(Parameters::kFASTGpuKeypointsRatio().
c_str());
1112 _ui->fastCV->setObjectName(Parameters::kFASTCV().
c_str());
1115 _ui->doubleSpinBox_ORBScaleFactor->setObjectName(Parameters::kORBScaleFactor().
c_str());
1116 _ui->spinBox_ORBNLevels->setObjectName(Parameters::kORBNLevels().
c_str());
1117 _ui->spinBox_ORBEdgeThreshold->setObjectName(Parameters::kORBEdgeThreshold().
c_str());
1118 _ui->spinBox_ORBFirstLevel->setObjectName(Parameters::kORBFirstLevel().
c_str());
1119 _ui->spinBox_ORBWTA_K->setObjectName(Parameters::kORBWTA_K().
c_str());
1120 _ui->spinBox_ORBScoreType->setObjectName(Parameters::kORBScoreType().
c_str());
1121 _ui->spinBox_ORBPatchSize->setObjectName(Parameters::kORBPatchSize().
c_str());
1122 _ui->checkBox_ORBGpu->setObjectName(Parameters::kORBGpu().
c_str());
1125 _ui->checkBox_FREAKOrientationNormalized->setObjectName(Parameters::kFREAKOrientationNormalized().
c_str());
1126 _ui->checkBox_FREAKScaleNormalized->setObjectName(Parameters::kFREAKScaleNormalized().
c_str());
1127 _ui->doubleSpinBox_FREAKPatternScale->setObjectName(Parameters::kFREAKPatternScale().
c_str());
1128 _ui->spinBox_FREAKNOctaves->setObjectName(Parameters::kFREAKNOctaves().
c_str());
1131 _ui->doubleSpinBox_GFTT_qualityLevel->setObjectName(Parameters::kGFTTQualityLevel().
c_str());
1132 _ui->doubleSpinBox_GFTT_minDistance->setObjectName(Parameters::kGFTTMinDistance().
c_str());
1133 _ui->spinBox_GFTT_blockSize->setObjectName(Parameters::kGFTTBlockSize().
c_str());
1134 _ui->checkBox_GFTT_useHarrisDetector->setObjectName(Parameters::kGFTTUseHarrisDetector().
c_str());
1135 _ui->doubleSpinBox_GFTT_k->setObjectName(Parameters::kGFTTK().
c_str());
1136 _ui->checkBox_GFTT_gpu->setObjectName(Parameters::kGFTTGpu().
c_str());
1139 _ui->spinBox_BRISK_thresh->setObjectName(Parameters::kBRISKThresh().
c_str());
1140 _ui->spinBox_BRISK_octaves->setObjectName(Parameters::kBRISKOctaves().
c_str());
1141 _ui->doubleSpinBox_BRISK_patterScale->setObjectName(Parameters::kBRISKPatternScale().
c_str());
1144 _ui->checkBox_kaze_extended->setObjectName(Parameters::kKAZEExtended().
c_str());
1145 _ui->checkBox_kaze_upright->setObjectName(Parameters::kKAZEUpright().
c_str());
1146 _ui->doubleSpinBox_kaze_threshold->setObjectName(Parameters::kKAZEThreshold().
c_str());
1147 _ui->spinBox_kaze_octaves->setObjectName(Parameters::kKAZENOctaves().
c_str());
1148 _ui->spinBox_kaze_octavelayers->setObjectName(Parameters::kKAZENOctaveLayers().
c_str());
1149 _ui->spinBox_kaze_diffusivity->setObjectName(Parameters::kKAZEDiffusivity().
c_str());
1152 _ui->lineEdit_sptorch_path->setObjectName(Parameters::kSuperPointModelPath().
c_str());
1154 _ui->doubleSpinBox_sptorch_threshold->setObjectName(Parameters::kSuperPointThreshold().
c_str());
1155 _ui->checkBox_sptorch_nms->setObjectName(Parameters::kSuperPointNMS().
c_str());
1156 _ui->spinBox_sptorch_minDistance->setObjectName(Parameters::kSuperPointNMSRadius().
c_str());
1157 _ui->checkBox_sptorch_cuda->setObjectName(Parameters::kSuperPointCuda().
c_str());
1160 _ui->lineEdit_pymatcher_path->setObjectName(Parameters::kPyMatcherPath().
c_str());
1162 _ui->pymatcher_matchThreshold->setObjectName(Parameters::kPyMatcherThreshold().
c_str());
1163 _ui->pymatcher_iterations->setObjectName(Parameters::kPyMatcherIterations().
c_str());
1164 _ui->checkBox_pymatcher_cuda->setObjectName(Parameters::kPyMatcherCuda().
c_str());
1165 _ui->lineEdit_pymatcher_model->setObjectName(Parameters::kPyMatcherModel().
c_str());
1169 _ui->lineEdit_pydetector_path->setObjectName(Parameters::kPyDetectorPath().
c_str());
1171 _ui->checkBox_pydetector_cuda->setObjectName(Parameters::kPyDetectorCuda().
c_str());
1174 _ui->checkBox_gms_withRotation->setObjectName(Parameters::kGMSWithRotation().
c_str());
1175 _ui->checkBox_gms_withScale->setObjectName(Parameters::kGMSWithScale().
c_str());
1176 _ui->gms_thresholdFactor->setObjectName(Parameters::kGMSThresholdFactor().
c_str());
1179 _ui->lineEdit_pydescriptor_path->setObjectName(Parameters::kPyDescriptorPath().
c_str());
1181 _ui->pydescriptor_dim->setObjectName(Parameters::kPyDescriptorDim().
c_str());
1184 _ui->groupBox_vh_epipolar2->setObjectName(Parameters::kVhEpEnabled().
c_str());
1185 _ui->surf_spinBox_matchCountMinAccepted->setObjectName(Parameters::kVhEpMatchCountMin().
c_str());
1186 _ui->surf_doubleSpinBox_ransacParam1->setObjectName(Parameters::kVhEpRansacParam1().
c_str());
1187 _ui->surf_doubleSpinBox_ransacParam2->setObjectName(Parameters::kVhEpRansacParam2().
c_str());
1190 _ui->general_checkBox_activateRGBD->setObjectName(Parameters::kRGBDEnabled().
c_str());
1191 _ui->rgdb_linearUpdate->setObjectName(Parameters::kRGBDLinearUpdate().
c_str());
1192 _ui->rgdb_angularUpdate->setObjectName(Parameters::kRGBDAngularUpdate().
c_str());
1193 _ui->rgdb_linearSpeedUpdate->setObjectName(Parameters::kRGBDLinearSpeedUpdate().
c_str());
1194 _ui->rgdb_angularSpeedUpdate->setObjectName(Parameters::kRGBDAngularSpeedUpdate().
c_str());
1195 _ui->rgbd_forceOdom3DoF->setObjectName(Parameters::kRGBDForceOdom3DoF().
c_str());
1196 _ui->rgbd_savedLocalizationIgnored->setObjectName(Parameters::kRGBDStartAtOrigin().
c_str());
1197 _ui->rgdb_rehearsalWeightIgnoredWhileMoving->setObjectName(Parameters::kMemRehearsalWeightIgnoredWhileMoving().
c_str());
1198 _ui->rgdb_newMapOdomChange->setObjectName(Parameters::kRGBDNewMapOdomChangeDistance().
c_str());
1199 _ui->odomScanHistory->setObjectName(Parameters::kRGBDNeighborLinkRefining().
c_str());
1200 _ui->odomGravity->setObjectName(Parameters::kMemUseOdomGravity().
c_str());
1201 _ui->spinBox_maxLocalLocationsRetrieved->setObjectName(Parameters::kRGBDMaxLocalRetrieved().
c_str());
1202 _ui->rgbd_loopCovLimited->setObjectName(Parameters::kRGBDLoopCovLimited().
c_str());
1204 _ui->graphOptimization_type->setObjectName(Parameters::kOptimizerStrategy().
c_str());
1205 _ui->graphOptimization_iterations->setObjectName(Parameters::kOptimizerIterations().
c_str());
1206 _ui->graphOptimization_covarianceIgnored->setObjectName(Parameters::kOptimizerVarianceIgnored().
c_str());
1207 _ui->graphOptimization_fromGraphEnd->setObjectName(Parameters::kRGBDOptimizeFromGraphEnd().
c_str());
1208 _ui->graphOptimization_maxError->setObjectName(Parameters::kRGBDOptimizeMaxError().
c_str());
1209 _ui->graphOptimization_gravitySigma->setObjectName(Parameters::kOptimizerGravitySigma().
c_str());
1210 _ui->graphOptimization_stopEpsilon->setObjectName(Parameters::kOptimizerEpsilon().
c_str());
1211 _ui->graphOptimization_robust->setObjectName(Parameters::kOptimizerRobust().
c_str());
1212 _ui->graphOptimization_priorsIgnored->setObjectName(Parameters::kOptimizerPriorsIgnored().
c_str());
1213 _ui->graphOptimization_landmarksIgnored->setObjectName(Parameters::kOptimizerLandmarksIgnored().
c_str());
1215 _ui->comboBox_g2o_solver->setObjectName(Parameters::kg2oSolver().
c_str());
1216 _ui->comboBox_g2o_optimizer->setObjectName(Parameters::kg2oOptimizer().
c_str());
1217 _ui->doubleSpinBox_g2o_pixelVariance->setObjectName(Parameters::kg2oPixelVariance().
c_str());
1218 _ui->doubleSpinBox_g2o_robustKernelDelta->setObjectName(Parameters::kg2oRobustKernelDelta().
c_str());
1219 _ui->doubleSpinBox_g2o_baseline->setObjectName(Parameters::kg2oBaseline().
c_str());
1221 _ui->comboBox_gtsam_optimizer->setObjectName(Parameters::kGTSAMOptimizer().
c_str());
1222 _ui->gtsam_incremental->setObjectName(Parameters::kGTSAMIncremental().
c_str());
1223 _ui->gtsam_incremental_threshold->setObjectName(Parameters::kGTSAMIncRelinearizeThreshold().
c_str());
1224 _ui->gtsam_incremental_skip->setObjectName(Parameters::kGTSAMIncRelinearizeSkip().
c_str());
1226 _ui->graphPlan_goalReachedRadius->setObjectName(Parameters::kRGBDGoalReachedRadius().
c_str());
1227 _ui->graphPlan_goalsSavedInUserData->setObjectName(Parameters::kRGBDGoalsSavedInUserData().
c_str());
1228 _ui->graphPlan_stuckIterations->setObjectName(Parameters::kRGBDPlanStuckIterations().
c_str());
1229 _ui->graphPlan_linearVelocity->setObjectName(Parameters::kRGBDPlanLinearVelocity().
c_str());
1230 _ui->graphPlan_angularVelocity->setObjectName(Parameters::kRGBDPlanAngularVelocity().
c_str());
1232 _ui->groupBox_localDetection_time->setObjectName(Parameters::kRGBDProximityByTime().
c_str());
1233 _ui->groupBox_localDetection_space->setObjectName(Parameters::kRGBDProximityBySpace().
c_str());
1234 _ui->localDetection_radius->setObjectName(Parameters::kRGBDLocalRadius().
c_str());
1235 _ui->maxLocalizationDistance->setObjectName(Parameters::kRGBDMaxLoopClosureDistance().
c_str());
1236 _ui->localDetection_maxDiffID->setObjectName(Parameters::kRGBDProximityMaxGraphDepth().
c_str());
1237 _ui->localDetection_maxNeighbors->setObjectName(Parameters::kRGBDProximityPathMaxNeighbors().
c_str());
1238 _ui->localDetection_maxPaths->setObjectName(Parameters::kRGBDProximityMaxPaths().
c_str());
1239 _ui->localDetection_pathFilteringRadius->setObjectName(Parameters::kRGBDProximityPathFilteringRadius().
c_str());
1240 _ui->localDetection_angle->setObjectName(Parameters::kRGBDProximityAngle().
c_str());
1241 _ui->localDetection_mergedScanCovFactor->setObjectName(Parameters::kRGBDProximityMergedScanCovFactor().
c_str());
1242 _ui->checkBox_localSpaceOdomGuess->setObjectName(Parameters::kRGBDProximityOdomGuess().
c_str());
1243 _ui->checkBox_localSpacePathOdomPosesUsed->setObjectName(Parameters::kRGBDProximityPathRawPosesUsed().
c_str());
1244 _ui->rgdb_localImmunizationRatio->setObjectName(Parameters::kRGBDLocalImmunizationRatio().
c_str());
1245 _ui->loopClosure_identityGuess->setObjectName(Parameters::kRGBDLoopClosureIdentityGuess().
c_str());
1246 _ui->loopClosure_reextract->setObjectName(Parameters::kRGBDLoopClosureReextractFeatures().
c_str());
1247 _ui->loopClosure_bunlde->setObjectName(Parameters::kRGBDLocalBundleOnLoopClosure().
c_str());
1248 _ui->loopClosure_invertedReg->setObjectName(Parameters::kRGBDInvertedReg().
c_str());
1249 _ui->checkbox_rgbd_createOccupancyGrid->setObjectName(Parameters::kRGBDCreateOccupancyGrid().
c_str());
1250 _ui->RGBDMarkerDetection->setObjectName(Parameters::kRGBDMarkerDetection().
c_str());
1251 _ui->spinBox_maxOdomCacheSize->setObjectName(Parameters::kRGBDMaxOdomCacheSize().
c_str());
1252 _ui->checkbox_localizationSmoothing->setObjectName(Parameters::kRGBDLocalizationSmoothing().
c_str());
1253 _ui->doubleSpinBox_localizationPriorError->setObjectName(Parameters::kRGBDLocalizationPriorError().
c_str());
1256 _ui->reg_repeatOnce->setObjectName(Parameters::kRegRepeatOnce().
c_str());
1257 _ui->comboBox_registrationStrategy->setObjectName(Parameters::kRegStrategy().
c_str());
1258 _ui->loopClosure_bowForce2D->setObjectName(Parameters::kRegForce3DoF().
c_str());
1261 _ui->loopClosure_bowMinInliers->setObjectName(Parameters::kVisMinInliers().
c_str());
1262 _ui->loopClosure_bowInlierDistance->setObjectName(Parameters::kVisInlierDistance().
c_str());
1263 _ui->loopClosure_bowIterations->setObjectName(Parameters::kVisIterations().
c_str());
1264 _ui->loopClosure_bowRefineIterations->setObjectName(Parameters::kVisRefineIterations().
c_str());
1265 _ui->visMeanDistance->setObjectName(Parameters::kVisMeanInliersDistance().
c_str());
1266 _ui->visMinDistribution->setObjectName(Parameters::kVisMinInliersDistribution().
c_str());
1267 _ui->loopClosure_estimationType->setObjectName(Parameters::kVisEstimationType().
c_str());
1268 connect(
_ui->loopClosure_estimationType, SIGNAL(currentIndexChanged(
int)),
_ui->stackedWidget_loopClosureEstimation, SLOT(setCurrentIndex(
int)));
1269 _ui->stackedWidget_loopClosureEstimation->setCurrentIndex(Parameters::defaultVisEstimationType());
1270 _ui->loopClosure_forwardEst->setObjectName(Parameters::kVisForwardEstOnly().
c_str());
1271 _ui->loopClosure_bowEpipolarGeometryVar->setObjectName(Parameters::kVisEpipolarGeometryVar().
c_str());
1272 _ui->loopClosure_pnpReprojError->setObjectName(Parameters::kVisPnPReprojError().
c_str());
1273 _ui->loopClosure_pnpFlags->setObjectName(Parameters::kVisPnPFlags().
c_str());
1274 _ui->loopClosure_pnpRefineIterations->setObjectName(Parameters::kVisPnPRefineIterations().
c_str());
1275 _ui->loopClosure_pnpVarMedianRatio->setObjectName(Parameters::kVisPnPVarianceMedianRatio().
c_str());
1276 _ui->loopClosure_pnpMaxVariance->setObjectName(Parameters::kVisPnPMaxVariance().
c_str());
1277 _ui->loopClosure_pnpSamplingPolicy->setObjectName(Parameters::kVisPnPSamplingPolicy().
c_str());
1278 _ui->loopClosure_pnpSplitLinearCovComponents->setObjectName(Parameters::kVisPnPSplitLinearCovComponents().
c_str());
1279 _ui->reextract_nn->setObjectName(Parameters::kVisCorNNType().
c_str());
1281 _ui->reextract_nndrRatio->setObjectName(Parameters::kVisCorNNDR().
c_str());
1282 _ui->spinBox_visCorGuessWinSize->setObjectName(Parameters::kVisCorGuessWinSize().
c_str());
1283 _ui->checkBox_visCorGuessMatchToProjection->setObjectName(Parameters::kVisCorGuessMatchToProjection().
c_str());
1284 _ui->vis_feature_detector->setObjectName(Parameters::kVisFeatureType().
c_str());
1285 _ui->reextract_maxFeatures->setObjectName(Parameters::kVisMaxFeatures().
c_str());
1286 _ui->checkBox_visSSC->setObjectName(Parameters::kVisSSC().
c_str());
1287 _ui->reextract_gridrows->setObjectName(Parameters::kVisGridRows().
c_str());
1288 _ui->reextract_gridcols->setObjectName(Parameters::kVisGridCols().
c_str());
1289 _ui->loopClosure_bowMaxDepth->setObjectName(Parameters::kVisMaxDepth().
c_str());
1290 _ui->loopClosure_bowMinDepth->setObjectName(Parameters::kVisMinDepth().
c_str());
1291 _ui->checkBox_visDepthAsMask->setObjectName(Parameters::kVisDepthAsMask().
c_str());
1292 _ui->loopClosure_roi->setObjectName(Parameters::kVisRoiRatios().
c_str());
1293 _ui->subpix_winSize->setObjectName(Parameters::kVisSubPixWinSize().
c_str());
1294 _ui->subpix_iterations->setObjectName(Parameters::kVisSubPixIterations().
c_str());
1295 _ui->subpix_eps->setObjectName(Parameters::kVisSubPixEps().
c_str());
1296 _ui->odom_flow_winSize->setObjectName(Parameters::kVisCorFlowWinSize().
c_str());
1297 _ui->odom_flow_maxLevel->setObjectName(Parameters::kVisCorFlowMaxLevel().
c_str());
1298 _ui->odom_flow_iterations->setObjectName(Parameters::kVisCorFlowIterations().
c_str());
1299 _ui->odom_flow_eps->setObjectName(Parameters::kVisCorFlowEps().
c_str());
1300 _ui->odom_flow_gpu->setObjectName(Parameters::kVisCorFlowGpu().
c_str());
1301 _ui->loopClosure_bundle->setObjectName(Parameters::kVisBundleAdjustment().
c_str());
1304 _ui->comboBox_icpStrategy->setObjectName(Parameters::kIcpStrategy().
c_str());
1305 connect(
_ui->comboBox_icpStrategy, SIGNAL(currentIndexChanged(
int)),
_ui->stackedWidget_icpStrategy, SLOT(setCurrentIndex(
int)));
1306 _ui->comboBox_icpStrategy->setCurrentIndex(Parameters::defaultIcpStrategy());
1307 _ui->globalDetection_icpMaxTranslation->setObjectName(Parameters::kIcpMaxTranslation().
c_str());
1308 _ui->globalDetection_icpMaxRotation->setObjectName(Parameters::kIcpMaxRotation().
c_str());
1309 _ui->loopClosure_icpVoxelSize->setObjectName(Parameters::kIcpVoxelSize().
c_str());
1310 _ui->loopClosure_icpDownsamplingStep->setObjectName(Parameters::kIcpDownsamplingStep().
c_str());
1311 _ui->loopClosure_icpRangeMin->setObjectName(Parameters::kIcpRangeMin().
c_str());
1312 _ui->loopClosure_icpRangeMax->setObjectName(Parameters::kIcpRangeMax().
c_str());
1313 _ui->loopClosure_icpFiltersEnabled->setObjectName(Parameters::kIcpFiltersEnabled().
c_str());
1314 _ui->loopClosure_icpMaxCorrespondenceDistance->setObjectName(Parameters::kIcpMaxCorrespondenceDistance().
c_str());
1315 _ui->loopClosure_icpReciprocalCorrespondences->setObjectName(Parameters::kIcpReciprocalCorrespondences().
c_str());
1316 _ui->loopClosure_icpIterations->setObjectName(Parameters::kIcpIterations().
c_str());
1317 _ui->loopClosure_icpEpsilon->setObjectName(Parameters::kIcpEpsilon().
c_str());
1318 _ui->loopClosure_icpRatio->setObjectName(Parameters::kIcpCorrespondenceRatio().
c_str());
1319 _ui->doubleSpinBox_icpOutlierRatio->setObjectName(Parameters::kIcpOutlierRatio().
c_str());
1320 _ui->loopClosure_icpPointToPlane->setObjectName(Parameters::kIcpPointToPlane().
c_str());
1321 _ui->loopClosure_icpPointToPlaneNormals->setObjectName(Parameters::kIcpPointToPlaneK().
c_str());
1322 _ui->loopClosure_icpPointToPlaneNormalsRadius->setObjectName(Parameters::kIcpPointToPlaneRadius().
c_str());
1323 _ui->loopClosure_icpPointToPlaneGroundNormalsUp->setObjectName(Parameters::kIcpPointToPlaneGroundNormalsUp().
c_str());
1324 _ui->loopClosure_icpPointToPlaneNormalsMinComplexity->setObjectName(Parameters::kIcpPointToPlaneMinComplexity().
c_str());
1325 _ui->loopClosure_icpPointToPlaneLowComplexityStrategy->setObjectName(Parameters::kIcpPointToPlaneLowComplexityStrategy().
c_str());
1326 _ui->loopClosure_icpDebugExportFormat->setObjectName(Parameters::kIcpDebugExportFormat().
c_str());
1328 _ui->lineEdit_IcpPMConfigPath->setObjectName(Parameters::kIcpPMConfig().
c_str());
1330 _ui->spinBox_icpPMMatcherKnn->setObjectName(Parameters::kIcpPMMatcherKnn().
c_str());
1331 _ui->doubleSpinBox_icpPMMatcherEpsilon->setObjectName(Parameters::kIcpPMMatcherEpsilon().
c_str());
1332 _ui->loopClosure_icpPMMatcherIntensity->setObjectName(Parameters::kIcpPMMatcherIntensity().
c_str());
1333 _ui->loopClosure_icpForce4DoF->setObjectName(Parameters::kIcpForce4DoF().
c_str());
1335 _ui->spinBox_icpCCSamplingLimit->setObjectName(Parameters::kIcpCCSamplingLimit().
c_str());
1336 _ui->checkBox_icpCCFilterOutFarthestPoints->setObjectName(Parameters::kIcpCCFilterOutFarthestPoints().
c_str());
1337 _ui->doubleSpinBox_icpCCMaxFinalRMS->setObjectName(Parameters::kIcpCCMaxFinalRMS().
c_str());
1341 _ui->groupBox_grid_3d->setObjectName(Parameters::kGrid3D().
c_str());
1342 _ui->checkBox_grid_groundObstacle->setObjectName(Parameters::kGridGroundIsObstacle().
c_str());
1343 _ui->doubleSpinBox_grid_resolution->setObjectName(Parameters::kGridCellSize().
c_str());
1344 _ui->checkBox_grid_preVoxelFiltering->setObjectName(Parameters::kGridPreVoxelFiltering().
c_str());
1345 _ui->spinBox_grid_decimation->setObjectName(Parameters::kGridDepthDecimation().
c_str());
1346 _ui->doubleSpinBox_grid_maxDepth->setObjectName(Parameters::kGridRangeMax().
c_str());
1347 _ui->doubleSpinBox_grid_minDepth->setObjectName(Parameters::kGridRangeMin().
c_str());
1348 _ui->lineEdit_grid_roi->setObjectName(Parameters::kGridDepthRoiRatios().
c_str());
1349 _ui->checkBox_grid_projRayTracing->setObjectName(Parameters::kGridRayTracing().
c_str());
1350 _ui->doubleSpinBox_grid_footprintLength->setObjectName(Parameters::kGridFootprintLength().
c_str());
1351 _ui->doubleSpinBox_grid_footprintWidth->setObjectName(Parameters::kGridFootprintWidth().
c_str());
1352 _ui->doubleSpinBox_grid_footprintHeight->setObjectName(Parameters::kGridFootprintHeight().
c_str());
1353 _ui->checkBox_grid_flatObstaclesDetected->setObjectName(Parameters::kGridFlatObstacleDetected().
c_str());
1354 _ui->comboBox_grid_sensor->setObjectName(Parameters::kGridSensor().
c_str());
1355 _ui->checkBox_grid_projMapFrame->setObjectName(Parameters::kGridMapFrameProjection().
c_str());
1356 _ui->doubleSpinBox_grid_maxGroundAngle->setObjectName(Parameters::kGridMaxGroundAngle().
c_str());
1357 _ui->spinBox_grid_normalK->setObjectName(Parameters::kGridNormalK().
c_str());
1358 _ui->doubleSpinBox_grid_maxGroundHeight->setObjectName(Parameters::kGridMaxGroundHeight().
c_str());
1359 _ui->doubleSpinBox_grid_maxObstacleHeight->setObjectName(Parameters::kGridMaxObstacleHeight().
c_str());
1360 _ui->doubleSpinBox_grid_clusterRadius->setObjectName(Parameters::kGridClusterRadius().
c_str());
1361 _ui->spinBox_grid_minClusterSize->setObjectName(Parameters::kGridMinClusterSize().
c_str());
1362 _ui->doubleSpinBox_grid_minGroundHeight->setObjectName(Parameters::kGridMinGroundHeight().
c_str());
1363 _ui->spinBox_grid_noiseMinNeighbors->setObjectName(Parameters::kGridNoiseFilteringMinNeighbors().
c_str());
1364 _ui->doubleSpinBox_grid_noiseRadius->setObjectName(Parameters::kGridNoiseFilteringRadius().
c_str());
1365 _ui->groupBox_grid_normalsSegmentation->setObjectName(Parameters::kGridNormalsSegmentation().
c_str());
1366 _ui->checkBox_grid_unknownSpaceFilled->setObjectName(Parameters::kGridScan2dUnknownSpaceFilled().
c_str());
1367 _ui->spinBox_grid_scanDecimation->setObjectName(Parameters::kGridScanDecimation().
c_str());
1369 _ui->doubleSpinBox_grid_updateError->setObjectName(Parameters::kGridGlobalUpdateError().
c_str());
1370 _ui->doubleSpinBox_grid_minMapSize->setObjectName(Parameters::kGridGlobalMinSize().
c_str());
1371 _ui->spinBox_grid_maxNodes->setObjectName(Parameters::kGridGlobalMaxNodes().
c_str());
1372 _ui->doubleSpinBox_grid_altitudeDelta->setObjectName(Parameters::kGridGlobalAltitudeDelta().
c_str());
1373 _ui->doubleSpinBox_grid_footprintRadius->setObjectName(Parameters::kGridGlobalFootprintRadius().
c_str());
1374 _ui->doubleSpinBox_grid_occThr->setObjectName(Parameters::kGridGlobalOccupancyThr().
c_str());
1375 _ui->doubleSpinBox_grid_probHit->setObjectName(Parameters::kGridGlobalProbHit().
c_str());
1376 _ui->doubleSpinBox_grid_probMiss->setObjectName(Parameters::kGridGlobalProbMiss().
c_str());
1377 _ui->doubleSpinBox_grid_clampingMin->setObjectName(Parameters::kGridGlobalProbClampingMin().
c_str());
1378 _ui->doubleSpinBox_grid_clampingMax->setObjectName(Parameters::kGridGlobalProbClampingMax().
c_str());
1379 _ui->checkBox_grid_erode->setObjectName(Parameters::kGridGlobalEroded().
c_str());
1380 _ui->spinBox_grid_floodfilldepth->setObjectName(Parameters::kGridGlobalFloodFillDepth().
c_str());
1383 _ui->odom_strategy->setObjectName(Parameters::kOdomStrategy().
c_str());
1385 _ui->odom_strategy->setCurrentIndex(Parameters::defaultOdomStrategy());
1387 _ui->odom_countdown->setObjectName(Parameters::kOdomResetCountdown().
c_str());
1388 _ui->odom_holonomic->setObjectName(Parameters::kOdomHolonomic().
c_str());
1389 _ui->odom_fillInfoData->setObjectName(Parameters::kOdomFillInfoData().
c_str());
1390 _ui->odom_dataBufferSize->setObjectName(Parameters::kOdomImageBufferSize().
c_str());
1391 _ui->odom_flow_keyframeThr->setObjectName(Parameters::kOdomKeyFrameThr().
c_str());
1392 _ui->odom_VisKeyFrameThr->setObjectName(Parameters::kOdomVisKeyFrameThr().
c_str());
1393 _ui->odom_flow_scanKeyframeThr->setObjectName(Parameters::kOdomScanKeyFrameThr().
c_str());
1394 _ui->odom_flow_guessMotion->setObjectName(Parameters::kOdomGuessMotion().
c_str());
1395 _ui->odom_guess_smoothing_delay->setObjectName(Parameters::kOdomGuessSmoothingDelay().
c_str());
1396 _ui->odom_imageDecimation->setObjectName(Parameters::kOdomImageDecimation().
c_str());
1397 _ui->odom_alignWithGround->setObjectName(Parameters::kOdomAlignWithGround().
c_str());
1398 _ui->odom_lidar_deskewing->setObjectName(Parameters::kOdomDeskewing().
c_str());
1401 _ui->odom_localHistory->setObjectName(Parameters::kOdomF2MMaxSize().
c_str());
1402 _ui->spinBox_odom_f2m_maxNewFeatures->setObjectName(Parameters::kOdomF2MMaxNewFeatures().
c_str());
1403 _ui->spinBox_odom_f2m_scanMaxSize->setObjectName(Parameters::kOdomF2MScanMaxSize().
c_str());
1404 _ui->doubleSpinBox_odom_f2m_scanRadius->setObjectName(Parameters::kOdomF2MScanSubtractRadius().
c_str());
1405 _ui->doubleSpinBox_odom_f2m_scanAngle->setObjectName(Parameters::kOdomF2MScanSubtractAngle().
c_str());
1406 _ui->doubleSpinBox_odom_f2m_scanRange->setObjectName(Parameters::kOdomF2MScanRange().
c_str());
1407 _ui->odom_f2m_validDepthRatio->setObjectName(Parameters::kOdomF2MValidDepthRatio().
c_str());
1408 _ui->odom_f2m_bundleStrategy->setObjectName(Parameters::kOdomF2MBundleAdjustment().
c_str());
1409 _ui->odom_f2m_bundleMaxFrames->setObjectName(Parameters::kOdomF2MBundleAdjustmentMaxFrames().
c_str());
1412 _ui->comboBox_odomf2f_corType->setObjectName(Parameters::kVisCorType().
c_str());
1415 _ui->doubleSpinBox_minFlow->setObjectName(Parameters::kOdomMonoInitMinFlow().
c_str());
1416 _ui->doubleSpinBox_minInitTranslation->setObjectName(Parameters::kOdomMonoInitMinTranslation().
c_str());
1417 _ui->doubleSpinBox_minTranslation->setObjectName(Parameters::kOdomMonoMinTranslation().
c_str());
1418 _ui->doubleSpinBox_maxVariance->setObjectName(Parameters::kOdomMonoMaxVariance().
c_str());
1421 _ui->odom_filteringStrategy->setObjectName(Parameters::kOdomFilteringStrategy().
c_str());
1422 _ui->stackedWidget_odometryFiltering->setCurrentIndex(
_ui->odom_filteringStrategy->currentIndex());
1423 connect(
_ui->odom_filteringStrategy, SIGNAL(currentIndexChanged(
int)),
_ui->stackedWidget_odometryFiltering, SLOT(setCurrentIndex(
int)));
1424 _ui->spinBox_particleSize->setObjectName(Parameters::kOdomParticleSize().
c_str());
1425 _ui->doubleSpinBox_particleNoiseT->setObjectName(Parameters::kOdomParticleNoiseT().
c_str());
1426 _ui->doubleSpinBox_particleLambdaT->setObjectName(Parameters::kOdomParticleLambdaT().
c_str());
1427 _ui->doubleSpinBox_particleNoiseR->setObjectName(Parameters::kOdomParticleNoiseR().
c_str());
1428 _ui->doubleSpinBox_particleLambdaR->setObjectName(Parameters::kOdomParticleLambdaR().
c_str());
1431 _ui->doubleSpinBox_kalmanProcessNoise->setObjectName(Parameters::kOdomKalmanProcessNoise().
c_str());
1432 _ui->doubleSpinBox_kalmanMeasurementNoise->setObjectName(Parameters::kOdomKalmanMeasurementNoise().
c_str());
1435 _ui->spinBox_OdomFovisFeatureWindowSize->setObjectName(Parameters::kOdomFovisFeatureWindowSize().
c_str());
1436 _ui->spinBox_OdomFovisMaxPyramidLevel->setObjectName(Parameters::kOdomFovisMaxPyramidLevel().
c_str());
1437 _ui->spinBox_OdomFovisMinPyramidLevel->setObjectName(Parameters::kOdomFovisMinPyramidLevel().
c_str());
1438 _ui->spinBox_OdomFovisTargetPixelsPerFeature->setObjectName(Parameters::kOdomFovisTargetPixelsPerFeature().
c_str());
1439 _ui->spinBox_OdomFovisFastThreshold->setObjectName(Parameters::kOdomFovisFastThreshold().
c_str());
1440 _ui->checkBox_OdomFovisUseAdaptiveThreshold->setObjectName(Parameters::kOdomFovisUseAdaptiveThreshold().
c_str());
1441 _ui->doubleSpinBox_OdomFovisFastThresholdAdaptiveGain->setObjectName(Parameters::kOdomFovisFastThresholdAdaptiveGain().
c_str());
1442 _ui->checkBox_OdomFovisUseHomographyInitialization->setObjectName(Parameters::kOdomFovisUseHomographyInitialization().
c_str());
1444 _ui->checkBox_OdomFovisUseBucketing->setObjectName(Parameters::kOdomFovisUseBucketing().
c_str());
1445 _ui->spinBox_OdomFovisBucketWidth->setObjectName(Parameters::kOdomFovisBucketWidth().
c_str());
1446 _ui->spinBox_OdomFovisBucketHeight->setObjectName(Parameters::kOdomFovisBucketHeight().
c_str());
1447 _ui->spinBox_OdomFovisMaxKeypointsPerBucket->setObjectName(Parameters::kOdomFovisMaxKeypointsPerBucket().
c_str());
1448 _ui->checkBox_OdomFovisUseImageNormalization->setObjectName(Parameters::kOdomFovisUseImageNormalization().
c_str());
1450 _ui->doubleSpinBox_OdomFovisInlierMaxReprojectionError->setObjectName(Parameters::kOdomFovisInlierMaxReprojectionError().
c_str());
1451 _ui->doubleSpinBox_OdomFovisCliqueInlierThreshold->setObjectName(Parameters::kOdomFovisCliqueInlierThreshold().
c_str());
1452 _ui->spinBox_OdomFovisMinFeaturesForEstimate->setObjectName(Parameters::kOdomFovisMinFeaturesForEstimate().
c_str());
1453 _ui->doubleSpinBox_OdomFovisMaxMeanReprojectionError->setObjectName(Parameters::kOdomFovisMaxMeanReprojectionError().
c_str());
1454 _ui->checkBox_OdomFovisUseSubpixelRefinement->setObjectName(Parameters::kOdomFovisUseSubpixelRefinement().
c_str());
1455 _ui->spinBox_OdomFovisFeatureSearchWindow->setObjectName(Parameters::kOdomFovisFeatureSearchWindow().
c_str());
1456 _ui->checkBox_OdomFovisUpdateTargetFeaturesWithRefined->setObjectName(Parameters::kOdomFovisUpdateTargetFeaturesWithRefined().
c_str());
1458 _ui->checkBox_OdomFovisStereoRequireMutualMatch->setObjectName(Parameters::kOdomFovisStereoRequireMutualMatch().
c_str());
1459 _ui->doubleSpinBox_OdomFovisStereoMaxDistEpipolarLine->setObjectName(Parameters::kOdomFovisStereoMaxDistEpipolarLine().
c_str());
1460 _ui->doubleSpinBox_OdomFovisStereoMaxRefinementDisplacement->setObjectName(Parameters::kOdomFovisStereoMaxRefinementDisplacement().
c_str());
1461 _ui->spinBox_OdomFovisStereoMaxDisparity->setObjectName(Parameters::kOdomFovisStereoMaxDisparity().
c_str());
1464 _ui->spinBox_OdomViso2RansacIters->setObjectName(Parameters::kOdomViso2RansacIters().
c_str());
1465 _ui->doubleSpinBox_OdomViso2InlierThreshold->setObjectName(Parameters::kOdomViso2InlierThreshold().
c_str());
1466 _ui->checkBox_OdomViso2Reweighting->setObjectName(Parameters::kOdomViso2Reweighting().
c_str());
1468 _ui->spinBox_OdomViso2MatchNmsN->setObjectName(Parameters::kOdomViso2MatchNmsN().
c_str());
1469 _ui->spinBox_OdomViso2MatchNmsTau->setObjectName(Parameters::kOdomViso2MatchNmsTau().
c_str());
1470 _ui->spinBox_OdomViso2MatchBinsize->setObjectName(Parameters::kOdomViso2MatchBinsize().
c_str());
1471 _ui->spinBox_OdomViso2MatchRadius->setObjectName(Parameters::kOdomViso2MatchRadius().
c_str());
1472 _ui->spinBox_OdomViso2MatchDispTolerance->setObjectName(Parameters::kOdomViso2MatchDispTolerance().
c_str());
1473 _ui->spinBox_OdomViso2MatchOutlierDispTolerance->setObjectName(Parameters::kOdomViso2MatchOutlierDispTolerance().
c_str());
1474 _ui->spinBox_OdomViso2MatchOutlierFlowTolerance->setObjectName(Parameters::kOdomViso2MatchOutlierFlowTolerance().
c_str());
1475 _ui->checkBox_OdomViso2MatchMultiStage->setObjectName(Parameters::kOdomViso2MatchMultiStage().
c_str());
1476 _ui->checkBox_OdomViso2MatchHalfResolution->setObjectName(Parameters::kOdomViso2MatchHalfResolution().
c_str());
1477 _ui->spinBox_OdomViso2MatchRefinement->setObjectName(Parameters::kOdomViso2MatchRefinement().
c_str());
1479 _ui->spinBox_OdomViso2BucketMaxFeatures->setObjectName(Parameters::kOdomViso2BucketMaxFeatures().
c_str());
1480 _ui->doubleSpinBox_OdomViso2BucketWidth->setObjectName(Parameters::kOdomViso2BucketWidth().
c_str());
1481 _ui->doubleSpinBox_OdomViso2BucketHeight->setObjectName(Parameters::kOdomViso2BucketHeight().
c_str());
1484 _ui->lineEdit_OdomORBSLAMVocPath->setObjectName(Parameters::kOdomORBSLAMVocPath().
c_str());
1486 _ui->doubleSpinBox_OdomORBSLAMBf->setObjectName(Parameters::kOdomORBSLAMBf().
c_str());
1487 _ui->doubleSpinBox_OdomORBSLAMThDepth->setObjectName(Parameters::kOdomORBSLAMThDepth().
c_str());
1488 _ui->doubleSpinBox_OdomORBSLAMFps->setObjectName(Parameters::kOdomORBSLAMFps().
c_str());
1489 _ui->spinBox_OdomORBSLAMMaxFeatures->setObjectName(Parameters::kOdomORBSLAMMaxFeatures().
c_str());
1490 _ui->spinBox_OdomORBSLAMMapSize->setObjectName(Parameters::kOdomORBSLAMMapSize().
c_str());
1491 _ui->groupBox_OdomORBSLAMInertial->setObjectName(Parameters::kOdomORBSLAMInertial().
c_str());
1492 _ui->doubleSpinBox_ORBSLAMGyroNoise->setObjectName(Parameters::kOdomORBSLAMGyroNoise().
c_str());
1493 _ui->doubleSpinBox_ORBSLAMAccNoise->setObjectName(Parameters::kOdomORBSLAMAccNoise().
c_str());
1494 _ui->doubleSpinBox_ORBSLAMGyroWalk->setObjectName(Parameters::kOdomORBSLAMGyroWalk().
c_str());
1495 _ui->doubleSpinBox_ORBSLAMAccWalk->setObjectName(Parameters::kOdomORBSLAMAccWalk().
c_str());
1496 _ui->doubleSpinBox_ORBSLAMSamplingRate->setObjectName(Parameters::kOdomORBSLAMSamplingRate().
c_str());
1499 _ui->lineEdit_OdomOkvisPath->setObjectName(Parameters::kOdomOKVISConfigPath().
c_str());
1503 _ui->odom_loam_sensor->setObjectName(Parameters::kOdomLOAMSensor().
c_str());
1504 _ui->odom_loam_scan_period->setObjectName(Parameters::kOdomLOAMScanPeriod().
c_str());
1505 _ui->odom_loam_resolution->setObjectName(Parameters::kOdomLOAMResolution().
c_str());
1506 _ui->odom_loam_linvar->setObjectName(Parameters::kOdomLOAMLinVar().
c_str());
1507 _ui->odom_loam_angvar->setObjectName(Parameters::kOdomLOAMAngVar().
c_str());
1508 _ui->odom_loam_localMapping->setObjectName(Parameters::kOdomLOAMLocalMapping().
c_str());
1511 _ui->OdomMSCKFGridRow->setObjectName(Parameters::kOdomMSCKFGridRow().
c_str());
1512 _ui->OdomMSCKFGridCol->setObjectName(Parameters::kOdomMSCKFGridCol().
c_str());
1513 _ui->OdomMSCKFGridMinFeatureNum->setObjectName(Parameters::kOdomMSCKFGridMinFeatureNum().
c_str());
1514 _ui->OdomMSCKFGridMaxFeatureNum->setObjectName(Parameters::kOdomMSCKFGridMaxFeatureNum().
c_str());
1515 _ui->OdomMSCKFPyramidLevels->setObjectName(Parameters::kOdomMSCKFPyramidLevels().
c_str());
1516 _ui->OdomMSCKFPatchSize->setObjectName(Parameters::kOdomMSCKFPatchSize().
c_str());
1517 _ui->OdomMSCKFFastThreshold->setObjectName(Parameters::kOdomMSCKFFastThreshold().
c_str());
1518 _ui->OdomMSCKFMaxIteration->setObjectName(Parameters::kOdomMSCKFMaxIteration().
c_str());
1519 _ui->OdomMSCKFMaxCamStateSize->setObjectName(Parameters::kOdomMSCKFMaxCamStateSize().
c_str());
1520 _ui->OdomMSCKFTrackPrecision->setObjectName(Parameters::kOdomMSCKFTrackPrecision().
c_str());
1521 _ui->OdomMSCKFRansacThreshold->setObjectName(Parameters::kOdomMSCKFRansacThreshold().
c_str());
1522 _ui->OdomMSCKFStereoThreshold->setObjectName(Parameters::kOdomMSCKFStereoThreshold().
c_str());
1523 _ui->OdomMSCKFPositionStdThreshold->setObjectName(Parameters::kOdomMSCKFPositionStdThreshold().
c_str());
1524 _ui->OdomMSCKFRotationThreshold->setObjectName(Parameters::kOdomMSCKFRotationThreshold().
c_str());
1525 _ui->OdomMSCKFTranslationThreshold->setObjectName(Parameters::kOdomMSCKFTranslationThreshold().
c_str());
1526 _ui->OdomMSCKFTrackingRateThreshold->setObjectName(Parameters::kOdomMSCKFTrackingRateThreshold().
c_str());
1527 _ui->OdomMSCKFOptTranslationThreshold->setObjectName(Parameters::kOdomMSCKFOptTranslationThreshold().
c_str());
1528 _ui->OdomMSCKFNoiseGyro->setObjectName(Parameters::kOdomMSCKFNoiseGyro().
c_str());
1529 _ui->OdomMSCKFNoiseAcc->setObjectName(Parameters::kOdomMSCKFNoiseAcc().
c_str());
1530 _ui->OdomMSCKFNoiseGyroBias->setObjectName(Parameters::kOdomMSCKFNoiseGyroBias().
c_str());
1531 _ui->OdomMSCKFNoiseAccBias->setObjectName(Parameters::kOdomMSCKFNoiseAccBias().
c_str());
1532 _ui->OdomMSCKFNoiseFeature->setObjectName(Parameters::kOdomMSCKFNoiseFeature().
c_str());
1533 _ui->OdomMSCKFInitCovVel->setObjectName(Parameters::kOdomMSCKFInitCovVel().
c_str());
1534 _ui->OdomMSCKFInitCovGyroBias->setObjectName(Parameters::kOdomMSCKFInitCovGyroBias().
c_str());
1535 _ui->OdomMSCKFInitCovAccBias->setObjectName(Parameters::kOdomMSCKFInitCovAccBias().
c_str());
1536 _ui->OdomMSCKFInitCovExRot->setObjectName(Parameters::kOdomMSCKFInitCovExRot().
c_str());
1537 _ui->OdomMSCKFInitCovExTrans->setObjectName(Parameters::kOdomMSCKFInitCovExTrans().
c_str());
1540 _ui->lineEdit_OdomVinsPath->setObjectName(Parameters::kOdomVINSConfigPath().
c_str());
1544 _ui->checkBox_OdomOpenVINSUseStereo->setObjectName(Parameters::kOdomOpenVINSUseStereo().
c_str());
1545 _ui->checkBox_OdomOpenVINSUseKLT->setObjectName(Parameters::kOdomOpenVINSUseKLT().
c_str());
1546 _ui->spinBox_OdomOpenVINSNumPts->setObjectName(Parameters::kOdomOpenVINSNumPts().
c_str());
1547 _ui->spinBox_OdomOpenVINSMinPxDist->setObjectName(Parameters::kOdomOpenVINSMinPxDist().
c_str());
1548 _ui->checkBox_OdomOpenVINSFiTriangulate1d->setObjectName(Parameters::kOdomOpenVINSFiTriangulate1d().
c_str());
1549 _ui->checkBox_OdomOpenVINSFiRefineFeatures->setObjectName(Parameters::kOdomOpenVINSFiRefineFeatures().
c_str());
1550 _ui->spinBox_OdomOpenVINSFiMaxRuns->setObjectName(Parameters::kOdomOpenVINSFiMaxRuns().
c_str());
1551 _ui->doubleSpinBox_OdomOpenVINSFiMaxBaseline->setObjectName(Parameters::kOdomOpenVINSFiMaxBaseline().
c_str());
1552 _ui->doubleSpinBox_OdomOpenVINSFiMaxCondNumber->setObjectName(Parameters::kOdomOpenVINSFiMaxCondNumber().
c_str());
1554 _ui->checkBox_OdomOpenVINSUseFEJ->setObjectName(Parameters::kOdomOpenVINSUseFEJ().
c_str());
1555 _ui->comboBox_OdomOpenVINSIntegration->setObjectName(Parameters::kOdomOpenVINSIntegration().
c_str());
1556 _ui->checkBox_OdomOpenVINSCalibCamExtrinsics->setObjectName(Parameters::kOdomOpenVINSCalibCamExtrinsics().
c_str());
1557 _ui->checkBox_OdomOpenVINSCalibCamIntrinsics->setObjectName(Parameters::kOdomOpenVINSCalibCamIntrinsics().
c_str());
1558 _ui->checkBox_OdomOpenVINSCalibCamTimeoffset->setObjectName(Parameters::kOdomOpenVINSCalibCamTimeoffset().
c_str());
1559 _ui->checkBox_OdomOpenVINSCalibIMUIntrinsics->setObjectName(Parameters::kOdomOpenVINSCalibIMUIntrinsics().
c_str());
1560 _ui->checkBox_OdomOpenVINSCalibIMUGSensitivity->setObjectName(Parameters::kOdomOpenVINSCalibIMUGSensitivity().
c_str());
1561 _ui->spinBox_OdomOpenVINSMaxClones->setObjectName(Parameters::kOdomOpenVINSMaxClones().
c_str());
1562 _ui->spinBox_OdomOpenVINSMaxSLAM->setObjectName(Parameters::kOdomOpenVINSMaxSLAM().
c_str());
1563 _ui->spinBox_OdomOpenVINSMaxSLAMInUpdate->setObjectName(Parameters::kOdomOpenVINSMaxSLAMInUpdate().
c_str());
1564 _ui->spinBox_OdomOpenVINSMaxMSCKFInUpdate->setObjectName(Parameters::kOdomOpenVINSMaxMSCKFInUpdate().
c_str());
1565 _ui->comboBox_OdomOpenVINSFeatRepMSCKF->setObjectName(Parameters::kOdomOpenVINSFeatRepMSCKF().
c_str());
1566 _ui->comboBox_OdomOpenVINSFeatRepSLAM->setObjectName(Parameters::kOdomOpenVINSFeatRepSLAM().
c_str());
1567 _ui->doubleSpinBox_OdomOpenVINSDtSLAMDelay->setObjectName(Parameters::kOdomOpenVINSDtSLAMDelay().
c_str());
1568 _ui->doubleSpinBox_OdomOpenVINSGravityMag->setObjectName(Parameters::kOdomOpenVINSGravityMag().
c_str());
1569 _ui->lineEdit_OdomOpenVINSLeftMaskPath->setObjectName(Parameters::kOdomOpenVINSLeftMaskPath().
c_str());
1571 _ui->lineEdit_OdomOpenVINSRightMaskPath->setObjectName(Parameters::kOdomOpenVINSRightMaskPath().
c_str());
1574 _ui->doubleSpinBox_OdomOpenVINSInitWindowTime->setObjectName(Parameters::kOdomOpenVINSInitWindowTime().
c_str());
1575 _ui->doubleSpinBox_OdomOpenVINSInitIMUThresh->setObjectName(Parameters::kOdomOpenVINSInitIMUThresh().
c_str());
1576 _ui->doubleSpinBox_OdomOpenVINSInitMaxDisparity->setObjectName(Parameters::kOdomOpenVINSInitMaxDisparity().
c_str());
1577 _ui->spinBox_OdomOpenVINSInitMaxFeatures->setObjectName(Parameters::kOdomOpenVINSInitMaxFeatures().
c_str());
1578 _ui->checkBox_OdomOpenVINSInitDynUse->setObjectName(Parameters::kOdomOpenVINSInitDynUse().
c_str());
1579 _ui->checkBox_OdomOpenVINSInitDynMLEOptCalib->setObjectName(Parameters::kOdomOpenVINSInitDynMLEOptCalib().
c_str());
1580 _ui->spinBox_OdomOpenVINSInitDynMLEMaxIter->setObjectName(Parameters::kOdomOpenVINSInitDynMLEMaxIter().
c_str());
1581 _ui->doubleSpinBox_OdomOpenVINSInitDynMLEMaxTime->setObjectName(Parameters::kOdomOpenVINSInitDynMLEMaxTime().
c_str());
1582 _ui->spinBox_OdomOpenVINSInitDynMLEMaxThreads->setObjectName(Parameters::kOdomOpenVINSInitDynMLEMaxThreads().
c_str());
1583 _ui->spinBox_OdomOpenVINSInitDynNumPose->setObjectName(Parameters::kOdomOpenVINSInitDynNumPose().
c_str());
1584 _ui->doubleSpinBox_OdomOpenVINSInitDynMinDeg->setObjectName(Parameters::kOdomOpenVINSInitDynMinDeg().
c_str());
1585 _ui->doubleSpinBox_OdomOpenVINSInitDynInflationOri->setObjectName(Parameters::kOdomOpenVINSInitDynInflationOri().
c_str());
1586 _ui->doubleSpinBox_OdomOpenVINSInitDynInflationVel->setObjectName(Parameters::kOdomOpenVINSInitDynInflationVel().
c_str());
1587 _ui->doubleSpinBox_OdomOpenVINSInitDynInflationBg->setObjectName(Parameters::kOdomOpenVINSInitDynInflationBg().
c_str());
1588 _ui->doubleSpinBox_OdomOpenVINSInitDynInflationBa->setObjectName(Parameters::kOdomOpenVINSInitDynInflationBa().
c_str());
1589 _ui->doubleSpinBox_OdomOpenVINSInitDynMinRecCond->setObjectName(Parameters::kOdomOpenVINSInitDynMinRecCond().
c_str());
1591 _ui->checkBox_OdomOpenVINSTryZUPT->setObjectName(Parameters::kOdomOpenVINSTryZUPT().
c_str());
1592 _ui->doubleSpinBox_OdomOpenVINSZUPTChi2Multiplier->setObjectName(Parameters::kOdomOpenVINSZUPTChi2Multiplier().
c_str());
1593 _ui->doubleSpinBox_OdomOpenVINSZUPTMaxVelodicy->setObjectName(Parameters::kOdomOpenVINSZUPTMaxVelodicy().
c_str());
1594 _ui->doubleSpinBox_OdomOpenVINSZUPTNoiseMultiplier->setObjectName(Parameters::kOdomOpenVINSZUPTNoiseMultiplier().
c_str());
1595 _ui->doubleSpinBox_OdomOpenVINSZUPTMaxDisparity->setObjectName(Parameters::kOdomOpenVINSZUPTMaxDisparity().
c_str());
1596 _ui->checkBox_OdomOpenVINSZUPTOnlyAtBeginning->setObjectName(Parameters::kOdomOpenVINSZUPTOnlyAtBeginning().
c_str());
1598 _ui->doubleSpinBox_OdomOpenVINSAccelerometerNoiseDensity->setObjectName(Parameters::kOdomOpenVINSAccelerometerNoiseDensity().
c_str());
1599 _ui->doubleSpinBox_OdomOpenVINSAccelerometerRandomWalk->setObjectName(Parameters::kOdomOpenVINSAccelerometerRandomWalk().
c_str());
1600 _ui->doubleSpinBox_OdomOpenVINSGyroscopeNoiseDensity->setObjectName(Parameters::kOdomOpenVINSGyroscopeNoiseDensity().
c_str());
1601 _ui->doubleSpinBox_OdomOpenVINSGyroscopeRandomWalk->setObjectName(Parameters::kOdomOpenVINSGyroscopeRandomWalk().
c_str());
1602 _ui->doubleSpinBox_OdomOpenVINSUpMSCKFSigmaPx->setObjectName(Parameters::kOdomOpenVINSUpMSCKFSigmaPx().
c_str());
1603 _ui->doubleSpinBox_OdomOpenVINSUpMSCKFChi2Multiplier->setObjectName(Parameters::kOdomOpenVINSUpMSCKFChi2Multiplier().
c_str());
1604 _ui->doubleSpinBox_OdomOpenVINSUpSLAMSigmaPx->setObjectName(Parameters::kOdomOpenVINSUpSLAMSigmaPx().
c_str());
1605 _ui->doubleSpinBox_OdomOpenVINSUpSLAMChi2Multiplier->setObjectName(Parameters::kOdomOpenVINSUpSLAMChi2Multiplier().
c_str());
1608 _ui->stereo_winWidth->setObjectName(Parameters::kStereoWinWidth().
c_str());
1609 _ui->stereo_winHeight->setObjectName(Parameters::kStereoWinHeight().
c_str());
1610 _ui->stereo_maxLevel->setObjectName(Parameters::kStereoMaxLevel().
c_str());
1611 _ui->stereo_iterations->setObjectName(Parameters::kStereoIterations().
c_str());
1612 _ui->stereo_minDisparity->setObjectName(Parameters::kStereoMinDisparity().
c_str());
1613 _ui->stereo_maxDisparity->setObjectName(Parameters::kStereoMaxDisparity().
c_str());
1614 _ui->stereo_ssd->setObjectName(Parameters::kStereoSSD().
c_str());
1615 _ui->stereo_flow_eps->setObjectName(Parameters::kStereoEps().
c_str());
1616 _ui->stereo_opticalFlow->setObjectName(Parameters::kStereoOpticalFlow().
c_str());
1617 _ui->stereo_flow_gpu->setObjectName(Parameters::kStereoGpu().
c_str());
1621 _ui->odom_open3d_method->setObjectName(Parameters::kOdomOpen3DMethod().
c_str());
1622 _ui->odom_open3d_max_depth->setObjectName(Parameters::kOdomOpen3DMaxDepth().
c_str());
1625 _ui->comboBox_stereoDense_strategy->setObjectName(Parameters::kStereoDenseStrategy().
c_str());
1626 connect(
_ui->comboBox_stereoDense_strategy, SIGNAL(currentIndexChanged(
int)),
_ui->stackedWidget_stereoDense, SLOT(setCurrentIndex(
int)));
1627 _ui->comboBox_stereoDense_strategy->setCurrentIndex(Parameters::defaultStereoDenseStrategy());
1628 _ui->stackedWidget_stereoDense->setCurrentIndex(Parameters::defaultStereoDenseStrategy());
1631 _ui->stereobm_blockSize->setObjectName(Parameters::kStereoBMBlockSize().
c_str());
1632 _ui->stereobm_minDisparity->setObjectName(Parameters::kStereoBMMinDisparity().
c_str());
1633 _ui->stereobm_numDisparities->setObjectName(Parameters::kStereoBMNumDisparities().
c_str());
1634 _ui->stereobm_preFilterCap->setObjectName(Parameters::kStereoBMPreFilterCap().
c_str());
1635 _ui->stereobm_preFilterSize->setObjectName(Parameters::kStereoBMPreFilterSize().
c_str());
1636 _ui->stereobm_speckleRange->setObjectName(Parameters::kStereoBMSpeckleRange().
c_str());
1637 _ui->stereobm_speckleWinSize->setObjectName(Parameters::kStereoBMSpeckleWindowSize().
c_str());
1638 _ui->stereobm_tetureThreshold->setObjectName(Parameters::kStereoBMTextureThreshold().
c_str());
1639 _ui->stereobm_uniquessRatio->setObjectName(Parameters::kStereoBMUniquenessRatio().
c_str());
1640 _ui->stereobm_disp12MaxDiff->setObjectName(Parameters::kStereoBMDisp12MaxDiff().
c_str());
1643 _ui->stereosgbm_blockSize->setObjectName(Parameters::kStereoSGBMBlockSize().
c_str());
1644 _ui->stereosgbm_minDisparity->setObjectName(Parameters::kStereoSGBMMinDisparity().
c_str());
1645 _ui->stereosgbm_numDisparities->setObjectName(Parameters::kStereoSGBMNumDisparities().
c_str());
1646 _ui->stereosgbm_preFilterCap->setObjectName(Parameters::kStereoSGBMPreFilterCap().
c_str());
1647 _ui->stereosgbm_speckleRange->setObjectName(Parameters::kStereoSGBMSpeckleRange().
c_str());
1648 _ui->stereosgbm_speckleWinSize->setObjectName(Parameters::kStereoSGBMSpeckleWindowSize().
c_str());
1649 _ui->stereosgbm_uniquessRatio->setObjectName(Parameters::kStereoSGBMUniquenessRatio().
c_str());
1650 _ui->stereosgbm_disp12MaxDiff->setObjectName(Parameters::kStereoSGBMDisp12MaxDiff().
c_str());
1651 _ui->stereosgbm_p1->setObjectName(Parameters::kStereoSGBMP1().
c_str());
1652 _ui->stereosgbm_p2->setObjectName(Parameters::kStereoSGBMP2().
c_str());
1653 _ui->stereosgbm_mode->setObjectName(Parameters::kStereoSGBMMode().
c_str());
1656 _ui->ArucoDictionary->setObjectName(Parameters::kMarkerDictionary().
c_str());
1657 _ui->ArucoMarkerLength->setObjectName(Parameters::kMarkerLength().
c_str());
1658 _ui->ArucoMaxDepthError->setObjectName(Parameters::kMarkerMaxDepthError().
c_str());
1659 _ui->ArucoVarianceLinear->setObjectName(Parameters::kMarkerVarianceLinear().
c_str());
1660 _ui->ArucoVarianceAngular->setObjectName(Parameters::kMarkerVarianceAngular().
c_str());
1661 _ui->ArucoMarkerRangeMin->setObjectName(Parameters::kMarkerMinRange().
c_str());
1662 _ui->ArucoMarkerRangeMax->setObjectName(Parameters::kMarkerMaxRange().
c_str());
1663 _ui->ArucoMarkerPriors->setObjectName(Parameters::kMarkerPriors().
c_str());
1664 _ui->ArucoPriorsVarianceLinear->setObjectName(Parameters::kMarkerPriorsVarianceLinear().
c_str());
1665 _ui->ArucoPriorsVarianceAngular->setObjectName(Parameters::kMarkerPriorsVarianceAngular().
c_str());
1666 _ui->ArucoCornerRefinementMethod->setObjectName(Parameters::kMarkerCornerRefinementMethod().
c_str());
1669 _ui->doubleSpinBox_imuFilterMadgwickGain->setObjectName(Parameters::kImuFilterMadgwickGain().
c_str());
1670 _ui->doubleSpinBox_imuFilterMadgwickZeta->setObjectName(Parameters::kImuFilterMadgwickZeta().
c_str());
1671 _ui->doubleSpinBox_imuFilterComplementaryGainAcc->setObjectName(Parameters::kImuFilterComplementaryGainAcc().
c_str());
1672 _ui->doubleSpinBox_imuFilterComplementaryBiasAlpha->setObjectName(Parameters::kImuFilterComplementaryBiasAlpha().
c_str());
1673 _ui->checkBox_imuFilterComplementaryDoAdaptiveGain->setObjectName(Parameters::kImuFilterComplementaryDoAdpativeGain().
c_str());
1674 _ui->checkBox_imuFilterComplementaryDoBiasEstimation->setObjectName(Parameters::kImuFilterComplementaryDoBiasEstimation().
c_str());
1686 connect(
_ui->doubleSpinBox_kp_roi0, SIGNAL(valueChanged(
double)),
this, SLOT(
updateKpROI()));
1687 connect(
_ui->doubleSpinBox_kp_roi1, SIGNAL(valueChanged(
double)),
this, SLOT(
updateKpROI()));
1688 connect(
_ui->doubleSpinBox_kp_roi2, SIGNAL(valueChanged(
double)),
this, SLOT(
updateKpROI()));
1689 connect(
_ui->doubleSpinBox_kp_roi3, SIGNAL(valueChanged(
double)),
this, SLOT(
updateKpROI()));
1690 connect(
_ui->checkBox_useOdomFeatures, SIGNAL(toggled(
bool)),
this, SLOT(
useOdomFeatures()));
1694 _ui->stackedWidget->setCurrentIndex(0);
1714 for(ParametersMap::const_iterator
iter=defaults.begin();
iter!=defaults.end(); ++
iter)
1729 for(
int i =0;
i<boxes.size();++
i)
1731 if(boxes[
i] ==
_ui->groupBox_source0)
1733 _ui->stackedWidget->setCurrentIndex(
i);
1749 _ui->treeView->setModel(0);
1755 if(
_ui->radioButton_basic->isChecked())
1757 boxes = boxes.mid(0,7);
1764 QStandardItem * parentItem =
_indexModel->invisibleRootItem();
1766 this->
parseModel(boxes, parentItem, 0, index);
1767 if(
_ui->radioButton_advanced->isChecked() && index !=
_ui->stackedWidget->count()-1)
1769 ULOGGER_ERROR(
"The tree model is not the same size of the stacked widgets...%d vs %d advanced stacks", index,
_ui->stackedWidget->count()-1);
1771 int currentIndex =
_ui->stackedWidget->currentIndex();
1772 if(
_ui->radioButton_basic->isChecked())
1774 if(currentIndex >= 6)
1776 _ui->stackedWidget->setCurrentIndex(6);
1782 if(currentIndex == 6)
1784 _ui->stackedWidget->setCurrentIndex(7);
1788 _ui->treeView->expandToDepth(1);
1791 connect(
_ui->treeView->selectionModel(), SIGNAL(currentChanged(
const QModelIndex &,
const QModelIndex &)),
this, SLOT(
clicked(
const QModelIndex &,
const QModelIndex &)));
1803 QStandardItem * currentItem = 0;
1804 while(absoluteIndex < boxes.size())
1806 QString objectName = boxes.at(absoluteIndex)->objectName();
1807 QString title = boxes.at(absoluteIndex)->title();
1809 int lvl = QString(objectName.at(objectName.size()-1)).toInt(&ok);
1812 ULOGGER_ERROR(
"Error while parsing the first number of the QGroupBox title (%s), the first character must be the number in the hierarchy", title.toStdString().c_str());
1817 if(lvl == currentLevel)
1819 QStandardItem * item =
new QStandardItem(title);
1820 item->setData(absoluteIndex);
1823 parentItem->appendRow(item);
1826 else if(lvl > currentLevel)
1828 if(lvl>currentLevel+1)
1830 ULOGGER_ERROR(
"Intermediary lvl doesn't exist, lvl %d to %d, indexes %d and %d", currentLevel, lvl, absoluteIndex-1, absoluteIndex);
1835 parseModel(boxes, currentItem, currentLevel+1, absoluteIndex);
1849 for(rtabmap::ParametersMap::const_iterator
iter=parameters.begin();
iter!=parameters.end(); ++
iter)
1851 QWidget * obj =
_ui->stackedWidget->findChild<QWidget*>((*iter).first.c_str());
1855 obj->setToolTip(tr(
"%1 (Default=\"%2\")").arg(
iter->first.c_str()).arg(
iter->second.c_str()));
1857 QSpinBox * spin = qobject_cast<QSpinBox *>(obj);
1858 QDoubleSpinBox * doubleSpin = qobject_cast<QDoubleSpinBox *>(obj);
1859 QComboBox * combo = qobject_cast<QComboBox *>(obj);
1860 QCheckBox *
check = qobject_cast<QCheckBox *>(obj);
1861 QRadioButton * radio = qobject_cast<QRadioButton *>(obj);
1862 QLineEdit * lineEdit = qobject_cast<QLineEdit *>(obj);
1863 QGroupBox * groupBox = qobject_cast<QGroupBox *>(obj);
1866 connect(spin, SIGNAL(valueChanged(
int)),
this, SLOT(
addParameter(
int)));
1870 connect(doubleSpin, SIGNAL(valueChanged(
double)),
this, SLOT(
addParameter(
double)));
1874 connect(combo, SIGNAL(currentIndexChanged(
int)),
this, SLOT(
addParameter(
int)));
1882 connect(radio, SIGNAL(toggled(
bool)),
this, SLOT(
addParameter(
bool)));
1886 connect(lineEdit, SIGNAL(textChanged(
const QString &)),
this, SLOT(
addParameter(
const QString &)));
1890 connect(groupBox, SIGNAL(toggled(
bool)),
this, SLOT(
addParameter(
bool)));
1894 ULOGGER_WARN(
"QWidget called %s can't be cast to a supported widget", (*iter).first.c_str());
1899 ULOGGER_WARN(
"Can't find the related QWidget for parameter %s", (*iter).first.c_str());
1906 QStandardItem * item =
_indexModel->itemFromIndex(current);
1907 if(item && item->isEnabled())
1909 int index = item->data().toInt();
1910 if(
_ui->radioButton_advanced->isChecked() && index >= 6)
1914 _ui->stackedWidget->setCurrentIndex(index);
1915 _ui->scrollArea->horizontalScrollBar()->setValue(0);
1916 _ui->scrollArea->verticalScrollBar()->setValue(0);
1934 QDialogButtonBox::ButtonRole role =
_ui->buttonBox_global->buttonRole(button);
1937 case QDialogButtonBox::RejectRole:
1945 case QDialogButtonBox::AcceptRole:
1968 QDialogButtonBox::ButtonRole role =
_ui->buttonBox_local->buttonRole(button);
1971 case QDialogButtonBox::ApplyRole:
1979 case QDialogButtonBox::ResetRole:
1990 if(groupBox->objectName() ==
_ui->groupBox_generalSettingsGui0->objectName())
1992 _ui->general_checkBox_imagesKept->setChecked(
true);
1993 _ui->general_checkBox_missing_cache_republished->setChecked(
true);
1994 _ui->general_checkBox_cloudsKept->setChecked(
true);
1995 _ui->checkBox_beep->setChecked(
false);
1996 _ui->checkBox_stamps->setChecked(
true);
1997 _ui->checkBox_cacheStatistics->setChecked(
true);
1998 _ui->checkBox_notifyWhenNewGlobalPathIsReceived->setChecked(
false);
1999 _ui->checkBox_verticalLayoutUsed->setChecked(
true);
2000 _ui->checkBox_imageRejectedShown->setChecked(
true);
2001 _ui->checkBox_imageHighestHypShown->setChecked(
false);
2002 _ui->spinBox_odomQualityWarnThr->setValue(50);
2003 _ui->checkBox_odom_onlyInliersShown->setChecked(
false);
2004 _ui->radioButton_posteriorGraphView->setChecked(
true);
2005 _ui->radioButton_wordsGraphView->setChecked(
false);
2006 _ui->radioButton_localizationsGraphView->setChecked(
false);
2007 _ui->radioButton_localizationsGraphViewOdomCache->setChecked(
false);
2008 _ui->radioButton_nochangeGraphView->setChecked(
false);
2009 _ui->checkbox_odomDisabled->setChecked(
false);
2010 _ui->checkbox_groundTruthAlign->setChecked(
true);
2012 else if(groupBox->objectName() ==
_ui->groupBox_cloudRendering1->objectName())
2014 for(
int i=0;
i<2; ++
i)
2039 _ui->doubleSpinBox_voxel->setValue(0);
2040 _ui->doubleSpinBox_noiseRadius->setValue(0);
2041 _ui->spinBox_noiseMinNeighbors->setValue(5);
2043 _ui->doubleSpinBox_ceilingFilterHeight->setValue(0);
2044 _ui->doubleSpinBox_floorFilterHeight->setValue(0);
2045 _ui->spinBox_normalKSearch->setValue(10);
2046 _ui->doubleSpinBox_normalRadiusSearch->setValue(0.0);
2048 _ui->doubleSpinBox_ceilingFilterHeight_scan->setValue(0);
2049 _ui->doubleSpinBox_floorFilterHeight_scan->setValue(0);
2050 _ui->spinBox_normalKSearch_scan->setValue(0);
2051 _ui->doubleSpinBox_normalRadiusSearch_scan->setValue(0.0);
2053 _ui->checkBox_showGraphs->setChecked(
true);
2054 _ui->checkBox_showLabels->setChecked(
false);
2055 _ui->checkBox_showFrames->setChecked(
false);
2056 _ui->checkBox_showLandmarks->setChecked(
true);
2057 _ui->doubleSpinBox_landmarkSize->setValue(0);
2058 _ui->checkBox_showIMUGravity->setChecked(
false);
2059 _ui->checkBox_showIMUAcc->setChecked(
false);
2061 _ui->doubleSpinBox_mesh_angleTolerance->setValue(15.0);
2062 _ui->groupBox_organized->setChecked(
false);
2063 #if PCL_VERSION_COMPARE(>=, 1, 7, 2)
2064 _ui->checkBox_mesh_quad->setChecked(
true);
2066 _ui->checkBox_mesh_quad->setChecked(
false);
2068 _ui->checkBox_mesh_texture->setChecked(
false);
2069 _ui->spinBox_mesh_triangleSize->setValue(2);
2071 else if(groupBox->objectName() ==
_ui->groupBox_filtering2->objectName())
2073 _ui->radioButton_noFiltering->setChecked(
true);
2074 _ui->radioButton_nodeFiltering->setChecked(
false);
2075 _ui->radioButton_subtractFiltering->setChecked(
false);
2076 _ui->doubleSpinBox_cloudFilterRadius->setValue(0.1);
2077 _ui->doubleSpinBox_cloudFilterAngle->setValue(30);
2078 _ui->spinBox_subtractFilteringMinPts->setValue(5);
2079 _ui->doubleSpinBox_subtractFilteringRadius->setValue(0.02);
2080 _ui->doubleSpinBox_subtractFilteringAngle->setValue(0);
2082 else if(groupBox->objectName() ==
_ui->groupBox_gridMap2->objectName())
2084 _ui->doubleSpinBox_map_resolution->setValue(0);
2085 _ui->checkBox_map_shown->setChecked(
false);
2086 _ui->doubleSpinBox_map_opacity->setValue(0.75);
2087 _ui->checkBox_elevation_shown->setCheckState(Qt::Unchecked);
2089 _ui->groupBox_octomap->setChecked(
false);
2090 _ui->spinBox_octomap_treeDepth->setValue(16);
2091 _ui->checkBox_octomap_2dgrid->setChecked(
true);
2092 _ui->checkBox_octomap_show3dMap->setChecked(
true);
2093 _ui->comboBox_octomap_renderingType->setCurrentIndex(0);
2094 _ui->spinBox_octomap_pointSize->setValue(5);
2096 else if(groupBox->objectName() ==
_ui->groupBox_logging1->objectName())
2098 _ui->comboBox_loggerLevel->setCurrentIndex(2);
2099 _ui->comboBox_loggerEventLevel->setCurrentIndex(3);
2100 _ui->comboBox_loggerPauseLevel->setCurrentIndex(3);
2101 _ui->checkBox_logger_printTime->setChecked(
true);
2102 _ui->checkBox_logger_printThreadId->setChecked(
false);
2103 _ui->comboBox_loggerType->setCurrentIndex(1);
2104 for(
int i=0;
i<
_ui->comboBox_loggerFilter->count(); ++
i)
2106 _ui->comboBox_loggerFilter->setItemChecked(
i,
false);
2109 else if(groupBox->objectName() ==
_ui->groupBox_source0->objectName())
2111 _ui->general_doubleSpinBox_imgRate->setValue(0.0);
2112 _ui->source_mirroring->setChecked(
false);
2113 _ui->lineEdit_calibrationFile->clear();
2114 _ui->comboBox_sourceType->setCurrentIndex(
kSrcRGBD);
2115 _ui->lineEdit_sourceDevice->setText(
"");
2116 _ui->lineEdit_sourceLocalTransform->setText(
"0 0 0 0 0 0");
2119 _ui->source_images_spinBox_startPos->setValue(0);
2120 _ui->source_images_spinBox_maxFrames->setValue(0);
2121 _ui->spinBox_usbcam_streamWidth->setValue(0);
2122 _ui->spinBox_usbcam_streamHeight->setValue(0);
2123 _ui->checkBox_rgb_rectify->setChecked(
false);
2124 _ui->comboBox_cameraImages_bayerMode->setCurrentIndex(0);
2126 _ui->source_checkBox_ignoreOdometry->setChecked(
false);
2127 _ui->source_checkBox_ignoreGoalDelay->setChecked(
true);
2128 _ui->source_checkBox_ignoreGoals->setChecked(
true);
2129 _ui->source_checkBox_ignoreLandmarks->setChecked(
true);
2130 _ui->source_checkBox_ignoreFeatures->setChecked(
true);
2131 _ui->source_checkBox_ignorePriors->setChecked(
false);
2132 _ui->source_spinBox_databaseStartId->setValue(0);
2133 _ui->source_spinBox_databaseStopId->setValue(0);
2134 _ui->source_spinBox_database_cameraIndex->setValue(-1);
2135 _ui->source_checkBox_useDbStamps->setChecked(
true);
2166 _ui->checkbox_rgbd_colorOnly->setChecked(
false);
2167 _ui->spinBox_source_imageDecimation->setValue(1);
2168 _ui->comboBox_source_histogramMethod->setCurrentIndex(0);
2169 _ui->checkbox_source_feature_detection->setChecked(
false);
2170 _ui->checkbox_stereo_depthGenerated->setChecked(
false);
2171 _ui->checkBox_stereo_exposureCompensation->setChecked(
false);
2172 _ui->openni2_autoWhiteBalance->setChecked(
true);
2173 _ui->openni2_autoExposure->setChecked(
true);
2174 _ui->openni2_exposure->setValue(0);
2175 _ui->openni2_gain->setValue(100);
2176 _ui->openni2_mirroring->setChecked(
false);
2177 _ui->openni2_stampsIdsUsed->setChecked(
false);
2178 _ui->openni2_hshift->setValue(0);
2179 _ui->openni2_vshift->setValue(0);
2180 _ui->openni2_depth_decimation->setValue(1);
2181 _ui->comboBox_freenect2Format->setCurrentIndex(1);
2182 _ui->doubleSpinBox_freenect2MinDepth->setValue(0.3);
2183 _ui->doubleSpinBox_freenect2MaxDepth->setValue(12.0);
2184 _ui->checkBox_freenect2BilateralFiltering->setChecked(
true);
2185 _ui->checkBox_freenect2EdgeAwareFiltering->setChecked(
true);
2186 _ui->checkBox_freenect2NoiseFiltering->setChecked(
true);
2187 _ui->lineEdit_freenect2Pipeline->setText(
"");
2188 _ui->comboBox_k4w2Format->setCurrentIndex(1);
2189 _ui->comboBox_realsensePresetRGB->setCurrentIndex(0);
2190 _ui->comboBox_realsensePresetDepth->setCurrentIndex(2);
2191 _ui->checkbox_realsenseOdom->setChecked(
false);
2192 _ui->checkbox_realsenseDepthScaledToRGBSize->setChecked(
false);
2193 _ui->comboBox_realsenseRGBSource->setCurrentIndex(0);
2194 _ui->checkbox_rs2_emitter->setChecked(
true);
2195 _ui->checkbox_rs2_irMode->setChecked(
false);
2196 _ui->checkbox_rs2_irDepth->setChecked(
true);
2197 _ui->spinBox_rs2_width->setValue(848);
2198 _ui->spinBox_rs2_height->setValue(480);
2199 _ui->spinBox_rs2_rate->setValue(60);
2200 _ui->spinBox_rs2_width_depth->setValue(640);
2201 _ui->spinBox_rs2_height_depth->setValue(480);
2202 _ui->spinBox_rs2_rate_depth->setValue(30);
2203 _ui->checkbox_rs2_globalTimeStync->setChecked(
true);
2204 _ui->lineEdit_rs2_jsonFile->clear();
2205 _ui->lineEdit_openniOniPath->clear();
2206 _ui->lineEdit_openni2OniPath->clear();
2207 _ui->comboBox_k4a_rgb_resolution->setCurrentIndex(0);
2208 _ui->comboBox_k4a_framerate->setCurrentIndex(2);
2209 _ui->comboBox_k4a_depth_resolution->setCurrentIndex(2);
2210 _ui->checkbox_k4a_irDepth->setChecked(
false);
2211 _ui->lineEdit_k4a_mkv->clear();
2212 _ui->source_checkBox_useMKVStamps->setChecked(
true);
2213 _ui->lineEdit_cameraRGBDImages_path_rgb->setText(
"");
2214 _ui->lineEdit_cameraRGBDImages_path_depth->setText(
"");
2215 _ui->doubleSpinBox_cameraRGBDImages_scale->setValue(1.0);
2216 _ui->spinBox_cameraRGBDImages_startIndex->setValue(0);
2217 _ui->spinBox_cameraRGBDImages_maxFrames->setValue(0);
2218 _ui->lineEdit_source_distortionModel->setText(
"");
2219 _ui->groupBox_bilateral->setChecked(
false);
2220 _ui->doubleSpinBox_bilateral_sigmaS->setValue(10.0);
2221 _ui->doubleSpinBox_bilateral_sigmaR->setValue(0.1);
2224 _ui->lineEdit_cameraStereoImages_path_left->setText(
"");
2225 _ui->lineEdit_cameraStereoImages_path_right->setText(
"");
2226 _ui->checkBox_stereo_rectify->setChecked(
false);
2227 _ui->spinBox_cameraStereoImages_startIndex->setValue(0);
2228 _ui->spinBox_cameraStereoImages_maxFrames->setValue(0);
2229 _ui->lineEdit_cameraStereoVideo_path->setText(
"");
2230 _ui->lineEdit_cameraStereoVideo_path_2->setText(
"");
2231 _ui->spinBox_stereo_right_device->setValue(-1);
2232 _ui->spinBox_stereousbcam_streamWidth->setValue(0);
2233 _ui->spinBox_stereousbcam_streamHeight->setValue(0);
2234 _ui->comboBox_stereoZed_resolution->setCurrentIndex(0);
2235 _ui->comboBox_stereoZed_quality->setCurrentIndex(1);
2236 _ui->checkbox_stereoZed_selfCalibration->setChecked(
true);
2237 _ui->comboBox_stereoZed_sensingMode->setCurrentIndex(0);
2238 _ui->spinBox_stereoZed_confidenceThr->setValue(100);
2239 _ui->spinBox_stereoZed_texturenessConfidenceThr->setValue(90);
2240 _ui->lineEdit_zedSvoPath->clear();
2241 _ui->comboBox_stereoZedOC_resolution->setCurrentIndex(3);
2242 _ui->checkbox_stereoMyntEye_rectify->setChecked(
false);
2243 _ui->checkbox_stereoMyntEye_depth->setChecked(
false);
2244 _ui->checkbox_stereoMyntEye_autoExposure->setChecked(
true);
2245 _ui->spinBox_stereoMyntEye_gain->setValue(24);
2246 _ui->spinBox_stereoMyntEye_brightness->setValue(120);
2247 _ui->spinBox_stereoMyntEye_contrast->setValue(116);
2248 _ui->spinBox_stereoMyntEye_irControl->setValue(0);
2249 _ui->comboBox_depthai_resolution->setCurrentIndex(1);
2250 _ui->comboBox_depthai_output_mode->setCurrentIndex(0);
2251 _ui->spinBox_depthai_conf_threshold->setValue(200);
2252 _ui->checkBox_depthai_extended_disparity->setChecked(
false);
2253 _ui->comboBox_depthai_subpixel_fractional_bits->setCurrentIndex(2);
2254 _ui->comboBox_depthai_disparity_companding->setCurrentIndex(1);
2255 _ui->spinBox_depthai_lrc_threshold->setValue(5);
2256 _ui->checkBox_depthai_use_spec_translation->setChecked(
false);
2257 _ui->doubleSpinBox_depthai_alpha_scaling->setValue(-1);
2258 _ui->checkBox_depthai_imu_published->setChecked(
true);
2259 _ui->doubleSpinBox_depthai_dot_intensity->setValue(0.0);
2260 _ui->doubleSpinBox_depthai_flood_intensity->setValue(0.0);
2261 _ui->comboBox_depthai_detect_features->setCurrentIndex(0);
2262 _ui->lineEdit_depthai_blob_path->clear();
2264 _ui->checkBox_cameraImages_configForEachFrame->setChecked(
false);
2265 _ui->checkBox_cameraImages_timestamps->setChecked(
false);
2266 _ui->checkBox_cameraImages_syncTimeStamps->setChecked(
true);
2267 _ui->lineEdit_cameraImages_timestamps->setText(
"");
2268 _ui->lineEdit_cameraImages_path_scans->setText(
"");
2269 _ui->lineEdit_cameraImages_laser_transform->setText(
"0 0 0 0 0 0");
2270 _ui->spinBox_cameraImages_max_scan_pts->setValue(0);
2271 _ui->lineEdit_cameraImages_odom->setText(
"");
2272 _ui->comboBox_cameraImages_odomFormat->setCurrentIndex(0);
2273 _ui->lineEdit_cameraImages_gt->setText(
"");
2274 _ui->comboBox_cameraImages_gtFormat->setCurrentIndex(0);
2275 _ui->doubleSpinBox_maxPoseTimeDiff->setValue(0.02);
2276 _ui->lineEdit_cameraImages_path_imu->setText(
"");
2277 _ui->lineEdit_cameraImages_imu_transform->setText(
"0 0 1 0 -1 0 1 0 0");
2278 _ui->spinBox_cameraImages_max_imu_rate->setValue(0);
2280 _ui->comboBox_odom_sensor->setCurrentIndex(0);
2281 _ui->lineEdit_odom_sensor_extrinsics->setText(
"-0.000622602 0.0303752 0.031389 -0.00272485 0.00749254 0.0");
2282 _ui->lineEdit_odom_sensor_path_calibration->setText(
"");
2283 _ui->lineEdit_odomSourceDevice->setText(
"");
2284 _ui->doubleSpinBox_odom_sensor_time_offset->setValue(0.0);
2285 _ui->doubleSpinBox_odom_sensor_scale_factor->setValue(1);
2286 _ui->doubleSpinBox_odom_sensor_wait_time->setValue(100);
2287 _ui->checkBox_odom_sensor_use_as_gt->setChecked(
false);
2289 _ui->comboBox_imuFilter_strategy->setCurrentIndex(2);
2290 _ui->doubleSpinBox_imuFilterMadgwickGain->setValue(Parameters::defaultImuFilterMadgwickGain());
2291 _ui->doubleSpinBox_imuFilterMadgwickZeta->setValue(Parameters::defaultImuFilterMadgwickZeta());
2292 _ui->doubleSpinBox_imuFilterComplementaryGainAcc->setValue(Parameters::defaultImuFilterComplementaryGainAcc());
2293 _ui->doubleSpinBox_imuFilterComplementaryBiasAlpha->setValue(Parameters::defaultImuFilterComplementaryBiasAlpha());
2294 _ui->checkBox_imuFilterComplementaryDoAdaptiveGain->setChecked(Parameters::defaultImuFilterComplementaryDoAdpativeGain());
2295 _ui->checkBox_imuFilterComplementaryDoBiasEstimation->setChecked(Parameters::defaultImuFilterComplementaryDoBiasEstimation());
2296 _ui->checkBox_imuFilter_baseFrameConversion->setChecked(
true);
2297 _ui->checkbox_publishInterIMU->setChecked(
false);
2299 _ui->comboBox_lidar_src->setCurrentIndex(0);
2300 _ui->checkBox_source_scanDeskewing->setChecked(
false);
2301 _ui->checkBox_source_scanFromDepth->setChecked(
false);
2302 _ui->spinBox_source_scanDownsampleStep->setValue(1);
2303 _ui->doubleSpinBox_source_scanRangeMin->setValue(0);
2304 _ui->doubleSpinBox_source_scanRangeMax->setValue(0);
2305 _ui->doubleSpinBox_source_scanVoxelSize->setValue(0.0
f);
2306 _ui->spinBox_source_scanNormalsK->setValue(0);
2307 _ui->doubleSpinBox_source_scanNormalsRadius->setValue(0.0);
2308 _ui->doubleSpinBox_source_scanNormalsForceGroundUp->setValue(0);
2310 _ui->lineEdit_lidar_local_transform->setText(
"0 0 0 0 0 0");
2311 _ui->lineEdit_vlp16_pcap_path->clear();
2312 _ui->spinBox_vlp16_ip1->setValue(192);
2313 _ui->spinBox_vlp16_ip2->setValue(168);
2314 _ui->spinBox_vlp16_ip3->setValue(1);
2315 _ui->spinBox_vlp16_ip4->setValue(201);
2316 _ui->spinBox_vlp16_port->setValue(2368);
2317 _ui->checkBox_vlp16_organized->setChecked(
false);
2318 _ui->checkBox_vlp16_hostTime->setChecked(
true);
2319 _ui->checkBox_vlp16_stamp_last->setChecked(
true);
2321 _ui->groupBox_depthFromScan->setChecked(
false);
2322 _ui->groupBox_depthFromScan_fillHoles->setChecked(
true);
2323 _ui->radioButton_depthFromScan_vertical->setChecked(
true);
2324 _ui->radioButton_depthFromScan_horizontal->setChecked(
false);
2325 _ui->checkBox_depthFromScan_fillBorders->setChecked(
false);
2327 else if(groupBox->objectName() ==
_ui->groupBox_rtabmap_basic0->objectName())
2329 _ui->general_doubleSpinBox_timeThr_2->setValue(Parameters::defaultRtabmapTimeThr());
2330 _ui->general_doubleSpinBox_hardThr_2->setValue(Parameters::defaultRtabmapLoopThr());
2331 _ui->doubleSpinBox_similarityThreshold_2->setValue(Parameters::defaultMemRehearsalSimilarity());
2332 _ui->general_spinBox_imagesBufferSize_2->setValue(Parameters::defaultRtabmapImageBufferSize());
2333 _ui->general_spinBox_maxStMemSize_2->setValue(Parameters::defaultMemSTMSize());
2334 _ui->general_checkBox_publishStats_2->setChecked(Parameters::defaultRtabmapPublishStats());
2335 _ui->general_checkBox_activateRGBD_2->setChecked(Parameters::defaultRGBDEnabled());
2336 _ui->general_checkBox_SLAM_mode_2->setChecked(Parameters::defaultMemIncrementalMemory());
2337 _ui->general_doubleSpinBox_detectionRate_2->setValue(Parameters::defaultRtabmapDetectionRate());
2339 _ui->general_doubleSpinBox_timeThr->setValue(Parameters::defaultRtabmapTimeThr());
2340 _ui->general_doubleSpinBox_hardThr->setValue(Parameters::defaultRtabmapLoopThr());
2341 _ui->doubleSpinBox_similarityThreshold->setValue(Parameters::defaultMemRehearsalSimilarity());
2342 _ui->general_spinBox_imagesBufferSize->setValue(Parameters::defaultRtabmapImageBufferSize());
2343 _ui->general_spinBox_maxStMemSize->setValue(Parameters::defaultMemSTMSize());
2344 _ui->general_doubleSpinBox_detectionRate->setValue(Parameters::defaultRtabmapDetectionRate());
2348 QObjectList children = groupBox->children();
2351 for(
int i=0;
i<children.size(); ++
i)
2353 key = children.at(
i)->objectName().toStdString();
2356 if(
key.compare(Parameters::kRtabmapWorkingDirectory().c_str()) == 0)
2364 if(qobject_cast<const QGroupBox*>(children.at(
i)))
2369 else if(qobject_cast<const QGroupBox*>(children.at(
i)))
2373 else if(qobject_cast<const QStackedWidget*>(children.at(
i)))
2375 QStackedWidget * stackedWidget = (QStackedWidget*)children.at(
i);
2376 for(
int j=0;
j<stackedWidget->count(); ++
j)
2378 const QObjectList & children2 = stackedWidget->widget(
j)->children();
2379 for(
int k=0; k<children2.size(); ++k)
2381 if(qobject_cast<QGroupBox *>(children2.at(k)))
2390 if(groupBox->findChild<QLineEdit*>(
_ui->lineEdit_kp_roi->objectName()))
2395 if(groupBox->objectName() ==
_ui->groupBox_odometry1->objectName())
2397 _ui->odom_registration->setCurrentIndex(3);
2398 _ui->odom_f2m_gravitySigma->setValue(-1);
2406 if(panelNumber >= 0 && panelNumber < boxes.size())
2410 else if(panelNumber == -1)
2412 for(QList<QGroupBox*>::iterator
iter = boxes.begin();
iter!=boxes.end(); ++
iter)
2419 ULOGGER_WARN(
"panel number and the number of stacked widget doesn't match");
2426 return _ui->lineEdit_workingDirectory->text();
2431 QString privatePath = QDir::homePath() +
"/.rtabmap";
2432 if(!QDir(privatePath).exists())
2434 QDir::home().mkdir(
".rtabmap");
2436 return privatePath +
"/rtabmap.ini";
2446 QString
path = QFileDialog::getOpenFileName(
this, tr(
"Load settings..."), this->
getWorkingDirectory(),
"*.ini");
2464 QStandardItem * parentItem =
_indexModel->invisibleRootItem();
2467 for(
int i=1;
i<parentItem->rowCount(); ++
i)
2469 parentItem->child(
i)->setEnabled(
false);
2472 _ui->radioButton_basic->setEnabled(
false);
2473 _ui->radioButton_advanced->setEnabled(
false);
2478 QStandardItem * parentItem =
_indexModel->invisibleRootItem();
2481 for(
int i=0;
i<parentItem->rowCount(); ++
i)
2483 parentItem->child(
i)->setEnabled(
true);
2486 _ui->radioButton_basic->setEnabled(
true);
2487 _ui->radioButton_advanced->setEnabled(
true);
2494 if(!filePath.isEmpty())
2498 QSettings settings(
path, QSettings::IniFormat);
2499 settings.beginGroup(
"Gui");
2500 settings.beginGroup(
"General");
2501 _ui->general_checkBox_imagesKept->setChecked(settings.value(
"imagesKept",
_ui->general_checkBox_imagesKept->isChecked()).toBool());
2502 _ui->general_checkBox_missing_cache_republished->setChecked(settings.value(
"missingRepublished",
_ui->general_checkBox_missing_cache_republished->isChecked()).toBool());
2503 _ui->general_checkBox_cloudsKept->setChecked(settings.value(
"cloudsKept",
_ui->general_checkBox_cloudsKept->isChecked()).toBool());
2504 _ui->comboBox_loggerLevel->setCurrentIndex(settings.value(
"loggerLevel",
_ui->comboBox_loggerLevel->currentIndex()).toInt());
2505 _ui->comboBox_loggerEventLevel->setCurrentIndex(settings.value(
"loggerEventLevel",
_ui->comboBox_loggerEventLevel->currentIndex()).toInt());
2506 _ui->comboBox_loggerPauseLevel->setCurrentIndex(settings.value(
"loggerPauseLevel",
_ui->comboBox_loggerPauseLevel->currentIndex()).toInt());
2507 _ui->comboBox_loggerType->setCurrentIndex(settings.value(
"loggerType",
_ui->comboBox_loggerType->currentIndex()).toInt());
2508 _ui->checkBox_logger_printTime->setChecked(settings.value(
"loggerPrintTime",
_ui->checkBox_logger_printTime->isChecked()).toBool());
2509 _ui->checkBox_logger_printThreadId->setChecked(settings.value(
"loggerPrintThreadId",
_ui->checkBox_logger_printThreadId->isChecked()).toBool());
2510 _ui->checkBox_verticalLayoutUsed->setChecked(settings.value(
"verticalLayoutUsed",
_ui->checkBox_verticalLayoutUsed->isChecked()).toBool());
2511 _ui->checkBox_imageRejectedShown->setChecked(settings.value(
"imageRejectedShown",
_ui->checkBox_imageRejectedShown->isChecked()).toBool());
2512 _ui->checkBox_imageHighestHypShown->setChecked(settings.value(
"imageHighestHypShown",
_ui->checkBox_imageHighestHypShown->isChecked()).toBool());
2513 _ui->checkBox_beep->setChecked(settings.value(
"beep",
_ui->checkBox_beep->isChecked()).toBool());
2514 _ui->checkBox_stamps->setChecked(settings.value(
"figure_time",
_ui->checkBox_stamps->isChecked()).toBool());
2515 _ui->checkBox_cacheStatistics->setChecked(settings.value(
"figure_cache",
_ui->checkBox_cacheStatistics->isChecked()).toBool());
2516 _ui->checkBox_notifyWhenNewGlobalPathIsReceived->setChecked(settings.value(
"notifyNewGlobalPath",
_ui->checkBox_notifyWhenNewGlobalPathIsReceived->isChecked()).toBool());
2517 _ui->spinBox_odomQualityWarnThr->setValue(settings.value(
"odomQualityThr",
_ui->spinBox_odomQualityWarnThr->value()).toInt());
2518 _ui->checkBox_odom_onlyInliersShown->setChecked(settings.value(
"odomOnlyInliersShown",
_ui->checkBox_odom_onlyInliersShown->isChecked()).toBool());
2519 _ui->radioButton_posteriorGraphView->setChecked(settings.value(
"posteriorGraphView",
_ui->radioButton_posteriorGraphView->isChecked()).toBool());
2520 _ui->radioButton_wordsGraphView->setChecked(settings.value(
"wordsGraphView",
_ui->radioButton_wordsGraphView->isChecked()).toBool());
2521 _ui->radioButton_localizationsGraphView->setChecked(settings.value(
"localizationsGraphView",
_ui->radioButton_localizationsGraphView->isChecked()).toBool());
2522 _ui->radioButton_localizationsGraphViewOdomCache->setChecked(settings.value(
"localizationsGraphViewOdomCache",
_ui->radioButton_localizationsGraphViewOdomCache->isChecked()).toBool());
2523 _ui->radioButton_nochangeGraphView->setChecked(settings.value(
"nochangeGraphView",
_ui->radioButton_nochangeGraphView->isChecked()).toBool());
2524 _ui->checkbox_odomDisabled->setChecked(settings.value(
"odomDisabled",
_ui->checkbox_odomDisabled->isChecked()).toBool());
2525 _ui->odom_registration->setCurrentIndex(settings.value(
"odomRegistration",
_ui->odom_registration->currentIndex()).toInt());
2526 _ui->odom_f2m_gravitySigma->setValue(settings.value(
"odomF2MGravitySigma",
_ui->odom_f2m_gravitySigma->value()).toDouble());
2527 _ui->checkbox_groundTruthAlign->setChecked(settings.value(
"gtAlign",
_ui->checkbox_groundTruthAlign->isChecked()).toBool());
2529 for(
int i=0;
i<2; ++
i)
2555 _ui->doubleSpinBox_voxel->setValue(settings.value(
"cloudVoxel",
_ui->doubleSpinBox_voxel->value()).toDouble());
2556 _ui->doubleSpinBox_noiseRadius->setValue(settings.value(
"cloudNoiseRadius",
_ui->doubleSpinBox_noiseRadius->value()).toDouble());
2557 _ui->spinBox_noiseMinNeighbors->setValue(settings.value(
"cloudNoiseMinNeighbors",
_ui->spinBox_noiseMinNeighbors->value()).toInt());
2558 _ui->doubleSpinBox_ceilingFilterHeight->setValue(settings.value(
"cloudCeilingHeight",
_ui->doubleSpinBox_ceilingFilterHeight->value()).toDouble());
2559 _ui->doubleSpinBox_floorFilterHeight->setValue(settings.value(
"cloudFloorHeight",
_ui->doubleSpinBox_floorFilterHeight->value()).toDouble());
2560 _ui->spinBox_normalKSearch->setValue(settings.value(
"normalKSearch",
_ui->spinBox_normalKSearch->value()).toInt());
2561 _ui->doubleSpinBox_normalRadiusSearch->setValue(settings.value(
"normalRadiusSearch",
_ui->doubleSpinBox_normalRadiusSearch->value()).toDouble());
2562 _ui->doubleSpinBox_ceilingFilterHeight_scan->setValue(settings.value(
"scanCeilingHeight",
_ui->doubleSpinBox_ceilingFilterHeight_scan->value()).toDouble());
2563 _ui->doubleSpinBox_floorFilterHeight_scan->setValue(settings.value(
"scanFloorHeight",
_ui->doubleSpinBox_floorFilterHeight_scan->value()).toDouble());
2564 _ui->spinBox_normalKSearch_scan->setValue(settings.value(
"scanNormalKSearch",
_ui->spinBox_normalKSearch_scan->value()).toInt());
2565 _ui->doubleSpinBox_normalRadiusSearch_scan->setValue(settings.value(
"scanNormalRadiusSearch",
_ui->doubleSpinBox_normalRadiusSearch_scan->value()).toDouble());
2567 _ui->checkBox_showGraphs->setChecked(settings.value(
"showGraphs",
_ui->checkBox_showGraphs->isChecked()).toBool());
2568 _ui->checkBox_showLabels->setChecked(settings.value(
"showLabels",
_ui->checkBox_showLabels->isChecked()).toBool());
2569 _ui->checkBox_showFrames->setChecked(settings.value(
"showFrames",
_ui->checkBox_showFrames->isChecked()).toBool());
2570 _ui->checkBox_showLandmarks->setChecked(settings.value(
"showLandmarks",
_ui->checkBox_showLandmarks->isChecked()).toBool());
2571 _ui->doubleSpinBox_landmarkSize->setValue(settings.value(
"landmarkSize",
_ui->doubleSpinBox_landmarkSize->value()).toDouble());
2572 _ui->checkBox_showIMUGravity->setChecked(settings.value(
"showIMUGravity",
_ui->checkBox_showIMUGravity->isChecked()).toBool());
2573 _ui->checkBox_showIMUAcc->setChecked(settings.value(
"showIMUAcc",
_ui->checkBox_showIMUAcc->isChecked()).toBool());
2575 _ui->radioButton_noFiltering->setChecked(settings.value(
"noFiltering",
_ui->radioButton_noFiltering->isChecked()).toBool());
2576 _ui->radioButton_nodeFiltering->setChecked(settings.value(
"cloudFiltering",
_ui->radioButton_nodeFiltering->isChecked()).toBool());
2577 _ui->doubleSpinBox_cloudFilterRadius->setValue(settings.value(
"cloudFilteringRadius",
_ui->doubleSpinBox_cloudFilterRadius->value()).toDouble());
2578 _ui->doubleSpinBox_cloudFilterAngle->setValue(settings.value(
"cloudFilteringAngle",
_ui->doubleSpinBox_cloudFilterAngle->value()).toDouble());
2579 _ui->radioButton_subtractFiltering->setChecked(settings.value(
"subtractFiltering",
_ui->radioButton_subtractFiltering->isChecked()).toBool());
2580 _ui->spinBox_subtractFilteringMinPts->setValue(settings.value(
"subtractFilteringMinPts",
_ui->spinBox_subtractFilteringMinPts->value()).toInt());
2581 _ui->doubleSpinBox_subtractFilteringRadius->setValue(settings.value(
"subtractFilteringRadius",
_ui->doubleSpinBox_subtractFilteringRadius->value()).toDouble());
2582 _ui->doubleSpinBox_subtractFilteringAngle->setValue(settings.value(
"subtractFilteringAngle",
_ui->doubleSpinBox_subtractFilteringAngle->value()).toDouble());
2584 _ui->doubleSpinBox_map_resolution->setValue(settings.value(
"gridUIResolution",
_ui->doubleSpinBox_map_resolution->value()).toDouble());
2585 _ui->checkBox_map_shown->setChecked(settings.value(
"gridMapShown",
_ui->checkBox_map_shown->isChecked()).toBool());
2586 _ui->doubleSpinBox_map_opacity->setValue(settings.value(
"gridMapOpacity",
_ui->doubleSpinBox_map_opacity->value()).toDouble());
2587 _ui->checkBox_elevation_shown->setCheckState((Qt::CheckState)settings.value(
"elevationMapShown",
_ui->checkBox_elevation_shown->checkState()).toInt());
2589 _ui->groupBox_octomap->setChecked(settings.value(
"octomap",
_ui->groupBox_octomap->isChecked()).toBool());
2590 _ui->spinBox_octomap_treeDepth->setValue(settings.value(
"octomap_depth",
_ui->spinBox_octomap_treeDepth->value()).toInt());
2591 _ui->checkBox_octomap_2dgrid->setChecked(settings.value(
"octomap_2dgrid",
_ui->checkBox_octomap_2dgrid->isChecked()).toBool());
2592 _ui->checkBox_octomap_show3dMap->setChecked(settings.value(
"octomap_3dmap",
_ui->checkBox_octomap_show3dMap->isChecked()).toBool());
2593 _ui->comboBox_octomap_renderingType->setCurrentIndex(settings.value(
"octomap_rendering_type",
_ui->comboBox_octomap_renderingType->currentIndex()).toInt());
2594 _ui->spinBox_octomap_pointSize->setValue(settings.value(
"octomap_point_size",
_ui->spinBox_octomap_pointSize->value()).toInt());
2596 _ui->groupBox_organized->setChecked(settings.value(
"meshing",
_ui->groupBox_organized->isChecked()).toBool());
2597 _ui->doubleSpinBox_mesh_angleTolerance->setValue(settings.value(
"meshing_angle",
_ui->doubleSpinBox_mesh_angleTolerance->value()).toDouble());
2598 _ui->checkBox_mesh_quad->setChecked(settings.value(
"meshing_quad",
_ui->checkBox_mesh_quad->isChecked()).toBool());
2599 _ui->checkBox_mesh_texture->setChecked(settings.value(
"meshing_texture",
_ui->checkBox_mesh_texture->isChecked()).toBool());
2600 _ui->spinBox_mesh_triangleSize->setValue(settings.value(
"meshing_triangle_size",
_ui->spinBox_mesh_triangleSize->value()).toInt());
2602 settings.endGroup();
2604 settings.endGroup();
2610 if(!filePath.isEmpty())
2614 QSettings settings(
path, QSettings::IniFormat);
2616 settings.beginGroup(
"Camera");
2617 _ui->general_doubleSpinBox_imgRate->setValue(settings.value(
"imgRate",
_ui->general_doubleSpinBox_imgRate->value()).toDouble());
2618 _ui->source_mirroring->setChecked(settings.value(
"mirroring",
_ui->source_mirroring->isChecked()).toBool());
2619 _ui->lineEdit_calibrationFile->setText(settings.value(
"calibrationName",
_ui->lineEdit_calibrationFile->text()).toString());
2620 _ui->comboBox_sourceType->setCurrentIndex(settings.value(
"type",
_ui->comboBox_sourceType->currentIndex()).toInt());
2621 _ui->lineEdit_sourceDevice->setText(settings.value(
"device",
_ui->lineEdit_sourceDevice->text()).toString());
2622 _ui->lineEdit_sourceLocalTransform->setText(settings.value(
"localTransform",
_ui->lineEdit_sourceLocalTransform->text()).toString());
2623 _ui->spinBox_source_imageDecimation->setValue(settings.value(
"imageDecimation",
_ui->spinBox_source_imageDecimation->value()).toInt());
2624 _ui->comboBox_source_histogramMethod->setCurrentIndex(settings.value(
"histogramMethod",
_ui->comboBox_source_histogramMethod->currentIndex()).toInt());
2625 _ui->checkbox_source_feature_detection->setChecked(settings.value(
"featureDetection",
_ui->checkbox_source_feature_detection->isChecked()).toBool());
2627 if(
_ui->lineEdit_sourceLocalTransform->text().compare(
"0 0 1 -1 0 0 0 -1 0") == 0)
2629 UWARN(
"From 0.20.11, the local transform of the camera should not contain optical rotation (read=\"%s\"). Resetting to default Identity for convenience.",
_ui->lineEdit_sourceLocalTransform->text().toStdString().c_str());
2630 _ui->lineEdit_sourceLocalTransform->setText(
"0 0 0 0 0 0");
2633 settings.beginGroup(
"rgbd");
2634 _ui->comboBox_cameraRGBD->setCurrentIndex(settings.value(
"driver",
_ui->comboBox_cameraRGBD->currentIndex()).toInt());
2635 _ui->checkbox_rgbd_colorOnly->setChecked(settings.value(
"rgbdColorOnly",
_ui->checkbox_rgbd_colorOnly->isChecked()).toBool());
2636 _ui->lineEdit_source_distortionModel->setText(settings.value(
"distortion_model",
_ui->lineEdit_source_distortionModel->text()).toString());
2637 _ui->groupBox_bilateral->setChecked(settings.value(
"bilateral",
_ui->groupBox_bilateral->isChecked()).toBool());
2638 _ui->doubleSpinBox_bilateral_sigmaS->setValue(settings.value(
"bilateral_sigma_s",
_ui->doubleSpinBox_bilateral_sigmaS->value()).toDouble());
2639 _ui->doubleSpinBox_bilateral_sigmaR->setValue(settings.value(
"bilateral_sigma_r",
_ui->doubleSpinBox_bilateral_sigmaR->value()).toDouble());
2640 settings.endGroup();
2642 settings.beginGroup(
"stereo");
2643 _ui->comboBox_cameraStereo->setCurrentIndex(settings.value(
"driver",
_ui->comboBox_cameraStereo->currentIndex()).toInt());
2644 _ui->checkbox_stereo_depthGenerated->setChecked(settings.value(
"depthGenerated",
_ui->checkbox_stereo_depthGenerated->isChecked()).toBool());
2645 _ui->checkBox_stereo_exposureCompensation->setChecked(settings.value(
"exposureCompensation",
_ui->checkBox_stereo_exposureCompensation->isChecked()).toBool());
2646 settings.endGroup();
2648 settings.beginGroup(
"rgb");
2649 _ui->source_comboBox_image_type->setCurrentIndex(settings.value(
"driver",
_ui->source_comboBox_image_type->currentIndex()).toInt());
2650 _ui->checkBox_rgb_rectify->setChecked(settings.value(
"rectify",
_ui->checkBox_rgb_rectify->isChecked()).toBool());
2651 settings.endGroup();
2653 settings.beginGroup(
"Openni");
2654 _ui->lineEdit_openniOniPath->setText(settings.value(
"oniPath",
_ui->lineEdit_openniOniPath->text()).toString());
2655 settings.endGroup();
2657 settings.beginGroup(
"Openni2");
2658 _ui->openni2_autoWhiteBalance->setChecked(settings.value(
"autoWhiteBalance",
_ui->openni2_autoWhiteBalance->isChecked()).toBool());
2659 _ui->openni2_autoExposure->setChecked(settings.value(
"autoExposure",
_ui->openni2_autoExposure->isChecked()).toBool());
2660 _ui->openni2_exposure->setValue(settings.value(
"exposure",
_ui->openni2_exposure->value()).toInt());
2661 _ui->openni2_gain->setValue(settings.value(
"gain",
_ui->openni2_gain->value()).toInt());
2662 _ui->openni2_mirroring->setChecked(settings.value(
"mirroring",
_ui->openni2_mirroring->isChecked()).toBool());
2663 _ui->openni2_stampsIdsUsed->setChecked(settings.value(
"stampsIdsUsed",
_ui->openni2_stampsIdsUsed->isChecked()).toBool());
2664 _ui->lineEdit_openni2OniPath->setText(settings.value(
"oniPath",
_ui->lineEdit_openni2OniPath->text()).toString());
2665 _ui->openni2_hshift->setValue(settings.value(
"hshift",
_ui->openni2_hshift->value()).toInt());
2666 _ui->openni2_vshift->setValue(settings.value(
"vshift",
_ui->openni2_vshift->value()).toInt());
2667 _ui->openni2_depth_decimation->setValue(settings.value(
"depthDecimation",
_ui->openni2_depth_decimation->value()).toInt());
2668 settings.endGroup();
2670 settings.beginGroup(
"Freenect2");
2671 _ui->comboBox_freenect2Format->setCurrentIndex(settings.value(
"format",
_ui->comboBox_freenect2Format->currentIndex()).toInt());
2672 _ui->doubleSpinBox_freenect2MinDepth->setValue(settings.value(
"minDepth",
_ui->doubleSpinBox_freenect2MinDepth->value()).toDouble());
2673 _ui->doubleSpinBox_freenect2MaxDepth->setValue(settings.value(
"maxDepth",
_ui->doubleSpinBox_freenect2MaxDepth->value()).toDouble());
2674 _ui->checkBox_freenect2BilateralFiltering->setChecked(settings.value(
"bilateralFiltering",
_ui->checkBox_freenect2BilateralFiltering->isChecked()).toBool());
2675 _ui->checkBox_freenect2EdgeAwareFiltering->setChecked(settings.value(
"edgeAwareFiltering",
_ui->checkBox_freenect2EdgeAwareFiltering->isChecked()).toBool());
2676 _ui->checkBox_freenect2NoiseFiltering->setChecked(settings.value(
"noiseFiltering",
_ui->checkBox_freenect2NoiseFiltering->isChecked()).toBool());
2677 _ui->lineEdit_freenect2Pipeline->setText(settings.value(
"pipeline",
_ui->lineEdit_freenect2Pipeline->text()).toString());
2678 settings.endGroup();
2680 settings.beginGroup(
"K4W2");
2681 _ui->comboBox_k4w2Format->setCurrentIndex(settings.value(
"format",
_ui->comboBox_k4w2Format->currentIndex()).toInt());
2682 settings.endGroup();
2684 settings.beginGroup(
"K4A");
2685 _ui->comboBox_k4a_rgb_resolution->setCurrentIndex(settings.value(
"rgb_resolution",
_ui->comboBox_k4a_rgb_resolution->currentIndex()).toInt());
2686 _ui->comboBox_k4a_framerate->setCurrentIndex(settings.value(
"framerate",
_ui->comboBox_k4a_framerate->currentIndex()).toInt());
2687 _ui->comboBox_k4a_depth_resolution->setCurrentIndex(settings.value(
"depth_resolution",
_ui->comboBox_k4a_depth_resolution->currentIndex()).toInt());
2688 _ui->checkbox_k4a_irDepth->setChecked(settings.value(
"ir",
_ui->checkbox_k4a_irDepth->isChecked()).toBool());
2689 _ui->lineEdit_k4a_mkv->setText(settings.value(
"mkvPath",
_ui->lineEdit_k4a_mkv->text()).toString());
2690 _ui->source_checkBox_useMKVStamps->setChecked(settings.value(
"useMkvStamps",
_ui->source_checkBox_useMKVStamps->isChecked()).toBool());
2691 settings.endGroup();
2693 settings.beginGroup(
"RealSense");
2694 _ui->comboBox_realsensePresetRGB->setCurrentIndex(settings.value(
"presetRGB",
_ui->comboBox_realsensePresetRGB->currentIndex()).toInt());
2695 _ui->comboBox_realsensePresetDepth->setCurrentIndex(settings.value(
"presetDepth",
_ui->comboBox_realsensePresetDepth->currentIndex()).toInt());
2696 _ui->checkbox_realsenseOdom->setChecked(settings.value(
"odom",
_ui->checkbox_realsenseOdom->isChecked()).toBool());
2697 _ui->checkbox_realsenseDepthScaledToRGBSize->setChecked(settings.value(
"depthScaled",
_ui->checkbox_realsenseDepthScaledToRGBSize->isChecked()).toBool());
2698 _ui->comboBox_realsenseRGBSource->setCurrentIndex(settings.value(
"rgbSource",
_ui->comboBox_realsenseRGBSource->currentIndex()).toInt());
2699 settings.endGroup();
2701 settings.beginGroup(
"RealSense2");
2702 _ui->checkbox_rs2_emitter->setChecked(settings.value(
"emitter",
_ui->checkbox_rs2_emitter->isChecked()).toBool());
2703 _ui->checkbox_rs2_irMode->setChecked(settings.value(
"ir",
_ui->checkbox_rs2_irMode->isChecked()).toBool());
2704 _ui->checkbox_rs2_irDepth->setChecked(settings.value(
"irdepth",
_ui->checkbox_rs2_irDepth->isChecked()).toBool());
2705 _ui->spinBox_rs2_width->setValue(settings.value(
"width",
_ui->spinBox_rs2_width->value()).toInt());
2706 _ui->spinBox_rs2_height->setValue(settings.value(
"height",
_ui->spinBox_rs2_height->value()).toInt());
2707 _ui->spinBox_rs2_rate->setValue(settings.value(
"rate",
_ui->spinBox_rs2_rate->value()).toInt());
2708 _ui->spinBox_rs2_width_depth->setValue(settings.value(
"width_depth",
_ui->spinBox_rs2_width_depth->value()).toInt());
2709 _ui->spinBox_rs2_height_depth->setValue(settings.value(
"height_depth",
_ui->spinBox_rs2_height_depth->value()).toInt());
2710 _ui->spinBox_rs2_rate_depth->setValue(settings.value(
"rate_depth",
_ui->spinBox_rs2_rate_depth->value()).toInt());
2711 _ui->checkbox_rs2_globalTimeStync->setChecked(settings.value(
"global_time_sync",
_ui->checkbox_rs2_globalTimeStync->isChecked()).toBool());
2712 _ui->lineEdit_rs2_jsonFile->setText(settings.value(
"json_preset",
_ui->lineEdit_rs2_jsonFile->text()).toString());
2713 settings.endGroup();
2715 settings.beginGroup(
"RGBDImages");
2716 _ui->lineEdit_cameraRGBDImages_path_rgb->setText(settings.value(
"path_rgb",
_ui->lineEdit_cameraRGBDImages_path_rgb->text()).toString());
2717 _ui->lineEdit_cameraRGBDImages_path_depth->setText(settings.value(
"path_depth",
_ui->lineEdit_cameraRGBDImages_path_depth->text()).toString());
2718 _ui->doubleSpinBox_cameraRGBDImages_scale->setValue(settings.value(
"scale",
_ui->doubleSpinBox_cameraRGBDImages_scale->value()).toDouble());
2719 _ui->spinBox_cameraRGBDImages_startIndex->setValue(settings.value(
"start_index",
_ui->spinBox_cameraRGBDImages_startIndex->value()).toInt());
2720 _ui->spinBox_cameraRGBDImages_maxFrames->setValue(settings.value(
"max_frames",
_ui->spinBox_cameraRGBDImages_maxFrames->value()).toInt());
2721 settings.endGroup();
2723 settings.beginGroup(
"StereoImages");
2724 _ui->lineEdit_cameraStereoImages_path_left->setText(settings.value(
"path_left",
_ui->lineEdit_cameraStereoImages_path_left->text()).toString());
2725 _ui->lineEdit_cameraStereoImages_path_right->setText(settings.value(
"path_right",
_ui->lineEdit_cameraStereoImages_path_right->text()).toString());
2726 _ui->checkBox_stereo_rectify->setChecked(settings.value(
"rectify",
_ui->checkBox_stereo_rectify->isChecked()).toBool());
2727 _ui->spinBox_cameraStereoImages_startIndex->setValue(settings.value(
"start_index",
_ui->spinBox_cameraStereoImages_startIndex->value()).toInt());
2728 _ui->spinBox_cameraStereoImages_maxFrames->setValue(settings.value(
"max_frames",
_ui->spinBox_cameraStereoImages_maxFrames->value()).toInt());
2729 settings.endGroup();
2731 settings.beginGroup(
"StereoVideo");
2732 _ui->lineEdit_cameraStereoVideo_path->setText(settings.value(
"path",
_ui->lineEdit_cameraStereoVideo_path->text()).toString());
2733 _ui->lineEdit_cameraStereoVideo_path_2->setText(settings.value(
"path2",
_ui->lineEdit_cameraStereoVideo_path_2->text()).toString());
2734 _ui->spinBox_stereo_right_device->setValue(settings.value(
"device2",
_ui->spinBox_stereo_right_device->value()).toInt());
2735 _ui->spinBox_stereousbcam_streamWidth->setValue(settings.value(
"width",
_ui->spinBox_stereousbcam_streamWidth->value()).toInt());
2736 _ui->spinBox_stereousbcam_streamHeight->setValue(settings.value(
"height",
_ui->spinBox_stereousbcam_streamHeight->value()).toInt());
2737 _ui->lineEdit_stereousbcam_fourcc->setText(settings.value(
"fourcc",
_ui->lineEdit_stereousbcam_fourcc->text()).toString());
2738 settings.endGroup();
2740 settings.beginGroup(
"StereoZed");
2741 _ui->comboBox_stereoZed_resolution->setCurrentIndex(settings.value(
"resolution",
_ui->comboBox_stereoZed_resolution->currentIndex()).toInt());
2742 _ui->comboBox_stereoZed_quality->setCurrentIndex(settings.value(
"quality",
_ui->comboBox_stereoZed_quality->currentIndex()).toInt());
2743 _ui->checkbox_stereoZed_selfCalibration->setChecked(settings.value(
"self_calibration",
_ui->checkbox_stereoZed_selfCalibration->isChecked()).toBool());
2744 _ui->comboBox_stereoZed_sensingMode->setCurrentIndex(settings.value(
"sensing_mode",
_ui->comboBox_stereoZed_sensingMode->currentIndex()).toInt());
2745 _ui->spinBox_stereoZed_confidenceThr->setValue(settings.value(
"confidence_thr",
_ui->spinBox_stereoZed_confidenceThr->value()).toInt());
2746 _ui->spinBox_stereoZed_texturenessConfidenceThr->setValue(settings.value(
"textureness_confidence_thr",
_ui->spinBox_stereoZed_texturenessConfidenceThr->value()).toInt());
2747 _ui->lineEdit_zedSvoPath->setText(settings.value(
"svo_path",
_ui->lineEdit_zedSvoPath->text()).toString());
2748 settings.endGroup();
2750 settings.beginGroup(
"MyntEye");
2751 _ui->checkbox_stereoMyntEye_rectify->setChecked(settings.value(
"rectify",
_ui->checkbox_stereoMyntEye_rectify->isChecked()).toBool());
2752 _ui->checkbox_stereoMyntEye_depth->setChecked(settings.value(
"depth",
_ui->checkbox_stereoMyntEye_depth->isChecked()).toBool());
2753 _ui->checkbox_stereoMyntEye_autoExposure->setChecked(settings.value(
"auto_exposure",
_ui->checkbox_stereoMyntEye_autoExposure->isChecked()).toBool());
2754 _ui->spinBox_stereoMyntEye_gain->setValue(settings.value(
"gain",
_ui->spinBox_stereoMyntEye_gain->value()).toInt());
2755 _ui->spinBox_stereoMyntEye_brightness->setValue(settings.value(
"brightness",
_ui->spinBox_stereoMyntEye_brightness->value()).toInt());
2756 _ui->spinBox_stereoMyntEye_contrast->setValue(settings.value(
"contrast",
_ui->spinBox_stereoMyntEye_contrast->value()).toInt());
2757 _ui->spinBox_stereoMyntEye_irControl->setValue(settings.value(
"ir_control",
_ui->spinBox_stereoMyntEye_irControl->value()).toInt());
2758 settings.endGroup();
2760 settings.beginGroup(
"DepthAI");
2761 _ui->comboBox_depthai_resolution->setCurrentIndex(settings.value(
"resolution",
_ui->comboBox_depthai_resolution->currentIndex()).toInt());
2762 _ui->comboBox_depthai_output_mode->setCurrentIndex(settings.value(
"output_mode",
_ui->comboBox_depthai_output_mode->currentIndex()).toInt());
2763 _ui->spinBox_depthai_conf_threshold->setValue(settings.value(
"conf_threshold",
_ui->spinBox_depthai_conf_threshold->value()).toInt());
2764 _ui->spinBox_depthai_lrc_threshold->setValue(settings.value(
"lrc_threshold",
_ui->spinBox_depthai_lrc_threshold->value()).toInt());
2765 _ui->checkBox_depthai_extended_disparity->setChecked(settings.value(
"extended_disparity",
_ui->checkBox_depthai_extended_disparity->isChecked()).toBool());
2766 _ui->comboBox_depthai_subpixel_fractional_bits->setCurrentIndex(settings.value(
"subpixel_fractional_bits",
_ui->comboBox_depthai_subpixel_fractional_bits->currentIndex()).toInt());
2767 _ui->comboBox_depthai_disparity_companding->setCurrentIndex(settings.value(
"companding",
_ui->comboBox_depthai_disparity_companding->currentIndex()).toInt());
2768 _ui->checkBox_depthai_use_spec_translation->setChecked(settings.value(
"use_spec_translation",
_ui->checkBox_depthai_use_spec_translation->isChecked()).toBool());
2769 _ui->doubleSpinBox_depthai_alpha_scaling->setValue(settings.value(
"alpha_scaling",
_ui->doubleSpinBox_depthai_alpha_scaling->value()).toDouble());
2770 _ui->checkBox_depthai_imu_published->setChecked(settings.value(
"imu_published",
_ui->checkBox_depthai_imu_published->isChecked()).toBool());
2771 _ui->doubleSpinBox_depthai_dot_intensity->setValue(settings.value(
"dot_intensity",
_ui->doubleSpinBox_depthai_dot_intensity->value()).toDouble());
2772 _ui->doubleSpinBox_depthai_flood_intensity->setValue(settings.value(
"flood_intensity",
_ui->doubleSpinBox_depthai_flood_intensity->value()).toDouble());
2773 _ui->comboBox_depthai_detect_features->setCurrentIndex(settings.value(
"detect_features",
_ui->comboBox_depthai_detect_features->currentIndex()).toInt());
2774 _ui->lineEdit_depthai_blob_path->setText(settings.value(
"blob_path",
_ui->lineEdit_depthai_blob_path->text()).toString());
2775 settings.endGroup();
2777 settings.beginGroup(
"Images");
2778 _ui->source_images_lineEdit_path->setText(settings.value(
"path",
_ui->source_images_lineEdit_path->text()).toString());
2779 _ui->source_images_spinBox_startPos->setValue(settings.value(
"startPos",
_ui->source_images_spinBox_startPos->value()).toInt());
2780 _ui->source_images_spinBox_maxFrames->setValue(settings.value(
"maxFrames",
_ui->source_images_spinBox_maxFrames->value()).toInt());
2781 _ui->comboBox_cameraImages_bayerMode->setCurrentIndex(settings.value(
"bayerMode",
_ui->comboBox_cameraImages_bayerMode->currentIndex()).toInt());
2783 _ui->checkBox_cameraImages_configForEachFrame->setChecked(settings.value(
"config_each_frame",
_ui->checkBox_cameraImages_configForEachFrame->isChecked()).toBool());
2784 _ui->checkBox_cameraImages_timestamps->setChecked(settings.value(
"filenames_as_stamps",
_ui->checkBox_cameraImages_timestamps->isChecked()).toBool());
2785 _ui->checkBox_cameraImages_syncTimeStamps->setChecked(settings.value(
"sync_stamps",
_ui->checkBox_cameraImages_syncTimeStamps->isChecked()).toBool());
2786 _ui->lineEdit_cameraImages_timestamps->setText(settings.value(
"stamps",
_ui->lineEdit_cameraImages_timestamps->text()).toString());
2787 _ui->lineEdit_cameraImages_path_scans->setText(settings.value(
"path_scans",
_ui->lineEdit_cameraImages_path_scans->text()).toString());
2788 _ui->lineEdit_cameraImages_laser_transform->setText(settings.value(
"scan_transform",
_ui->lineEdit_cameraImages_laser_transform->text()).toString());
2789 _ui->spinBox_cameraImages_max_scan_pts->setValue(settings.value(
"scan_max_pts",
_ui->spinBox_cameraImages_max_scan_pts->value()).toInt());
2790 _ui->lineEdit_cameraImages_odom->setText(settings.value(
"odom_path",
_ui->lineEdit_cameraImages_odom->text()).toString());
2791 _ui->comboBox_cameraImages_odomFormat->setCurrentIndex(settings.value(
"odom_format",
_ui->comboBox_cameraImages_odomFormat->currentIndex()).toInt());
2792 _ui->lineEdit_cameraImages_gt->setText(settings.value(
"gt_path",
_ui->lineEdit_cameraImages_gt->text()).toString());
2793 _ui->comboBox_cameraImages_gtFormat->setCurrentIndex(settings.value(
"gt_format",
_ui->comboBox_cameraImages_gtFormat->currentIndex()).toInt());
2794 _ui->doubleSpinBox_maxPoseTimeDiff->setValue(settings.value(
"max_pose_time_diff",
_ui->doubleSpinBox_maxPoseTimeDiff->value()).toDouble());
2796 _ui->lineEdit_cameraImages_path_imu->setText(settings.value(
"imu_path",
_ui->lineEdit_cameraImages_path_imu->text()).toString());
2797 _ui->lineEdit_cameraImages_imu_transform->setText(settings.value(
"imu_local_transform",
_ui->lineEdit_cameraImages_imu_transform->text()).toString());
2798 _ui->spinBox_cameraImages_max_imu_rate->setValue(settings.value(
"imu_rate",
_ui->spinBox_cameraImages_max_imu_rate->value()).toInt());
2799 settings.endGroup();
2801 settings.beginGroup(
"OdomSensor");
2802 _ui->comboBox_odom_sensor->setCurrentIndex(settings.value(
"odom_sensor",
_ui->comboBox_odom_sensor->currentIndex()).toInt());
2803 _ui->lineEdit_odom_sensor_extrinsics->setText(settings.value(
"odom_sensor_extrinsics",
_ui->lineEdit_odom_sensor_extrinsics->text()).toString());
2804 _ui->lineEdit_odom_sensor_path_calibration->setText(settings.value(
"odom_sensor_calibration_path",
_ui->lineEdit_odom_sensor_path_calibration->text()).toString());
2805 _ui->lineEdit_odomSourceDevice->setText(settings.value(
"odom_sensor_device",
_ui->lineEdit_odomSourceDevice->text()).toString());
2806 _ui->doubleSpinBox_odom_sensor_time_offset->setValue(settings.value(
"odom_sensor_offset_time",
_ui->doubleSpinBox_odom_sensor_time_offset->value()).toDouble());
2807 _ui->doubleSpinBox_odom_sensor_scale_factor->setValue(settings.value(
"odom_sensor_scale_factor",
_ui->doubleSpinBox_odom_sensor_scale_factor->value()).toDouble());
2808 _ui->doubleSpinBox_odom_sensor_wait_time->setValue(settings.value(
"odom_sensor_wait_time",
_ui->doubleSpinBox_odom_sensor_wait_time->value()).toDouble());
2809 _ui->checkBox_odom_sensor_use_as_gt->setChecked(settings.value(
"odom_sensor_odom_as_gt",
_ui->checkBox_odom_sensor_use_as_gt->isChecked()).toBool());
2810 settings.endGroup();
2812 settings.beginGroup(
"UsbCam");
2813 _ui->spinBox_usbcam_streamWidth->setValue(settings.value(
"width",
_ui->spinBox_usbcam_streamWidth->value()).toInt());
2814 _ui->spinBox_usbcam_streamHeight->setValue(settings.value(
"height",
_ui->spinBox_usbcam_streamHeight->value()).toInt());
2815 _ui->lineEdit_usbcam_fourcc->setText(settings.value(
"fourcc",
_ui->lineEdit_usbcam_fourcc->text()).toString());
2816 settings.endGroup();
2818 settings.beginGroup(
"Video");
2819 _ui->source_video_lineEdit_path->setText(settings.value(
"path",
_ui->source_video_lineEdit_path->text()).toString());
2820 settings.endGroup();
2822 settings.beginGroup(
"IMU");
2823 _ui->comboBox_imuFilter_strategy->setCurrentIndex(settings.value(
"strategy",
_ui->comboBox_imuFilter_strategy->currentIndex()).toInt());
2824 _ui->doubleSpinBox_imuFilterMadgwickGain->setValue(settings.value(
"madgwick_gain",
_ui->doubleSpinBox_imuFilterMadgwickGain->value()).toDouble());
2825 _ui->doubleSpinBox_imuFilterMadgwickZeta->setValue(settings.value(
"madgwick_zeta",
_ui->doubleSpinBox_imuFilterMadgwickZeta->value()).toDouble());
2826 _ui->doubleSpinBox_imuFilterComplementaryGainAcc->setValue(settings.value(
"complementary_gain_acc",
_ui->doubleSpinBox_imuFilterComplementaryGainAcc->value()).toDouble());
2827 _ui->doubleSpinBox_imuFilterComplementaryBiasAlpha->setValue(settings.value(
"complementary_bias_alpha",
_ui->doubleSpinBox_imuFilterComplementaryBiasAlpha->value()).toDouble());
2828 _ui->checkBox_imuFilterComplementaryDoAdaptiveGain->setChecked(settings.value(
"complementary_adaptive_gain",
_ui->checkBox_imuFilterComplementaryDoAdaptiveGain->isChecked()).toBool());
2829 _ui->checkBox_imuFilterComplementaryDoBiasEstimation->setChecked(settings.value(
"complementary_biais_estimation",
_ui->checkBox_imuFilterComplementaryDoBiasEstimation->isChecked()).toBool());
2830 _ui->checkBox_imuFilter_baseFrameConversion->setChecked(settings.value(
"base_frame_conversion",
_ui->checkBox_imuFilter_baseFrameConversion->isChecked()).toBool());
2831 _ui->checkbox_publishInterIMU->setChecked(settings.value(
"publish_inter_imu",
_ui->checkbox_publishInterIMU->isChecked()).toBool());
2832 settings.endGroup();
2834 settings.beginGroup(
"Scan");
2835 _ui->comboBox_lidar_src->setCurrentIndex(settings.value(
"source",
_ui->comboBox_lidar_src->currentIndex()).toInt());
2836 _ui->checkBox_source_scanDeskewing->setChecked(settings.value(
"deskewing",
_ui->checkBox_source_scanDeskewing->isChecked()).toBool());
2837 _ui->checkBox_source_scanFromDepth->setChecked(settings.value(
"fromDepth",
_ui->checkBox_source_scanFromDepth->isChecked()).toBool());
2838 _ui->spinBox_source_scanDownsampleStep->setValue(settings.value(
"downsampleStep",
_ui->spinBox_source_scanDownsampleStep->value()).toInt());
2839 _ui->doubleSpinBox_source_scanRangeMin->setValue(settings.value(
"rangeMin",
_ui->doubleSpinBox_source_scanRangeMin->value()).toDouble());
2840 _ui->doubleSpinBox_source_scanRangeMax->setValue(settings.value(
"rangeMax",
_ui->doubleSpinBox_source_scanRangeMax->value()).toDouble());
2841 _ui->doubleSpinBox_source_scanVoxelSize->setValue(settings.value(
"voxelSize",
_ui->doubleSpinBox_source_scanVoxelSize->value()).toDouble());
2842 _ui->spinBox_source_scanNormalsK->setValue(settings.value(
"normalsK",
_ui->spinBox_source_scanNormalsK->value()).toInt());
2843 _ui->doubleSpinBox_source_scanNormalsRadius->setValue(settings.value(
"normalsRadius",
_ui->doubleSpinBox_source_scanNormalsRadius->value()).toDouble());
2844 _ui->doubleSpinBox_source_scanNormalsForceGroundUp->setValue(settings.value(
"normalsUpF",
_ui->doubleSpinBox_source_scanNormalsForceGroundUp->value()).toDouble());
2845 settings.endGroup();
2847 settings.beginGroup(
"DepthFromScan");
2848 _ui->groupBox_depthFromScan->setChecked(settings.value(
"depthFromScan",
_ui->groupBox_depthFromScan->isChecked()).toBool());
2849 _ui->groupBox_depthFromScan_fillHoles->setChecked(settings.value(
"depthFromScanFillHoles",
_ui->groupBox_depthFromScan_fillHoles->isChecked()).toBool());
2850 _ui->radioButton_depthFromScan_vertical->setChecked(settings.value(
"depthFromScanVertical",
_ui->radioButton_depthFromScan_vertical->isChecked()).toBool());
2851 _ui->radioButton_depthFromScan_horizontal->setChecked(settings.value(
"depthFromScanHorizontal",
_ui->radioButton_depthFromScan_horizontal->isChecked()).toBool());
2852 _ui->checkBox_depthFromScan_fillBorders->setChecked(settings.value(
"depthFromScanFillBorders",
_ui->checkBox_depthFromScan_fillBorders->isChecked()).toBool());
2853 settings.endGroup();
2855 settings.beginGroup(
"Database");
2856 _ui->source_database_lineEdit_path->setText(settings.value(
"path",
_ui->source_database_lineEdit_path->text()).toString());
2857 _ui->source_checkBox_ignoreOdometry->setChecked(settings.value(
"ignoreOdometry",
_ui->source_checkBox_ignoreOdometry->isChecked()).toBool());
2858 _ui->source_checkBox_ignoreGoalDelay->setChecked(settings.value(
"ignoreGoalDelay",
_ui->source_checkBox_ignoreGoalDelay->isChecked()).toBool());
2859 _ui->source_checkBox_ignoreGoals->setChecked(settings.value(
"ignoreGoals",
_ui->source_checkBox_ignoreGoals->isChecked()).toBool());
2860 _ui->source_checkBox_ignoreLandmarks->setChecked(settings.value(
"ignoreLandmarks",
_ui->source_checkBox_ignoreLandmarks->isChecked()).toBool());
2861 _ui->source_checkBox_ignoreFeatures->setChecked(settings.value(
"ignoreFeatures",
_ui->source_checkBox_ignoreFeatures->isChecked()).toBool());
2862 _ui->source_checkBox_ignorePriors->setChecked(settings.value(
"ignorePriors",
_ui->source_checkBox_ignorePriors->isChecked()).toBool());
2863 _ui->source_spinBox_databaseStartId->setValue(settings.value(
"startId",
_ui->source_spinBox_databaseStartId->value()).toInt());
2864 _ui->source_spinBox_databaseStopId->setValue(settings.value(
"stopId",
_ui->source_spinBox_databaseStopId->value()).toInt());
2865 _ui->source_spinBox_database_cameraIndex->setValue(settings.value(
"cameraIndex",
_ui->source_spinBox_database_cameraIndex->value()).toInt());
2866 _ui->source_checkBox_useDbStamps->setChecked(settings.value(
"useDatabaseStamps",
_ui->source_checkBox_useDbStamps->isChecked()).toBool());
2867 settings.endGroup();
2869 settings.endGroup();
2871 settings.beginGroup(
"Lidar");
2873 settings.beginGroup(
"VLP16");
2874 _ui->lineEdit_lidar_local_transform->setText(settings.value(
"localTransform",
_ui->lineEdit_lidar_local_transform->text()).toString());
2875 _ui->lineEdit_vlp16_pcap_path->setText(settings.value(
"pcapPath",
_ui->lineEdit_vlp16_pcap_path->text()).toString());
2876 _ui->spinBox_vlp16_ip1->setValue(settings.value(
"ip1",
_ui->spinBox_vlp16_ip1->value()).toInt());
2877 _ui->spinBox_vlp16_ip2->setValue(settings.value(
"ip2",
_ui->spinBox_vlp16_ip2->value()).toInt());
2878 _ui->spinBox_vlp16_ip3->setValue(settings.value(
"ip3",
_ui->spinBox_vlp16_ip3->value()).toInt());
2879 _ui->spinBox_vlp16_ip4->setValue(settings.value(
"ip4",
_ui->spinBox_vlp16_ip4->value()).toInt());
2880 _ui->spinBox_vlp16_port->setValue(settings.value(
"port",
_ui->spinBox_vlp16_port->value()).toInt());
2881 _ui->checkBox_vlp16_organized->setChecked(settings.value(
"organized",
_ui->checkBox_vlp16_organized->isChecked()).toBool());
2882 _ui->checkBox_vlp16_hostTime->setChecked(settings.value(
"hostTime",
_ui->checkBox_vlp16_hostTime->isChecked()).toBool());
2883 _ui->checkBox_vlp16_stamp_last->setChecked(settings.value(
"stampLast",
_ui->checkBox_vlp16_stamp_last->isChecked()).toBool());
2884 settings.endGroup();
2886 settings.endGroup();
2900 if(!filePath.isEmpty())
2907 if(!QFile::exists(
path))
2909 QMessageBox::information(
this, tr(
"INI file doesn't exist..."), tr(
"The configuration file \"%1\" does not exist, it will be created with default parameters.").
arg(
path));
2915 for(rtabmap::ParametersMap::const_iterator
iter = parameters.begin();
iter!=parameters.end(); ++
iter)
2918 if(
iter->first.compare(Parameters::kRtabmapWorkingDirectory()) == 0)
2922 UWARN(
"Reading config: Working directory is empty. Keeping old one (\"%s\").",
2932 UWARN(
"Reading config: Not existing working directory \"%s\". Keeping old one (\"%s\").",
2934 this->getWorkingDirectory().toStdString().c_str());
2940 UWARN(
"Reading config: Not existing working directory \"%s\". Using default one (\"%s\").",
2942 defaultWorkingDir.c_str());
2943 value = defaultWorkingDir;
2949 if(
iter->first.compare(Parameters::kIcpStrategy()) == 0)
2951 if(
value.compare(
"true") == 0)
2955 else if(
value.compare(
"false") == 0)
2965 if(parameters.find(Parameters::kRtabmapWorkingDirectory()) == parameters.end())
2969 QMessageBox::information(
this,
2970 tr(
"Working directory"),
2971 tr(
"RTAB-Map needs a working directory to put the database.\n\n"
2972 "By default, the directory \"%1\" is used.\n\n"
2973 "The working directory can be changed any time in the "
2985 QString
path = QFileDialog::getSaveFileName(
this, tr(
"Save settings..."), this->
getWorkingDirectory()+QDir::separator()+
"config.ini",
"*.ini");
2998 int button = QMessageBox::warning(
this,
2999 tr(
"Reset settings..."),
3000 tr(
"This will reset all settings. Restore all settings to default without saving them first?"),
3001 QMessageBox::Cancel | QMessageBox::Yes | QMessageBox::Save,
3002 QMessageBox::Cancel);
3003 if(button == QMessageBox::Yes ||
3015 if(!presetHexHeader.empty())
3023 parameters.erase(Parameters::kRtabmapWorkingDirectory());
3024 for(ParametersMap::iterator
iter=parameters.begin();
iter!=parameters.end(); ++
iter)
3032 if(sender() ==
_ui->pushButton_presets_camera_tof_icp)
3036 else if(sender() ==
_ui->pushButton_presets_lidar_3d_icp)
3042 UERROR(
"Unknown sender!");
3045 QMessageBox::information(
this,
3047 tr(
"Loaded \"%1\" preset!").
arg(((QPushButton*)sender())->
text()),
3073 bool different =
true;
3097 if(!filePath.isEmpty())
3101 QSettings settings(
path, QSettings::IniFormat);
3102 settings.beginGroup(
"Gui");
3104 settings.beginGroup(
"General");
3105 settings.remove(
"");
3106 settings.setValue(
"imagesKept",
_ui->general_checkBox_imagesKept->isChecked());
3107 settings.setValue(
"missingRepublished",
_ui->general_checkBox_missing_cache_republished->isChecked());
3108 settings.setValue(
"cloudsKept",
_ui->general_checkBox_cloudsKept->isChecked());
3109 settings.setValue(
"loggerLevel",
_ui->comboBox_loggerLevel->currentIndex());
3110 settings.setValue(
"loggerEventLevel",
_ui->comboBox_loggerEventLevel->currentIndex());
3111 settings.setValue(
"loggerPauseLevel",
_ui->comboBox_loggerPauseLevel->currentIndex());
3112 settings.setValue(
"loggerType",
_ui->comboBox_loggerType->currentIndex());
3113 settings.setValue(
"loggerPrintTime",
_ui->checkBox_logger_printTime->isChecked());
3114 settings.setValue(
"loggerPrintThreadId",
_ui->checkBox_logger_printThreadId->isChecked());
3115 settings.setValue(
"verticalLayoutUsed",
_ui->checkBox_verticalLayoutUsed->isChecked());
3116 settings.setValue(
"imageRejectedShown",
_ui->checkBox_imageRejectedShown->isChecked());
3117 settings.setValue(
"imageHighestHypShown",
_ui->checkBox_imageHighestHypShown->isChecked());
3118 settings.setValue(
"beep",
_ui->checkBox_beep->isChecked());
3119 settings.setValue(
"figure_time",
_ui->checkBox_stamps->isChecked());
3120 settings.setValue(
"figure_cache",
_ui->checkBox_cacheStatistics->isChecked());
3121 settings.setValue(
"notifyNewGlobalPath",
_ui->checkBox_notifyWhenNewGlobalPathIsReceived->isChecked());
3122 settings.setValue(
"odomQualityThr",
_ui->spinBox_odomQualityWarnThr->value());
3123 settings.setValue(
"odomOnlyInliersShown",
_ui->checkBox_odom_onlyInliersShown->isChecked());
3124 settings.setValue(
"posteriorGraphView",
_ui->radioButton_posteriorGraphView->isChecked());
3125 settings.setValue(
"wordsGraphView",
_ui->radioButton_wordsGraphView->isChecked());
3126 settings.setValue(
"localizationsGraphView",
_ui->radioButton_localizationsGraphView->isChecked());
3127 settings.setValue(
"localizationsGraphViewOdomCache",
_ui->radioButton_localizationsGraphViewOdomCache->isChecked());
3128 settings.setValue(
"nochangeGraphView",
_ui->radioButton_nochangeGraphView->isChecked());
3129 settings.setValue(
"odomDisabled",
_ui->checkbox_odomDisabled->isChecked());
3130 settings.setValue(
"odomRegistration",
_ui->odom_registration->currentIndex());
3131 settings.setValue(
"odomF2MGravitySigma",
_ui->odom_f2m_gravitySigma->value());
3132 settings.setValue(
"gtAlign",
_ui->checkbox_groundTruthAlign->isChecked());
3134 for(
int i=0;
i<2; ++
i)
3159 settings.setValue(
"cloudVoxel",
_ui->doubleSpinBox_voxel->value());
3160 settings.setValue(
"cloudNoiseRadius",
_ui->doubleSpinBox_noiseRadius->value());
3161 settings.setValue(
"cloudNoiseMinNeighbors",
_ui->spinBox_noiseMinNeighbors->value());
3162 settings.setValue(
"cloudCeilingHeight",
_ui->doubleSpinBox_ceilingFilterHeight->value());
3163 settings.setValue(
"cloudFloorHeight",
_ui->doubleSpinBox_floorFilterHeight->value());
3164 settings.setValue(
"normalKSearch",
_ui->spinBox_normalKSearch->value());
3165 settings.setValue(
"normalRadiusSearch",
_ui->doubleSpinBox_normalRadiusSearch->value());
3166 settings.setValue(
"scanCeilingHeight",
_ui->doubleSpinBox_ceilingFilterHeight_scan->value());
3167 settings.setValue(
"scanFloorHeight",
_ui->doubleSpinBox_floorFilterHeight_scan->value());
3168 settings.setValue(
"scanNormalKSearch",
_ui->spinBox_normalKSearch_scan->value());
3169 settings.setValue(
"scanNormalRadiusSearch",
_ui->doubleSpinBox_normalRadiusSearch_scan->value());
3171 settings.setValue(
"showGraphs",
_ui->checkBox_showGraphs->isChecked());
3172 settings.setValue(
"showLabels",
_ui->checkBox_showLabels->isChecked());
3173 settings.setValue(
"showFrames",
_ui->checkBox_showFrames->isChecked());
3174 settings.setValue(
"showLandmarks",
_ui->checkBox_showLandmarks->isChecked());
3175 settings.setValue(
"landmarkSize",
_ui->doubleSpinBox_landmarkSize->value());
3176 settings.setValue(
"showIMUGravity",
_ui->checkBox_showIMUGravity->isChecked());
3177 settings.setValue(
"showIMUAcc",
_ui->checkBox_showIMUAcc->isChecked());
3180 settings.setValue(
"noFiltering",
_ui->radioButton_noFiltering->isChecked());
3181 settings.setValue(
"cloudFiltering",
_ui->radioButton_nodeFiltering->isChecked());
3182 settings.setValue(
"cloudFilteringRadius",
_ui->doubleSpinBox_cloudFilterRadius->value());
3183 settings.setValue(
"cloudFilteringAngle",
_ui->doubleSpinBox_cloudFilterAngle->value());
3184 settings.setValue(
"subtractFiltering",
_ui->radioButton_subtractFiltering->isChecked());
3185 settings.setValue(
"subtractFilteringMinPts",
_ui->spinBox_subtractFilteringMinPts->value());
3186 settings.setValue(
"subtractFilteringRadius",
_ui->doubleSpinBox_subtractFilteringRadius->value());
3187 settings.setValue(
"subtractFilteringAngle",
_ui->doubleSpinBox_subtractFilteringAngle->value());
3189 settings.setValue(
"gridUIResolution",
_ui->doubleSpinBox_map_resolution->value());
3190 settings.setValue(
"gridMapShown",
_ui->checkBox_map_shown->isChecked());
3191 settings.setValue(
"gridMapOpacity",
_ui->doubleSpinBox_map_opacity->value());
3192 settings.setValue(
"elevationMapShown",
_ui->checkBox_elevation_shown->checkState());
3195 settings.setValue(
"octomap",
_ui->groupBox_octomap->isChecked());
3196 settings.setValue(
"octomap_depth",
_ui->spinBox_octomap_treeDepth->value());
3197 settings.setValue(
"octomap_2dgrid",
_ui->checkBox_octomap_2dgrid->isChecked());
3198 settings.setValue(
"octomap_3dmap",
_ui->checkBox_octomap_show3dMap->isChecked());
3199 settings.setValue(
"octomap_rendering_type",
_ui->comboBox_octomap_renderingType->currentIndex());
3200 settings.setValue(
"octomap_point_size",
_ui->spinBox_octomap_pointSize->value());
3203 settings.setValue(
"meshing",
_ui->groupBox_organized->isChecked());
3204 settings.setValue(
"meshing_angle",
_ui->doubleSpinBox_mesh_angleTolerance->value());
3205 settings.setValue(
"meshing_quad",
_ui->checkBox_mesh_quad->isChecked());
3206 settings.setValue(
"meshing_texture",
_ui->checkBox_mesh_texture->isChecked());
3207 settings.setValue(
"meshing_triangle_size",
_ui->spinBox_mesh_triangleSize->value());
3209 settings.endGroup();
3211 settings.endGroup();
3217 if(!filePath.isEmpty())
3221 QSettings settings(
path, QSettings::IniFormat);
3223 settings.beginGroup(
"Camera");
3224 settings.remove(
"");
3225 settings.setValue(
"imgRate",
_ui->general_doubleSpinBox_imgRate->value());
3226 settings.setValue(
"mirroring",
_ui->source_mirroring->isChecked());
3227 settings.setValue(
"calibrationName",
_ui->lineEdit_calibrationFile->text());
3228 settings.setValue(
"type",
_ui->comboBox_sourceType->currentIndex());
3229 settings.setValue(
"device",
_ui->lineEdit_sourceDevice->text());
3230 settings.setValue(
"localTransform",
_ui->lineEdit_sourceLocalTransform->text());
3231 settings.setValue(
"imageDecimation",
_ui->spinBox_source_imageDecimation->value());
3232 settings.setValue(
"histogramMethod",
_ui->comboBox_source_histogramMethod->currentIndex());
3233 settings.setValue(
"featureDetection",
_ui->checkbox_source_feature_detection->isChecked());
3235 settings.beginGroup(
"rgbd");
3236 settings.setValue(
"driver",
_ui->comboBox_cameraRGBD->currentIndex());
3237 settings.setValue(
"rgbdColorOnly",
_ui->checkbox_rgbd_colorOnly->isChecked());
3238 settings.setValue(
"distortion_model",
_ui->lineEdit_source_distortionModel->text());
3239 settings.setValue(
"bilateral",
_ui->groupBox_bilateral->isChecked());
3240 settings.setValue(
"bilateral_sigma_s",
_ui->doubleSpinBox_bilateral_sigmaS->value());
3241 settings.setValue(
"bilateral_sigma_r",
_ui->doubleSpinBox_bilateral_sigmaR->value());
3242 settings.endGroup();
3244 settings.beginGroup(
"stereo");
3245 settings.setValue(
"driver",
_ui->comboBox_cameraStereo->currentIndex());
3246 settings.setValue(
"depthGenerated",
_ui->checkbox_stereo_depthGenerated->isChecked());
3247 settings.setValue(
"exposureCompensation",
_ui->checkBox_stereo_exposureCompensation->isChecked());
3248 settings.endGroup();
3250 settings.beginGroup(
"rgb");
3251 settings.setValue(
"driver",
_ui->source_comboBox_image_type->currentIndex());
3252 settings.setValue(
"rectify",
_ui->checkBox_rgb_rectify->isChecked());
3253 settings.endGroup();
3255 settings.beginGroup(
"Openni");
3256 settings.setValue(
"oniPath",
_ui->lineEdit_openniOniPath->text());
3257 settings.endGroup();
3259 settings.beginGroup(
"Openni2");
3260 settings.setValue(
"autoWhiteBalance",
_ui->openni2_autoWhiteBalance->isChecked());
3261 settings.setValue(
"autoExposure",
_ui->openni2_autoExposure->isChecked());
3262 settings.setValue(
"exposure",
_ui->openni2_exposure->value());
3263 settings.setValue(
"gain",
_ui->openni2_gain->value());
3264 settings.setValue(
"mirroring",
_ui->openni2_mirroring->isChecked());
3265 settings.setValue(
"stampsIdsUsed",
_ui->openni2_stampsIdsUsed->isChecked());
3266 settings.setValue(
"oniPath",
_ui->lineEdit_openni2OniPath->text());
3267 settings.setValue(
"hshift",
_ui->openni2_hshift->value());
3268 settings.setValue(
"vshift",
_ui->openni2_vshift->value());
3269 settings.setValue(
"depthDecimation",
_ui->openni2_depth_decimation->value());
3270 settings.endGroup();
3272 settings.beginGroup(
"Freenect2");
3273 settings.setValue(
"format",
_ui->comboBox_freenect2Format->currentIndex());
3274 settings.setValue(
"minDepth",
_ui->doubleSpinBox_freenect2MinDepth->value());
3275 settings.setValue(
"maxDepth",
_ui->doubleSpinBox_freenect2MaxDepth->value());
3276 settings.setValue(
"bilateralFiltering",
_ui->checkBox_freenect2BilateralFiltering->isChecked());
3277 settings.setValue(
"edgeAwareFiltering",
_ui->checkBox_freenect2EdgeAwareFiltering->isChecked());
3278 settings.setValue(
"noiseFiltering",
_ui->checkBox_freenect2NoiseFiltering->isChecked());
3279 settings.setValue(
"pipeline",
_ui->lineEdit_freenect2Pipeline->text());
3280 settings.endGroup();
3282 settings.beginGroup(
"K4W2");
3283 settings.setValue(
"format",
_ui->comboBox_k4w2Format->currentIndex());
3284 settings.endGroup();
3286 settings.beginGroup(
"K4A");
3287 settings.setValue(
"rgb_resolution",
_ui->comboBox_k4a_rgb_resolution->currentIndex());
3288 settings.setValue(
"framerate",
_ui->comboBox_k4a_framerate->currentIndex());
3289 settings.setValue(
"depth_resolution",
_ui->comboBox_k4a_depth_resolution->currentIndex());
3290 settings.setValue(
"ir",
_ui->checkbox_k4a_irDepth->isChecked());
3291 settings.setValue(
"mkvPath",
_ui->lineEdit_k4a_mkv->text());
3292 settings.setValue(
"useMkvStamps",
_ui->source_checkBox_useMKVStamps->isChecked());
3293 settings.endGroup();
3295 settings.beginGroup(
"RealSense");
3296 settings.setValue(
"presetRGB",
_ui->comboBox_realsensePresetRGB->currentIndex());
3297 settings.setValue(
"presetDepth",
_ui->comboBox_realsensePresetDepth->currentIndex());
3298 settings.setValue(
"odom",
_ui->checkbox_realsenseOdom->isChecked());
3299 settings.setValue(
"depthScaled",
_ui->checkbox_realsenseDepthScaledToRGBSize->isChecked());
3300 settings.setValue(
"rgbSource",
_ui->comboBox_realsenseRGBSource->currentIndex());
3301 settings.endGroup();
3303 settings.beginGroup(
"RealSense2");
3304 settings.setValue(
"emitter",
_ui->checkbox_rs2_emitter->isChecked());
3305 settings.setValue(
"ir",
_ui->checkbox_rs2_irMode->isChecked());
3306 settings.setValue(
"irdepth",
_ui->checkbox_rs2_irDepth->isChecked());
3307 settings.setValue(
"width",
_ui->spinBox_rs2_width->value());
3308 settings.setValue(
"height",
_ui->spinBox_rs2_height->value());
3309 settings.setValue(
"rate",
_ui->spinBox_rs2_rate->value());
3310 settings.setValue(
"width_depth",
_ui->spinBox_rs2_width_depth->value());
3311 settings.setValue(
"height_depth",
_ui->spinBox_rs2_height_depth->value());
3312 settings.setValue(
"rate_depth",
_ui->spinBox_rs2_rate_depth->value());
3313 settings.setValue(
"global_time_sync",
_ui->checkbox_rs2_globalTimeStync->isChecked());
3314 settings.setValue(
"json_preset",
_ui->lineEdit_rs2_jsonFile->text());
3315 settings.endGroup();
3317 settings.beginGroup(
"RGBDImages");
3318 settings.setValue(
"path_rgb",
_ui->lineEdit_cameraRGBDImages_path_rgb->text());
3319 settings.setValue(
"path_depth",
_ui->lineEdit_cameraRGBDImages_path_depth->text());
3320 settings.setValue(
"scale",
_ui->doubleSpinBox_cameraRGBDImages_scale->value());
3321 settings.setValue(
"start_index",
_ui->spinBox_cameraRGBDImages_startIndex->value());
3322 settings.setValue(
"max_frames",
_ui->spinBox_cameraRGBDImages_maxFrames->value());
3323 settings.endGroup();
3325 settings.beginGroup(
"StereoImages");
3326 settings.setValue(
"path_left",
_ui->lineEdit_cameraStereoImages_path_left->text());
3327 settings.setValue(
"path_right",
_ui->lineEdit_cameraStereoImages_path_right->text());
3328 settings.setValue(
"rectify",
_ui->checkBox_stereo_rectify->isChecked());
3329 settings.setValue(
"start_index",
_ui->spinBox_cameraStereoImages_startIndex->value());
3330 settings.setValue(
"max_frames",
_ui->spinBox_cameraStereoImages_maxFrames->value());
3331 settings.endGroup();
3333 settings.beginGroup(
"StereoVideo");
3334 settings.setValue(
"path",
_ui->lineEdit_cameraStereoVideo_path->text());
3335 settings.setValue(
"path2",
_ui->lineEdit_cameraStereoVideo_path_2->text());
3336 settings.setValue(
"device2",
_ui->spinBox_stereo_right_device->value());
3337 settings.setValue(
"width",
_ui->spinBox_stereousbcam_streamWidth->value());
3338 settings.setValue(
"height",
_ui->spinBox_stereousbcam_streamHeight->value());
3339 settings.setValue(
"fourcc",
_ui->lineEdit_stereousbcam_fourcc->text());
3340 settings.endGroup();
3342 settings.beginGroup(
"StereoZed");
3343 settings.setValue(
"resolution",
_ui->comboBox_stereoZed_resolution->currentIndex());
3344 settings.setValue(
"quality",
_ui->comboBox_stereoZed_quality->currentIndex());
3345 settings.setValue(
"self_calibration",
_ui->checkbox_stereoZed_selfCalibration->isChecked());
3346 settings.setValue(
"sensing_mode",
_ui->comboBox_stereoZed_sensingMode->currentIndex());
3347 settings.setValue(
"confidence_thr",
_ui->spinBox_stereoZed_confidenceThr->value());
3348 settings.setValue(
"textureness_confidence_thr",
_ui->spinBox_stereoZed_texturenessConfidenceThr->value());
3349 settings.setValue(
"svo_path",
_ui->lineEdit_zedSvoPath->text());
3350 settings.endGroup();
3352 settings.beginGroup(
"MyntEye");
3353 settings.setValue(
"rectify",
_ui->checkbox_stereoMyntEye_rectify->isChecked());
3354 settings.setValue(
"depth",
_ui->checkbox_stereoMyntEye_depth->isChecked());
3355 settings.setValue(
"auto_exposure",
_ui->checkbox_stereoMyntEye_autoExposure->isChecked());
3356 settings.setValue(
"gain",
_ui->spinBox_stereoMyntEye_gain->value());
3357 settings.setValue(
"brightness",
_ui->spinBox_stereoMyntEye_brightness->value());
3358 settings.setValue(
"contrast",
_ui->spinBox_stereoMyntEye_contrast->value());
3359 settings.setValue(
"ir_control",
_ui->spinBox_stereoMyntEye_irControl->value());
3360 settings.endGroup();
3362 settings.beginGroup(
"DepthAI");
3363 settings.setValue(
"resolution",
_ui->comboBox_depthai_resolution->currentIndex());
3364 settings.setValue(
"output_mode",
_ui->comboBox_depthai_output_mode->currentIndex());
3365 settings.setValue(
"conf_threshold",
_ui->spinBox_depthai_conf_threshold->value());
3366 settings.setValue(
"lrc_threshold",
_ui->spinBox_depthai_lrc_threshold->value());
3367 settings.setValue(
"extended_disparity",
_ui->checkBox_depthai_extended_disparity->isChecked());
3368 settings.setValue(
"subpixel_fractional_bits",
_ui->comboBox_depthai_subpixel_fractional_bits->currentIndex());
3369 settings.setValue(
"companding",
_ui->comboBox_depthai_disparity_companding->currentIndex());
3370 settings.setValue(
"use_spec_translation",
_ui->checkBox_depthai_use_spec_translation->isChecked());
3371 settings.setValue(
"alpha_scaling",
_ui->doubleSpinBox_depthai_alpha_scaling->value());
3372 settings.setValue(
"imu_published",
_ui->checkBox_depthai_imu_published->isChecked());
3373 settings.setValue(
"dot_intensity",
_ui->doubleSpinBox_depthai_dot_intensity->value());
3374 settings.setValue(
"flood_intensity",
_ui->doubleSpinBox_depthai_flood_intensity->value());
3375 settings.setValue(
"detect_features",
_ui->comboBox_depthai_detect_features->currentIndex());
3376 settings.setValue(
"blob_path",
_ui->lineEdit_depthai_blob_path->text());
3377 settings.endGroup();
3379 settings.beginGroup(
"Images");
3380 settings.setValue(
"path",
_ui->source_images_lineEdit_path->text());
3381 settings.setValue(
"startPos",
_ui->source_images_spinBox_startPos->value());
3382 settings.setValue(
"maxFrames",
_ui->source_images_spinBox_maxFrames->value());
3383 settings.setValue(
"bayerMode",
_ui->comboBox_cameraImages_bayerMode->currentIndex());
3384 settings.setValue(
"config_each_frame",
_ui->checkBox_cameraImages_configForEachFrame->isChecked());
3385 settings.setValue(
"filenames_as_stamps",
_ui->checkBox_cameraImages_timestamps->isChecked());
3386 settings.setValue(
"sync_stamps",
_ui->checkBox_cameraImages_syncTimeStamps->isChecked());
3387 settings.setValue(
"stamps",
_ui->lineEdit_cameraImages_timestamps->text());
3388 settings.setValue(
"path_scans",
_ui->lineEdit_cameraImages_path_scans->text());
3389 settings.setValue(
"scan_transform",
_ui->lineEdit_cameraImages_laser_transform->text());
3390 settings.setValue(
"scan_max_pts",
_ui->spinBox_cameraImages_max_scan_pts->value());
3391 settings.setValue(
"odom_path",
_ui->lineEdit_cameraImages_odom->text());
3392 settings.setValue(
"odom_format",
_ui->comboBox_cameraImages_odomFormat->currentIndex());
3393 settings.setValue(
"gt_path",
_ui->lineEdit_cameraImages_gt->text());
3394 settings.setValue(
"gt_format",
_ui->comboBox_cameraImages_gtFormat->currentIndex());
3395 settings.setValue(
"max_pose_time_diff",
_ui->doubleSpinBox_maxPoseTimeDiff->value());
3396 settings.setValue(
"imu_path",
_ui->lineEdit_cameraImages_path_imu->text());
3397 settings.setValue(
"imu_local_transform",
_ui->lineEdit_cameraImages_imu_transform->text());
3398 settings.setValue(
"imu_rate",
_ui->spinBox_cameraImages_max_imu_rate->value());
3399 settings.endGroup();
3401 settings.beginGroup(
"OdomSensor");
3402 settings.setValue(
"odom_sensor",
_ui->comboBox_odom_sensor->currentIndex());
3403 settings.setValue(
"odom_sensor_extrinsics",
_ui->lineEdit_odom_sensor_extrinsics->text());
3404 settings.setValue(
"odom_sensor_calibration_path",
_ui->lineEdit_odom_sensor_path_calibration->text());
3405 settings.setValue(
"odom_sensor_device",
_ui->lineEdit_odomSourceDevice->text());
3406 settings.setValue(
"odom_sensor_offset_time",
_ui->doubleSpinBox_odom_sensor_time_offset->value());
3407 settings.setValue(
"odom_sensor_scale_factor",
_ui->doubleSpinBox_odom_sensor_scale_factor->value());
3408 settings.setValue(
"odom_sensor_wait_time",
_ui->doubleSpinBox_odom_sensor_wait_time->value());
3409 settings.setValue(
"odom_sensor_odom_as_gt",
_ui->checkBox_odom_sensor_use_as_gt->isChecked());
3410 settings.endGroup();
3412 settings.beginGroup(
"UsbCam");
3413 settings.setValue(
"width",
_ui->spinBox_usbcam_streamWidth->value());
3414 settings.setValue(
"height",
_ui->spinBox_usbcam_streamHeight->value());
3415 settings.setValue(
"fourcc",
_ui->lineEdit_usbcam_fourcc->text());
3416 settings.endGroup();
3418 settings.beginGroup(
"Video");
3419 settings.setValue(
"path",
_ui->source_video_lineEdit_path->text());
3420 settings.endGroup();
3422 settings.beginGroup(
"IMU");
3423 settings.setValue(
"strategy",
_ui->comboBox_imuFilter_strategy->currentIndex());
3424 settings.setValue(
"madgwick_gain",
_ui->doubleSpinBox_imuFilterMadgwickGain->value());
3425 settings.setValue(
"madgwick_zeta",
_ui->doubleSpinBox_imuFilterMadgwickZeta->value());
3426 settings.setValue(
"complementary_gain_acc",
_ui->doubleSpinBox_imuFilterComplementaryGainAcc->value());
3427 settings.setValue(
"complementary_bias_alpha",
_ui->doubleSpinBox_imuFilterComplementaryBiasAlpha->value());
3428 settings.setValue(
"complementary_adaptive_gain",
_ui->checkBox_imuFilterComplementaryDoAdaptiveGain->isChecked());
3429 settings.setValue(
"complementary_biais_estimation",
_ui->checkBox_imuFilterComplementaryDoBiasEstimation->isChecked());
3430 settings.setValue(
"base_frame_conversion",
_ui->checkBox_imuFilter_baseFrameConversion->isChecked());
3431 settings.setValue(
"publish_inter_imu",
_ui->checkbox_publishInterIMU->isChecked());
3432 settings.endGroup();
3434 settings.beginGroup(
"Scan");
3435 settings.setValue(
"source",
_ui->comboBox_lidar_src->currentIndex());
3436 settings.setValue(
"deskewing",
_ui->checkBox_source_scanDeskewing->isChecked());
3437 settings.setValue(
"fromDepth",
_ui->checkBox_source_scanFromDepth->isChecked());
3438 settings.setValue(
"downsampleStep",
_ui->spinBox_source_scanDownsampleStep->value());
3439 settings.setValue(
"rangeMin",
_ui->doubleSpinBox_source_scanRangeMin->value());
3440 settings.setValue(
"rangeMax",
_ui->doubleSpinBox_source_scanRangeMax->value());
3441 settings.setValue(
"voxelSize",
_ui->doubleSpinBox_source_scanVoxelSize->value());
3442 settings.setValue(
"normalsK",
_ui->spinBox_source_scanNormalsK->value());
3443 settings.setValue(
"normalsRadius",
_ui->doubleSpinBox_source_scanNormalsRadius->value());
3444 settings.setValue(
"normalsUpF",
_ui->doubleSpinBox_source_scanNormalsForceGroundUp->value());
3445 settings.endGroup();
3447 settings.beginGroup(
"DepthFromScan");
3448 settings.setValue(
"depthFromScan",
_ui->groupBox_depthFromScan->isChecked());
3449 settings.setValue(
"depthFromScanFillHoles",
_ui->groupBox_depthFromScan_fillHoles->isChecked());
3450 settings.setValue(
"depthFromScanVertical",
_ui->radioButton_depthFromScan_vertical->isChecked());
3451 settings.setValue(
"depthFromScanHorizontal",
_ui->radioButton_depthFromScan_horizontal->isChecked());
3452 settings.setValue(
"depthFromScanFillBorders",
_ui->checkBox_depthFromScan_fillBorders->isChecked());
3453 settings.endGroup();
3455 settings.beginGroup(
"Database");
3456 settings.setValue(
"path",
_ui->source_database_lineEdit_path->text());
3457 settings.setValue(
"ignoreOdometry",
_ui->source_checkBox_ignoreOdometry->isChecked());
3458 settings.setValue(
"ignoreGoalDelay",
_ui->source_checkBox_ignoreGoalDelay->isChecked());
3459 settings.setValue(
"ignoreGoals",
_ui->source_checkBox_ignoreGoals->isChecked());
3460 settings.setValue(
"ignoreLandmarks",
_ui->source_checkBox_ignoreLandmarks->isChecked());
3461 settings.setValue(
"ignoreFeatures",
_ui->source_checkBox_ignoreFeatures->isChecked());
3462 settings.setValue(
"ignorePriors",
_ui->source_checkBox_ignorePriors->isChecked());
3463 settings.setValue(
"startId",
_ui->source_spinBox_databaseStartId->value());
3464 settings.setValue(
"stopId",
_ui->source_spinBox_databaseStopId->value());
3465 settings.setValue(
"cameraIndex",
_ui->source_spinBox_database_cameraIndex->value());
3466 settings.setValue(
"useDatabaseStamps",
_ui->source_checkBox_useDbStamps->isChecked());
3467 settings.endGroup();
3469 settings.endGroup();
3471 settings.beginGroup(
"Lidar");
3473 settings.beginGroup(
"VLP16");
3474 settings.setValue(
"localTransform",
_ui->lineEdit_lidar_local_transform->text());
3475 settings.setValue(
"pcapPath",
_ui->lineEdit_vlp16_pcap_path->text());
3476 settings.setValue(
"ip1",
_ui->spinBox_vlp16_ip1->value());
3477 settings.setValue(
"ip2",
_ui->spinBox_vlp16_ip2->value());
3478 settings.setValue(
"ip3",
_ui->spinBox_vlp16_ip3->value());
3479 settings.setValue(
"ip4",
_ui->spinBox_vlp16_ip4->value());
3480 settings.setValue(
"port",
_ui->spinBox_vlp16_port->value());
3481 settings.setValue(
"organized",
_ui->checkBox_vlp16_organized->isChecked());
3482 settings.setValue(
"hostTime",
_ui->checkBox_vlp16_hostTime->isChecked());
3483 settings.setValue(
"stampLast",
_ui->checkBox_vlp16_stamp_last->isChecked());
3484 settings.endGroup();
3486 settings.endGroup();
3494 if(!filePath.isEmpty())
3504 #if CV_MAJOR_VERSION < 3 || (CV_MAJOR_VERSION == 4 && CV_MINOR_VERSION <= 3) || (CV_MAJOR_VERSION == 3 && (CV_MINOR_VERSION < 4 || (CV_MINOR_VERSION==4 && CV_SUBMINOR_VERSION<11)))
3505 #ifndef RTABMAP_NONFREE
3508 if(
_ui->comboBox_detector_strategy->currentIndex() <= 1 ||
_ui->comboBox_detector_strategy->currentIndex() == 12)
3510 QMessageBox::warning(
this, tr(
"Parameter warning"),
3511 tr(
"Selected feature type (SURF/SIFT) is not available. RTAB-Map is not built "
3512 "with the nonfree module from OpenCV. ORB is set instead for the bag-of-words dictionary."));
3516 if(
_ui->vis_feature_detector->currentIndex() <= 1 ||
_ui->vis_feature_detector->currentIndex() == 12)
3518 QMessageBox::warning(
this, tr(
"Parameter warning"),
3519 tr(
"Selected feature type (SURF/SIFT) is not available. RTAB-Map is not built "
3520 "with the nonfree module from OpenCV. Fast/Brief is set instead for the re-extraction "
3521 "of features on loop closure."));
3525 #else //>= 4.4.0 >= 3.4.11
3526 #ifndef RTABMAP_NONFREE
3529 if(
_ui->comboBox_detector_strategy->currentIndex() < 1 ||
_ui->comboBox_detector_strategy->currentIndex() == 12)
3531 QMessageBox::warning(
this, tr(
"Parameter warning"),
3532 tr(
"Selected feature type (SURF) is not available. RTAB-Map is not built "
3533 "with the nonfree module from OpenCV. SIFT is set instead for the bag-of-words dictionary."));
3537 if(
_ui->vis_feature_detector->currentIndex() < 1 ||
_ui->vis_feature_detector->currentIndex() == 12)
3539 QMessageBox::warning(
this, tr(
"Parameter warning"),
3540 tr(
"Selected feature type (SURF) is not available. RTAB-Map is not built "
3541 "with the nonfree module from OpenCV. Fast/Brief is set instead for the re-extraction "
3542 "of features on loop closure."));
3548 #if CV_MAJOR_VERSION < 3
3551 #ifdef RTABMAP_NONFREE
3552 QMessageBox::warning(
this, tr(
"Parameter warning"),
3553 tr(
"Selected feature type (KAZE) is not available on OpenCV2. SURF is set instead "
3554 "for the bag-of-words dictionary."));
3557 QMessageBox::warning(
this, tr(
"Parameter warning"),
3558 tr(
"Selected feature type (KAZE) is not available on OpenCV2. ORB is set instead "
3559 "for the bag-of-words dictionary."));
3565 #ifdef RTABMAP_NONFREE
3566 QMessageBox::warning(
this, tr(
"Parameter warning"),
3567 tr(
"Selected feature type (KAZE) is not available on OpenCV2. SURF is set instead "
3568 "for the re-extraction of features on loop closure."));
3571 QMessageBox::warning(
this, tr(
"Parameter warning"),
3572 tr(
"Selected feature type (KAZE) is not available on OpenCV2. ORB is set instead "
3573 "for the re-extraction of features on loop closure."));
3579 #ifndef RTABMAP_ORB_OCTREE
3582 QMessageBox::warning(
this, tr(
"Parameter warning"),
3583 tr(
"Selected feature type (ORB Octree) is not available. ORB is set instead "
3584 "for the bag-of-words dictionary."));
3589 QMessageBox::warning(
this, tr(
"Parameter warning"),
3590 tr(
"Selected feature type (ORB Octree) is not available on OpenCV2. ORB is set instead "
3591 "for the re-extraction of features on loop closure."));
3601 QMessageBox::warning(
this, tr(
"Parameter warning"),
3602 tr(
"Selected graph optimization strategy (TORO) is not available. RTAB-Map is not built "
3603 "with TORO. GTSAM is set instead for graph optimization strategy."));
3606 #ifndef RTABMAP_ORB_SLAM
3609 QMessageBox::warning(
this, tr(
"Parameter warning"),
3610 tr(
"Selected graph optimization strategy (TORO) is not available. RTAB-Map is not built "
3611 "with TORO. g2o is set instead for graph optimization strategy."));
3616 #ifdef RTABMAP_ORB_SLAM
3617 if(
_ui->graphOptimization_type->currentIndex() == 1)
3624 QMessageBox::warning(
this, tr(
"Parameter warning"),
3625 tr(
"Selected graph optimization strategy (g2o) is not available. RTAB-Map is not built "
3626 "with g2o. GTSAM is set instead for graph optimization strategy."));
3631 QMessageBox::warning(
this, tr(
"Parameter warning"),
3632 tr(
"Selected graph optimization strategy (g2o) is not available. RTAB-Map is not built "
3633 "with g2o. TORO is set instead for graph optimization strategy."));
3639 #ifndef RTABMAP_ORB_SLAM
3642 QMessageBox::warning(
this, tr(
"Parameter warning"),
3643 tr(
"Selected graph optimization strategy (GTSAM) is not available. RTAB-Map is not built "
3644 "with GTSAM. g2o is set instead for graph optimization strategy."));
3651 QMessageBox::warning(
this, tr(
"Parameter warning"),
3652 tr(
"Selected graph optimization strategy (GTSAM) is not available. RTAB-Map is not built "
3653 "with GTSAM. TORO is set instead for graph optimization strategy."));
3661 QMessageBox::warning(
this, tr(
"Parameter warning"),
3662 tr(
"Selected visual registration bundle adjustment optimization strategy (g2o) is not available. RTAB-Map is not built "
3663 "with g2o. Bundle adjustment is disabled."));
3664 _ui->loopClosure_bundle->setCurrentIndex(0);
3668 QMessageBox::warning(
this, tr(
"Parameter warning"),
3669 tr(
"Selected visual registration bundle adjustment optimization strategy (cvsba) is not available. RTAB-Map is not built "
3670 "with cvsba. Bundle adjustment is disabled."));
3671 _ui->loopClosure_bundle->setCurrentIndex(0);
3675 QMessageBox::warning(
this, tr(
"Parameter warning"),
3676 tr(
"Selected visual registration bundle adjustment optimization strategy (Ceres) is not available. RTAB-Map is not built "
3677 "with cERES. Bundle adjustment is disabled."));
3678 _ui->loopClosure_bundle->setCurrentIndex(0);
3684 QMessageBox::warning(
this, tr(
"Parameter warning"),
3685 tr(
"Selected odometry local bundle adjustment optimization strategy (g2o) is not available. RTAB-Map is not built "
3686 "with g2o. Bundle adjustment is disabled."));
3687 _ui->odom_f2m_bundleStrategy->setCurrentIndex(0);
3691 QMessageBox::warning(
this, tr(
"Parameter warning"),
3692 tr(
"Selected odometry local bundle adjustment optimization strategy (cvsba) is not available. RTAB-Map is not built "
3693 "with cvsba. Bundle adjustment is disabled."));
3694 _ui->odom_f2m_bundleStrategy->setCurrentIndex(0);
3698 QMessageBox::warning(
this, tr(
"Parameter warning"),
3699 tr(
"Selected odometry local bundle adjustment optimization strategy (Ceres) is not available. RTAB-Map is not built "
3700 "with Ceres. Bundle adjustment is disabled."));
3701 _ui->odom_f2m_bundleStrategy->setCurrentIndex(0);
3705 if(
_ui->graphOptimization_robust->isChecked() &&
_ui->graphOptimization_maxError->value()>0.0)
3707 QMessageBox::warning(
this, tr(
"Parameter warning"),
3708 tr(
"Robust graph optimization and maximum optimization error threshold cannot be "
3709 "both used at the same time. Disabling robust optimization."));
3710 _ui->graphOptimization_robust->setChecked(
false);
3717 QMessageBox::warning(
this, tr(
"Parameter warning"),
3718 tr(
"With the selected feature type (SURF or SIFT), parameter \"Visual word->Nearest Neighbor\" "
3719 "cannot be LSH (used for binary descriptor). KD-tree is set instead for the bag-of-words dictionary."));
3726 QMessageBox::warning(
this, tr(
"Parameter warning"),
3727 tr(
"With the selected feature type (SURF or SIFT), parameter \"Visual word->Nearest Neighbor\" "
3728 "cannot be LSH (used for binary descriptor). KD-tree is set instead for the re-extraction "
3729 "of features on loop closure."));
3733 if(
_ui->doubleSpinBox_freenect2MinDepth->value() >=
_ui->doubleSpinBox_freenect2MaxDepth->value())
3735 QMessageBox::warning(
this, tr(
"Parameter warning"),
3736 tr(
"Freenect2 minimum depth (%1 m) should be lower than maximum depth (%2 m). Setting maximum depth to %3 m.")
3737 .
arg(
_ui->doubleSpinBox_freenect2MinDepth->value())
3738 .
arg(
_ui->doubleSpinBox_freenect2MaxDepth->value())
3739 .arg(
_ui->doubleSpinBox_freenect2MaxDepth->value()+1));
3740 _ui->doubleSpinBox_freenect2MaxDepth->setValue(
_ui->doubleSpinBox_freenect2MaxDepth->value()+1);
3743 if(
_ui->surf_doubleSpinBox_maxDepth->value() > 0.0 &&
3744 _ui->surf_doubleSpinBox_minDepth->value() >=
_ui->surf_doubleSpinBox_maxDepth->value())
3746 QMessageBox::warning(
this, tr(
"Parameter warning"),
3747 tr(
"Visual word minimum depth (%1 m) should be lower than maximum depth (%2 m). Setting maximum depth to %3 m.")
3748 .
arg(
_ui->surf_doubleSpinBox_minDepth->value())
3749 .
arg(
_ui->surf_doubleSpinBox_maxDepth->value())
3750 .arg(
_ui->surf_doubleSpinBox_maxDepth->value()+1));
3751 _ui->doubleSpinBox_freenect2MinDepth->setValue(0);
3754 if(
_ui->loopClosure_bowMaxDepth->value() > 0.0 &&
3755 _ui->loopClosure_bowMinDepth->value() >=
_ui->loopClosure_bowMaxDepth->value())
3757 QMessageBox::warning(
this, tr(
"Parameter warning"),
3758 tr(
"Visual registration word minimum depth (%1 m) should be lower than maximum depth (%2 m). Setting maximum depth to %3 m.")
3759 .
arg(
_ui->loopClosure_bowMinDepth->value())
3760 .
arg(
_ui->loopClosure_bowMaxDepth->value())
3761 .arg(
_ui->loopClosure_bowMaxDepth->value()+1));
3762 _ui->loopClosure_bowMinDepth->setValue(0);
3765 if(
_ui->fastThresholdMax->value() <
_ui->fastThresholdMin->value())
3767 QMessageBox::warning(
this, tr(
"Parameter warning"),
3768 tr(
"FAST minimum threshold cannot be lower than maximum threshold. Setting minimum to 1."));
3769 _ui->fastThresholdMin->setValue(1);
3771 if(
_ui->fastThreshold->value() >
_ui->fastThresholdMax->value())
3773 QMessageBox::warning(
this, tr(
"Parameter warning"),
3774 tr(
"FAST threshold cannot be higher than maximum threshold. Maximum value set to current threshold."));
3775 _ui->fastThresholdMax->setValue(
_ui->fastThreshold->value());
3777 if(
_ui->fastThreshold->value() <
_ui->fastThresholdMin->value())
3779 QMessageBox::warning(
this, tr(
"Parameter warning"),
3780 tr(
"FAST threshold cannot be lower than minimum threshold. Minimum value set to current threshold."));
3781 _ui->fastThresholdMin->setValue(
_ui->fastThreshold->value());
3784 if(
_ui->checkbox_odomDisabled->isChecked() &&
3785 _ui->general_checkBox_SLAM_mode->isChecked() &&
3786 _ui->general_checkBox_activateRGBD->isChecked())
3788 QMessageBox::warning(
this, tr(
"Parameter warning"),
3789 tr(
"Odometry is disabled but incremental RGB-D SLAM is activated! Re-enabling odometry."));
3790 _ui->checkbox_odomDisabled->setChecked(
false);
3793 #if CV_MAJOR_VERSION < 3 || (CV_MAJOR_VERSION == 3 && (CV_MINOR_VERSION <4 || (CV_MINOR_VERSION ==4 && CV_SUBMINOR_VERSION<2)))
3794 if(
_ui->ArucoDictionary->currentIndex()>=17)
3796 QMessageBox::warning(
this, tr(
"Parameter warning"),
3797 tr(
"ArUco dictionary: cannot select AprilTag dictionary, OpenCV version should be at least 3.4.2. Setting back to 0."));
3798 _ui->ArucoDictionary->setCurrentIndex(0);
3807 return tr(
"Reading parameters from the configuration file...");
3815 _ui->lineEdit_dictionaryPath->setEnabled(
false);
3816 _ui->toolButton_dictionaryPath->setEnabled(
false);
3817 _ui->label_dictionaryPath->setEnabled(
false);
3819 _ui->groupBox_source0->setEnabled(
false);
3820 _ui->groupBox_odometry1->setEnabled(
false);
3822 this->setWindowTitle(tr(
"Preferences [Monitoring mode]"));
3826 _ui->lineEdit_dictionaryPath->setEnabled(
true);
3827 _ui->toolButton_dictionaryPath->setEnabled(
true);
3828 _ui->label_dictionaryPath->setEnabled(
true);
3830 _ui->groupBox_source0->setEnabled(
true);
3831 _ui->groupBox_odometry1->setEnabled(
true);
3833 this->setWindowTitle(tr(
"Preferences"));
3839 std::set<std::string> threadsCheckedSet(threadsChecked.begin(), threadsChecked.end());
3840 _ui->comboBox_loggerFilter->clear();
3841 for(std::map<std::string, unsigned long>::iterator
iter=threads.begin();
iter!=threads.end(); ++
iter)
3843 if(threadsCheckedSet.find(
iter->first.c_str()) != threadsCheckedSet.end())
3845 _ui->comboBox_loggerFilter->addItem(QString(
iter->first.c_str()), QVariant(
true));
3849 _ui->comboBox_loggerFilter->addItem(QString(
iter->first.c_str()), QVariant(
false));
3867 QApplication::processEvents();
3872 if(this->isVisible())
3885 if(!window->objectName().isEmpty() && !window->isMaximized())
3888 settings.beginGroup(
"Gui");
3889 settings.beginGroup(window->objectName());
3890 settings.setValue(
"geometry", window->saveGeometry());
3891 settings.endGroup();
3892 settings.endGroup();
3895 settingsTmp.beginGroup(
"Gui");
3896 settingsTmp.beginGroup(window->objectName());
3897 settingsTmp.setValue(
"geometry", window->saveGeometry());
3898 settingsTmp.endGroup();
3899 settingsTmp.endGroup();
3905 if(!window->objectName().isEmpty())
3909 settings.beginGroup(
"Gui");
3910 settings.beginGroup(window->objectName());
3911 bytes = settings.value(
"geometry", QByteArray()).toByteArray();
3912 if(!
bytes.isEmpty())
3914 window->restoreGeometry(
bytes);
3916 settings.endGroup();
3917 settings.endGroup();
3920 settingsTmp.beginGroup(
"Gui");
3921 settingsTmp.beginGroup(window->objectName());
3922 settingsTmp.setValue(
"geometry", window->saveGeometry());
3923 settingsTmp.endGroup();
3924 settingsTmp.endGroup();
3930 if(!mainWindow->objectName().isEmpty())
3935 settings.beginGroup(
"Gui");
3936 settings.beginGroup(mainWindow->objectName());
3937 settings.setValue(
"state", mainWindow->saveState());
3938 settings.setValue(
"maximized", mainWindow->isMaximized());
3939 settings.setValue(
"status_bar", mainWindow->statusBar()->isVisible());
3940 settings.endGroup();
3941 settings.endGroup();
3944 settingsTmp.beginGroup(
"Gui");
3945 settingsTmp.beginGroup(mainWindow->objectName());
3946 settingsTmp.setValue(
"state", mainWindow->saveState());
3947 settingsTmp.setValue(
"maximized", mainWindow->isMaximized());
3948 settingsTmp.setValue(
"status_bar", mainWindow->statusBar()->isVisible());
3949 settingsTmp.endGroup();
3950 settingsTmp.endGroup();
3956 if(!mainWindow->objectName().isEmpty())
3962 settings.beginGroup(
"Gui");
3963 settings.beginGroup(mainWindow->objectName());
3964 bytes = settings.value(
"state", QByteArray()).toByteArray();
3965 if(!
bytes.isEmpty())
3967 mainWindow->restoreState(
bytes);
3969 maximized = settings.value(
"maximized",
false).toBool();
3970 statusBarShown = settings.value(
"status_bar",
false).toBool();
3971 mainWindow->statusBar()->setVisible(statusBarShown);
3972 settings.endGroup();
3973 settings.endGroup();
3976 settingsTmp.beginGroup(
"Gui");
3977 settingsTmp.beginGroup(mainWindow->objectName());
3978 settingsTmp.setValue(
"state", mainWindow->saveState());
3979 settingsTmp.setValue(
"maximized", maximized);
3980 settingsTmp.setValue(
"status_bar", statusBarShown);
3981 settingsTmp.endGroup();
3982 settingsTmp.endGroup();
3988 if(!widget->objectName().isEmpty())
3991 settings.beginGroup(
"Gui");
3992 settings.beginGroup(widget->objectName());
3995 settingsTmp.beginGroup(
"Gui");
3996 settingsTmp.beginGroup(widget->objectName());
3998 const CloudViewer * cloudViewer = qobject_cast<const CloudViewer*>(widget);
3999 const ImageView * imageView = qobject_cast<const ImageView*>(widget);
4000 const ExportCloudsDialog * exportCloudsDialog = qobject_cast<const ExportCloudsDialog*>(widget);
4001 const ExportBundlerDialog * exportBundlerDialog = qobject_cast<const ExportBundlerDialog*>(widget);
4002 const PostProcessingDialog * postProcessingDialog = qobject_cast<const PostProcessingDialog *>(widget);
4003 const GraphViewer * graphViewer = qobject_cast<const GraphViewer *>(widget);
4004 const CalibrationDialog * calibrationDialog = qobject_cast<const CalibrationDialog *>(widget);
4005 const DepthCalibrationDialog * depthCalibrationDialog = qobject_cast<const DepthCalibrationDialog *>(widget);
4017 else if(exportCloudsDialog)
4022 else if(exportBundlerDialog)
4027 else if(postProcessingDialog)
4032 else if(graphViewer)
4037 else if(calibrationDialog)
4042 else if(depthCalibrationDialog)
4049 UERROR(
"Widget \"%s\" cannot be exported in config file.", widget->objectName().toStdString().c_str());
4052 settings.endGroup();
4053 settings.endGroup();
4054 settingsTmp.endGroup();
4055 settingsTmp.endGroup();
4061 if(!widget->objectName().isEmpty())
4065 settings.beginGroup(
"Gui");
4066 settings.beginGroup(widget->objectName());
4069 settingsTmp.beginGroup(
"Gui");
4070 settingsTmp.beginGroup(widget->objectName());
4072 CloudViewer * cloudViewer = qobject_cast<CloudViewer*>(widget);
4073 ImageView * imageView = qobject_cast<ImageView*>(widget);
4077 GraphViewer * graphViewer = qobject_cast<GraphViewer *>(widget);
4078 CalibrationDialog * calibrationDialog = qobject_cast<CalibrationDialog *>(widget);
4091 else if(exportCloudsDialog)
4096 else if(exportBundlerDialog)
4101 else if(postProcessingDialog)
4106 else if(graphViewer)
4111 else if(calibrationDialog)
4116 else if(depthCalibrationDialog)
4123 UERROR(
"Widget \"%s\" cannot be loaded from config file.", widget->objectName().toStdString().c_str());
4126 settings.endGroup();
4127 settings.endGroup();
4128 settingsTmp.endGroup();
4129 settingsTmp.endGroup();
4137 settings.beginGroup(
"Gui");
4138 settings.beginGroup(section);
4140 settings.endGroup();
4141 settings.endGroup();
4144 settingsTmp.beginGroup(
"Gui");
4145 settingsTmp.beginGroup(section);
4147 settingsTmp.endGroup();
4148 settingsTmp.endGroup();
4155 settings.beginGroup(
"Gui");
4156 settings.beginGroup(section);
4157 value = settings.value(
key, QString()).toString();
4158 settings.endGroup();
4159 settings.endGroup();
4162 settingsTmp.beginGroup(
"Gui");
4163 settingsTmp.beginGroup(section);
4165 settingsTmp.endGroup();
4166 settingsTmp.endGroup();
4196 if(parameters.size())
4198 for(rtabmap::ParametersMap::const_iterator
iter = parameters.begin();
iter!=parameters.end(); ++
iter)
4202 if(setOtherParametersToDefault)
4208 if(parameters.find(
iter->first) == parameters.end() &&
4209 iter->first.compare(Parameters::kRtabmapWorkingDirectory())!=0)
4215 if(!this->isVisible())
4227 if(
_ui->comboBox_imuFilter_strategy->currentIndex()==0)
4229 _ui->comboBox_imuFilter_strategy->setCurrentIndex(2);
4236 _ui->comboBox_sourceType->setCurrentIndex(0);
4237 _ui->comboBox_cameraRGBD->setCurrentIndex(src -
kSrcRGBD);
4240 _ui->lineEdit_openniOniPath->clear();
4244 _ui->lineEdit_openni2OniPath->clear();
4248 _ui->lineEdit_k4a_mkv->clear();
4256 _ui->spinBox_rs2_width->setValue(1280);
4257 _ui->spinBox_rs2_height->setValue(720);
4258 _ui->spinBox_rs2_rate->setValue(30);
4259 _ui->checkbox_rs2_irMode->setChecked(
false);
4260 _ui->checkbox_rs2_emitter->setChecked(
true);
4264 _ui->spinBox_rs2_width->setValue(848);
4265 _ui->spinBox_rs2_height->setValue(480);
4266 _ui->spinBox_rs2_rate->setValue(60);
4267 _ui->checkbox_rs2_irMode->setChecked(
true);
4268 _ui->checkbox_rs2_emitter->setChecked(
false);
4274 _ui->comboBox_sourceType->setCurrentIndex(1);
4275 _ui->comboBox_cameraStereo->setCurrentIndex(src -
kSrcStereo);
4280 _ui->comboBox_imuFilter_strategy->setCurrentIndex(0);
4284 _ui->checkBox_depthai_imu_published->setChecked(variant >= 1);
4285 _ui->comboBox_depthai_resolution->setCurrentIndex(variant >= 1?1:3);
4286 _ui->comboBox_depthai_output_mode->setCurrentIndex(variant==2?2:0);
4287 _ui->doubleSpinBox_depthai_dot_intensity->setValue(variant==2?1:0);
4292 _ui->comboBox_sourceType->setCurrentIndex(2);
4293 _ui->source_comboBox_image_type->setCurrentIndex(src -
kSrcRGB);
4297 _ui->comboBox_sourceType->setCurrentIndex(3);
4305 QMessageBox::question(
this, tr(
"Camera Source..."),
4306 tr(
"Do you want to use default camera settings?"),
4307 QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) == QMessageBox::Yes)
4310 _ui->comboBox_lidar_src->setCurrentIndex(0);
4311 _ui->comboBox_odom_sensor->setCurrentIndex(0);
4314 QMessageBox::question(
this, tr(
"LiDAR Source..."),
4315 tr(
"Do you want to use \"LiDAR 3D ICP\" preset?"),
4316 QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) == QMessageBox::Yes)
4319 _ui->comboBox_sourceType->setCurrentIndex(4);
4320 _ui->comboBox_odom_sensor->setCurrentIndex(0);
4343 QString dir =
_ui->source_database_lineEdit_path->text();
4348 QStringList paths = QFileDialog::getOpenFileNames(
this, tr(
"Select file"), dir, tr(
"RTAB-Map database files (*.db)"));
4351 int r = QMessageBox::question(
this, tr(
"Odometry in database..."), tr(
"Use odometry saved in database (if some saved)?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
4352 _ui->source_checkBox_ignoreOdometry->setChecked(r != QMessageBox::Yes);
4354 if (
_ui->general_doubleSpinBox_detectionRate->value() != 0 &&
_ui->general_spinBox_imagesBufferSize->value() != 0)
4356 r = QMessageBox::question(
this, tr(
"Detection rate..."),
4357 tr(
"Do you want to process all frames? \n\nClicking \"Yes\" will set "
4358 "RTAB-Map's detection rate (%1 Hz) and buffer size (%2) to 0 to make "
4359 "sure that all frames are processed.")
4360 .
arg(
_ui->general_doubleSpinBox_detectionRate->value())
4361 .
arg(
_ui->general_spinBox_imagesBufferSize->value()),
4362 QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
4363 if (r == QMessageBox::Yes)
4365 _ui->general_doubleSpinBox_detectionRate->setValue(0.0);
4366 _ui->general_spinBox_imagesBufferSize->setValue(0);
4370 if(paths.size() > 1)
4372 std::vector<std::string> vFileNames(paths.size());
4373 for(
int i=0;
i<paths.size(); ++
i)
4375 vFileNames[
i] = paths[
i].toStdString();
4377 std::sort(vFileNames.begin(), vFileNames.end(),
sortCallback);
4378 for(
int i=0;
i<paths.size(); ++
i)
4380 paths[
i] = vFileNames[
i].c_str();
4384 _ui->source_database_lineEdit_path->setText(paths.size()==1?paths.front():paths.join(
";"));
4385 _ui->source_spinBox_databaseStartId->setValue(0);
4386 _ui->source_spinBox_databaseStopId->setValue(0);
4387 _ui->source_spinBox_database_cameraIndex->setValue(-1);
4394 viewer->setWindowModality(Qt::WindowModal);
4395 viewer->setAttribute(Qt::WA_DeleteOnClose,
true);
4409 if(!
_ui->lineEdit_source_distortionModel->text().isEmpty() &&
4410 QFileInfo(
_ui->lineEdit_source_distortionModel->text()).exists())
4413 model.load(
_ui->lineEdit_source_distortionModel->text().toStdString());
4417 QString
name = QFileInfo(
_ui->lineEdit_source_distortionModel->text()).baseName()+
".png";
4418 cv::imwrite(
name.toStdString(),
img);
4419 QDesktopServices::openUrl(QUrl::fromLocalFile(
name));
4423 QMessageBox::warning(
this, tr(
"Distortion Model"), tr(
"Model loaded from \"%1\" is not valid!").
arg(
_ui->lineEdit_source_distortionModel->text()));
4428 QMessageBox::warning(
this, tr(
"Distortion Model"), tr(
"File \"%1\" doesn't exist!").
arg(
_ui->lineEdit_source_distortionModel->text()));
4434 QString dir =
_ui->lineEdit_calibrationFile->text();
4439 else if(!dir.contains(
'.'))
4443 QString
path = QFileDialog::getOpenFileName(
this, tr(
"Select file"), dir, tr(
"Calibration file (*.yaml)"));
4446 _ui->lineEdit_calibrationFile->setText(
path);
4452 QString dir =
_ui->lineEdit_odom_sensor_path_calibration->text();
4457 else if(!dir.contains(
'.'))
4461 QString
path = QFileDialog::getOpenFileName(
this, tr(
"Select file"), dir, tr(
"Calibration file (*.yaml)"));
4464 _ui->lineEdit_odom_sensor_path_calibration->setText(
path);
4470 QString dir =
_ui->lineEdit_cameraImages_timestamps->text();
4475 QString
path = QFileDialog::getOpenFileName(
this, tr(
"Select file"), dir, tr(
"Timestamps file (*.txt)"));
4478 _ui->lineEdit_cameraImages_timestamps->setText(
path);
4484 QString dir =
_ui->lineEdit_cameraRGBDImages_path_rgb->text();
4489 QString
path = QFileDialog::getExistingDirectory(
this, tr(
"Select RGB images directory"), dir);
4492 _ui->lineEdit_cameraRGBDImages_path_rgb->setText(
path);
4499 QString dir =
_ui->lineEdit_cameraImages_path_scans->text();
4504 QString
path = QFileDialog::getExistingDirectory(
this, tr(
"Select scans directory"), dir);
4507 _ui->lineEdit_cameraImages_path_scans->setText(
path);
4513 QString dir =
_ui->lineEdit_cameraImages_path_imu->text();
4518 QString
path = QFileDialog::getOpenFileName(
this, tr(
"Select file "), dir, tr(
"EuRoC IMU file (*.csv)"));
4521 _ui->lineEdit_cameraImages_path_imu->setText(
path);
4528 QString dir =
_ui->lineEdit_cameraRGBDImages_path_depth->text();
4533 QString
path = QFileDialog::getExistingDirectory(
this, tr(
"Select depth images directory"), dir);
4536 _ui->lineEdit_cameraRGBDImages_path_depth->setText(
path);
4542 QString dir =
_ui->lineEdit_cameraImages_odom->text();
4547 QString
path = QFileDialog::getOpenFileName(
this, tr(
"Select file"), dir, tr(
"Odometry (*.txt *.log *.toro *.g2o *.csv)"));
4551 for(
int i=0;
i<
_ui->comboBox_cameraImages_odomFormat->count(); ++
i)
4553 list.push_back(
_ui->comboBox_cameraImages_odomFormat->itemText(
i));
4555 QString item = QInputDialog::getItem(
this, tr(
"Odometry Format"), tr(
"Format:"),
list,
_ui->comboBox_cameraImages_odomFormat->currentIndex(),
false);
4558 _ui->lineEdit_cameraImages_odom->setText(
path);
4559 _ui->comboBox_cameraImages_odomFormat->setCurrentIndex(
_ui->comboBox_cameraImages_odomFormat->findText(item));
4566 QString dir =
_ui->lineEdit_cameraImages_gt->text();
4571 QString
path = QFileDialog::getOpenFileName(
this, tr(
"Select file"), dir, tr(
"Ground Truth (*.txt *.log *.toro *.g2o *.csv)"));
4575 for(
int i=0;
i<
_ui->comboBox_cameraImages_gtFormat->count(); ++
i)
4577 list.push_back(
_ui->comboBox_cameraImages_gtFormat->itemText(
i));
4579 QString item = QInputDialog::getItem(
this, tr(
"Ground Truth Format"), tr(
"Format:"),
list,
_ui->comboBox_cameraImages_gtFormat->currentIndex(),
false);
4582 _ui->lineEdit_cameraImages_gt->setText(
path);
4583 _ui->comboBox_cameraImages_gtFormat->setCurrentIndex(
_ui->comboBox_cameraImages_gtFormat->findText(item));
4590 QString dir =
_ui->lineEdit_cameraStereoImages_path_left->text();
4595 QString
path = QFileDialog::getExistingDirectory(
this, tr(
"Select left images directory"), dir);
4598 _ui->lineEdit_cameraStereoImages_path_left->setText(
path);
4604 QString dir =
_ui->lineEdit_cameraStereoImages_path_right->text();
4609 QString
path = QFileDialog::getExistingDirectory(
this, tr(
"Select right images directory"), dir);
4612 _ui->lineEdit_cameraStereoImages_path_right->setText(
path);
4618 QString dir =
_ui->source_images_lineEdit_path->text();
4623 QString
path = QFileDialog::getExistingDirectory(
this, tr(
"Select images directory"),
_ui->source_images_lineEdit_path->text());
4626 _ui->source_images_lineEdit_path->setText(
path);
4627 _ui->source_images_spinBox_startPos->setValue(0);
4628 _ui->source_images_spinBox_maxFrames->setValue(0);
4634 QString dir =
_ui->source_video_lineEdit_path->text();
4639 QString
path = QFileDialog::getOpenFileName(
this, tr(
"Select file"), dir, tr(
"Videos (*.avi *.mpg *.mp4 *.mov *.mkv)"));
4642 _ui->source_video_lineEdit_path->setText(
path);
4648 QString dir =
_ui->lineEdit_cameraStereoVideo_path->text();
4653 QString
path = QFileDialog::getOpenFileName(
this, tr(
"Select file"), dir, tr(
"Videos (*.avi *.mpg *.mp4 *.mov *.mkv)"));
4656 _ui->lineEdit_cameraStereoVideo_path->setText(
path);
4662 QString dir =
_ui->lineEdit_cameraStereoVideo_path_2->text();
4667 QString
path = QFileDialog::getOpenFileName(
this, tr(
"Select file"), dir, tr(
"Videos (*.avi *.mpg *.mp4 *.mov *.mkv)"));
4670 _ui->lineEdit_cameraStereoVideo_path_2->setText(
path);
4676 QString dir =
_ui->lineEdit_source_distortionModel->text();
4681 QString
path = QFileDialog::getOpenFileName(
this, tr(
"Select file"), dir, tr(
"Distortion model (*.bin *.txt)"));
4684 _ui->lineEdit_source_distortionModel->setText(
path);
4690 QString dir =
_ui->lineEdit_openniOniPath->text();
4695 QString
path = QFileDialog::getOpenFileName(
this, tr(
"Select file"), dir, tr(
"OpenNI (*.oni)"));
4698 _ui->lineEdit_openniOniPath->setText(
path);
4704 QString dir =
_ui->lineEdit_openni2OniPath->text();
4709 QString
path = QFileDialog::getOpenFileName(
this, tr(
"Select file"), dir, tr(
"OpenNI (*.oni)"));
4712 _ui->lineEdit_openni2OniPath->setText(
path);
4718 QString dir =
_ui->lineEdit_k4a_mkv->text();
4723 QString
path = QFileDialog::getOpenFileName(
this, tr(
"Select file"), dir, tr(
"K4A recording (*.mkv)"));
4724 if (!
path.isEmpty())
4726 _ui->lineEdit_k4a_mkv->setText(
path);
4732 QString dir =
_ui->lineEdit_zedSvoPath->text();
4737 QString
path = QFileDialog::getOpenFileName(
this, tr(
"Select file"), dir, tr(
"ZED (*.svo)"));
4740 _ui->lineEdit_zedSvoPath->setText(
path);
4746 QString dir =
_ui->lineEdit_rs2_jsonFile->text();
4751 QString
path = QFileDialog::getOpenFileName(
this, tr(
"Select RealSense2 preset"), dir, tr(
"JSON (*.json)"));
4754 _ui->lineEdit_rs2_jsonFile->setText(
path);
4760 QString dir =
_ui->lineEdit_depthai_blob_path->text();
4765 QString
path = QFileDialog::getOpenFileName(
this, tr(
"Select file"), dir, tr(
"MyriadX blob (*.blob)"));
4768 _ui->lineEdit_depthai_blob_path->setText(
path);
4774 QString dir =
_ui->lineEdit_vlp16_pcap_path->text();
4779 QString
path = QFileDialog::getOpenFileName(
this, tr(
"Select file"), dir, tr(
"Velodyne recording (*.pcap)"));
4780 if (!
path.isEmpty())
4782 _ui->lineEdit_vlp16_pcap_path->setText(
path);
4789 QWidget * obj =
_ui->stackedWidget->findChild<QWidget*>(
key.c_str());
4794 QSpinBox * spin = qobject_cast<QSpinBox *>(obj);
4795 QDoubleSpinBox * doubleSpin = qobject_cast<QDoubleSpinBox *>(obj);
4796 QComboBox * combo = qobject_cast<QComboBox *>(obj);
4797 QCheckBox *
check = qobject_cast<QCheckBox *>(obj);
4798 QRadioButton * radio = qobject_cast<QRadioButton *>(obj);
4799 QLineEdit * lineEdit = qobject_cast<QLineEdit *>(obj);
4800 QGroupBox * groupBox = qobject_cast<QGroupBox *>(obj);
4804 spin->setValue(QString(
value.c_str()).toInt(&ok));
4807 UERROR(
"Conversion failed from \"%s\" for parameter %s",
value.c_str(),
key.c_str());
4812 doubleSpin->setValue(QString(
value.c_str()).toDouble(&ok));
4815 UERROR(
"Conversion failed from \"%s\" for parameter %s",
value.c_str(),
key.c_str());
4821 std::string valueCpy =
value;
4822 if(
key.compare(Parameters::kIcpStrategy()) == 0 ||
4823 key.compare(Parameters::kGridSensor()) == 0)
4825 if(
value.compare(
"true") == 0)
4829 else if(
value.compare(
"false") == 0)
4835 int valueInt = QString(valueCpy.c_str()).toInt(&ok);
4838 UERROR(
"Conversion failed from \"%s\" for parameter %s", valueCpy.c_str(),
key.c_str());
4842 #ifndef RTABMAP_NONFREE
4844 (combo->objectName().toStdString().compare(Parameters::kKpDetectorStrategy()) == 0 ||
4845 combo->objectName().toStdString().compare(Parameters::kVisFeatureType()) == 0))
4847 UWARN(
"Trying to set \"%s\" to SURF but RTAB-Map isn't built "
4848 "with the nonfree module from OpenCV. Keeping default combo value: %s.",
4849 combo->objectName().toStdString().c_str(),
4850 combo->currentText().toStdString().c_str());
4853 #if CV_MAJOR_VERSION < 3 || (CV_MAJOR_VERSION == 4 && CV_MINOR_VERSION <= 3) || (CV_MAJOR_VERSION == 3 && (CV_MINOR_VERSION < 4 || (CV_MINOR_VERSION==4 && CV_SUBMINOR_VERSION<11)))
4855 (combo->objectName().toStdString().compare(Parameters::kKpDetectorStrategy()) == 0 ||
4856 combo->objectName().toStdString().compare(Parameters::kVisFeatureType()) == 0))
4858 UWARN(
"Trying to set \"%s\" to SIFT but RTAB-Map isn't built "
4859 "with the nonfree module from OpenCV. Keeping default combo value: %s.",
4860 combo->objectName().toStdString().c_str(),
4861 combo->currentText().toStdString().c_str());
4866 #ifndef RTABMAP_ORB_SLAM
4870 if(valueInt==1 && combo->objectName().toStdString().compare(Parameters::kOptimizerStrategy()) == 0)
4872 UWARN(
"Trying to set \"%s\" to g2o but RTAB-Map isn't built "
4873 "with g2o. Keeping default combo value: %s.",
4874 combo->objectName().toStdString().c_str(),
4875 combo->currentText().toStdString().c_str());
4881 if(valueInt==2 && combo->objectName().toStdString().compare(Parameters::kOptimizerStrategy()) == 0)
4883 UWARN(
"Trying to set \"%s\" to GTSAM but RTAB-Map isn't built "
4884 "with GTSAM. Keeping default combo value: %s.",
4885 combo->objectName().toStdString().c_str(),
4886 combo->currentText().toStdString().c_str());
4892 combo->setCurrentIndex(valueInt);
4899 _ui->checkBox_useOdomFeatures->blockSignals(
true);
4901 _ui->checkBox_useOdomFeatures->blockSignals(
false);
4909 lineEdit->setText(
value.c_str());
4917 ULOGGER_WARN(
"QObject called %s can't be cast to a supported widget",
key.c_str());
4922 ULOGGER_WARN(
"Can't find the related QObject for parameter %s",
key.c_str());
4934 ULOGGER_ERROR(
"This slot must be triggered by a signal, not a direct call...");
4946 ULOGGER_ERROR(
"This slot must be triggered by a signal, not a direct call...");
4958 ULOGGER_ERROR(
"This slot must be triggered by a signal, not a direct call...");
4970 ULOGGER_ERROR(
"This slot must be triggered by a signal, not a direct call...");
4978 const QComboBox * comboBox = qobject_cast<const QComboBox*>(
object);
4979 const QSpinBox * spinbox = qobject_cast<const QSpinBox*>(
object);
4980 if(comboBox || spinbox)
4988 UWARN(
"Undefined object \"%s\"",
object->objectName().toStdString().c_str());
5002 const QCheckBox * checkbox = qobject_cast<const QCheckBox*>(
object);
5003 const QRadioButton * radio = qobject_cast<const QRadioButton*>(
object);
5004 const QGroupBox * groupBox = qobject_cast<const QGroupBox*>(
object);
5005 if(checkbox || radio || groupBox)
5013 UWARN(
"Undefined object \"%s\"",
object->objectName().toStdString().c_str());
5027 UDEBUG(
"modify param %s=%f",
object->objectName().toStdString().c_str(),
value);
5040 UDEBUG(
"modify param %s=%s",
object->objectName().toStdString().c_str(),
value.toStdString().c_str());
5052 for(
int i=0;
i<children.size(); ++
i)
5054 const QSpinBox * spin = qobject_cast<const QSpinBox *>(children[
i]);
5055 const QDoubleSpinBox * doubleSpin = qobject_cast<const QDoubleSpinBox *>(children[
i]);
5056 const QComboBox * combo = qobject_cast<const QComboBox *>(children[
i]);
5057 const QCheckBox *
check = qobject_cast<const QCheckBox *>(children[
i]);
5058 const QRadioButton * radio = qobject_cast<const QRadioButton *>(children[
i]);
5059 const QLineEdit * lineEdit = qobject_cast<const QLineEdit *>(children[
i]);
5060 const QGroupBox * groupBox = qobject_cast<const QGroupBox *>(children[
i]);
5061 const QStackedWidget * stackedWidget = qobject_cast<const QStackedWidget *>(children[
i]);
5088 if(groupBox->isCheckable())
5097 else if(stackedWidget)
5110 for(
int i=0;
i<stackedWidget->count(); ++
i)
5112 const QObjectList & children = stackedWidget->widget(
i)->children();
5119 const QObjectList & children = stackedWidget->widget(panel)->children();
5129 const QObjectList & children =
box->children();
5141 if(sender() ==
_ui->general_doubleSpinBox_timeThr_2)
5143 _ui->general_doubleSpinBox_timeThr->setValue(
_ui->general_doubleSpinBox_timeThr_2->value());
5145 else if(sender() ==
_ui->general_doubleSpinBox_hardThr_2)
5147 _ui->general_doubleSpinBox_hardThr->setValue(
_ui->general_doubleSpinBox_hardThr_2->value());
5149 else if(sender() ==
_ui->general_doubleSpinBox_detectionRate_2)
5151 _ui->general_doubleSpinBox_detectionRate->setValue(
_ui->general_doubleSpinBox_detectionRate_2->value());
5153 else if(sender() ==
_ui->general_spinBox_imagesBufferSize_2)
5155 _ui->general_spinBox_imagesBufferSize->setValue(
_ui->general_spinBox_imagesBufferSize_2->value());
5157 else if(sender() ==
_ui->general_spinBox_maxStMemSize_2)
5159 _ui->general_spinBox_maxStMemSize->setValue(
_ui->general_spinBox_maxStMemSize_2->value());
5161 else if(sender() ==
_ui->groupBox_publishing)
5163 _ui->general_checkBox_publishStats_2->setChecked(
_ui->groupBox_publishing->isChecked());
5165 else if(sender() ==
_ui->general_checkBox_publishStats_2)
5167 _ui->groupBox_publishing->setChecked(
_ui->general_checkBox_publishStats_2->isChecked());
5169 else if(sender() ==
_ui->doubleSpinBox_similarityThreshold_2)
5171 _ui->doubleSpinBox_similarityThreshold->setValue(
_ui->doubleSpinBox_similarityThreshold_2->value());
5173 else if(sender() ==
_ui->general_checkBox_activateRGBD)
5175 _ui->general_checkBox_activateRGBD_2->blockSignals(
true);
5176 _ui->general_checkBox_activateRGBD_2->setChecked(
_ui->general_checkBox_activateRGBD->isChecked());
5177 _ui->general_checkBox_activateRGBD_2->blockSignals(
false);
5179 else if(sender() ==
_ui->general_checkBox_activateRGBD_2)
5181 _ui->general_checkBox_activateRGBD->blockSignals(
true);
5182 _ui->general_checkBox_activateRGBD->setChecked(
_ui->general_checkBox_activateRGBD_2->isChecked());
5183 addParameter(
_ui->general_checkBox_activateRGBD,
_ui->general_checkBox_activateRGBD->isChecked());
5184 _ui->general_checkBox_activateRGBD->blockSignals(
false);
5186 else if(sender() ==
_ui->general_checkBox_SLAM_mode)
5188 _ui->general_checkBox_SLAM_mode_2->blockSignals(
true);
5189 _ui->general_checkBox_SLAM_mode_2->setChecked(
_ui->general_checkBox_SLAM_mode->isChecked());
5190 _ui->general_checkBox_SLAM_mode_2->blockSignals(
false);
5192 else if(sender() ==
_ui->general_checkBox_SLAM_mode_2)
5194 _ui->general_checkBox_SLAM_mode->blockSignals(
true);
5195 _ui->general_checkBox_SLAM_mode->setChecked(
_ui->general_checkBox_SLAM_mode_2->isChecked());
5196 addParameter(
_ui->general_checkBox_SLAM_mode,
_ui->general_checkBox_SLAM_mode->isChecked());
5197 _ui->general_checkBox_SLAM_mode->blockSignals(
false);
5202 _ui->general_doubleSpinBox_timeThr->setValue(
_ui->general_doubleSpinBox_timeThr_2->value());
5203 _ui->general_doubleSpinBox_hardThr->setValue(
_ui->general_doubleSpinBox_hardThr_2->value());
5204 _ui->general_doubleSpinBox_detectionRate->setValue(
_ui->general_doubleSpinBox_detectionRate_2->value());
5205 _ui->general_spinBox_imagesBufferSize->setValue(
_ui->general_spinBox_imagesBufferSize_2->value());
5206 _ui->general_spinBox_maxStMemSize->setValue(
_ui->general_spinBox_maxStMemSize_2->value());
5207 _ui->doubleSpinBox_similarityThreshold->setValue(
_ui->doubleSpinBox_similarityThreshold_2->value());
5243 QList<QGroupBox*> boxes;
5244 for(
int i=0;
i<
_ui->stackedWidget->count(); ++
i)
5247 const QObjectList & children =
_ui->stackedWidget->widget(
i)->children();
5248 for(
int j=0;
j<children.size(); ++
j)
5250 if((gb = qobject_cast<QGroupBox *>(children.at(
j))))
5262 ULOGGER_ERROR(
"A QGroupBox must be included in the first level of children in stacked widget, index=%d",
i);
5270 QStringList
values =
_ui->lineEdit_bayes_predictionLC->text().simplified().split(
' ');
5273 UERROR(
"Error parsing prediction (must have at least 2 items) : %s",
5274 _ui->lineEdit_bayes_predictionLC->text().toStdString().c_str());
5277 QVector<qreal> dataX((
values.
size()-2)*2 + 1);
5278 QVector<qreal> dataY((
values.
size()-2)*2 + 1);
5284 int loopClosureIndex = (dataX.size()-1)/2;
5290 UERROR(
"Error parsing prediction : \"%s\"",
values.
at(
i).toStdString().c_str());
5300 dataY[loopClosureIndex] =
value;
5301 dataX[loopClosureIndex] = 0;
5305 dataY[loopClosureIndex-lvl] =
value;
5306 dataX[loopClosureIndex-lvl] = -lvl;
5307 dataY[loopClosureIndex+lvl] =
value;
5308 dataX[loopClosureIndex+lvl] = lvl;
5313 _ui->label_prediction_sum->setNum(sum);
5316 _ui->label_prediction_sum->setText(QString(
"<font color=#FF0000>") +
_ui->label_prediction_sum->text() +
"</font>");
5320 _ui->label_prediction_sum->setText(QString(
"<font color=#00FF00>") +
_ui->label_prediction_sum->text() +
"</font>");
5324 _ui->label_prediction_sum->setText(QString(
"<font color=#FFa500>") +
_ui->label_prediction_sum->text() +
"</font>");
5328 _ui->label_prediction_sum->setText(QString(
"<font color=#000000>") +
_ui->label_prediction_sum->text() +
"</font>");
5331 _ui->predictionPlot->removeCurves();
5332 _ui->predictionPlot->addCurve(
new UPlotCurve(
"Prediction", dataX, dataY,
_ui->predictionPlot));
5337 QStringList strings =
_ui->lineEdit_kp_roi->text().split(
' ');
5338 if(strings.size()!=4)
5340 UERROR(
"ROI must have 4 values (%s)",
_ui->lineEdit_kp_roi->text().toStdString().c_str());
5343 _ui->doubleSpinBox_kp_roi0->setValue(strings[0].toDouble()*100.0);
5344 _ui->doubleSpinBox_kp_roi1->setValue(strings[1].toDouble()*100.0);
5345 _ui->doubleSpinBox_kp_roi2->setValue(strings[2].toDouble()*100.0);
5346 _ui->doubleSpinBox_kp_roi3->setValue(strings[3].toDouble()*100.0);
5351 QStringList strings;
5352 strings.append(QString::number(
_ui->doubleSpinBox_kp_roi0->value()/100.0));
5353 strings.append(QString::number(
_ui->doubleSpinBox_kp_roi1->value()/100.0));
5354 strings.append(QString::number(
_ui->doubleSpinBox_kp_roi2->value()/100.0));
5355 strings.append(QString::number(
_ui->doubleSpinBox_kp_roi3->value()/100.0));
5356 _ui->lineEdit_kp_roi->setText(strings.join(
" "));
5362 _ui->checkbox_stereo_depthGenerated->setVisible(
5364 _ui->comboBox_stereoZed_quality->currentIndex() == 0);
5365 _ui->label_stereo_depthGenerated->setVisible(
5367 _ui->comboBox_stereoZed_quality->currentIndex() == 0);
5369 _ui->checkBox_stereo_rectify->setEnabled(
5376 _ui->checkBox_stereo_rectify->setVisible(
_ui->checkBox_stereo_rectify->isEnabled());
5377 _ui->label_stereo_rectify->setVisible(
_ui->checkBox_stereo_rectify->isEnabled());
5382 _ui->groupBox_pymatcher->setVisible(
_ui->reextract_nn->currentIndex() == 6);
5383 _ui->groupBox_gms->setVisible(
_ui->reextract_nn->currentIndex() == 7);
5388 _ui->groupBox_pydescriptor->setVisible(
_ui->comboBox_globalDescriptorExtractor->currentIndex() == 1);
5395 _ui->stackedWidget_odometryType->setCurrentIndex(7);
5399 _ui->stackedWidget_odometryType->setCurrentIndex(index);
5401 _ui->groupBox_odomF2M->setVisible(index==0);
5402 _ui->groupBox_odomF2F->setVisible(index==1);
5403 _ui->groupBox_odomFovis->setVisible(index==2);
5404 _ui->groupBox_odomViso2->setVisible(index==3);
5405 _ui->groupBox_odomDVO->setVisible(index==4);
5406 _ui->groupBox_odomORBSLAM->setVisible(index==5);
5407 _ui->groupBox_odomOKVIS->setVisible(index==6);
5408 _ui->groupBox_odomLOAM->setVisible(index==7);
5409 _ui->groupBox_odomMSCKF->setVisible(index==8);
5410 _ui->groupBox_odomVINS->setVisible(index==9);
5411 _ui->groupBox_odomOpenVINS->setVisible(index==10);
5412 _ui->groupBox_odomOpen3D->setVisible(index==12);
5417 if(this->isVisible() &&
_ui->checkBox_useOdomFeatures->isChecked())
5419 int r = QMessageBox::question(
this, tr(
"Using odometry features for vocabulary..."),
5420 tr(
"Do you want to match vocabulary feature parameters "
5421 "with corresponding ones used for odometry?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
5423 if(r == QMessageBox::Yes)
5425 _ui->comboBox_detector_strategy->setCurrentIndex(
_ui->vis_feature_detector->currentIndex());
5426 _ui->surf_doubleSpinBox_maxDepth->setValue(
_ui->loopClosure_bowMaxDepth->value());
5427 _ui->surf_doubleSpinBox_minDepth->setValue(
_ui->loopClosure_bowMinDepth->value());
5428 _ui->surf_spinBox_wordsPerImageTarget->setValue(
_ui->reextract_maxFeatures->value());
5429 _ui->checkBox_kp_ssc->setChecked(
_ui->checkBox_visSSC->isChecked());
5430 _ui->spinBox_KPGridRows->setValue(
_ui->reextract_gridrows->value());
5431 _ui->spinBox_KPGridCols->setValue(
_ui->reextract_gridcols->value());
5432 _ui->lineEdit_kp_roi->setText(
_ui->loopClosure_roi->text());
5433 _ui->subpix_winSize_kp->setValue(
_ui->subpix_winSize->value());
5434 _ui->subpix_iterations_kp->setValue(
_ui->subpix_iterations->value());
5435 _ui->subpix_eps_kp->setValue(
_ui->subpix_eps->value());
5442 QString directory = QFileDialog::getExistingDirectory(
this, tr(
"Working directory"),
_ui->lineEdit_workingDirectory->text());
5443 if(!directory.isEmpty())
5445 ULOGGER_DEBUG(
"New working directory = %s", directory.toStdString().c_str());
5446 _ui->lineEdit_workingDirectory->setText(directory);
5453 if(
_ui->lineEdit_dictionaryPath->text().isEmpty())
5455 path = QFileDialog::getOpenFileName(
this, tr(
"Dictionary"), this->
getWorkingDirectory(), tr(
"Dictionary (*.txt *.db)"));
5459 path = QFileDialog::getOpenFileName(
this, tr(
"Dictionary"),
_ui->lineEdit_dictionaryPath->text(), tr(
"Dictionary (*.txt *.db)"));
5463 _ui->lineEdit_dictionaryPath->setText(
path);
5470 if(
_ui->lineEdit_OdomORBSLAMVocPath->text().isEmpty())
5472 path = QFileDialog::getOpenFileName(
this, tr(
"ORBSLAM Vocabulary"), this->
getWorkingDirectory(), tr(
"Vocabulary (*.txt)"));
5476 path = QFileDialog::getOpenFileName(
this, tr(
"ORBSLAM Vocabulary"),
_ui->lineEdit_OdomORBSLAMVocPath->text(), tr(
"Vocabulary (*.txt)"));
5480 _ui->lineEdit_OdomORBSLAMVocPath->setText(
path);
5487 if(
_ui->lineEdit_OdomOkvisPath->text().isEmpty())
5489 path = QFileDialog::getOpenFileName(
this, tr(
"OKVIS Config"), this->
getWorkingDirectory(), tr(
"OKVIS config (*.yaml)"));
5493 path = QFileDialog::getOpenFileName(
this, tr(
"OKVIS Config"),
_ui->lineEdit_OdomOkvisPath->text(), tr(
"OKVIS config (*.yaml)"));
5497 _ui->lineEdit_OdomOkvisPath->setText(
path);
5504 if(
_ui->lineEdit_OdomVinsPath->text().isEmpty())
5506 path = QFileDialog::getOpenFileName(
this, tr(
"VINS-Fusion Config"), this->
getWorkingDirectory(), tr(
"VINS-Fusion config (*.yaml)"));
5510 path = QFileDialog::getOpenFileName(
this, tr(
"VINS-Fusion Config"),
_ui->lineEdit_OdomVinsPath->text(), tr(
"VINS-Fusion config (*.yaml)"));
5514 _ui->lineEdit_OdomVinsPath->setText(
path);
5521 if(
_ui->lineEdit_OdomOpenVINSLeftMaskPath->text().isEmpty())
5523 path = QFileDialog::getOpenFileName(
this, tr(
"Select Left Mask"), this->
getWorkingDirectory(), tr(
"Image mask (*.jpg *.png)"));
5527 path = QFileDialog::getOpenFileName(
this, tr(
"Select Left Mask"),
_ui->lineEdit_OdomOpenVINSLeftMaskPath->text(), tr(
"Image mask (*.jpg *.png)"));
5531 _ui->lineEdit_OdomOpenVINSLeftMaskPath->setText(
path);
5538 if(
_ui->lineEdit_OdomOpenVINSRightMaskPath->text().isEmpty())
5540 path = QFileDialog::getOpenFileName(
this, tr(
"Select Right Mask"), this->
getWorkingDirectory(), tr(
"Image mask (*.jpg *.png)"));
5544 path = QFileDialog::getOpenFileName(
this, tr(
"Select Right Mask"),
_ui->lineEdit_OdomOpenVINSRightMaskPath->text(), tr(
"Image mask (*.jpg *.png)"));
5548 _ui->lineEdit_OdomOpenVINSRightMaskPath->setText(
path);
5555 if(
_ui->lineEdit_IcpPMConfigPath->text().isEmpty())
5557 path = QFileDialog::getOpenFileName(
this, tr(
"Select file"), this->
getWorkingDirectory(), tr(
"libpointmatcher (*.yaml)"));
5561 path = QFileDialog::getOpenFileName(
this, tr(
"Select file"),
_ui->lineEdit_IcpPMConfigPath->text(), tr(
"libpointmatcher (*.yaml)"));
5565 _ui->lineEdit_IcpPMConfigPath->setText(
path);
5572 if(
_ui->lineEdit_sptorch_path->text().isEmpty())
5574 path = QFileDialog::getOpenFileName(
this, tr(
"Select file"), this->
getWorkingDirectory(), tr(
"SuperPoint weights (*.pt)"));
5578 path = QFileDialog::getOpenFileName(
this, tr(
"Select file"),
_ui->lineEdit_sptorch_path->text(), tr(
"SuperPoint weights (*.pt)"));
5582 _ui->lineEdit_sptorch_path->setText(
path);
5589 if(
_ui->lineEdit_pymatcher_path->text().isEmpty())
5591 path = QFileDialog::getOpenFileName(
this, tr(
"Select file"), this->
getWorkingDirectory(), tr(
"Python wrapper (*.py)"));
5595 path = QFileDialog::getOpenFileName(
this, tr(
"Select file"),
_ui->lineEdit_pymatcher_path->text(), tr(
"Python wrapper (*.py)"));
5599 _ui->lineEdit_pymatcher_path->setText(
path);
5606 if(
_ui->lineEdit_pymatcher_model->text().isEmpty())
5608 path = QFileDialog::getOpenFileName(
this, tr(
"Select file"), this->
getWorkingDirectory(), tr(
"PyTorch model (*.pth *.pt)"));
5612 path = QFileDialog::getOpenFileName(
this, tr(
"Select file"),
_ui->lineEdit_pymatcher_model->text(), tr(
"PyTorch model (*.pth *.pt)"));
5616 _ui->lineEdit_pymatcher_model->setText(
path);
5623 if(
_ui->lineEdit_pydescriptor_path->text().isEmpty())
5625 path = QFileDialog::getOpenFileName(
this, tr(
"Select file"), this->
getWorkingDirectory(), tr(
"Python wrapper (*.py)"));
5629 path = QFileDialog::getOpenFileName(
this, tr(
"Select file"),
_ui->lineEdit_pydescriptor_path->text(), tr(
"Python wrapper (*.py)"));
5633 _ui->lineEdit_pydescriptor_path->setText(
path);
5639 if(
_ui->lineEdit_pydetector_path->text().isEmpty())
5641 path = QFileDialog::getOpenFileName(
this, tr(
"Select file"), this->
getWorkingDirectory(), tr(
"Python wrapper (*.py)"));
5645 path = QFileDialog::getOpenFileName(
this, tr(
"Select file"),
_ui->lineEdit_pydetector_path->text(), tr(
"Python wrapper (*.py)"));
5649 _ui->lineEdit_pydetector_path->setText(
path);
5655 _ui->stackedWidget_src->setVisible(
_ui->comboBox_sourceType->currentIndex() != 4);
5656 _ui->frame_camera_sensor->setVisible(
_ui->comboBox_sourceType->currentIndex() != 4);
5658 _ui->groupBox_sourceRGBD->setVisible(
_ui->comboBox_sourceType->currentIndex() == 0);
5659 _ui->groupBox_sourceStereo->setVisible(
_ui->comboBox_sourceType->currentIndex() == 1);
5660 _ui->groupBox_sourceRGB->setVisible(
_ui->comboBox_sourceType->currentIndex() == 2);
5661 _ui->groupBox_sourceDatabase->setVisible(
_ui->comboBox_sourceType->currentIndex() == 3);
5663 _ui->stackedWidget_rgbd->setVisible(
_ui->comboBox_sourceType->currentIndex() == 0 &&
5673 _ui->groupBox_openni2->setVisible(
_ui->comboBox_sourceType->currentIndex() == 0 &&
_ui->comboBox_cameraRGBD->currentIndex() ==
kSrcOpenNI2-
kSrcRGBD);
5674 _ui->groupBox_freenect2->setVisible(
_ui->comboBox_sourceType->currentIndex() == 0 &&
_ui->comboBox_cameraRGBD->currentIndex() ==
kSrcFreenect2-
kSrcRGBD);
5675 _ui->groupBox_k4w2->setVisible(
_ui->comboBox_sourceType->currentIndex() == 0 &&
_ui->comboBox_cameraRGBD->currentIndex() ==
kSrcK4W2 -
kSrcRGBD);
5676 _ui->groupBox_k4a->setVisible(
_ui->comboBox_sourceType->currentIndex() == 0 &&
_ui->comboBox_cameraRGBD->currentIndex() ==
kSrcK4A -
kSrcRGBD);
5677 _ui->groupBox_realsense->setVisible(
_ui->comboBox_sourceType->currentIndex() == 0 &&
_ui->comboBox_cameraRGBD->currentIndex() ==
kSrcRealSense -
kSrcRGBD);
5678 _ui->groupBox_realsense2->setVisible(
_ui->comboBox_sourceType->currentIndex() == 0 &&
_ui->comboBox_cameraRGBD->currentIndex() ==
kSrcRealSense2 -
kSrcRGBD);
5679 _ui->groupBox_cameraRGBDImages->setVisible(
_ui->comboBox_sourceType->currentIndex() == 0 &&
_ui->comboBox_cameraRGBD->currentIndex() ==
kSrcRGBDImages-
kSrcRGBD);
5680 _ui->groupBox_openni->setVisible(
_ui->comboBox_sourceType->currentIndex() == 0 &&
_ui->comboBox_cameraRGBD->currentIndex() ==
kSrcOpenNI_PCL -
kSrcRGBD);
5682 _ui->stackedWidget_stereo->setVisible(
_ui->comboBox_sourceType->currentIndex() == 1 &&
5691 _ui->groupBox_cameraStereoVideo->setVisible(
_ui->comboBox_sourceType->currentIndex() == 1 &&
_ui->comboBox_cameraStereo->currentIndex() ==
kSrcStereoVideo -
kSrcStereo);
5692 _ui->groupBox_cameraStereoUsb->setVisible(
_ui->comboBox_sourceType->currentIndex() == 1 &&
_ui->comboBox_cameraStereo->currentIndex() ==
kSrcStereoUsb -
kSrcStereo);
5693 _ui->groupBox_cameraStereoZed->setVisible(
_ui->comboBox_sourceType->currentIndex() == 1 &&
_ui->comboBox_cameraStereo->currentIndex() ==
kSrcStereoZed -
kSrcStereo);
5695 _ui->groupBox_cameraStereoZedOC->setVisible(
_ui->comboBox_sourceType->currentIndex() == 1 &&
_ui->comboBox_cameraStereo->currentIndex() ==
kSrcStereoZedOC -
kSrcStereo);
5698 _ui->stackedWidget_image->setVisible(
_ui->comboBox_sourceType->currentIndex() == 2 &&
5702 _ui->source_groupBox_images->setVisible(
_ui->comboBox_sourceType->currentIndex() == 2 &&
_ui->source_comboBox_image_type->currentIndex() ==
kSrcImages-
kSrcRGB);
5703 _ui->source_groupBox_video->setVisible(
_ui->comboBox_sourceType->currentIndex() == 2 &&
_ui->source_comboBox_image_type->currentIndex() ==
kSrcVideo-
kSrcRGB);
5704 _ui->source_groupBox_usbcam->setVisible(
_ui->comboBox_sourceType->currentIndex() == 2 &&
_ui->source_comboBox_image_type->currentIndex() ==
kSrcUsbDevice-
kSrcRGB);
5706 _ui->groupBox_sourceImages_optional->setVisible(
5709 (
_ui->comboBox_sourceType->currentIndex() == 2 &&
_ui->source_comboBox_image_type->currentIndex() ==
kSrcImages-
kSrcRGB));
5711 _ui->groupBox_depthImageFiltering->setEnabled(
5712 _ui->comboBox_sourceType->currentIndex() == 0 ||
5713 _ui->comboBox_sourceType->currentIndex() == 3);
5714 _ui->groupBox_depthImageFiltering->setVisible(
_ui->groupBox_depthImageFiltering->isEnabled());
5716 _ui->groupBox_depthFromScan->setVisible(
_ui->comboBox_sourceType->currentIndex() == 2 &&
_ui->source_comboBox_image_type->currentIndex() ==
kSrcImages-
kSrcRGB);
5720 _ui->groupBox_odom_sensor->setVisible(
_ui->comboBox_sourceType->currentIndex() != 3);
5723 _ui->comboBox_lidar_src->setEnabled(
_ui->comboBox_sourceType->currentIndex() != 3);
5724 if(!
_ui->comboBox_lidar_src->isEnabled() &&
_ui->comboBox_lidar_src->currentIndex() != 0)
5726 _ui->comboBox_lidar_src->setCurrentIndex(0);
5728 _ui->checkBox_source_scanFromDepth->setEnabled(
_ui->comboBox_sourceType->currentIndex() <= 1 ||
_ui->comboBox_sourceType->currentIndex() == 3);
5729 _ui->label_source_scanFromDepth->setEnabled(
_ui->checkBox_source_scanFromDepth->isEnabled());
5730 if(!
_ui->checkBox_source_scanFromDepth->isEnabled())
5732 _ui->checkBox_source_scanFromDepth->setChecked(
false);
5734 _ui->stackedWidget_lidar_src->setVisible(
_ui->comboBox_lidar_src->currentIndex() > 0);
5736 _ui->frame_lidar_sensor->setVisible(
_ui->comboBox_lidar_src->currentIndex() > 0 ||
_ui->checkBox_source_scanFromDepth->isChecked());
5737 _ui->pushButton_test_lidar->setEnabled(
_ui->comboBox_lidar_src->currentIndex() > 0);
5740 _ui->groupBox_imuFiltering->setEnabled(
5743 (
_ui->comboBox_sourceType->currentIndex() == 2 &&
_ui->source_comboBox_image_type->currentIndex() ==
kSrcImages-
kSrcRGB) ||
5745 (
_ui->comboBox_sourceType->currentIndex() == 0 &&
_ui->comboBox_cameraRGBD->currentIndex() ==
kSrcK4A -
kSrcRGBD) ||
5754 _ui->stackedWidget_imuFilter->setVisible(
_ui->comboBox_imuFilter_strategy->currentIndex() > 0);
5755 _ui->groupBox_madgwickfilter->setVisible(
_ui->comboBox_imuFilter_strategy->currentIndex() == 1);
5756 _ui->groupBox_complementaryfilter->setVisible(
_ui->comboBox_imuFilter_strategy->currentIndex() == 2);
5757 _ui->groupBox_imuFiltering->setVisible(
_ui->groupBox_imuFiltering->isEnabled());
5764 return _ui->comboBox_loggerLevel->currentIndex();
5768 return _ui->comboBox_loggerEventLevel->currentIndex();
5772 return _ui->comboBox_loggerPauseLevel->currentIndex();
5776 return _ui->comboBox_loggerType->currentIndex();
5780 return _ui->checkBox_logger_printTime->isChecked();
5784 return _ui->checkBox_logger_printThreadId->isChecked();
5788 std::vector<std::string> threads;
5789 for(
int i=0;
i<
_ui->comboBox_loggerFilter->count(); ++
i)
5791 if(
_ui->comboBox_loggerFilter->itemData(
i).toBool())
5793 threads.push_back(
_ui->comboBox_loggerFilter->itemText(
i).toStdString());
5800 return _ui->checkBox_verticalLayoutUsed->isChecked();
5804 return _ui->checkBox_imageRejectedShown->isChecked();
5808 return _ui->checkBox_imageHighestHypShown->isChecked();
5812 return _ui->checkBox_beep->isChecked();
5816 return _ui->checkBox_stamps->isChecked();
5820 return _ui->checkBox_cacheStatistics->isChecked();
5824 return _ui->checkBox_notifyWhenNewGlobalPathIsReceived->isChecked();
5828 return _ui->spinBox_odomQualityWarnThr->value();
5832 return _ui->checkBox_odom_onlyInliersShown->isChecked();
5836 return _ui->radioButton_posteriorGraphView->isChecked();
5840 return _ui->radioButton_wordsGraphView->isChecked();
5844 return _ui->radioButton_localizationsGraphView->isChecked();
5848 return _ui->radioButton_localizationsGraphViewOdomCache->isChecked();
5852 return _ui->checkbox_odomDisabled->isChecked();
5856 return _ui->checkBox_odom_sensor_use_as_gt->isChecked();
5860 return _ui->odom_registration->currentIndex();
5864 return _ui->odom_f2m_gravitySigma->value();
5868 return _ui->checkbox_groundTruthAlign->isChecked();
5873 UASSERT(index >= 0 && index <= 1);
5878 #ifdef RTABMAP_OCTOMAP
5879 return _ui->groupBox_octomap->isChecked();
5885 #ifdef RTABMAP_OCTOMAP
5886 return _ui->groupBox_octomap->isChecked() &&
_ui->checkBox_octomap_show3dMap->isChecked();
5892 return _ui->comboBox_octomap_renderingType->currentIndex();
5896 #ifdef RTABMAP_OCTOMAP
5897 return _ui->groupBox_octomap->isChecked() &&
_ui->checkBox_octomap_2dgrid->isChecked();
5903 return _ui->spinBox_octomap_treeDepth->value();
5907 return _ui->spinBox_octomap_pointSize->value();
5912 return _ui->doubleSpinBox_voxel->value();
5916 return _ui->doubleSpinBox_noiseRadius->value();
5920 return _ui->spinBox_noiseMinNeighbors->value();
5924 return _ui->doubleSpinBox_ceilingFilterHeight->value();
5928 return _ui->doubleSpinBox_floorFilterHeight->value();
5932 return _ui->spinBox_normalKSearch->value();
5936 return _ui->doubleSpinBox_normalRadiusSearch->value();
5940 return _ui->doubleSpinBox_ceilingFilterHeight_scan->value();
5944 return _ui->doubleSpinBox_floorFilterHeight_scan->value();
5948 return _ui->spinBox_normalKSearch_scan->value();
5952 return _ui->doubleSpinBox_normalRadiusSearch_scan->value();
5957 return _ui->checkBox_showGraphs->isChecked();
5961 return _ui->checkBox_showLabels->isChecked();
5965 return _ui->checkBox_showFrames->isChecked();
5969 return _ui->checkBox_showLandmarks->isChecked();
5973 return _ui->doubleSpinBox_landmarkSize->value();
5977 UASSERT(index >= 0 && index <= 1);
5982 UASSERT(index >= 0 && index <= 1);
5987 return _ui->checkBox_showIMUAcc->isChecked();
5991 return _ui->RGBDMarkerDetection->isChecked();
5995 return _ui->ArucoMarkerLength->value();
5999 return _ui->groupBox_organized->isChecked();
6003 return _ui->doubleSpinBox_mesh_angleTolerance->value()*
M_PI/180.0;
6007 return _ui->checkBox_mesh_quad->isChecked();
6011 return _ui->checkBox_mesh_texture->isChecked();
6015 return _ui->spinBox_mesh_triangleSize->value();
6019 UASSERT(index >= 0 && index <= 1);
6024 UASSERT(index >= 0 && index <= 1);
6029 UASSERT(index >= 0 && index <= 1);
6034 UASSERT(index >= 0 && index <= 1);
6035 std::vector<float> roiRatios;
6041 roiRatios.resize(4);
6052 UASSERT(index >= 0 && index <= 1);
6057 UASSERT(index >= 0 && index <= 1);
6062 UASSERT(index >= 0 && index <= 1);
6068 UASSERT(index >= 0 && index <= 1);
6073 UASSERT(index >= 0 && index <= 1);
6078 UASSERT(index >= 0 && index <= 1);
6083 UASSERT(index >= 0 && index <= 1);
6088 UASSERT(index >= 0 && index <= 1);
6093 UASSERT(index >= 0 && index <= 1);
6098 UASSERT(index >= 0 && index <= 1);
6103 UASSERT(index >= 0 && index <= 1);
6109 UASSERT(index >= 0 && index <= 1);
6114 UASSERT(index >= 0 && index <= 1);
6119 UASSERT(index >= 0 && index <= 1);
6125 return _ui->radioButton_nodeFiltering->isChecked();
6129 return _ui->radioButton_subtractFiltering->isChecked();
6133 return _ui->doubleSpinBox_cloudFilterRadius->value();
6137 return _ui->doubleSpinBox_cloudFilterAngle->value();
6141 return _ui->spinBox_subtractFilteringMinPts->value();
6145 return _ui->doubleSpinBox_subtractFilteringRadius->value();
6149 return _ui->doubleSpinBox_subtractFilteringAngle->value()*
M_PI/180.0;
6153 return _ui->doubleSpinBox_map_resolution->value();
6157 return _ui->checkBox_map_shown->isChecked();
6161 return _ui->checkBox_elevation_shown->checkState();
6165 return _ui->comboBox_grid_sensor->currentIndex();
6169 return _ui->checkBox_grid_projMapFrame->isChecked();
6173 return _ui->doubleSpinBox_grid_maxGroundAngle->value()*
M_PI/180.0;
6177 return _ui->doubleSpinBox_grid_maxGroundHeight->value();
6181 return _ui->spinBox_grid_minClusterSize->value();
6185 return _ui->doubleSpinBox_grid_maxObstacleHeight->value();
6189 return _ui->checkBox_grid_flatObstaclesDetected->isChecked();
6193 return _ui->doubleSpinBox_map_opacity->value();
6200 return _ui->general_doubleSpinBox_imgRate->value();
6204 return _ui->source_mirroring->isChecked();
6208 int index =
_ui->comboBox_sourceType->currentIndex();
6253 return _ui->comboBox_cameraRGBD->currentText();
6257 return _ui->comboBox_cameraStereo->currentText();
6261 return _ui->source_comboBox_image_type->currentText();
6272 return _ui->lineEdit_sourceDevice->text();
6277 if(
_ui->comboBox_odom_sensor->currentIndex() == 1)
6282 else if(
_ui->comboBox_odom_sensor->currentIndex() == 2)
6287 else if(
_ui->comboBox_odom_sensor->currentIndex() == 3)
6292 else if(
_ui->comboBox_odom_sensor->currentIndex() != 0)
6294 UERROR(
"Not implemented!");
6301 if(
_ui->comboBox_lidar_src->currentIndex() == 0)
6330 return _ui->lineEdit_cameraImages_path_imu->text();
6343 return _ui->spinBox_cameraImages_max_imu_rate->value();
6348 return _ui->source_checkBox_useDbStamps->isChecked();
6352 return _ui->checkbox_rgbd_colorOnly->isChecked();
6356 return _ui->comboBox_imuFilter_strategy->currentIndex();
6360 return _ui->checkBox_imuFilter_baseFrameConversion->isChecked();
6364 return _ui->groupBox_depthImageFiltering->isEnabled();
6368 return _ui->lineEdit_source_distortionModel->text();
6372 return _ui->groupBox_bilateral->isChecked();
6376 return _ui->doubleSpinBox_bilateral_sigmaS->value();
6380 return _ui->doubleSpinBox_bilateral_sigmaR->value();
6384 return _ui->spinBox_source_imageDecimation->value();
6388 return _ui->comboBox_source_histogramMethod->currentIndex();
6392 return _ui->checkbox_source_feature_detection->isChecked();
6396 return _ui->checkbox_stereo_depthGenerated->isChecked();
6400 return _ui->checkBox_stereo_exposureCompensation->isChecked();
6404 return _ui->checkBox_source_scanFromDepth->isChecked();
6408 return _ui->checkBox_source_scanDeskewing->isChecked();
6412 return _ui->spinBox_source_scanDownsampleStep->value();
6416 return _ui->doubleSpinBox_source_scanRangeMin->value();
6420 return _ui->doubleSpinBox_source_scanRangeMax->value();
6424 return _ui->doubleSpinBox_source_scanVoxelSize->value();
6428 return _ui->spinBox_source_scanNormalsK->value();
6432 return _ui->doubleSpinBox_source_scanNormalsRadius->value();
6436 return _ui->doubleSpinBox_source_scanNormalsForceGroundUp->value();
6443 _ui->lineEdit_sourceDevice->text(),
6444 _ui->lineEdit_calibrationFile->text(),
6454 const QString & calibrationPath,
6458 bool odomSensorExtrinsicsCalib)
6462 QMessageBox::warning(
this, tr(
"Odometry Sensor"),
6463 tr(
"Driver %1 cannot support odometry only mode.").
arg(driver), QMessageBox::Ok);
6473 QMessageBox::warning(
this, tr(
"Calibration"),
6474 tr(
"Using raw images for \"OpenNI\" driver is not yet supported. "
6475 "Factory calibration loaded from OpenNI is used."), QMessageBox::Ok);
6481 _ui->lineEdit_openniOniPath->text().isEmpty()?
device.toStdString():
_ui->lineEdit_openniOniPath->text().toStdString(),
6482 this->getGeneralInputRate(),
6483 this->getSourceLocalTransform());
6489 _ui->lineEdit_openni2OniPath->text().isEmpty()?
device.toStdString():
_ui->lineEdit_openni2OniPath->text().toStdString(),
6491 this->getGeneralInputRate(),
6492 this->getSourceLocalTransform());
6499 this->getGeneralInputRate(),
6500 this->getSourceLocalTransform());
6507 QMessageBox::warning(
this, tr(
"Calibration"),
6508 tr(
"Using raw images for \"OpenNI\" driver is not yet supported. "
6509 "Factory calibration loaded from OpenNI is used."), QMessageBox::Ok);
6525 this->getGeneralInputRate(),
6526 this->getSourceLocalTransform(),
6527 _ui->doubleSpinBox_freenect2MinDepth->value(),
6528 _ui->doubleSpinBox_freenect2MaxDepth->value(),
6529 _ui->checkBox_freenect2BilateralFiltering->isChecked(),
6530 _ui->checkBox_freenect2EdgeAwareFiltering->isChecked(),
6531 _ui->checkBox_freenect2NoiseFiltering->isChecked(),
6532 _ui->lineEdit_freenect2Pipeline->text().toStdString());
6537 device.isEmpty() ? 0 : atoi(
device.toStdString().c_str()),
6539 this->getGeneralInputRate(),
6540 this->getSourceLocalTransform());
6544 if (!
_ui->lineEdit_k4a_mkv->text().isEmpty())
6548 _ui->lineEdit_k4a_mkv->text().toStdString().c_str(),
6549 _ui->source_checkBox_useMKVStamps->isChecked() ? -1 :
this->getGeneralInputRate(),
6550 this->getSourceLocalTransform());
6555 device.isEmpty() ? 0 : atoi(
device.toStdString().c_str()),
6556 this->getGeneralInputRate(),
6557 this->getSourceLocalTransform());
6561 ((
CameraK4A*)
camera)->setPreferences(
_ui->comboBox_k4a_rgb_resolution->currentIndex(),
6562 _ui->comboBox_k4a_framerate->currentIndex(),
6563 _ui->comboBox_k4a_depth_resolution->currentIndex());
6567 if(useRawImages &&
_ui->comboBox_realsenseRGBSource->currentIndex()!=2)
6569 QMessageBox::warning(
this, tr(
"Calibration"),
6570 tr(
"Using raw images for \"RealSense\" driver is not yet supported for color and infrared streams. "
6571 "Factory calibration loaded from RealSense is used."), QMessageBox::Ok);
6577 device.isEmpty() ? 0 : atoi(
device.toStdString().c_str()),
6578 _ui->comboBox_realsensePresetRGB->currentIndex(),
6579 _ui->comboBox_realsensePresetDepth->currentIndex(),
6580 _ui->checkbox_realsenseOdom->isChecked(),
6581 this->getGeneralInputRate(),
6582 this->getSourceLocalTransform());
6591 QMessageBox::warning(
this, tr(
"Calibration"),
6592 tr(
"Using raw images for \"RealSense\" driver is not yet supported. "
6593 "Factory calibration loaded from RealSense2 is used."), QMessageBox::Ok);
6600 this->getGeneralInputRate(),
6601 this->getSourceLocalTransform());
6603 _ui->checkbox_publishInterIMU->isChecked(),
6608 ((
CameraRealSense2*)
camera)->setImagesRectified((
_ui->checkBox_stereo_rectify->isEnabled() &&
_ui->checkBox_stereo_rectify->isChecked()) && !useRawImages);
6616 ((
CameraRealSense2*)
camera)->setDepthResolution(
_ui->spinBox_rs2_width_depth->value(),
_ui->spinBox_rs2_height_depth->value(),
_ui->spinBox_rs2_rate_depth->value());
6627 QMessageBox::warning(
this, tr(
"Calibration"),
6628 tr(
"Using raw images for \"MyntEye\" driver is not yet supported. "
6629 "Factory calibration loaded from MyntEye is used."), QMessageBox::Ok);
6636 _ui->checkbox_stereoMyntEye_rectify->isChecked(),
6637 _ui->checkbox_stereoMyntEye_depth->isChecked(),
6638 this->getGeneralInputRate(),
6639 this->getSourceLocalTransform());
6641 if(
_ui->checkbox_stereoMyntEye_autoExposure->isChecked())
6648 _ui->spinBox_stereoMyntEye_gain->value(),
6649 _ui->spinBox_stereoMyntEye_brightness->value(),
6650 _ui->spinBox_stereoMyntEye_contrast->value());
6653 _ui->spinBox_stereoMyntEye_irControl->value());
6659 _ui->lineEdit_cameraRGBDImages_path_rgb->text().append(QDir::separator()).toStdString(),
6660 _ui->lineEdit_cameraRGBDImages_path_depth->text().append(QDir::separator()).toStdString(),
6661 _ui->doubleSpinBox_cameraRGBDImages_scale->value(),
6662 this->getGeneralInputRate(),
6663 this->getSourceLocalTransform());
6667 ((
CameraRGBDImages*)
camera)->setOdometryPath(
_ui->lineEdit_cameraImages_odom->text().toStdString(),
_ui->comboBox_cameraImages_odomFormat->currentIndex());
6668 ((
CameraRGBDImages*)
camera)->setGroundTruthPath(
_ui->lineEdit_cameraImages_gt->text().toStdString(),
_ui->comboBox_cameraImages_gtFormat->currentIndex());
6671 _ui->lineEdit_cameraImages_path_scans->text().isEmpty()?
"":
_ui->lineEdit_cameraImages_path_scans->text().append(QDir::separator()).toStdString(),
6672 _ui->spinBox_cameraImages_max_scan_pts->value(),
6675 _ui->checkBox_cameraImages_timestamps->isChecked(),
6676 _ui->lineEdit_cameraImages_timestamps->text().toStdString(),
6677 _ui->checkBox_cameraImages_syncTimeStamps->isChecked());
6690 QMessageBox::warning(
this, tr(
"Calibration"),
6691 tr(
"Using raw images for \"FlyCapture2\" driver is not yet supported. "
6692 "Factory calibration loaded from FlyCapture2 is used."), QMessageBox::Ok);
6705 _ui->lineEdit_cameraStereoImages_path_left->text().append(QDir::separator()).toStdString(),
6706 _ui->lineEdit_cameraStereoImages_path_right->text().append(QDir::separator()).toStdString(),
6707 (
_ui->checkBox_stereo_rectify->isEnabled() &&
_ui->checkBox_stereo_rectify->isChecked()) && !useRawImages,
6708 this->getGeneralInputRate(),
6709 this->getSourceLocalTransform());
6713 ((
CameraStereoImages*)
camera)->setOdometryPath(
_ui->lineEdit_cameraImages_odom->text().toStdString(),
_ui->comboBox_cameraImages_odomFormat->currentIndex());
6714 ((
CameraStereoImages*)
camera)->setGroundTruthPath(
_ui->lineEdit_cameraImages_gt->text().toStdString(),
_ui->comboBox_cameraImages_gtFormat->currentIndex());
6717 _ui->lineEdit_cameraImages_path_scans->text().isEmpty()?
"":
_ui->lineEdit_cameraImages_path_scans->text().append(QDir::separator()).toStdString(),
6718 _ui->spinBox_cameraImages_max_scan_pts->value(),
6721 _ui->checkBox_cameraImages_timestamps->isChecked(),
6722 _ui->lineEdit_cameraImages_timestamps->text().toStdString(),
6723 _ui->checkBox_cameraImages_syncTimeStamps->isChecked());
6729 if(
_ui->spinBox_stereo_right_device->value()>=0)
6732 device.isEmpty() ? 0 : atoi(
device.toStdString().c_str()),
6733 _ui->spinBox_stereo_right_device->value(),
6734 (
_ui->checkBox_stereo_rectify->isEnabled() &&
_ui->checkBox_stereo_rectify->isChecked()) && !useRawImages,
6735 this->getGeneralInputRate(),
6736 this->getSourceLocalTransform());
6741 device.isEmpty() ? 0 : atoi(
device.toStdString().c_str()),
6742 (
_ui->checkBox_stereo_rectify->isEnabled() &&
_ui->checkBox_stereo_rectify->isChecked()) && !useRawImages,
6743 this->getGeneralInputRate(),
6744 this->getSourceLocalTransform());
6746 ((
CameraStereoVideo*)
camera)->setResolution(
_ui->spinBox_stereousbcam_streamWidth->value(),
_ui->spinBox_stereousbcam_streamHeight->value());
6747 if(!
_ui->lineEdit_stereousbcam_fourcc->text().isEmpty())
6754 if(!
_ui->lineEdit_cameraStereoVideo_path_2->text().isEmpty())
6758 _ui->lineEdit_cameraStereoVideo_path->text().toStdString(),
6759 _ui->lineEdit_cameraStereoVideo_path_2->text().toStdString(),
6760 (
_ui->checkBox_stereo_rectify->isEnabled() &&
_ui->checkBox_stereo_rectify->isChecked()) && !useRawImages,
6761 this->getGeneralInputRate(),
6762 this->getSourceLocalTransform());
6768 _ui->lineEdit_cameraStereoVideo_path->text().toStdString(),
6769 (
_ui->checkBox_stereo_rectify->isEnabled() &&
_ui->checkBox_stereo_rectify->isChecked()) && !useRawImages,
6770 this->getGeneralInputRate(),
6771 this->getSourceLocalTransform());
6780 (
_ui->checkBox_stereo_rectify->isEnabled() &&
_ui->checkBox_stereo_rectify->isChecked()) && !useRawImages,
6781 this->getGeneralInputRate(),
6782 this->getSourceLocalTransform());
6788 if(!
_ui->lineEdit_zedSvoPath->text().isEmpty())
6791 _ui->lineEdit_zedSvoPath->text().toStdString(),
6792 _ui->comboBox_stereoZed_quality->currentIndex(),
6793 _ui->comboBox_stereoZed_sensingMode->currentIndex(),
6794 _ui->spinBox_stereoZed_confidenceThr->value(),
6798 _ui->checkbox_stereoZed_selfCalibration->isChecked(),
6799 _ui->loopClosure_bowForce2D->isChecked(),
6800 _ui->spinBox_stereoZed_texturenessConfidenceThr->value());
6806 _ui->comboBox_stereoZed_resolution->currentIndex()-1,
6808 _ui->comboBox_stereoZed_quality->currentIndex()==0&&odomOnly?1:
_ui->comboBox_stereoZed_quality->currentIndex(),
6809 _ui->comboBox_stereoZed_sensingMode->currentIndex(),
6810 _ui->spinBox_stereoZed_confidenceThr->value(),
6814 _ui->checkbox_stereoZed_selfCalibration->isChecked(),
6815 _ui->loopClosure_bowForce2D->isChecked(),
6816 _ui->spinBox_stereoZed_texturenessConfidenceThr->value());
6819 _ui->checkbox_publishInterIMU->isChecked(),
6827 device.isEmpty()?-1:atoi(
device.toStdString().c_str()),
6828 _ui->comboBox_stereoZedOC_resolution->currentIndex(),
6829 this->getGeneralInputRate(),
6830 this->getSourceLocalTransform());
6836 device.toStdString().c_str(),
6837 _ui->comboBox_depthai_resolution->currentIndex(),
6838 this->getGeneralInputRate(),
6839 this->getSourceLocalTransform());
6841 ((
CameraDepthAI*)
camera)->setDepthProfile(
_ui->spinBox_depthai_conf_threshold->value(),
_ui->spinBox_depthai_lrc_threshold->value());
6843 ((
CameraDepthAI*)
camera)->setSubpixelMode(
_ui->comboBox_depthai_subpixel_fractional_bits->currentIndex()!=0,
_ui->comboBox_depthai_subpixel_fractional_bits->currentIndex()==2?4:
_ui->comboBox_depthai_subpixel_fractional_bits->currentIndex()==3?5:3);
6844 ((
CameraDepthAI*)
camera)->setCompanding(
_ui->comboBox_depthai_disparity_companding->currentIndex()!=0,
_ui->comboBox_depthai_disparity_companding->currentIndex()==1?64:96);
6845 ((
CameraDepthAI*)
camera)->setRectification(
_ui->checkBox_depthai_use_spec_translation->isChecked(),
_ui->doubleSpinBox_depthai_alpha_scaling->value(), !useRawImages);
6846 ((
CameraDepthAI*)
camera)->setIMU(
_ui->checkBox_depthai_imu_published->isChecked(),
_ui->checkbox_publishInterIMU->isChecked());
6847 ((
CameraDepthAI*)
camera)->setIrIntensity(
_ui->doubleSpinBox_depthai_dot_intensity->value(),
_ui->doubleSpinBox_depthai_flood_intensity->value());
6850 if(
_ui->comboBox_depthai_detect_features->currentIndex() == 1)
6852 ((
CameraDepthAI*)
camera)->setGFTTDetector(
_ui->checkBox_GFTT_useHarrisDetector->isChecked(),
_ui->doubleSpinBox_GFTT_minDistance->value(),
_ui->reextract_maxFeatures->value());
6854 else if(
_ui->comboBox_depthai_detect_features->currentIndex() >= 2)
6856 ((
CameraDepthAI*)
camera)->setSuperPointDetector(
_ui->doubleSpinBox_sptorch_threshold->value(),
_ui->checkBox_sptorch_nms->isChecked(),
_ui->spinBox_sptorch_minDistance->value());
6867 _ui->checkbox_publishInterIMU->isChecked(),
6875 (
_ui->checkBox_rgb_rectify->isEnabled() &&
_ui->checkBox_rgb_rectify->isChecked()) && !useRawImages,
6876 this->getGeneralInputRate(),
6877 this->getSourceLocalTransform());
6878 ((
CameraVideo*)
camera)->setResolution(
_ui->spinBox_usbcam_streamWidth->value(),
_ui->spinBox_usbcam_streamHeight->value());
6879 if(!
_ui->lineEdit_usbcam_fourcc->text().isEmpty())
6887 _ui->source_video_lineEdit_path->text().toStdString(),
6888 (
_ui->checkBox_rgb_rectify->isEnabled() &&
_ui->checkBox_rgb_rectify->isChecked()) && !useRawImages,
6889 this->getGeneralInputRate(),
6890 this->getSourceLocalTransform());
6895 _ui->source_images_lineEdit_path->text().toStdString(),
6896 this->getGeneralInputRate(),
6897 this->getSourceLocalTransform());
6901 ((
CameraImages*)
camera)->setImagesRectified((
_ui->checkBox_rgb_rectify->isEnabled() &&
_ui->checkBox_rgb_rectify->isChecked()) && !useRawImages);
6905 _ui->lineEdit_cameraImages_odom->text().toStdString(),
6906 _ui->comboBox_cameraImages_odomFormat->currentIndex());
6908 _ui->lineEdit_cameraImages_gt->text().toStdString(),
6909 _ui->comboBox_cameraImages_gtFormat->currentIndex());
6912 _ui->lineEdit_cameraImages_path_scans->text().isEmpty()?
"":
_ui->lineEdit_cameraImages_path_scans->text().append(QDir::separator()).toStdString(),
6913 _ui->spinBox_cameraImages_max_scan_pts->value(),
6916 _ui->groupBox_depthFromScan->isChecked(),
6917 !
_ui->groupBox_depthFromScan_fillHoles->isChecked()?0:
_ui->radioButton_depthFromScan_vertical->isChecked()?1:-1,
6918 _ui->checkBox_depthFromScan_fillBorders->isChecked());
6920 _ui->checkBox_cameraImages_timestamps->isChecked(),
6921 _ui->lineEdit_cameraImages_timestamps->text().toStdString(),
6922 _ui->checkBox_cameraImages_syncTimeStamps->isChecked());
6928 _ui->source_checkBox_useDbStamps->isChecked()?-1:
this->getGeneralInputRate(),
6929 _ui->source_checkBox_ignoreOdometry->isChecked(),
6930 _ui->source_checkBox_ignoreGoalDelay->isChecked(),
6931 _ui->source_checkBox_ignoreGoals->isChecked(),
6932 _ui->source_spinBox_databaseStartId->value(),
6933 _ui->source_spinBox_database_cameraIndex->value(),
6934 _ui->source_spinBox_databaseStopId->value(),
6935 !
_ui->general_checkBox_createIntermediateNodes->isChecked(),
6936 _ui->source_checkBox_ignoreLandmarks->isChecked(),
6937 _ui->source_checkBox_ignoreFeatures->isChecked(),
6940 _ui->source_checkBox_ignorePriors->isChecked());
6944 UFATAL(
"Source driver undefined (%d)!", driver);
6951 QString calibrationFile = calibrationPath;
6954 calibrationFile.remove(
"_left.yaml").remove(
"_right.yaml").remove(
"_pose.yaml").remove(
"_rgb.yaml").remove(
"_depth.yaml");
6956 QString
name = QFileInfo(calibrationFile.remove(
".yaml")).fileName();
6957 if(!calibrationPath.isEmpty())
6959 QDir
d = QFileInfo(calibrationPath).dir();
6960 QString tmp = calibrationPath;
6961 if(!tmp.remove(QFileInfo(calibrationPath).baseName()).isEmpty())
6963 dir =
d.absolutePath();
6967 UDEBUG(
"useRawImages=%d dir=%s", useRawImages?1:0, dir.toStdString().c_str());
6969 if(!
camera->
init(useRawImages?
"":dir.toStdString(),
name.toStdString()))
6971 UWARN(
"init camera failed... ");
6972 QMessageBox::warning(
this,
6974 tr(
"Camera initialization failed..."));
7009 _ui->lineEdit_odomSourceDevice->text().compare(
_ui->lineEdit_sourceDevice->text()) == 0)
7011 QMessageBox::warning(
this, tr(
"Odometry Sensor"),
7012 tr(
"Cannot create an odometry sensor with same driver than camera AND with same "
7013 "device. Change device ID of the odometry or camera sensor. To use odometry option "
7014 "from a single camera, look at the parameters of that driver to enable it, "
7015 "then disable odometry sensor. "), QMessageBox::Ok);
7019 extrinsics =
Transform::fromString(
_ui->lineEdit_odom_sensor_extrinsics->text().replace(
"PI_2", QString::number(3.141592/2.0)).toStdString());
7020 timeOffset =
_ui->doubleSpinBox_odom_sensor_time_offset->value()/1000.0;
7021 scaleFactor = (
float)
_ui->doubleSpinBox_odom_sensor_scale_factor->value();
7022 waitTime =
_ui->doubleSpinBox_odom_sensor_wait_time->value()/1000.0;
7024 return createCamera(driver,
_ui->lineEdit_odomSourceDevice->text(),
_ui->lineEdit_odom_sensor_path_calibration->text(),
false,
true,
true,
false);
7035 #if PCL_VERSION_COMPARE(>=, 1, 8, 0)
7037 if(localTransform.
isNull())
7039 UWARN(
"Failed to parse lidar local transfor string \"%s\"!",
7040 _ui->lineEdit_lidar_local_transform->text().toStdString().c_str());
7043 if(!
_ui->lineEdit_vlp16_pcap_path->text().isEmpty())
7047 _ui->lineEdit_vlp16_pcap_path->text().toStdString(),
7048 _ui->checkBox_vlp16_organized->isChecked(),
7049 _ui->checkBox_vlp16_stamp_last->isChecked(),
7050 this->getGeneralInputRate(),
7058 boost::asio::ip::address_v4::from_string(
uFormat(
"%ld.%ld.%ld.%ld",
7059 (
size_t)
_ui->spinBox_vlp16_ip1->value(),
7060 (
size_t)
_ui->spinBox_vlp16_ip2->value(),
7061 (
size_t)
_ui->spinBox_vlp16_ip3->value(),
7062 (
size_t)
_ui->spinBox_vlp16_ip4->value())),
7063 _ui->spinBox_vlp16_port->value(),
7064 _ui->checkBox_vlp16_organized->isChecked(),
7065 _ui->checkBox_vlp16_hostTime->isChecked(),
7066 _ui->checkBox_vlp16_stamp_last->isChecked(),
7067 this->getGeneralInputRate(),
7073 UWARN(
"init lidar failed... ");
7074 QMessageBox::warning(
this,
7076 tr(
"Lidar initialization failed..."));
7081 UWARN(
"Lidar cannot be used with rtabmap built with PCL < 1.8... ");
7082 QMessageBox::warning(
this,
7084 tr(
"Lidar initialization failed..."));
7092 return _ui->groupBox_publishing->isChecked();
7096 return _ui->general_doubleSpinBox_hardThr->value();
7100 return _ui->general_doubleSpinBox_vp->value();
7104 return _ui->doubleSpinBox_similarityThreshold->value();
7108 return _ui->odom_strategy->currentIndex();
7112 return _ui->odom_dataBufferSize->value();
7122 return _ui->general_checkBox_imagesKept->isChecked();
7126 return _ui->general_checkBox_missing_cache_republished->isChecked();
7130 return _ui->general_checkBox_cloudsKept->isChecked();
7134 return _ui->general_doubleSpinBox_timeThr->value();
7138 return _ui->general_doubleSpinBox_detectionRate->value();
7142 return _ui->general_checkBox_SLAM_mode->isChecked();
7146 return _ui->general_checkBox_activateRGBD->isChecked();
7150 return _ui->surf_spinBox_wordsPerImageTarget->value();
7154 return _ui->graphOptimization_priorsIgnored->isChecked();
7161 if(
_ui->general_doubleSpinBox_imgRate->value() !=
value)
7163 _ui->general_doubleSpinBox_imgRate->setValue(
value);
7178 if(
_ui->general_doubleSpinBox_detectionRate->value() !=
value)
7180 _ui->general_doubleSpinBox_detectionRate->setValue(
value);
7195 if(
_ui->general_doubleSpinBox_timeThr->value() !=
value)
7197 _ui->general_doubleSpinBox_timeThr->setValue(
value);
7212 if(
_ui->general_checkBox_SLAM_mode->isChecked() != enabled)
7214 _ui->general_checkBox_SLAM_mode->setChecked(enabled);
7239 !
_ui->lineEdit_cameraImages_path_imu->text().isEmpty())
7241 imuThread =
new IMUThread(
_ui->spinBox_cameraImages_max_imu_rate->value(),
this->getIMULocalTransform());
7246 if(!imuThread->
init(
_ui->lineEdit_cameraImages_path_imu->text().toStdString()))
7248 QMessageBox::warning(
this, tr(
"Source IMU Path"),
7249 tr(
"Initialization of IMU data has failed! Path=%1.").
arg(
_ui->lineEdit_cameraImages_path_imu->text()), QMessageBox::Ok);
7261 int odomStrategy = Parameters::defaultOdomStrategy();
7263 if(odomStrategy != 1)
7266 parameters.erase(Parameters::kVisCorType());
7273 _ui->odom_dataBufferSize->value());
7277 _ui->spinBox_decimation_odom->value(),
7279 _ui->doubleSpinBox_maxDepth_odom->value(),
7280 this->getOdomQualityWarnThr(),
7282 this->getAllParameters());
7283 odomViewer->setWindowTitle(tr(
"Odometry viewer"));
7284 odomViewer->resize(1280, 480+QPushButton().minimumHeight());
7292 if(
_ui->checkbox_source_feature_detection->isChecked())
7299 _ui->checkBox_source_scanFromDepth->isChecked(),
7300 _ui->spinBox_source_scanDownsampleStep->value(),
7301 _ui->doubleSpinBox_source_scanRangeMin->value(),
7302 _ui->doubleSpinBox_source_scanRangeMax->value(),
7303 _ui->doubleSpinBox_source_scanVoxelSize->value(),
7304 _ui->spinBox_source_scanNormalsK->value(),
7305 _ui->doubleSpinBox_source_scanNormalsRadius->value(),
7306 (
float)
_ui->doubleSpinBox_source_scanNormalsForceGroundUp->value(),
7307 _ui->checkBox_source_scanDeskewing->isChecked());
7308 if(
_ui->comboBox_imuFilter_strategy->currentIndex()>0 &&
dynamic_cast<DBReader*
>(
camera) == 0)
7310 cameraThread.
enableIMUFiltering(
_ui->comboBox_imuFilter_strategy->currentIndex()-1,
this->getAllParameters(),
_ui->checkBox_imuFilter_baseFrameConversion->isChecked());
7314 if(
_ui->groupBox_bilateral->isChecked())
7317 _ui->doubleSpinBox_bilateral_sigmaS->value(),
7318 _ui->doubleSpinBox_bilateral_sigmaR->value());
7320 if(!
_ui->lineEdit_source_distortionModel->text().isEmpty())
7335 cameraThread.
start();
7347 imuThread->
join(
true);
7350 cameraThread.
join(
true);
7351 odomThread.
join(
true);
7357 window->setWindowTitle(tr(
"Camera viewer"));
7358 window->resize(1280, 480+QPushButton().minimumHeight());
7369 if(
_ui->checkbox_source_feature_detection->isChecked())
7376 _ui->checkBox_source_scanFromDepth->isChecked(),
7377 _ui->spinBox_source_scanDownsampleStep->value(),
7378 _ui->doubleSpinBox_source_scanRangeMin->value(),
7379 _ui->doubleSpinBox_source_scanRangeMax->value(),
7380 _ui->doubleSpinBox_source_scanVoxelSize->value(),
7381 _ui->spinBox_source_scanNormalsK->value(),
7382 _ui->doubleSpinBox_source_scanNormalsRadius->value(),
7383 (
float)
_ui->doubleSpinBox_source_scanNormalsForceGroundUp->value(),
7384 _ui->checkBox_source_scanDeskewing->isChecked());
7385 if(
_ui->comboBox_imuFilter_strategy->currentIndex()>0 &&
dynamic_cast<DBReader*
>(
camera) == 0)
7387 cameraThread.
enableIMUFiltering(
_ui->comboBox_imuFilter_strategy->currentIndex()-1,
this->getAllParameters(),
_ui->checkBox_imuFilter_baseFrameConversion->isChecked());
7391 if(
_ui->groupBox_bilateral->isChecked())
7394 _ui->doubleSpinBox_bilateral_sigmaS->value(),
7395 _ui->doubleSpinBox_bilateral_sigmaR->value());
7397 if(!
_ui->lineEdit_source_distortionModel->text().isEmpty())
7404 cameraThread.
start();
7407 cameraThread.
join(
true);
7419 QMessageBox::warning(
this,
7421 tr(
"Cannot calibrate database source!"));
7431 if(!dir.mkpath(
this->getCameraInfoDir()))
7442 QMessageBox::StandardButton button = QMessageBox::question(
this, tr(
"Calibration"),
7443 tr(
"With \"%1\" driver, Color and IR cameras cannot be streamed at the "
7444 "same time. A 3-steps calibration is required (Color -> IR -> extrinsics). We will "
7445 "start with the Color camera calibration. Do you want to continue?").
arg(this->
getSourceDriverStr()),
7446 QMessageBox::Yes | QMessageBox::No | QMessageBox::Ignore, QMessageBox::Yes);
7448 if(button == QMessageBox::Yes || button == QMessageBox::Ignore)
7455 if(button != QMessageBox::Ignore)
7468 cameraThread.
start();
7471 cameraThread.
join(
true);
7475 button = QMessageBox::question(
this, tr(
"Calibration"),
7476 tr(
"We will now calibrate the IR camera. Hide the IR projector with a Post-It and "
7477 "make sure you have enough ambient IR light (e.g., external IR source or sunlight!) to see the "
7478 "checkerboard with the IR camera. Do you want to continue?"),
7479 QMessageBox::Yes | QMessageBox::No | QMessageBox::Ignore, QMessageBox::Yes);
7480 if(button == QMessageBox::Yes || button == QMessageBox::Ignore)
7483 if(button != QMessageBox::Ignore)
7496 cameraThread.
start();
7499 cameraThread.
join(
true);
7503 button = QMessageBox::question(
this, tr(
"Calibration"),
7504 tr(
"We will now calibrate the extrinsics. Important: Make sure "
7505 "the cameras and the checkerboard don't move and that both "
7506 "cameras can see the checkerboard. We will repeat this "
7507 "multiple times. Each time, you will have to move the camera (or "
7508 "checkerboard) for a different point of view. Do you want to "
7510 QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
7513 int totalSamples = 0;
7514 if(button == QMessageBox::Yes)
7516 totalSamples = QInputDialog::getInt(
this, tr(
"Calibration"), tr(
"Samples: "), 1, 1, 99, 1, &ok);
7530 for(;
count < totalSamples && button == QMessageBox::Yes; )
7561 if(
count < totalSamples)
7563 button = QMessageBox::question(
this, tr(
"Calibration"),
7564 tr(
"A stereo pair has been taken (total=%1/%2). Move the checkerboard or "
7565 "camera to another position. Press \"Yes\" when you are ready "
7566 "for the next capture.").
arg(
count).
arg(totalSamples),
7567 QMessageBox::Yes | QMessageBox::Abort, QMessageBox::Yes);
7572 button = QMessageBox::question(
this, tr(
"Calibration"),
7573 tr(
"Could not detect the checkerboard on both images or "
7574 "the point of view didn't change enough. Try again?"),
7575 QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
7580 button = QMessageBox::question(
this, tr(
"Calibration"),
7581 tr(
"Failed to start the camera. Try again?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
7584 if(
count == totalSamples && button == QMessageBox::Yes)
7587 stereoModel.
setName(stereoModel.
name(),
"depth",
"rgb");
7590 QMessageBox::warning(
this, tr(
"Calibration"),
7591 tr(
"Extrinsic calibration has failed! Look on the terminal "
7592 "for possible error messages. Make sure corresponding calibration files exist "
7593 "in \"%1\" folder for camera \"%2\" or calibration name set. If not, re-do "
7594 "step 1 and 2 and make sure to export the calibration files.").
arg(this->
getCameraInfoDir()).
arg(serial.c_str()), QMessageBox::Ok);
7598 QMessageBox::information(
this, tr(
"Calibration"),
7599 tr(
"Calibration is completed! Extrinsics have been saved to \"%1/%2_pose.yaml\"").
arg(this->
getCameraInfoDir()).
arg(stereoModel.
name().c_str()), QMessageBox::Ok);
7615 bool rgbDepth = freenect2 || (driver==
kSrcStereoDepthAI &&
_ui->comboBox_depthai_output_mode->currentIndex() == 2);
7629 cameraThread.
start();
7634 cameraThread.
join(
true);
7652 QMessageBox::warning(
this,
7654 tr(
"Cannot calibrate database source!"));
7664 if(!dir.mkpath(
this->getCameraInfoDir()))
7674 QMessageBox::warning(
this,
7676 tr(
"No odometry sensor selected!"));
7682 QMessageBox::StandardButton button = QMessageBox::question(
this, tr(
"Calibration"),
7683 tr(
"We will calibrate the extrinsics. Important: Make sure "
7684 "the cameras and the checkerboard don't move and that both "
7685 "cameras can see the checkerboard. We will repeat this "
7686 "multiple times. Each time, you will have to move the camera (or "
7687 "checkerboard) for a different point of view. Do you want to "
7689 QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
7691 if(button == QMessageBox::Yes)
7696 int totalSamples = 0;
7697 if(button == QMessageBox::Yes)
7699 QDialog dialog(
this);
7700 QFormLayout form(&dialog);
7703 QSpinBox *
samples =
new QSpinBox(&dialog);
7707 QSpinBox * boardWidth =
new QSpinBox(&dialog);
7708 boardWidth->setMinimum(2);
7709 boardWidth->setMaximum(99);
7711 QSpinBox * boardHeight =
new QSpinBox(&dialog);
7712 boardHeight->setMinimum(2);
7713 boardHeight->setMaximum(99);
7715 QDoubleSpinBox * squareSize =
new QDoubleSpinBox(&dialog);
7716 squareSize->setDecimals(4);
7717 squareSize->setMinimum(0.0001);
7718 squareSize->setMaximum(9);
7720 squareSize->setSuffix(
" m");
7721 form.addRow(
"Samples: ",
samples);
7722 form.addRow(
"Checkerboard Width: ", boardWidth);
7723 form.addRow(
"Checkerboard Height: ", boardHeight);
7724 form.addRow(
"Checkerboard Square Size: ", squareSize);
7727 QDialogButtonBox buttonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel,
7729 form.addRow(&buttonBox);
7730 QObject::connect(&buttonBox, SIGNAL(accepted()), &dialog, SLOT(accept()));
7731 QObject::connect(&buttonBox, SIGNAL(rejected()), &dialog, SLOT(reject()));
7734 if (dialog.exec() == QDialog::Accepted) {
7738 totalSamples =
samples->value();
7755 for(;
count < totalSamples && button == QMessageBox::Yes; )
7760 _ui->lineEdit_odomSourceDevice->text(),
7761 _ui->lineEdit_odom_sensor_path_calibration->text(),
7762 false,
true,
false,
true);
7770 tr(
"Odom sensor is not calibrated. Camera and odometry sensor should be individually calibrated (intrinsics) before calibrating the extrinsics between them. Aborting..."), QMessageBox::Ok);
7783 int currentIndex =
_ui->comboBox_odom_sensor->currentIndex();
7784 _ui->comboBox_odom_sensor->setCurrentIndex(0);
7786 _ui->comboBox_odom_sensor->setCurrentIndex(currentIndex);
7794 tr(
"Odom sensor is not calibrated. Camera and odometry sensor should be individually calibrated (intrinsics) before calibrating the extrinsics between them. Aborting..."), QMessageBox::Ok);
7815 if(
count < totalSamples)
7818 tr(
"A stereo pair has been taken (total=%1/%2). Move the checkerboard or "
7819 "camera to another position. Press \"Yes\" when you are ready "
7820 "for the next capture.").
arg(
count).
arg(totalSamples),
7821 QMessageBox::Yes | QMessageBox::Abort, QMessageBox::Yes);
7827 tr(
"Could not detect the checkerboard on both images or "
7828 "the point of view didn't change enough. Try again?"),
7829 QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
7835 tr(
"Failed to start the camera. Try again?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
7838 if(
count == totalSamples && button == QMessageBox::Yes)
7842 odomSensorModel =
CameraModel(
"odom_sensor", odomSensorModel.
imageSize(), odomSensorModel.
K(), cv::Mat::zeros(1,5,CV_64FC1), cv::Mat(), cv::Mat(), odomSensorModel.
localTransform());
7845 stereoModel.
setName(stereoModel.
name(),
"camera",
"odom_sensor");
7849 tr(
"Extrinsic calibration has failed! Look on the terminal "
7850 "for possible error messages."), QMessageBox::Ok);
7851 std::cout <<
"stereoModel: " << stereoModel << std::endl;
7859 UINFO(
"Odom sensor frame to camera frame: %s",
t.prettyPrint().c_str());
7863 _ui->lineEdit_odom_sensor_extrinsics->setText(QString(
"%1 %2 %3 %4 %5 %6")
7867 tr(
"Calibration is completed! Extrinsics have been computed: %1. "
7868 "You can close the calibration dialog.").
arg(
t.prettyPrint().c_str()), QMessageBox::Ok);
7878 window->setWindowTitle(tr(
"Lidar viewer"));
7879 window->setWindowFlags(Qt::Window);
7880 window->resize(1280, 480+QPushButton().minimumHeight());
7889 _ui->checkBox_source_scanFromDepth->isChecked(),
7890 _ui->spinBox_source_scanDownsampleStep->value(),
7891 _ui->doubleSpinBox_source_scanRangeMin->value(),
7892 _ui->doubleSpinBox_source_scanRangeMax->value(),
7893 _ui->doubleSpinBox_source_scanVoxelSize->value(),
7894 _ui->spinBox_source_scanNormalsK->value(),
7895 _ui->doubleSpinBox_source_scanNormalsRadius->value(),
7896 (
float)
_ui->doubleSpinBox_source_scanNormalsForceGroundUp->value(),
7897 _ui->checkBox_source_scanDeskewing->isChecked());
7901 lidarThread.
start();
7904 lidarThread.
join(
true);