Bump 0.20.8 version. Parameters: updated default of Vis/CorGuessWinSize=40 (was 20), GFTT/MinDistance=7 (was 3), Optimizer/GravitySigma=0.3 if built with g2o or gtsam. Those parameters help for smooth tracking on latest sensors with higher resolution and use IMU by default if available. Updated docker jfr2018 to use original parameters. CameraStereoZed: wait for imu to be available before sending frames (Zed-m and Zed2).

This commit is contained in:
matlabbe
2021-01-08 13:04:24 -05:00
parent 792c967d46
commit 1a967127d9
12 changed files with 46 additions and 86 deletions

View File

@@ -21,7 +21,7 @@ SET(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake_modules")
####################### #######################
SET(RTABMAP_MAJOR_VERSION 0) SET(RTABMAP_MAJOR_VERSION 0)
SET(RTABMAP_MINOR_VERSION 20) SET(RTABMAP_MINOR_VERSION 20)
SET(RTABMAP_PATCH_VERSION 7) SET(RTABMAP_PATCH_VERSION 8)
SET(RTABMAP_VERSION SET(RTABMAP_VERSION
${RTABMAP_MAJOR_VERSION}.${RTABMAP_MINOR_VERSION}.${RTABMAP_PATCH_VERSION}) ${RTABMAP_MAJOR_VERSION}.${RTABMAP_MINOR_VERSION}.${RTABMAP_PATCH_VERSION})

View File

@@ -296,7 +296,7 @@ class RTABMAP_EXP Parameters
RTABMAP_PARAM(FAST, CV, int, 0, "Enable FastCV implementation if non-zero (and RTAB-Map is built with FastCV support). Values should be 9 and 10."); RTABMAP_PARAM(FAST, CV, int, 0, "Enable FastCV implementation if non-zero (and RTAB-Map is built with FastCV support). Values should be 9 and 10.");
RTABMAP_PARAM(GFTT, QualityLevel, double, 0.001, ""); RTABMAP_PARAM(GFTT, QualityLevel, double, 0.001, "");
RTABMAP_PARAM(GFTT, MinDistance, double, 3, ""); RTABMAP_PARAM(GFTT, MinDistance, double, 7, "");
RTABMAP_PARAM(GFTT, BlockSize, int, 3, ""); RTABMAP_PARAM(GFTT, BlockSize, int, 3, "");
RTABMAP_PARAM(GFTT, UseHarrisDetector, bool, false, ""); RTABMAP_PARAM(GFTT, UseHarrisDetector, bool, false, "");
RTABMAP_PARAM(GFTT, K, double, 0.04, ""); RTABMAP_PARAM(GFTT, K, double, 0.04, "");
@@ -408,7 +408,11 @@ class RTABMAP_EXP Parameters
RTABMAP_PARAM(Optimizer, Robust, bool, false, uFormat("Robust graph optimization using Vertigo (only work for g2o and GTSAM optimization strategies). Not compatible with \"%s\" if enabled.", kRGBDOptimizeMaxError().c_str())); RTABMAP_PARAM(Optimizer, Robust, bool, false, uFormat("Robust graph optimization using Vertigo (only work for g2o and GTSAM optimization strategies). Not compatible with \"%s\" if enabled.", kRGBDOptimizeMaxError().c_str()));
RTABMAP_PARAM(Optimizer, PriorsIgnored, bool, true, "Ignore prior constraints (global pose or GPS) while optimizing. Currently only g2o and gtsam optimization supports this."); RTABMAP_PARAM(Optimizer, PriorsIgnored, bool, true, "Ignore prior constraints (global pose or GPS) while optimizing. Currently only g2o and gtsam optimization supports this.");
RTABMAP_PARAM(Optimizer, LandmarksIgnored, bool, false, "Ignore landmark constraints while optimizing. Currently only g2o and gtsam optimization supports this."); RTABMAP_PARAM(Optimizer, LandmarksIgnored, bool, false, "Ignore landmark constraints while optimizing. Currently only g2o and gtsam optimization supports this.");
#if defined(RTABMAP_G2O) || defined(RTABMAP_GTSAM)
RTABMAP_PARAM(Optimizer, GravitySigma, float, 0.3, uFormat("Gravity sigma value (>=0, typically between 0.1 and 0.3). Optimization is done while preserving gravity orientation of the poses. This should be used only with visual/lidar inertial odometry approaches, for which we assume that all odometry poses are aligned with gravity. Set to 0 to disable gravity constraints. Currently supported only with g2o and GTSAM optimization strategies (see %s).", kOptimizerStrategy().c_str()));
#else
RTABMAP_PARAM(Optimizer, GravitySigma, float, 0.0, uFormat("Gravity sigma value (>=0, typically between 0.1 and 0.3). Optimization is done while preserving gravity orientation of the poses. This should be used only with visual/lidar inertial odometry approaches, for which we assume that all odometry poses are aligned with gravity. Set to 0 to disable gravity constraints. Currently supported only with g2o and GTSAM optimization strategies (see %s).", kOptimizerStrategy().c_str())); RTABMAP_PARAM(Optimizer, GravitySigma, float, 0.0, uFormat("Gravity sigma value (>=0, typically between 0.1 and 0.3). Optimization is done while preserving gravity orientation of the poses. This should be used only with visual/lidar inertial odometry approaches, for which we assume that all odometry poses are aligned with gravity. Set to 0 to disable gravity constraints. Currently supported only with g2o and GTSAM optimization strategies (see %s).", kOptimizerStrategy().c_str()));
#endif
#ifdef RTABMAP_ORB_SLAM2 #ifdef RTABMAP_ORB_SLAM2
RTABMAP_PARAM(g2o, Solver, int, 3, "0=csparse 1=pcg 2=cholmod 3=Eigen"); RTABMAP_PARAM(g2o, Solver, int, 3, "0=csparse 1=pcg 2=cholmod 3=Eigen");
@@ -605,7 +609,7 @@ class RTABMAP_EXP Parameters
RTABMAP_PARAM(Vis, CorType, int, 0, "Correspondences computation approach: 0=Features Matching, 1=Optical Flow"); RTABMAP_PARAM(Vis, CorType, int, 0, "Correspondences computation approach: 0=Features Matching, 1=Optical Flow");
RTABMAP_PARAM(Vis, CorNNType, int, 1, uFormat("[%s=0] kNNFlannNaive=0, kNNFlannKdTree=1, kNNFlannLSH=2, kNNBruteForce=3, kNNBruteForceGPU=4, BruteForceCrossCheck=5, SuperGlue=6, GMS=7. Used for features matching approach.", kVisCorType().c_str())); RTABMAP_PARAM(Vis, CorNNType, int, 1, uFormat("[%s=0] kNNFlannNaive=0, kNNFlannKdTree=1, kNNFlannLSH=2, kNNBruteForce=3, kNNBruteForceGPU=4, BruteForceCrossCheck=5, SuperGlue=6, GMS=7. Used for features matching approach.", kVisCorType().c_str()));
RTABMAP_PARAM(Vis, CorNNDR, float, 0.8, uFormat("[%s=0] NNDR: nearest neighbor distance ratio. Used for knn features matching approach.", kVisCorType().c_str())); RTABMAP_PARAM(Vis, CorNNDR, float, 0.8, uFormat("[%s=0] NNDR: nearest neighbor distance ratio. Used for knn features matching approach.", kVisCorType().c_str()));
RTABMAP_PARAM(Vis, CorGuessWinSize, int, 20, uFormat("[%s=0] Matching window size (pixels) around projected points when a guess transform is provided to find correspondences. 0 means disabled.", kVisCorType().c_str())); RTABMAP_PARAM(Vis, CorGuessWinSize, int, 40, uFormat("[%s=0] Matching window size (pixels) around projected points when a guess transform is provided to find correspondences. 0 means disabled.", kVisCorType().c_str()));
RTABMAP_PARAM(Vis, CorGuessMatchToProjection, bool, false, uFormat("[%s=0] Match frame's corners to source's projected points (when guess transform is provided) instead of projected points to frame's corners.", kVisCorType().c_str())); RTABMAP_PARAM(Vis, CorGuessMatchToProjection, bool, false, uFormat("[%s=0] Match frame's corners to source's projected points (when guess transform is provided) instead of projected points to frame's corners.", kVisCorType().c_str()));
RTABMAP_PARAM(Vis, CorFlowWinSize, int, 16, uFormat("[%s=1] See cv::calcOpticalFlowPyrLK(). Used for optical flow approach.", kVisCorType().c_str())); RTABMAP_PARAM(Vis, CorFlowWinSize, int, 16, uFormat("[%s=1] See cv::calcOpticalFlowPyrLK(). Used for optical flow approach.", kVisCorType().c_str()));
RTABMAP_PARAM(Vis, CorFlowIterations, int, 30, uFormat("[%s=1] See cv::calcOpticalFlowPyrLK(). Used for optical flow approach.", kVisCorType().c_str())); RTABMAP_PARAM(Vis, CorFlowIterations, int, 30, uFormat("[%s=1] See cv::calcOpticalFlowPyrLK(). Used for optical flow approach.", kVisCorType().c_str()));

View File

@@ -113,7 +113,10 @@ CameraRealSense2::~CameraRealSense2()
UWARN("%s", error.what()); UWARN("%s", error.what());
} }
} }
#ifdef WIN32
dev_[i]->hardware_reset(); // To avoid freezing on some Windows computers in the following destructor dev_[i]->hardware_reset(); // To avoid freezing on some Windows computers in the following destructor
// Don't do this on linux (tested on Ubuntu 18.04, realsense v2.41.0): T265 cannot be restarted
#endif
delete dev_[i]; delete dev_[i];
} }
} }

View File

@@ -565,7 +565,22 @@ SensorData CameraStereoZed::captureImage(CameraInfo * info)
if(res==sl::SUCCESS) if(res==sl::SUCCESS)
#else #else
sl::ERROR_CODE res = zed_->grab(rparam);
sl::ERROR_CODE res;
bool imuReceived = true;
do
{
res = zed_->grab(rparam);
// If the sensor supports IMU, wait IMU to be available before sending data.
if(imuPublishingThread_ == 0 && !imuLocalTransform_.isNull())
{
sl::SensorsData imudatatmp;
res = zed_->getSensorsData(imudatatmp, sl::TIME_REFERENCE::IMAGE);
imuReceived = res == sl::ERROR_CODE::SUCCESS && imudatatmp.imu.is_available && imudatatmp.imu.timestamp.data_ns != 0;
}
}
while(src_ == CameraVideo::kUsbDevice && (res!=sl::ERROR_CODE::SUCCESS || !imuReceived) && timer.elapsed() < 2.0);
if(res==sl::ERROR_CODE::SUCCESS) if(res==sl::ERROR_CODE::SUCCESS)
#endif #endif

View File

@@ -133,12 +133,14 @@ do
--RGBD/ProximityBySpace false\ --RGBD/ProximityBySpace false\
--Rtabmap/DetectionRate 2\ --Rtabmap/DetectionRate 2\
--Kp/FlannRebalancingFactor 1.0\ --Kp/FlannRebalancingFactor 1.0\
--GFTT/MinDistance 3\
--Odom/Strategy $STRATEGY\ --Odom/Strategy $STRATEGY\
--Mem/STMSize 30\ --Mem/STMSize 30\
--Mem/UseOdomFeatures false \ --Mem/UseOdomFeatures false \
--Mem/BinDataKept false \ --Mem/BinDataKept false \
--Rtabmap/CreateIntermediateNodes false\ --Rtabmap/CreateIntermediateNodes false\
--Vis/CorNNDR 0.6 \ --Vis/CorNNDR 0.6 \
--Vis/CorGuessWinSize 20 \
$V203_params\ $V203_params\
$F2F_params\ $F2F_params\
--OdomORBSLAM2/VocPath /root/ORBvoc.txt\ --OdomORBSLAM2/VocPath /root/ORBvoc.txt\

View File

@@ -125,6 +125,7 @@ do
--Mem/UseOdomFeatures false \ --Mem/UseOdomFeatures false \
--Mem/BinDataKept false \ --Mem/BinDataKept false \
--Vis/CorNNDR 0.6 \ --Vis/CorNNDR 0.6 \
--Vis/CorGuessWinSize 20 \
$SCAN \ $SCAN \
--gt $KITTI_ROOT_PATH"/devkit/cpp/data/odometry/poses/$d.txt"\ --gt $KITTI_ROOT_PATH"/devkit/cpp/data/odometry/poses/$d.txt"\
--output "$KITTI_RESULTS_PATH/$d"\ --output "$KITTI_RESULTS_PATH/$d"\

View File

@@ -78,12 +78,14 @@ do
--RGBD/AngularUpdate 0\ --RGBD/AngularUpdate 0\
--Rtabmap/DetectionRate $DETECTION_RATE\ --Rtabmap/DetectionRate $DETECTION_RATE\
--Kp/FlannRebalancingFactor 1.0\ --Kp/FlannRebalancingFactor 1.0\
--GFTT/MinDistance 3\
--Odom/Strategy $STRATEGY\ --Odom/Strategy $STRATEGY\
--Mem/STMSize 30\ --Mem/STMSize 30\
--Mem/UseOdomFeatures false \ --Mem/UseOdomFeatures false \
--Mem/BinDataKept true \ --Mem/BinDataKept true \
--Rtabmap/CreateIntermediateNodes false\ --Rtabmap/CreateIntermediateNodes false\
--Vis/CorNNDR 0.6 \ --Vis/CorNNDR 0.6 \
--Vis/CorGuessWinSize 20 \
$F2F_params\ $F2F_params\
--OdomORBSLAM2/VocPath /root/ORBvoc.txt\ --OdomORBSLAM2/VocPath /root/ORBvoc.txt\
--OdomFovis/MinFeaturesForEstimate 10\ --OdomFovis/MinFeaturesForEstimate 10\

View File

@@ -175,13 +175,11 @@ protected Q_SLOTS:
void selectK4A(); void selectK4A();
void selectRealSense(); void selectRealSense();
void selectRealSense2(); void selectRealSense2();
void selectRealSense2i();
void selectRealSense2L515(); void selectRealSense2L515();
void selectRealSense2Stereo(); void selectRealSense2Stereo();
void selectStereoDC1394(); void selectStereoDC1394();
void selectStereoFlyCapture2(); void selectStereoFlyCapture2();
void selectStereoZed(); void selectStereoZed();
void selectStereoZedi();
void selectStereoTara(); void selectStereoTara();
void selectStereoUsb(); void selectStereoUsb();
void selectMyntEyeS(); void selectMyntEyeS();

View File

@@ -436,12 +436,10 @@ MainWindow::MainWindow(PreferencesDialog * prefDialog, QWidget * parent, bool sh
connect(_ui->actionRealSense_ZR300, SIGNAL(triggered()), this, SLOT(selectRealSense())); connect(_ui->actionRealSense_ZR300, SIGNAL(triggered()), this, SLOT(selectRealSense()));
connect(_ui->actionRealSense2_SR300, SIGNAL(triggered()), this, SLOT(selectRealSense2())); connect(_ui->actionRealSense2_SR300, SIGNAL(triggered()), this, SLOT(selectRealSense2()));
connect(_ui->actionRealSense2_D400, SIGNAL(triggered()), this, SLOT(selectRealSense2())); connect(_ui->actionRealSense2_D400, SIGNAL(triggered()), this, SLOT(selectRealSense2()));
connect(_ui->actionRealSense2_IMU, SIGNAL(triggered()), this, SLOT(selectRealSense2i()));
connect(_ui->actionRealSense2_L515, SIGNAL(triggered()), this, SLOT(selectRealSense2L515())); connect(_ui->actionRealSense2_L515, SIGNAL(triggered()), this, SLOT(selectRealSense2L515()));
connect(_ui->actionStereoDC1394, SIGNAL(triggered()), this, SLOT(selectStereoDC1394())); connect(_ui->actionStereoDC1394, SIGNAL(triggered()), this, SLOT(selectStereoDC1394()));
connect(_ui->actionStereoFlyCapture2, SIGNAL(triggered()), this, SLOT(selectStereoFlyCapture2())); connect(_ui->actionStereoFlyCapture2, SIGNAL(triggered()), this, SLOT(selectStereoFlyCapture2()));
connect(_ui->actionStereoZed, SIGNAL(triggered()), this, SLOT(selectStereoZed())); connect(_ui->actionStereoZed, SIGNAL(triggered()), this, SLOT(selectStereoZed()));
connect(_ui->actionZed_sdk_IMU, SIGNAL(triggered()), this, SLOT(selectStereoZedi()));
connect(_ui->actionStereoTara, SIGNAL(triggered()), this, SLOT(selectStereoTara())); connect(_ui->actionStereoTara, SIGNAL(triggered()), this, SLOT(selectStereoTara()));
connect(_ui->actionStereoUsb, SIGNAL(triggered()), this, SLOT(selectStereoUsb())); connect(_ui->actionStereoUsb, SIGNAL(triggered()), this, SLOT(selectStereoUsb()));
connect(_ui->actionRealSense2_T265, SIGNAL(triggered()), this, SLOT(selectRealSense2Stereo())); connect(_ui->actionRealSense2_T265, SIGNAL(triggered()), this, SLOT(selectRealSense2Stereo()));
@@ -459,13 +457,11 @@ MainWindow::MainWindow(PreferencesDialog * prefDialog, QWidget * parent, bool sh
_ui->actionRealSense_ZR300->setEnabled(CameraRealSense::available()); _ui->actionRealSense_ZR300->setEnabled(CameraRealSense::available());
_ui->actionRealSense2_SR300->setEnabled(CameraRealSense2::available()); _ui->actionRealSense2_SR300->setEnabled(CameraRealSense2::available());
_ui->actionRealSense2_D400->setEnabled(CameraRealSense2::available()); _ui->actionRealSense2_D400->setEnabled(CameraRealSense2::available());
_ui->actionRealSense2_IMU->setEnabled(CameraRealSense2::available());
_ui->actionRealSense2_L515->setEnabled(CameraRealSense2::available()); _ui->actionRealSense2_L515->setEnabled(CameraRealSense2::available());
_ui->actionRealSense2_T265->setEnabled(CameraRealSense2::available()); _ui->actionRealSense2_T265->setEnabled(CameraRealSense2::available());
_ui->actionStereoDC1394->setEnabled(CameraStereoDC1394::available()); _ui->actionStereoDC1394->setEnabled(CameraStereoDC1394::available());
_ui->actionStereoFlyCapture2->setEnabled(CameraStereoFlyCapture2::available()); _ui->actionStereoFlyCapture2->setEnabled(CameraStereoFlyCapture2::available());
_ui->actionStereoZed->setEnabled(CameraStereoZed::available()); _ui->actionStereoZed->setEnabled(CameraStereoZed::available());
_ui->actionZed_sdk_IMU->setEnabled(CameraStereoZed::available());
_ui->actionStereoTara->setEnabled(CameraStereoTara::available()); _ui->actionStereoTara->setEnabled(CameraStereoTara::available());
_ui->actionMYNT_EYE_S_SDK->setEnabled(CameraMyntEye::available()); _ui->actionMYNT_EYE_S_SDK->setEnabled(CameraMyntEye::available());
this->updateSelectSourceMenu(); this->updateSelectSourceMenu();
@@ -4729,17 +4725,15 @@ void MainWindow::updateSelectSourceMenu()
_ui->actionOpenNI2_sense->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcOpenNI2); _ui->actionOpenNI2_sense->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcOpenNI2);
_ui->actionFreenect2->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcFreenect2); _ui->actionFreenect2->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcFreenect2);
_ui->actionKinect_for_Windows_SDK_v2->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcK4W2); _ui->actionKinect_for_Windows_SDK_v2->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcK4W2);
_ui->actionKinect_for_Azure->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcK4W2); _ui->actionKinect_for_Azure->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcK4A);
_ui->actionRealSense_R200->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcRealSense); _ui->actionRealSense_R200->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcRealSense);
_ui->actionRealSense_ZR300->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcRealSense); _ui->actionRealSense_ZR300->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcRealSense);
_ui->actionRealSense2_SR300->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcRealSense2); _ui->actionRealSense2_SR300->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcRealSense2);
_ui->actionRealSense2_D400->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcRealSense2); _ui->actionRealSense2_D400->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcRealSense2);
_ui->actionRealSense2_IMU->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcRealSense2);
_ui->actionRealSense2_L515->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcRealSense2); _ui->actionRealSense2_L515->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcRealSense2);
_ui->actionStereoDC1394->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcDC1394); _ui->actionStereoDC1394->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcDC1394);
_ui->actionStereoFlyCapture2->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcFlyCapture2); _ui->actionStereoFlyCapture2->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcFlyCapture2);
_ui->actionStereoZed->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcStereoZed); _ui->actionStereoZed->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcStereoZed);
_ui->actionZed_sdk_IMU->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcStereoZed);
_ui->actionStereoTara->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcStereoTara); _ui->actionStereoTara->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcStereoTara);
_ui->actionStereoUsb->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcStereoUsb); _ui->actionStereoUsb->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcStereoUsb);
_ui->actionRealSense2_T265->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcStereoRealSense2); _ui->actionRealSense2_T265->setChecked(_preferencesDialog->getSourceDriver() == PreferencesDialog::kSrcStereoRealSense2);
@@ -6487,13 +6481,9 @@ void MainWindow::selectRealSense2()
{ {
_preferencesDialog->selectSourceDriver(PreferencesDialog::kSrcRealSense2); _preferencesDialog->selectSourceDriver(PreferencesDialog::kSrcRealSense2);
} }
void MainWindow::selectRealSense2i()
{
_preferencesDialog->selectSourceDriver(PreferencesDialog::kSrcRealSense2, 1);
}
void MainWindow::selectRealSense2L515() void MainWindow::selectRealSense2L515()
{ {
_preferencesDialog->selectSourceDriver(PreferencesDialog::kSrcRealSense2, 2); _preferencesDialog->selectSourceDriver(PreferencesDialog::kSrcRealSense2, 1);
} }
void MainWindow::selectRealSense2Stereo() void MainWindow::selectRealSense2Stereo()
@@ -6514,10 +6504,6 @@ void MainWindow::selectStereoZed()
{ {
_preferencesDialog->selectSourceDriver(PreferencesDialog::kSrcStereoZed); _preferencesDialog->selectSourceDriver(PreferencesDialog::kSrcStereoZed);
} }
void MainWindow::selectStereoZedi()
{
_preferencesDialog->selectSourceDriver(PreferencesDialog::kSrcStereoZed, 1);
}
void MainWindow::selectStereoTara() void MainWindow::selectStereoTara()
{ {

View File

@@ -1978,7 +1978,7 @@ void PreferencesDialog::resetSettings(QGroupBox * groupBox)
_ui->lineEdit_cameraImages_imu_transform->setText("0 0 1 0 -1 0 1 0 0"); _ui->lineEdit_cameraImages_imu_transform->setText("0 0 1 0 -1 0 1 0 0");
_ui->spinBox_cameraImages_max_imu_rate->setValue(0); _ui->spinBox_cameraImages_max_imu_rate->setValue(0);
_ui->comboBox_imuFilter_strategy->setCurrentIndex(0); _ui->comboBox_imuFilter_strategy->setCurrentIndex(1);
_ui->doubleSpinBox_imuFilterMadgwickGain->setValue(Parameters::defaultImuFilterMadgwickGain()); _ui->doubleSpinBox_imuFilterMadgwickGain->setValue(Parameters::defaultImuFilterMadgwickGain());
_ui->doubleSpinBox_imuFilterMadgwickZeta->setValue(Parameters::defaultImuFilterMadgwickZeta()); _ui->doubleSpinBox_imuFilterMadgwickZeta->setValue(Parameters::defaultImuFilterMadgwickZeta());
_ui->doubleSpinBox_imuFilterComplementaryGainAcc->setValue(Parameters::defaultImuFilterComplementaryGainAcc()); _ui->doubleSpinBox_imuFilterComplementaryGainAcc->setValue(Parameters::defaultImuFilterComplementaryGainAcc());
@@ -3722,23 +3722,15 @@ void PreferencesDialog::updateParameters(const ParametersMap & parameters, bool
void PreferencesDialog::selectSourceDriver(Src src, int variant) void PreferencesDialog::selectSourceDriver(Src src, int variant)
{ {
_ui->comboBox_imuFilter_strategy->setCurrentIndex(0); _ui->comboBox_imuFilter_strategy->setCurrentIndex(1);
this->setParameter(Parameters::kOptimizerGravitySigma(), "0.0"); _3dRenderingRoiRatios[0]->setText("0.0 0.0 0.0 0.0");
_3dRenderingRoiRatios[1]->setText("0.0 0.0 0.0 0.0");
if(src >= kSrcRGBD && src<kSrcStereo) if(src >= kSrcRGBD && src<kSrcStereo)
{ {
_ui->comboBox_sourceType->setCurrentIndex(0); _ui->comboBox_sourceType->setCurrentIndex(0);
_ui->comboBox_cameraRGBD->setCurrentIndex(src - kSrcRGBD); _ui->comboBox_cameraRGBD->setCurrentIndex(src - kSrcRGBD);
if(src == kSrcFreenect) if(src == kSrcOpenNI_PCL)
{
if(Optimizer::isAvailable(Optimizer::kTypeG2O) || Optimizer::isAvailable(Optimizer::kTypeGTSAM))
{
// enable IMU
_ui->comboBox_imuFilter_strategy->setCurrentIndex(1);
this->setParameter(Parameters::kOptimizerGravitySigma(), "0.3");
}
}
else if(src == kSrcOpenNI_PCL)
{ {
_ui->lineEdit_openniOniPath->clear(); _ui->lineEdit_openniOniPath->clear();
} }
@@ -3749,16 +3741,12 @@ void PreferencesDialog::selectSourceDriver(Src src, int variant)
else if (src == kSrcK4A) else if (src == kSrcK4A)
{ {
_ui->lineEdit_k4a_mkv->clear(); _ui->lineEdit_k4a_mkv->clear();
if(Optimizer::isAvailable(Optimizer::kTypeG2O) || Optimizer::isAvailable(Optimizer::kTypeGTSAM)) _3dRenderingRoiRatios[0]->setText("0.05 0.05 0.05 0.05");
{ _3dRenderingRoiRatios[1]->setText("0.05 0.05 0.05 0.05");
// enable IMU
_ui->comboBox_imuFilter_strategy->setCurrentIndex(1);
this->setParameter(Parameters::kOptimizerGravitySigma(), "0.3");
}
} }
else if (src == kSrcRealSense2) else if (src == kSrcRealSense2)
{ {
if(variant > 1) // L515 if(variant > 0) // L515
{ {
_ui->spinBox_rs2_width->setValue(1280); _ui->spinBox_rs2_width->setValue(1280);
_ui->spinBox_rs2_height->setValue(720); _ui->spinBox_rs2_height->setValue(720);
@@ -3770,38 +3758,17 @@ void PreferencesDialog::selectSourceDriver(Src src, int variant)
_ui->spinBox_rs2_height->setValue(480); _ui->spinBox_rs2_height->setValue(480);
_ui->spinBox_rs2_rate->setValue(60); _ui->spinBox_rs2_rate->setValue(60);
} }
if(variant>0 && (Optimizer::isAvailable(Optimizer::kTypeG2O) || Optimizer::isAvailable(Optimizer::kTypeGTSAM)))
{
// enable IMU
_ui->comboBox_imuFilter_strategy->setCurrentIndex(1);
this->setParameter(Parameters::kOptimizerGravitySigma(), "0.3");
}
} }
} }
else if(src >= kSrcStereo && src<kSrcRGB) else if(src >= kSrcStereo && src<kSrcRGB)
{ {
_ui->comboBox_sourceType->setCurrentIndex(1); _ui->comboBox_sourceType->setCurrentIndex(1);
_ui->comboBox_cameraStereo->setCurrentIndex(src - kSrcStereo); _ui->comboBox_cameraStereo->setCurrentIndex(src - kSrcStereo);
if(Optimizer::isAvailable(Optimizer::kTypeG2O) || Optimizer::isAvailable(Optimizer::kTypeGTSAM))
if(src == kSrcStereoZed) // Zedm, Zed2
{ {
if(src == kSrcStereoZed && variant>0) // Zedm, Zed2 // disable IMU filtering (zed sends already quaternion)
{ _ui->comboBox_imuFilter_strategy->setCurrentIndex(0);
// enable IMU (zed sends already quaternion)
_ui->comboBox_imuFilter_strategy->setCurrentIndex(0);
this->setParameter(Parameters::kOptimizerGravitySigma(), "0.3");
}
else if(src == kSrcStereoRealSense2) // T265
{
// enable IMU
_ui->comboBox_imuFilter_strategy->setCurrentIndex(1);
this->setParameter(Parameters::kOptimizerGravitySigma(), "0.3");
}
else if(src == kSrcStereoMyntEye)
{
// enable IMU
_ui->comboBox_imuFilter_strategy->setCurrentIndex(1);
this->setParameter(Parameters::kOptimizerGravitySigma(), "0.3");
}
} }
} }
else if(src >= kSrcRGB && src<kSrcDatabase) else if(src >= kSrcRGB && src<kSrcDatabase)

View File

@@ -207,7 +207,6 @@
<normaloff>:/images/d435.png</normaloff>:/images/d435.png</iconset> <normaloff>:/images/d435.png</normaloff>:/images/d435.png</iconset>
</property> </property>
<addaction name="actionRealSense2_D400"/> <addaction name="actionRealSense2_D400"/>
<addaction name="actionRealSense2_IMU"/>
</widget> </widget>
<widget class="QMenu" name="menuRealSense_SR300"> <widget class="QMenu" name="menuRealSense_SR300">
<property name="title"> <property name="title">
@@ -268,7 +267,6 @@
<normaloff>:/images/zed.png</normaloff>:/images/zed.png</iconset> <normaloff>:/images/zed.png</normaloff>:/images/zed.png</iconset>
</property> </property>
<addaction name="actionStereoZed"/> <addaction name="actionStereoZed"/>
<addaction name="actionZed_sdk_IMU"/>
<addaction name="actionStereoUsb"/> <addaction name="actionStereoUsb"/>
</widget> </widget>
<widget class="QMenu" name="menuTara_Camera"> <widget class="QMenu" name="menuTara_Camera">
@@ -1619,22 +1617,6 @@
<string>RealSense2</string> <string>RealSense2</string>
</property> </property>
</action> </action>
<action name="actionZed_sdk_IMU">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>Zed sdk (Zedm, Zed2)</string>
</property>
</action>
<action name="actionRealSense2_IMU">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>RealSense2 (D435i)</string>
</property>
</action>
</widget> </widget>
<customwidgets> <customwidgets>
<customwidget> <customwidget>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<package> <package>
<name>rtabmap</name> <name>rtabmap</name>
<version>0.20.7</version> <version>0.20.8</version>
<description>RTAB-Map's standalone library. RTAB-Map is a RGB-D SLAM approach with real-time constraints.</description> <description>RTAB-Map's standalone library. RTAB-Map is a RGB-D SLAM approach with real-time constraints.</description>
<maintainer email="matlabbe@gmail.com">Mathieu Labbe</maintainer> <maintainer email="matlabbe@gmail.com">Mathieu Labbe</maintainer>
<author>Mathieu Labbe</author> <author>Mathieu Labbe</author>