mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-03 01:50:24 +08:00
Add options to enable IR featues on OAK Pro models
This commit is contained in:
@@ -58,6 +58,8 @@ public:
|
|||||||
void setOutputDepth(bool enabled, int confidence = 200);
|
void setOutputDepth(bool enabled, int confidence = 200);
|
||||||
void setIMUFirmwareUpdate(bool enabled);
|
void setIMUFirmwareUpdate(bool enabled);
|
||||||
void setIMUPublished(bool published);
|
void setIMUPublished(bool published);
|
||||||
|
void setLaserDotBrightness(float dotProjectormA = 0.0f);
|
||||||
|
void setFloodLightBrightness(float floodLightmA = 200.0f);
|
||||||
|
|
||||||
virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "");
|
virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "");
|
||||||
virtual bool isCalibrated() const;
|
virtual bool isCalibrated() const;
|
||||||
@@ -76,6 +78,8 @@ private:
|
|||||||
int resolution_;
|
int resolution_;
|
||||||
bool imuFirmwareUpdate_;
|
bool imuFirmwareUpdate_;
|
||||||
bool imuPublished_;
|
bool imuPublished_;
|
||||||
|
float dotProjectormA_;
|
||||||
|
float floodLightmA_;
|
||||||
std::shared_ptr<dai::Device> device_;
|
std::shared_ptr<dai::Device> device_;
|
||||||
std::shared_ptr<dai::DataOutputQueue> leftQueue_;
|
std::shared_ptr<dai::DataOutputQueue> leftQueue_;
|
||||||
std::shared_ptr<dai::DataOutputQueue> rightOrDepthQueue_;
|
std::shared_ptr<dai::DataOutputQueue> rightOrDepthQueue_;
|
||||||
|
|||||||
@@ -106,6 +106,24 @@ void CameraDepthAI::setIMUPublished(bool published)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CameraDepthAI::setLaserDotBrightness(float dotProjectormA)
|
||||||
|
{
|
||||||
|
#ifdef RTABMAP_DEPTHAI
|
||||||
|
dotProjectormA_ = dotProjectormA;
|
||||||
|
#else
|
||||||
|
UERROR("CameraDepthAI: RTAB-Map is not built with depthai-core support!");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void CameraDepthAI::setFloodLightBrightness(float floodLightmA)
|
||||||
|
{
|
||||||
|
#ifdef RTABMAP_DEPTHAI
|
||||||
|
floodLightmA_ = floodLightmA;
|
||||||
|
#else
|
||||||
|
UERROR("CameraDepthAI: RTAB-Map is not built with depthai-core support!");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
bool CameraDepthAI::init(const std::string & calibrationFolder, const std::string & cameraName)
|
bool CameraDepthAI::init(const std::string & calibrationFolder, const std::string & cameraName)
|
||||||
{
|
{
|
||||||
UDEBUG("");
|
UDEBUG("");
|
||||||
@@ -268,6 +286,13 @@ bool CameraDepthAI::init(const std::string & calibrationFolder, const std::strin
|
|||||||
leftQueue_ = device_->getOutputQueue("rectified_left", 1, false);
|
leftQueue_ = device_->getOutputQueue("rectified_left", 1, false);
|
||||||
rightOrDepthQueue_ = device_->getOutputQueue(outputDepth_?"depth":"rectified_right", 1, false);
|
rightOrDepthQueue_ = device_->getOutputQueue(outputDepth_?"depth":"rectified_right", 1, false);
|
||||||
|
|
||||||
|
std::vector<std::tuple<std::string, int, int>> irDrivers = device_->getIrDrivers();
|
||||||
|
if(!irDrivers.empty())
|
||||||
|
{
|
||||||
|
device_->setIrLaserDotProjectorBrightness(dotProjectormA_);
|
||||||
|
device_->setIrFloodLightBrightness(floodLightmA_);
|
||||||
|
}
|
||||||
|
|
||||||
uSleep(2000); // avoid bad frames on start
|
uSleep(2000); // avoid bad frames on start
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -807,6 +807,8 @@ PreferencesDialog::PreferencesDialog(QWidget * parent) :
|
|||||||
connect(_ui->spinBox_depthai_confidence, SIGNAL(valueChanged(int)), this, SLOT(makeObsoleteSourcePanel()));
|
connect(_ui->spinBox_depthai_confidence, SIGNAL(valueChanged(int)), this, SLOT(makeObsoleteSourcePanel()));
|
||||||
connect(_ui->checkBox_depthai_imu_published, SIGNAL(stateChanged(int)), this, SLOT(makeObsoleteSourcePanel()));
|
connect(_ui->checkBox_depthai_imu_published, SIGNAL(stateChanged(int)), this, SLOT(makeObsoleteSourcePanel()));
|
||||||
connect(_ui->checkBox_depthai_imu_firmware_update, SIGNAL(stateChanged(int)), this, SLOT(makeObsoleteSourcePanel()));
|
connect(_ui->checkBox_depthai_imu_firmware_update, SIGNAL(stateChanged(int)), this, SLOT(makeObsoleteSourcePanel()));
|
||||||
|
connect(_ui->doubleSpinBox_depthai_laser_dot_brightness, SIGNAL(valueChanged(double)), this, SLOT(makeObsoleteSourcePanel()));
|
||||||
|
connect(_ui->doubleSpinBox_depthai_floodlight_brightness, SIGNAL(valueChanged(double)), this, SLOT(makeObsoleteSourcePanel()));
|
||||||
|
|
||||||
connect(_ui->checkbox_rgbd_colorOnly, SIGNAL(stateChanged(int)), this, SLOT(makeObsoleteSourcePanel()));
|
connect(_ui->checkbox_rgbd_colorOnly, SIGNAL(stateChanged(int)), this, SLOT(makeObsoleteSourcePanel()));
|
||||||
connect(_ui->spinBox_source_imageDecimation, SIGNAL(valueChanged(int)), this, SLOT(makeObsoleteSourcePanel()));
|
connect(_ui->spinBox_source_imageDecimation, SIGNAL(valueChanged(int)), this, SLOT(makeObsoleteSourcePanel()));
|
||||||
@@ -2061,6 +2063,8 @@ void PreferencesDialog::resetSettings(QGroupBox * groupBox)
|
|||||||
_ui->spinBox_depthai_confidence->setValue(200);
|
_ui->spinBox_depthai_confidence->setValue(200);
|
||||||
_ui->checkBox_depthai_imu_published->setChecked(true);
|
_ui->checkBox_depthai_imu_published->setChecked(true);
|
||||||
_ui->checkBox_depthai_imu_firmware_update->setChecked(false);
|
_ui->checkBox_depthai_imu_firmware_update->setChecked(false);
|
||||||
|
_ui->doubleSpinBox_depthai_laser_dot_brightness->setValue(0.0);
|
||||||
|
_ui->doubleSpinBox_depthai_floodlight_brightness->setValue(200.0);
|
||||||
|
|
||||||
_ui->checkBox_cameraImages_configForEachFrame->setChecked(false);
|
_ui->checkBox_cameraImages_configForEachFrame->setChecked(false);
|
||||||
_ui->checkBox_cameraImages_timestamps->setChecked(false);
|
_ui->checkBox_cameraImages_timestamps->setChecked(false);
|
||||||
@@ -2545,6 +2549,8 @@ void PreferencesDialog::readCameraSettings(const QString & filePath)
|
|||||||
_ui->spinBox_depthai_confidence->setValue(settings.value("confidence", _ui->spinBox_depthai_confidence->value()).toInt());
|
_ui->spinBox_depthai_confidence->setValue(settings.value("confidence", _ui->spinBox_depthai_confidence->value()).toInt());
|
||||||
_ui->checkBox_depthai_imu_published->setChecked(settings.value("imu_published", _ui->checkBox_depthai_imu_published->isChecked()).toBool());
|
_ui->checkBox_depthai_imu_published->setChecked(settings.value("imu_published", _ui->checkBox_depthai_imu_published->isChecked()).toBool());
|
||||||
_ui->checkBox_depthai_imu_firmware_update->setChecked(settings.value("imu_firmware_update", _ui->checkBox_depthai_imu_firmware_update->isChecked()).toBool());
|
_ui->checkBox_depthai_imu_firmware_update->setChecked(settings.value("imu_firmware_update", _ui->checkBox_depthai_imu_firmware_update->isChecked()).toBool());
|
||||||
|
_ui->doubleSpinBox_depthai_laser_dot_brightness->setValue(settings.value("laser_dot_brightness", _ui->doubleSpinBox_depthai_laser_dot_brightness->value()).toDouble());
|
||||||
|
_ui->doubleSpinBox_depthai_floodlight_brightness->setValue(settings.value("floodlight_brightness", _ui->doubleSpinBox_depthai_floodlight_brightness->value()).toDouble());
|
||||||
settings.endGroup(); // DepthAI
|
settings.endGroup(); // DepthAI
|
||||||
|
|
||||||
settings.beginGroup("Images");
|
settings.beginGroup("Images");
|
||||||
@@ -3072,6 +3078,8 @@ void PreferencesDialog::writeCameraSettings(const QString & filePath) const
|
|||||||
settings.setValue("confidence", _ui->spinBox_depthai_confidence->value());
|
settings.setValue("confidence", _ui->spinBox_depthai_confidence->value());
|
||||||
settings.setValue("imu_published", _ui->checkBox_depthai_imu_published->isChecked());
|
settings.setValue("imu_published", _ui->checkBox_depthai_imu_published->isChecked());
|
||||||
settings.setValue("imu_firmware_update", _ui->checkBox_depthai_imu_firmware_update->isChecked());
|
settings.setValue("imu_firmware_update", _ui->checkBox_depthai_imu_firmware_update->isChecked());
|
||||||
|
settings.setValue("laser_dot_brightness", _ui->doubleSpinBox_depthai_laser_dot_brightness->value());
|
||||||
|
settings.setValue("floodlight_brightness", _ui->doubleSpinBox_depthai_floodlight_brightness->value());
|
||||||
settings.endGroup(); // DepthAI
|
settings.endGroup(); // DepthAI
|
||||||
|
|
||||||
settings.beginGroup("Images");
|
settings.beginGroup("Images");
|
||||||
@@ -6319,6 +6327,8 @@ Camera * PreferencesDialog::createCamera(
|
|||||||
((CameraDepthAI*)camera)->setOutputDepth(_ui->checkBox_depthai_depth->isChecked(), _ui->spinBox_depthai_confidence->value());
|
((CameraDepthAI*)camera)->setOutputDepth(_ui->checkBox_depthai_depth->isChecked(), _ui->spinBox_depthai_confidence->value());
|
||||||
((CameraDepthAI*)camera)->setIMUFirmwareUpdate(_ui->checkBox_depthai_imu_firmware_update->isChecked());
|
((CameraDepthAI*)camera)->setIMUFirmwareUpdate(_ui->checkBox_depthai_imu_firmware_update->isChecked());
|
||||||
((CameraDepthAI*)camera)->setIMUPublished(_ui->checkBox_depthai_imu_published->isChecked());
|
((CameraDepthAI*)camera)->setIMUPublished(_ui->checkBox_depthai_imu_published->isChecked());
|
||||||
|
((CameraDepthAI*)camera)->setLaserDotBrightness(_ui->doubleSpinBox_depthai_laser_dot_brightness->value());
|
||||||
|
((CameraDepthAI*)camera)->setFloodLightBrightness(_ui->doubleSpinBox_depthai_floodlight_brightness->value());
|
||||||
}
|
}
|
||||||
else if(driver == kSrcUsbDevice)
|
else if(driver == kSrcUsbDevice)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -5943,6 +5943,58 @@ when using the file type, logs are saved in LogRtabmap.txt (located in the worki
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="5" column="0">
|
||||||
|
<widget class="QDoubleSpinBox" name="doubleSpinBox_depthai_laser_dot_brightness">
|
||||||
|
<property name="suffix">
|
||||||
|
<string> mA</string>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<double>1200.000000000000000</double>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<double>0.000000000000000</double>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="5" column="1">
|
||||||
|
<widget class="QLabel" name="label_676">
|
||||||
|
<property name="text">
|
||||||
|
<string>Laser dot brightness.</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="6" column="0">
|
||||||
|
<widget class="QDoubleSpinBox" name="doubleSpinBox_depthai_floodlight_brightness">
|
||||||
|
<property name="suffix">
|
||||||
|
<string> mA</string>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<double>1500.000000000000000</double>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<double>200.000000000000000</double>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="6" column="1">
|
||||||
|
<widget class="QLabel" name="label_677">
|
||||||
|
<property name="text">
|
||||||
|
<string>Floodlight brightness.</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|||||||
Reference in New Issue
Block a user