mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-02 17:40:23 +08:00
Added ORB_SLAM3 support. IMU Filter: added base frame conversion option. (#698)
Referred issues: #655 https://github.com/introlab/rtabmap_ros/issues/492 Note: IMU not supported yet with ORB_SLAM3. Commits: * Added orbslam3 support. UI-Source->IMU filtering: Added base frame conversion option of IMU data to uniformize yaw initialization. Madgwick: fixed yaw initialization accordingly to Z acc. * fixed regression build error with ORB_SLAM2 * Renamed OdometryORBSLAM2 to OdometryORBSLAM (can be 2 or 3 now)
This commit is contained in:
@@ -189,12 +189,17 @@ AboutDialog::AboutDialog(QWidget * parent) :
|
||||
_ui->label_dvo->setText("No");
|
||||
_ui->label_dvo_license->setEnabled(false);
|
||||
#endif
|
||||
#ifdef RTABMAP_ORB_SLAM2
|
||||
_ui->label_orbslam2->setText("Yes");
|
||||
_ui->label_orbslam2_license->setEnabled(true);
|
||||
#ifdef RTABMAP_ORB_SLAM
|
||||
#if RTABMAP_ORB_SLAM == 3
|
||||
_ui->label_orbslam_title->setText("With ORB SLAM3 :");
|
||||
#elif RTABMAP_ORB_SLAM == 2
|
||||
_ui->label_orbslam_title->setText("With ORB SLAM2 :");
|
||||
#endif
|
||||
_ui->label_orbslam->setText("Yes");
|
||||
_ui->label_orbslam_license->setEnabled(true);
|
||||
#else
|
||||
_ui->label_orbslam2->setText("No");
|
||||
_ui->label_orbslam2_license->setEnabled(false);
|
||||
_ui->label_orbslam->setText("No");
|
||||
_ui->label_orbslam_license->setEnabled(false);
|
||||
#endif
|
||||
|
||||
#ifdef RTABMAP_OKVIS
|
||||
|
||||
@@ -1466,7 +1466,7 @@ void MainWindow::processOdometry(const rtabmap::OdometryEvent & odom, bool dataI
|
||||
{
|
||||
if(_ui->imageView_odometry->isFeaturesShown())
|
||||
{
|
||||
if(odom.info().type == (int)Odometry::kTypeF2M || odom.info().type == (int)Odometry::kTypeORBSLAM2)
|
||||
if(odom.info().type == (int)Odometry::kTypeF2M || odom.info().type == (int)Odometry::kTypeORBSLAM)
|
||||
{
|
||||
if(_preferencesDialog->isOdomOnlyInliersShown())
|
||||
{
|
||||
@@ -1539,7 +1539,7 @@ void MainWindow::processOdometry(const rtabmap::OdometryEvent & odom, bool dataI
|
||||
}
|
||||
|
||||
if( odom.info().type == (int)Odometry::kTypeF2M ||
|
||||
odom.info().type == (int)Odometry::kTypeORBSLAM2 ||
|
||||
odom.info().type == (int)Odometry::kTypeORBSLAM ||
|
||||
odom.info().type == (int)Odometry::kTypeMSCKF ||
|
||||
odom.info().type == (int)Odometry::kTypeVINS)
|
||||
{
|
||||
@@ -5350,7 +5350,7 @@ void MainWindow::startDetection()
|
||||
(float)_preferencesDialog->getSourceScanForceGroundNormalsUp());
|
||||
if(_preferencesDialog->getIMUFilteringStrategy()>0 && dynamic_cast<DBReader*>(camera) == 0)
|
||||
{
|
||||
_camera->enableIMUFiltering(_preferencesDialog->getIMUFilteringStrategy()-1, parameters);
|
||||
_camera->enableIMUFiltering(_preferencesDialog->getIMUFilteringStrategy()-1, parameters, _preferencesDialog->getIMUFilteringBaseFrameConversion());
|
||||
}
|
||||
if(_preferencesDialog->isDepthFilteringAvailable())
|
||||
{
|
||||
|
||||
@@ -395,7 +395,7 @@ void OdometryViewer::processData(const rtabmap::OdometryEvent & odom)
|
||||
|
||||
if(!odom.data().imageRaw().empty())
|
||||
{
|
||||
if(odom.info().type == (int)Odometry::kTypeF2M || odom.info().type == (int)Odometry::kTypeORBSLAM2)
|
||||
if(odom.info().type == (int)Odometry::kTypeF2M || odom.info().type == (int)Odometry::kTypeORBSLAM)
|
||||
{
|
||||
imageView_->setFeatures(odom.info().words, odom.data().depthRaw(), Qt::yellow);
|
||||
}
|
||||
@@ -438,7 +438,7 @@ void OdometryViewer::processData(const rtabmap::OdometryEvent & odom)
|
||||
}
|
||||
|
||||
if( odom.info().type == Odometry::kTypeF2M ||
|
||||
odom.info().type == (int)Odometry::kTypeORBSLAM2 ||
|
||||
odom.info().type == (int)Odometry::kTypeORBSLAM ||
|
||||
odom.info().type == (int)Odometry::kTypeMSCKF)
|
||||
{
|
||||
if(imageView_->isFeaturesShown())
|
||||
|
||||
@@ -171,8 +171,14 @@ PreferencesDialog::PreferencesDialog(QWidget * parent) :
|
||||
#ifndef RTABMAP_DVO
|
||||
_ui->odom_strategy->setItemData(4, 0, Qt::UserRole - 1);
|
||||
#endif
|
||||
#ifndef RTABMAP_ORB_SLAM2
|
||||
#ifndef RTABMAP_ORB_SLAM
|
||||
_ui->odom_strategy->setItemData(5, 0, Qt::UserRole - 1);
|
||||
#elif RTABMAP_ORB_SLAM == 3
|
||||
_ui->odom_strategy->setItemText(5, "ORB SLAM 3");
|
||||
_ui->groupBox_odomORBSLAM->setTitle("ORB SLAM 3");
|
||||
#else
|
||||
_ui->odom_strategy->setItemText(5, "ORB SLAM 2");
|
||||
_ui->groupBox_odomORBSLAM->setTitle("ORB SLAM 2");
|
||||
#endif
|
||||
#ifndef RTABMAP_OKVIS
|
||||
_ui->odom_strategy->setItemData(6, 0, Qt::UserRole - 1);
|
||||
@@ -266,7 +272,7 @@ PreferencesDialog::PreferencesDialog(QWidget * parent) :
|
||||
_ui->loopClosure_bundle->setItemData(1, 0, Qt::UserRole - 1);
|
||||
_ui->groupBoxx_g2o->setEnabled(false);
|
||||
}
|
||||
#ifdef RTABMAP_ORB_SLAM2
|
||||
#ifdef RTABMAP_ORB_SLAM
|
||||
else
|
||||
{
|
||||
// only graph optimization is disabled, g2o (from ORB_SLAM2) is valid only for SBA
|
||||
@@ -616,7 +622,7 @@ PreferencesDialog::PreferencesDialog(QWidget * parent) :
|
||||
|
||||
//Source panel
|
||||
connect(_ui->general_doubleSpinBox_imgRate, SIGNAL(valueChanged(double)), this, SLOT(makeObsoleteSourcePanel()));
|
||||
connect(_ui->general_doubleSpinBox_imgRate, SIGNAL(valueChanged(double)), _ui->doubleSpinBox_OdomORBSLAM2Fps, SLOT(setValue(double)));
|
||||
connect(_ui->general_doubleSpinBox_imgRate, SIGNAL(valueChanged(double)), _ui->doubleSpinBox_OdomORBSLAMFps, SLOT(setValue(double)));
|
||||
connect(_ui->source_mirroring, SIGNAL(stateChanged(int)), this, SLOT(makeObsoleteSourcePanel()));
|
||||
connect(_ui->toolButton_source_path_calibration, SIGNAL(clicked()), this, SLOT(selectCalibrationPath()));
|
||||
connect(_ui->lineEdit_calibrationFile, SIGNAL(textChanged(const QString &)), this, SLOT(makeObsoleteSourcePanel()));
|
||||
@@ -804,6 +810,7 @@ PreferencesDialog::PreferencesDialog(QWidget * parent) :
|
||||
connect(_ui->comboBox_imuFilter_strategy, SIGNAL(currentIndexChanged(int)), this, SLOT(makeObsoleteSourcePanel()));
|
||||
connect(_ui->comboBox_imuFilter_strategy, SIGNAL(currentIndexChanged(int)), _ui->stackedWidget_imuFilter, SLOT(setCurrentIndex(int)));
|
||||
_ui->stackedWidget_imuFilter->setCurrentIndex(_ui->comboBox_imuFilter_strategy->currentIndex());
|
||||
connect(_ui->checkBox_imuFilter_baseFrameConversion, SIGNAL(stateChanged(int)), this, SLOT(makeObsoleteSourcePanel()));
|
||||
connect(_ui->checkbox_publishInterIMU, SIGNAL(stateChanged(int)), this, SLOT(makeObsoleteSourcePanel()));
|
||||
|
||||
connect(_ui->checkBox_source_scanFromDepth, SIGNAL(stateChanged(int)), this, SLOT(makeObsoleteSourcePanel()));
|
||||
@@ -1312,14 +1319,14 @@ PreferencesDialog::PreferencesDialog(QWidget * parent) :
|
||||
_ui->doubleSpinBox_OdomViso2BucketWidth->setObjectName(Parameters::kOdomViso2BucketWidth().c_str());
|
||||
_ui->doubleSpinBox_OdomViso2BucketHeight->setObjectName(Parameters::kOdomViso2BucketHeight().c_str());
|
||||
|
||||
// Odometry ORBSLAM2
|
||||
_ui->lineEdit_OdomORBSLAM2VocPath->setObjectName(Parameters::kOdomORBSLAM2VocPath().c_str());
|
||||
connect(_ui->toolButton_OdomORBSLAM2VocPath, SIGNAL(clicked()), this, SLOT(changeOdometryORBSLAM2Vocabulary()));
|
||||
_ui->doubleSpinBox_OdomORBSLAM2Bf->setObjectName(Parameters::kOdomORBSLAM2Bf().c_str());
|
||||
_ui->doubleSpinBox_OdomORBSLAM2ThDepth->setObjectName(Parameters::kOdomORBSLAM2ThDepth().c_str());
|
||||
_ui->doubleSpinBox_OdomORBSLAM2Fps->setObjectName(Parameters::kOdomORBSLAM2Fps().c_str());
|
||||
_ui->spinBox_OdomORBSLAM2MaxFeatures->setObjectName(Parameters::kOdomORBSLAM2MaxFeatures().c_str());
|
||||
_ui->spinBox_OdomORBSLAM2MapSize->setObjectName(Parameters::kOdomORBSLAM2MapSize().c_str());
|
||||
// Odometry ORBSLAM
|
||||
_ui->lineEdit_OdomORBSLAMVocPath->setObjectName(Parameters::kOdomORBSLAMVocPath().c_str());
|
||||
connect(_ui->toolButton_OdomORBSLAMVocPath, SIGNAL(clicked()), this, SLOT(changeOdometryORBSLAMVocabulary()));
|
||||
_ui->doubleSpinBox_OdomORBSLAMBf->setObjectName(Parameters::kOdomORBSLAMBf().c_str());
|
||||
_ui->doubleSpinBox_OdomORBSLAMThDepth->setObjectName(Parameters::kOdomORBSLAMThDepth().c_str());
|
||||
_ui->doubleSpinBox_OdomORBSLAMFps->setObjectName(Parameters::kOdomORBSLAMFps().c_str());
|
||||
_ui->spinBox_OdomORBSLAMMaxFeatures->setObjectName(Parameters::kOdomORBSLAMMaxFeatures().c_str());
|
||||
_ui->spinBox_OdomORBSLAMMapSize->setObjectName(Parameters::kOdomORBSLAMMapSize().c_str());
|
||||
|
||||
// Odometry Okvis
|
||||
_ui->lineEdit_OdomOkvisPath->setObjectName(Parameters::kOdomOKVISConfigPath().c_str());
|
||||
@@ -2008,13 +2015,14 @@ void PreferencesDialog::resetSettings(QGroupBox * groupBox)
|
||||
_ui->lineEdit_cameraImages_imu_transform->setText("0 0 1 0 -1 0 1 0 0");
|
||||
_ui->spinBox_cameraImages_max_imu_rate->setValue(0);
|
||||
|
||||
_ui->comboBox_imuFilter_strategy->setCurrentIndex(1);
|
||||
_ui->comboBox_imuFilter_strategy->setCurrentIndex(2);
|
||||
_ui->doubleSpinBox_imuFilterMadgwickGain->setValue(Parameters::defaultImuFilterMadgwickGain());
|
||||
_ui->doubleSpinBox_imuFilterMadgwickZeta->setValue(Parameters::defaultImuFilterMadgwickZeta());
|
||||
_ui->doubleSpinBox_imuFilterComplementaryGainAcc->setValue(Parameters::defaultImuFilterComplementaryGainAcc());
|
||||
_ui->doubleSpinBox_imuFilterComplementaryBiasAlpha->setValue(Parameters::defaultImuFilterComplementaryBiasAlpha());
|
||||
_ui->checkBox_imuFilterComplementaryDoAdaptiveGain->setChecked(Parameters::defaultImuFilterComplementaryDoAdpativeGain());
|
||||
_ui->checkBox_imuFilterComplementaryDoBiasEstimation->setChecked(Parameters::defaultImuFilterComplementaryDoBiasEstimation());
|
||||
_ui->checkBox_imuFilter_baseFrameConversion->setChecked(true);
|
||||
_ui->checkbox_publishInterIMU->setChecked(false);
|
||||
|
||||
_ui->checkBox_source_scanFromDepth->setChecked(false);
|
||||
@@ -2505,6 +2513,7 @@ void PreferencesDialog::readCameraSettings(const QString & filePath)
|
||||
_ui->doubleSpinBox_imuFilterComplementaryBiasAlpha->setValue(settings.value("complementary_bias_alpha", _ui->doubleSpinBox_imuFilterComplementaryBiasAlpha->value()).toDouble());
|
||||
_ui->checkBox_imuFilterComplementaryDoAdaptiveGain->setChecked(settings.value("complementary_adaptive_gain", _ui->checkBox_imuFilterComplementaryDoAdaptiveGain->isChecked()).toBool());
|
||||
_ui->checkBox_imuFilterComplementaryDoBiasEstimation->setChecked(settings.value("complementary_biais_estimation", _ui->checkBox_imuFilterComplementaryDoBiasEstimation->isChecked()).toBool());
|
||||
_ui->checkBox_imuFilter_baseFrameConversion->setChecked(settings.value("base_frame_conversion", _ui->checkBox_imuFilter_baseFrameConversion->isChecked()).toBool());
|
||||
_ui->checkbox_publishInterIMU->setChecked(settings.value("publish_inter_imu", _ui->checkbox_publishInterIMU->isChecked()).toBool());
|
||||
settings.endGroup();//IMU
|
||||
|
||||
@@ -2997,6 +3006,7 @@ void PreferencesDialog::writeCameraSettings(const QString & filePath) const
|
||||
settings.setValue("complementary_bias_alpha", _ui->doubleSpinBox_imuFilterComplementaryBiasAlpha->value());
|
||||
settings.setValue("complementary_adaptive_gain", _ui->checkBox_imuFilterComplementaryDoAdaptiveGain->isChecked());
|
||||
settings.setValue("complementary_biais_estimation", _ui->checkBox_imuFilterComplementaryDoBiasEstimation->isChecked());
|
||||
settings.setValue("base_frame_conversion", _ui->checkBox_imuFilter_baseFrameConversion->isChecked());
|
||||
settings.setValue("publish_inter_imu", _ui->checkbox_publishInterIMU->isChecked());
|
||||
settings.endGroup();//IMU
|
||||
|
||||
@@ -3150,7 +3160,7 @@ bool PreferencesDialog::validateForm()
|
||||
"with TORO. GTSAM is set instead for graph optimization strategy."));
|
||||
_ui->graphOptimization_type->setCurrentIndex(Optimizer::kTypeGTSAM);
|
||||
}
|
||||
#ifndef RTABMAP_ORB_SLAM2
|
||||
#ifndef RTABMAP_ORB_SLAM
|
||||
else if(Optimizer::isAvailable(Optimizer::kTypeG2O))
|
||||
{
|
||||
QMessageBox::warning(this, tr("Parameter warning"),
|
||||
@@ -3160,7 +3170,7 @@ bool PreferencesDialog::validateForm()
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#ifdef RTABMAP_ORB_SLAM2
|
||||
#ifdef RTABMAP_ORB_SLAM
|
||||
if(_ui->graphOptimization_type->currentIndex() == 1)
|
||||
#else
|
||||
if(_ui->graphOptimization_type->currentIndex() == 1 && !Optimizer::isAvailable(Optimizer::kTypeG2O))
|
||||
@@ -3183,7 +3193,7 @@ bool PreferencesDialog::validateForm()
|
||||
}
|
||||
if(_ui->graphOptimization_type->currentIndex() == 2 && !Optimizer::isAvailable(Optimizer::kTypeGTSAM))
|
||||
{
|
||||
#ifndef RTABMAP_ORB_SLAM2
|
||||
#ifndef RTABMAP_ORB_SLAM
|
||||
if(Optimizer::isAvailable(Optimizer::kTypeG2O))
|
||||
{
|
||||
QMessageBox::warning(this, tr("Parameter warning"),
|
||||
@@ -3768,7 +3778,10 @@ void PreferencesDialog::updateParameters(const ParametersMap & parameters, bool
|
||||
|
||||
void PreferencesDialog::selectSourceDriver(Src src, int variant)
|
||||
{
|
||||
_ui->comboBox_imuFilter_strategy->setCurrentIndex(1);
|
||||
if(_ui->comboBox_imuFilter_strategy->currentIndex()==0)
|
||||
{
|
||||
_ui->comboBox_imuFilter_strategy->setCurrentIndex(2);
|
||||
}
|
||||
_3dRenderingRoiRatios[0]->setText("0.0 0.0 0.0 0.0");
|
||||
_3dRenderingRoiRatios[1]->setText("0.0 0.0 0.0 0.0");
|
||||
|
||||
@@ -4309,7 +4322,7 @@ void PreferencesDialog::setParameter(const std::string & key, const std::string
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#ifndef RTABMAP_ORB_SLAM2
|
||||
#ifndef RTABMAP_ORB_SLAM
|
||||
if(!Optimizer::isAvailable(Optimizer::kTypeG2O))
|
||||
#endif
|
||||
{
|
||||
@@ -4861,20 +4874,20 @@ void PreferencesDialog::changeDictionaryPath()
|
||||
}
|
||||
}
|
||||
|
||||
void PreferencesDialog::changeOdometryORBSLAM2Vocabulary()
|
||||
void PreferencesDialog::changeOdometryORBSLAMVocabulary()
|
||||
{
|
||||
QString path;
|
||||
if(_ui->lineEdit_OdomORBSLAM2VocPath->text().isEmpty())
|
||||
if(_ui->lineEdit_OdomORBSLAMVocPath->text().isEmpty())
|
||||
{
|
||||
path = QFileDialog::getOpenFileName(this, tr("ORBSLAM2 Vocabulary"), this->getWorkingDirectory(), tr("Vocabulary (*.txt)"));
|
||||
path = QFileDialog::getOpenFileName(this, tr("ORBSLAM Vocabulary"), this->getWorkingDirectory(), tr("Vocabulary (*.txt)"));
|
||||
}
|
||||
else
|
||||
{
|
||||
path = QFileDialog::getOpenFileName(this, tr("ORBSLAM2 Vocabulary"), _ui->lineEdit_OdomORBSLAM2VocPath->text(), tr("Vocabulary (*.txt)"));
|
||||
path = QFileDialog::getOpenFileName(this, tr("ORBSLAM Vocabulary"), _ui->lineEdit_OdomORBSLAMVocPath->text(), tr("Vocabulary (*.txt)"));
|
||||
}
|
||||
if(!path.isEmpty())
|
||||
{
|
||||
_ui->lineEdit_OdomORBSLAM2VocPath->setText(path);
|
||||
_ui->lineEdit_OdomORBSLAMVocPath->setText(path);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5631,6 +5644,10 @@ int PreferencesDialog::getIMUFilteringStrategy() const
|
||||
{
|
||||
return _ui->comboBox_imuFilter_strategy->currentIndex();
|
||||
}
|
||||
bool PreferencesDialog::getIMUFilteringBaseFrameConversion() const
|
||||
{
|
||||
return _ui->checkBox_imuFilter_baseFrameConversion->isChecked();
|
||||
}
|
||||
bool PreferencesDialog::isDepthFilteringAvailable() const
|
||||
{
|
||||
return _ui->groupBox_depthImageFiltering->isEnabled();
|
||||
@@ -6398,7 +6415,7 @@ void PreferencesDialog::testOdometry()
|
||||
(float)_ui->doubleSpinBox_source_scanNormalsForceGroundUp->value());
|
||||
if(_ui->comboBox_imuFilter_strategy->currentIndex()>0 && dynamic_cast<DBReader*>(camera) == 0)
|
||||
{
|
||||
cameraThread.enableIMUFiltering(_ui->comboBox_imuFilter_strategy->currentIndex()-1, this->getAllParameters());
|
||||
cameraThread.enableIMUFiltering(_ui->comboBox_imuFilter_strategy->currentIndex()-1, this->getAllParameters(), _ui->checkBox_imuFilter_baseFrameConversion->isChecked());
|
||||
}
|
||||
if(isDepthFilteringAvailable())
|
||||
{
|
||||
@@ -6469,7 +6486,7 @@ void PreferencesDialog::testCamera()
|
||||
(float)_ui->doubleSpinBox_source_scanNormalsForceGroundUp->value());
|
||||
if(_ui->comboBox_imuFilter_strategy->currentIndex()>0 && dynamic_cast<DBReader*>(camera) == 0)
|
||||
{
|
||||
cameraThread.enableIMUFiltering(_ui->comboBox_imuFilter_strategy->currentIndex()-1, this->getAllParameters());
|
||||
cameraThread.enableIMUFiltering(_ui->comboBox_imuFilter_strategy->currentIndex()-1, this->getAllParameters(), _ui->checkBox_imuFilter_baseFrameConversion->isChecked());
|
||||
}
|
||||
if(isDepthFilteringAvailable())
|
||||
{
|
||||
|
||||
@@ -162,9 +162,9 @@ p, li { white-space: pre-wrap; }
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>-228</y>
|
||||
<y>-567</y>
|
||||
<width>596</width>
|
||||
<height>929</height>
|
||||
<height>912</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
@@ -430,7 +430,7 @@ p, li { white-space: pre-wrap; }
|
||||
</widget>
|
||||
</item>
|
||||
<item row="35" column="0">
|
||||
<widget class="QLabel" name="label_28">
|
||||
<widget class="QLabel" name="label_orbslam_title">
|
||||
<property name="text">
|
||||
<string>With ORB SLAM 2 :</string>
|
||||
</property>
|
||||
@@ -450,7 +450,7 @@ p, li { white-space: pre-wrap; }
|
||||
</widget>
|
||||
</item>
|
||||
<item row="35" column="1">
|
||||
<widget class="QLabel" name="label_orbslam2">
|
||||
<widget class="QLabel" name="label_orbslam">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
@@ -944,7 +944,7 @@ p, li { white-space: pre-wrap; }
|
||||
</widget>
|
||||
</item>
|
||||
<item row="35" column="2">
|
||||
<widget class="QLabel" name="label_orbslam2_license">
|
||||
<widget class="QLabel" name="label_orbslam_license">
|
||||
<property name="text">
|
||||
<string>GPLv3</string>
|
||||
</property>
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
<x>0</x>
|
||||
<y>-265</y>
|
||||
<width>686</width>
|
||||
<height>3357</height>
|
||||
<height>3397</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_16">
|
||||
@@ -7212,7 +7212,7 @@ when using the file type, logs are saved in LogRtabmap.txt (located in the worki
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<item row="2" column="0">
|
||||
<widget class="QCheckBox" name="checkbox_publishInterIMU">
|
||||
<property name="text">
|
||||
<string/>
|
||||
@@ -7222,16 +7222,36 @@ when using the file type, logs are saved in LogRtabmap.txt (located in the worki
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<item row="2" column="1">
|
||||
<widget class="QLabel" name="label_563">
|
||||
<property name="text">
|
||||
<string>Publish inter IMU messages from the camera. IMU received between images will be published as separate topic.</string>
|
||||
<string>Publish inter IMU messages from the camera. IMU received between images will be published as separate topic. IMU filtering strategy will be ignored.</string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLabel" name="label_621">
|
||||
<property name="text">
|
||||
<string>Convert IMU in base frame before filtering. This can help to initialize correctly the yaw.</string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QCheckBox" name="checkBox_imuFilter_baseFrameConversion">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
@@ -13572,7 +13592,7 @@ If set to false, classic RTAB-Map loop closure detection is done using only imag
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>ORB SLAM 2</string>
|
||||
<string>ORB SLAM</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
@@ -13898,7 +13918,7 @@ If set to false, classic RTAB-Map loop closure detection is done using only imag
|
||||
<item>
|
||||
<widget class="QStackedWidget" name="stackedWidget_odometryType">
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
<number>5</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="page_52">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_77">
|
||||
@@ -15778,15 +15798,15 @@ If set to false, classic RTAB-Map loop closure detection is done using only imag
|
||||
<widget class="QWidget" name="page_70">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_125">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_odomORBSLAM2">
|
||||
<widget class="QGroupBox" name="groupBox_odomORBSLAM">
|
||||
<property name="title">
|
||||
<string>ORB SLAM 2</string>
|
||||
<string>ORB SLAM</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_124">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_412">
|
||||
<property name="text">
|
||||
<string><html><head/><body><p>ORB SLAM 2: <a href="https://github.com/raulmur/ORB_SLAM2"><span style=" text-decoration: underline; color:#0000ff;">https://github.com/raulmur/ORB_SLAM2</span></a></p><p>Tracking and local mapping from ORB SLAM 2 is done but loop closure detection is disabled, using RTAB-Map loop closure detection instead. See ORB panel for ORB parameters (pyramid scale and number of pyramids). See FAST panel for FAST parameters (init and min thresholds). Vis/MaxFeatures (see Visual Registration panel) is used as the number of ORB features extracted.<br/></p></body></html></string>
|
||||
<string><html><head/><body><p>ORB SLAM2: <a href="https://github.com/raulmur/ORB_SLAM2"><span style=" text-decoration: underline; color:#0000ff;">https://github.com/UZ-SLAMLab/ORB_SLAM3</span></a><br/>ORB SLAM3: <a href="https://github.com/UZ-SLAMLab/ORB_SLAM3"><span style=" text-decoration: underline; color:#0000ff;">https://github.com/raulmur/ORB_SLAM2</span></a></p><p>Tracking and local mapping from ORB SLAM is done but loop closure detection is disabled, using RTAB-Map loop closure detection instead. See ORB panel for ORB parameters (pyramid scale and number of pyramids). See FAST panel for FAST parameters (init and min thresholds). Vis/MaxFeatures (see Visual Registration panel) is used as the number of ORB features extracted.<br/></p></body></html></string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
@@ -15802,7 +15822,7 @@ If set to false, classic RTAB-Map loop closure detection is done using only imag
|
||||
<item>
|
||||
<layout class="QGridLayout" name="gridLayout_93" columnstretch="0,0,1">
|
||||
<item row="1" column="1">
|
||||
<widget class="QDoubleSpinBox" name="doubleSpinBox_OdomORBSLAM2Bf">
|
||||
<widget class="QDoubleSpinBox" name="doubleSpinBox_OdomORBSLAMBf">
|
||||
<property name="suffix">
|
||||
<string> m</string>
|
||||
</property>
|
||||
@@ -15837,7 +15857,7 @@ If set to false, classic RTAB-Map loop closure detection is done using only imag
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QDoubleSpinBox" name="doubleSpinBox_OdomORBSLAM2ThDepth">
|
||||
<widget class="QDoubleSpinBox" name="doubleSpinBox_OdomORBSLAMThDepth">
|
||||
<property name="suffix">
|
||||
<string/>
|
||||
</property>
|
||||
@@ -15872,7 +15892,7 @@ If set to false, classic RTAB-Map loop closure detection is done using only imag
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="lineEdit_OdomORBSLAM2VocPath"/>
|
||||
<widget class="QLineEdit" name="lineEdit_OdomORBSLAMVocPath"/>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<widget class="QLabel" name="label_415">
|
||||
@@ -15888,7 +15908,7 @@ If set to false, classic RTAB-Map loop closure detection is done using only imag
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QToolButton" name="toolButton_OdomORBSLAM2VocPath">
|
||||
<widget class="QToolButton" name="toolButton_OdomORBSLAMVocPath">
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
@@ -15908,7 +15928,7 @@ If set to false, classic RTAB-Map loop closure detection is done using only imag
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QDoubleSpinBox" name="doubleSpinBox_OdomORBSLAM2Fps">
|
||||
<widget class="QDoubleSpinBox" name="doubleSpinBox_OdomORBSLAMFps">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
@@ -15946,7 +15966,7 @@ If set to false, classic RTAB-Map loop closure detection is done using only imag
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QSpinBox" name="spinBox_OdomORBSLAM2MaxFeatures">
|
||||
<widget class="QSpinBox" name="spinBox_OdomORBSLAMMaxFeatures">
|
||||
<property name="maximum">
|
||||
<number>99999</number>
|
||||
</property>
|
||||
@@ -15969,7 +15989,7 @@ If set to false, classic RTAB-Map loop closure detection is done using only imag
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<widget class="QSpinBox" name="spinBox_OdomORBSLAM2MapSize">
|
||||
<widget class="QSpinBox" name="spinBox_OdomORBSLAMMapSize">
|
||||
<property name="maximum">
|
||||
<number>999999</number>
|
||||
</property>
|
||||
|
||||
Reference in New Issue
Block a user