mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-01 17:10:26 +08:00
Added ZED parameters
This commit is contained in:
@@ -112,7 +112,21 @@ public:
|
|||||||
static bool available();
|
static bool available();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CameraStereoZed(bool rgbdMode, float imageRate=0.0f, const Transform & localTransform = Transform::getIdentity());
|
CameraStereoZed(
|
||||||
|
int deviceId,
|
||||||
|
int resolution = 2, // 0=HD2K, 1=HD1080, 2=HD720, 3=VGA
|
||||||
|
int quality = 1, // 0=NONE, 1=PERFORMANCE, 2=QUALITY
|
||||||
|
int sensingMode = 1,// 0=FULL, 1=RAW
|
||||||
|
int confidenceThr = 100,
|
||||||
|
float imageRate=0.0f,
|
||||||
|
const Transform & localTransform = Transform::getIdentity());
|
||||||
|
CameraStereoZed(
|
||||||
|
const std::string & svoFilePath,
|
||||||
|
int quality = 1, // 0=NONE, 1=PERFORMANCE, 2=QUALITY
|
||||||
|
int sensingMode = 1,// 0=FULL, 1=RAW
|
||||||
|
int confidenceThr = 100,
|
||||||
|
float imageRate=0.0f,
|
||||||
|
const Transform & localTransform = Transform::getIdentity());
|
||||||
virtual ~CameraStereoZed();
|
virtual ~CameraStereoZed();
|
||||||
|
|
||||||
virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "");
|
virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "");
|
||||||
@@ -125,7 +139,13 @@ protected:
|
|||||||
private:
|
private:
|
||||||
sl::zed::Camera * zed_;
|
sl::zed::Camera * zed_;
|
||||||
StereoCameraModel stereoModel_;
|
StereoCameraModel stereoModel_;
|
||||||
bool rgbdMode_;
|
CameraVideo::Source src_;
|
||||||
|
int usbDevice_;
|
||||||
|
std::string svoFilePath_;
|
||||||
|
int resolution_;
|
||||||
|
int quality_;
|
||||||
|
int sensingMode_;
|
||||||
|
int confidenceThr_;
|
||||||
};
|
};
|
||||||
|
|
||||||
/////////////////////////
|
/////////////////////////
|
||||||
|
|||||||
@@ -747,11 +747,55 @@ bool CameraStereoZed::available()
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
CameraStereoZed::CameraStereoZed(bool rgbdMode, float imageRate, const Transform & localTransform) :
|
CameraStereoZed::CameraStereoZed(
|
||||||
Camera(imageRate, localTransform),
|
int deviceId,
|
||||||
zed_(0),
|
int resolution,
|
||||||
rgbdMode_(rgbdMode)
|
int quality,
|
||||||
|
int sensingMode,
|
||||||
|
int confidenceThr,
|
||||||
|
float imageRate,
|
||||||
|
const Transform & localTransform) :
|
||||||
|
Camera(imageRate, localTransform),
|
||||||
|
zed_(0),
|
||||||
|
src_(CameraVideo::kUsbDevice),
|
||||||
|
usbDevice_(deviceId),
|
||||||
|
svoFilePath_(""),
|
||||||
|
resolution_(resolution),
|
||||||
|
quality_(quality),
|
||||||
|
sensingMode_(sensingMode),
|
||||||
|
confidenceThr_(confidenceThr)
|
||||||
{
|
{
|
||||||
|
#ifdef RTABMAP_ZED
|
||||||
|
UASSERT(resolution_ >= sl::zed::HD2K && resolution_ <=sl::zed::VGA);
|
||||||
|
UASSERT(quality_ >= sl::zed::NONE && quality_ <=sl::zed::QUALITY);
|
||||||
|
UASSERT(sensingMode_ >= sl::zed::FULL && sensingMode_ <=sl::zed::RAW);
|
||||||
|
UASSERT(confidenceThr_ >= 0 && confidenceThr_ <=100);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
CameraStereoZed::CameraStereoZed(
|
||||||
|
const std::string & filePath,
|
||||||
|
int quality,
|
||||||
|
int sensingMode,
|
||||||
|
int confidenceThr,
|
||||||
|
float imageRate,
|
||||||
|
const Transform & localTransform) :
|
||||||
|
Camera(imageRate, localTransform),
|
||||||
|
zed_(0),
|
||||||
|
src_(CameraVideo::kVideoFile),
|
||||||
|
usbDevice_(0),
|
||||||
|
svoFilePath_(filePath),
|
||||||
|
resolution_(2),
|
||||||
|
quality_(quality),
|
||||||
|
sensingMode_(sensingMode),
|
||||||
|
confidenceThr_(confidenceThr)
|
||||||
|
{
|
||||||
|
#ifdef RTABMAP_ZED
|
||||||
|
UASSERT(resolution_ >= sl::zed::HD2K && resolution_ <=sl::zed::VGA);
|
||||||
|
UASSERT(quality_ >= sl::zed::NONE && quality_ <=sl::zed::QUALITY);
|
||||||
|
UASSERT(sensingMode_ >= sl::zed::FULL && sensingMode_ <=sl::zed::RAW);
|
||||||
|
UASSERT(confidenceThr_ >= 0 && confidenceThr_ <=100);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
CameraStereoZed::~CameraStereoZed()
|
CameraStereoZed::~CameraStereoZed()
|
||||||
@@ -773,29 +817,41 @@ bool CameraStereoZed::init(const std::string & calibrationFolder, const std::str
|
|||||||
zed_ = 0;
|
zed_ = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(zed_->isZEDconnected())
|
|
||||||
|
if(src_ == CameraVideo::kVideoFile)
|
||||||
{
|
{
|
||||||
zed_ = new sl::zed::Camera(sl::zed::HD720); // Use in Live Mode
|
zed_ = new sl::zed::Camera(svoFilePath_); // Use in SVO playback mode
|
||||||
//zed_ = new sl::zed::Camera(argv[1]); // Use in SVO playback mode
|
|
||||||
|
|
||||||
//init WITH self-calibration (- last parameter to false -)
|
|
||||||
sl::zed::ERRCODE err = zed_->init(sl::zed::MODE::PERFORMANCE, 0, true, false, false);
|
|
||||||
|
|
||||||
// Quit if an error occurred
|
|
||||||
if (err != sl::zed::SUCCESS)
|
|
||||||
{
|
|
||||||
UERROR("ZED camera initialization failed: %s", sl::zed::errcode2str(err).c_str());
|
|
||||||
delete zed_;
|
|
||||||
zed_ = 0;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UERROR("ZED camera initialization failed: ZED is not connected!");
|
if(zed_->isZEDconnected())
|
||||||
|
{
|
||||||
|
zed_ = new sl::zed::Camera((sl::zed::ZEDResolution_mode)resolution_, getImageRate(), usbDevice_); // Use in Live Mode
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UERROR("ZED camera initialization failed: ZED is not connected!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//init WITH self-calibration (- last parameter to false -)
|
||||||
|
sl::zed::ERRCODE err = zed_->init(
|
||||||
|
(sl::zed::MODE)quality_,
|
||||||
|
-1, // search for any GPU
|
||||||
|
true, false, false);
|
||||||
|
|
||||||
|
// Quit if an error occurred
|
||||||
|
if (err != sl::zed::SUCCESS)
|
||||||
|
{
|
||||||
|
UERROR("ZED camera initialization failed: %s", sl::zed::errcode2str(err).c_str());
|
||||||
|
delete zed_;
|
||||||
|
zed_ = 0;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
zed_->setConfidenceThreshold(confidenceThr_);
|
||||||
|
|
||||||
sl::zed::StereoParameters * stereoParams = zed_->getParameters();
|
sl::zed::StereoParameters * stereoParams = zed_->getParameters();
|
||||||
sl::zed::resolution res = zed_->getImageSize();
|
sl::zed::resolution res = zed_->getImageSize();
|
||||||
|
|
||||||
@@ -837,9 +893,7 @@ SensorData CameraStereoZed::captureImage()
|
|||||||
#ifdef RTABMAP_ZED
|
#ifdef RTABMAP_ZED
|
||||||
if(zed_)
|
if(zed_)
|
||||||
{
|
{
|
||||||
sl::zed::SENSING_MODE dm_type = sl::zed::RAW;
|
bool res = zed_->grab((sl::zed::SENSING_MODE)sensingMode_, quality_ > 0, quality_ > 0, false);
|
||||||
bool res = zed_->grab(dm_type);
|
|
||||||
|
|
||||||
if(!res)
|
if(!res)
|
||||||
{
|
{
|
||||||
// get left image
|
// get left image
|
||||||
@@ -847,12 +901,12 @@ SensorData CameraStereoZed::captureImage()
|
|||||||
cv::Mat left;
|
cv::Mat left;
|
||||||
cv::cvtColor(rgbaLeft, left, cv::COLOR_BGRA2BGR);
|
cv::cvtColor(rgbaLeft, left, cv::COLOR_BGRA2BGR);
|
||||||
|
|
||||||
if(rgbdMode_)
|
if(quality_ > 0)
|
||||||
{
|
{
|
||||||
// get depth image
|
// get depth image
|
||||||
cv::Mat depth;
|
cv::Mat depth;
|
||||||
slMat2cvMat(zed_->retrieveMeasure(sl::zed::MEASURE::DEPTH)).copyTo(depth);
|
slMat2cvMat(zed_->retrieveMeasure(sl::zed::MEASURE::DEPTH)).copyTo(depth);
|
||||||
depth /= 1000.0;
|
depth /= 1000.0; // to meters
|
||||||
|
|
||||||
data = SensorData(left, depth, stereoModel_.left(), this->getNextSeqID(), UTimer::now());
|
data = SensorData(left, depth, stereoModel_.left(), this->getNextSeqID(), UTimer::now());
|
||||||
}
|
}
|
||||||
@@ -866,10 +920,14 @@ SensorData CameraStereoZed::captureImage()
|
|||||||
data = SensorData(left, right, stereoModel_, this->getNextSeqID(), UTimer::now());
|
data = SensorData(left, right, stereoModel_, this->getNextSeqID(), UTimer::now());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else if(src_ == CameraVideo::kUsbDevice)
|
||||||
{
|
{
|
||||||
UERROR("CameraStereoZed: Failed to grab images!");
|
UERROR("CameraStereoZed: Failed to grab images!");
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UWARN("CameraStereoZed: end of stream is reached!");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
UERROR("CameraStereoZED: RTAB-Map is not built with ZED sdk support!");
|
UERROR("CameraStereoZED: RTAB-Map is not built with ZED sdk support!");
|
||||||
|
|||||||
@@ -150,7 +150,13 @@ std::vector<cv::Point2f> StereoOpticalFlow::computeCorrespondences(
|
|||||||
|
|
||||||
if(countFlowRejected + countDisparityRejected > (int)status.size()/2)
|
if(countFlowRejected + countDisparityRejected > (int)status.size()/2)
|
||||||
{
|
{
|
||||||
UWARN("A large number (%d/%d) of stereo correspondences are rejected! Optical flow may have failed, images are not calibrated or the background is too far (no disparity between the images).", countFlowRejected+countDisparityRejected, (int)status.size());
|
UWARN("A large number (%d/%d) of stereo correspondences are rejected! "
|
||||||
|
"Optical flow may have failed, images are not calibrated, "
|
||||||
|
"the background is too far (no disparity between the images) or "
|
||||||
|
"maximum disparity may be too small (%d).",
|
||||||
|
countFlowRejected+countDisparityRejected,
|
||||||
|
(int)status.size(),
|
||||||
|
this->maxDisparity());
|
||||||
}
|
}
|
||||||
|
|
||||||
return rightCorners;
|
return rightCorners;
|
||||||
|
|||||||
@@ -285,6 +285,7 @@ private slots:
|
|||||||
void selectSourceStereoVideoPath();
|
void selectSourceStereoVideoPath();
|
||||||
void selectSourceOniPath();
|
void selectSourceOniPath();
|
||||||
void selectSourceOni2Path();
|
void selectSourceOni2Path();
|
||||||
|
void selectSourceSvoPath();
|
||||||
void updateSourceGrpVisibility();
|
void updateSourceGrpVisibility();
|
||||||
void testOdometry();
|
void testOdometry();
|
||||||
void testCamera();
|
void testCamera();
|
||||||
|
|||||||
@@ -881,64 +881,78 @@ void MainWindow::processOdometry(const rtabmap::OdometryEvent & odom)
|
|||||||
(odom.data().cameraModels().size() || odom.data().stereoCameraModel().isValidForProjection()) &&
|
(odom.data().cameraModels().size() || odom.data().stereoCameraModel().isValidForProjection()) &&
|
||||||
_preferencesDialog->isCloudsShown(1))
|
_preferencesDialog->isCloudsShown(1))
|
||||||
{
|
{
|
||||||
pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud;
|
|
||||||
pcl::IndicesPtr indices(new std::vector<int>);
|
if(odom.data().imageRaw().cols % _preferencesDialog->getCloudDecimation(1) != 0 ||
|
||||||
cloud = util3d::cloudRGBFromSensorData(odom.data(),
|
odom.data().imageRaw().rows % _preferencesDialog->getCloudDecimation(1) != 0)
|
||||||
_preferencesDialog->getCloudDecimation(1),
|
{
|
||||||
_preferencesDialog->getCloudMaxDepth(1),
|
UERROR("Decimation (%d) is not modulo of the image resolution (%dx%d)! The cloud cannot be "
|
||||||
_preferencesDialog->getCloudMinDepth(1),
|
"created. Go to Preferences->3D Rendering under \"Odom\" column to modify this parameter.",
|
||||||
indices.get(),
|
_preferencesDialog->getCloudDecimation(1),
|
||||||
_preferencesDialog->getAllParameters());
|
odom.data().imageRaw().cols,
|
||||||
if(indices->size())
|
odom.data().imageRaw().rows);
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
cloud = util3d::transformPointCloud(cloud, pose);
|
|
||||||
|
|
||||||
if(_preferencesDialog->isCloudMeshing())
|
pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud;
|
||||||
|
pcl::IndicesPtr indices(new std::vector<int>);
|
||||||
|
cloud = util3d::cloudRGBFromSensorData(odom.data(),
|
||||||
|
_preferencesDialog->getCloudDecimation(1),
|
||||||
|
_preferencesDialog->getCloudMaxDepth(1),
|
||||||
|
_preferencesDialog->getCloudMinDepth(1),
|
||||||
|
indices.get(),
|
||||||
|
_preferencesDialog->getAllParameters());
|
||||||
|
if(indices->size())
|
||||||
{
|
{
|
||||||
// we need to extract indices as pcl::OrganizedFastMesh doesn't take indices
|
cloud = util3d::transformPointCloud(cloud, pose);
|
||||||
pcl::PointCloud<pcl::PointXYZRGB>::Ptr output(new pcl::PointCloud<pcl::PointXYZRGB>);
|
|
||||||
output = util3d::extractIndices(cloud, indices, false, true);
|
|
||||||
|
|
||||||
// Fast organized mesh
|
if(_preferencesDialog->isCloudMeshing())
|
||||||
Eigen::Vector3f viewpoint(0.0f,0.0f,0.0f);
|
|
||||||
if(odom.data().cameraModels().size() && !odom.data().cameraModels()[0].localTransform().isNull())
|
|
||||||
{
|
{
|
||||||
viewpoint[0] = odom.data().cameraModels()[0].localTransform().x();
|
// we need to extract indices as pcl::OrganizedFastMesh doesn't take indices
|
||||||
viewpoint[1] = odom.data().cameraModels()[0].localTransform().y();
|
pcl::PointCloud<pcl::PointXYZRGB>::Ptr output(new pcl::PointCloud<pcl::PointXYZRGB>);
|
||||||
viewpoint[2] = odom.data().cameraModels()[0].localTransform().z();
|
output = util3d::extractIndices(cloud, indices, false, true);
|
||||||
|
|
||||||
|
// Fast organized mesh
|
||||||
|
Eigen::Vector3f viewpoint(0.0f,0.0f,0.0f);
|
||||||
|
if(odom.data().cameraModels().size() && !odom.data().cameraModels()[0].localTransform().isNull())
|
||||||
|
{
|
||||||
|
viewpoint[0] = odom.data().cameraModels()[0].localTransform().x();
|
||||||
|
viewpoint[1] = odom.data().cameraModels()[0].localTransform().y();
|
||||||
|
viewpoint[2] = odom.data().cameraModels()[0].localTransform().z();
|
||||||
|
}
|
||||||
|
else if(!odom.data().stereoCameraModel().localTransform().isNull())
|
||||||
|
{
|
||||||
|
viewpoint[0] = odom.data().stereoCameraModel().localTransform().x();
|
||||||
|
viewpoint[1] = odom.data().stereoCameraModel().localTransform().y();
|
||||||
|
viewpoint[2] = odom.data().stereoCameraModel().localTransform().z();
|
||||||
|
}
|
||||||
|
std::vector<pcl::Vertices> polygons = util3d::organizedFastMesh(
|
||||||
|
output,
|
||||||
|
_preferencesDialog->getCloudMeshingAngle(),
|
||||||
|
_preferencesDialog->isCloudMeshingQuad(),
|
||||||
|
_preferencesDialog->getCloudMeshingTriangleSize(),
|
||||||
|
Eigen::Vector3f(pose.x(), pose.y(), pose.z()) + viewpoint);
|
||||||
|
if(polygons.size())
|
||||||
|
{
|
||||||
|
if(!_cloudViewer->addCloudMesh("cloudOdom", output, polygons, _odometryCorrection))
|
||||||
|
{
|
||||||
|
UERROR("Adding cloudOdom to viewer failed!");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if(!odom.data().stereoCameraModel().localTransform().isNull())
|
else
|
||||||
{
|
{
|
||||||
viewpoint[0] = odom.data().stereoCameraModel().localTransform().x();
|
if(!_cloudViewer->addCloud("cloudOdom", cloud, _odometryCorrection))
|
||||||
viewpoint[1] = odom.data().stereoCameraModel().localTransform().y();
|
|
||||||
viewpoint[2] = odom.data().stereoCameraModel().localTransform().z();
|
|
||||||
}
|
|
||||||
std::vector<pcl::Vertices> polygons = util3d::organizedFastMesh(
|
|
||||||
output,
|
|
||||||
_preferencesDialog->getCloudMeshingAngle(),
|
|
||||||
_preferencesDialog->isCloudMeshingQuad(),
|
|
||||||
_preferencesDialog->getCloudMeshingTriangleSize(),
|
|
||||||
Eigen::Vector3f(pose.x(), pose.y(), pose.z()) + viewpoint);
|
|
||||||
if(polygons.size())
|
|
||||||
{
|
|
||||||
if(!_cloudViewer->addCloudMesh("cloudOdom", output, polygons, _odometryCorrection))
|
|
||||||
{
|
{
|
||||||
UERROR("Adding cloudOdom to viewer failed!");
|
UERROR("Adding cloudOdom to viewer failed!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
_cloudViewer->setCloudVisibility("cloudOdom", true);
|
||||||
else
|
_cloudViewer->setCloudOpacity("cloudOdom", _preferencesDialog->getCloudOpacity(1));
|
||||||
{
|
_cloudViewer->setCloudPointSize("cloudOdom", _preferencesDialog->getCloudPointSize(1));
|
||||||
if(!_cloudViewer->addCloud("cloudOdom", cloud, _odometryCorrection))
|
|
||||||
{
|
|
||||||
UERROR("Adding cloudOdom to viewer failed!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_cloudViewer->setCloudVisibility("cloudOdom", true);
|
|
||||||
_cloudViewer->setCloudOpacity("cloudOdom", _preferencesDialog->getCloudOpacity(1));
|
|
||||||
_cloudViewer->setCloudPointSize("cloudOdom", _preferencesDialog->getCloudPointSize(1));
|
|
||||||
|
|
||||||
cloudUpdated = true;
|
cloudUpdated = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2218,6 +2232,18 @@ void MainWindow::createAndAddCloudToMap(int nodeId, const Transform & pose, int
|
|||||||
pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloudWithoutNormals;
|
pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloudWithoutNormals;
|
||||||
pcl::IndicesPtr indices(new std::vector<int>);
|
pcl::IndicesPtr indices(new std::vector<int>);
|
||||||
UASSERT(nodeId == data.id());
|
UASSERT(nodeId == data.id());
|
||||||
|
|
||||||
|
if(image.cols % _preferencesDialog->getCloudDecimation(0) != 0 ||
|
||||||
|
image.rows % _preferencesDialog->getCloudDecimation(0) != 0)
|
||||||
|
{
|
||||||
|
UERROR("Decimation (%d) is not modulo of the image resolution (%dx%d)! The cloud cannot be "
|
||||||
|
"created. Go to Preferences->3D Rendering under \"Map\" column to modify this parameter.",
|
||||||
|
_preferencesDialog->getCloudDecimation(0),
|
||||||
|
image.cols,
|
||||||
|
image.rows);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Create organized cloud
|
// Create organized cloud
|
||||||
cloudWithoutNormals = util3d::cloudRGBFromSensorData(data,
|
cloudWithoutNormals = util3d::cloudRGBFromSensorData(data,
|
||||||
_preferencesDialog->getCloudDecimation(0),
|
_preferencesDialog->getCloudDecimation(0),
|
||||||
|
|||||||
@@ -471,7 +471,12 @@ PreferencesDialog::PreferencesDialog(QWidget * parent) :
|
|||||||
connect(_ui->lineEdit_cameraStereoVideo_path, SIGNAL(textChanged(const QString &)), this, SLOT(makeObsoleteSourcePanel()));
|
connect(_ui->lineEdit_cameraStereoVideo_path, SIGNAL(textChanged(const QString &)), this, SLOT(makeObsoleteSourcePanel()));
|
||||||
connect(_ui->checkBox_stereoVideo_rectify, SIGNAL(stateChanged(int)), this, SLOT(makeObsoleteSourcePanel()));
|
connect(_ui->checkBox_stereoVideo_rectify, SIGNAL(stateChanged(int)), this, SLOT(makeObsoleteSourcePanel()));
|
||||||
|
|
||||||
connect(_ui->checkBox_stereoZed_computeDisparity, SIGNAL(stateChanged(int)), this, SLOT(makeObsoleteSourcePanel()));
|
connect(_ui->comboBox_stereoZed_resolution, SIGNAL(currentIndexChanged(int)), this, SLOT(makeObsoleteSourcePanel()));
|
||||||
|
connect(_ui->comboBox_stereoZed_quality, SIGNAL(currentIndexChanged(int)), this, SLOT(makeObsoleteSourcePanel()));
|
||||||
|
connect(_ui->comboBox_stereoZed_sensingMode, SIGNAL(currentIndexChanged(int)), this, SLOT(makeObsoleteSourcePanel()));
|
||||||
|
connect(_ui->spinBox_stereoZed_confidenceThr, SIGNAL(valueChanged(int)), this, SLOT(makeObsoleteSourcePanel()));
|
||||||
|
connect(_ui->toolButton_zedSvoPath, SIGNAL(clicked()), this, SLOT(selectSourceSvoPath()));
|
||||||
|
connect(_ui->lineEdit_zedSvoPath, SIGNAL(textChanged(const QString &)), 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()));
|
||||||
@@ -1278,7 +1283,11 @@ void PreferencesDialog::resetSettings(QGroupBox * groupBox)
|
|||||||
_ui->checkBox_stereoImages_rectify->setChecked(false);
|
_ui->checkBox_stereoImages_rectify->setChecked(false);
|
||||||
_ui->lineEdit_cameraStereoVideo_path->setText("");
|
_ui->lineEdit_cameraStereoVideo_path->setText("");
|
||||||
_ui->checkBox_stereoVideo_rectify->setChecked(false);
|
_ui->checkBox_stereoVideo_rectify->setChecked(false);
|
||||||
_ui->checkBox_stereoZed_computeDisparity->setChecked(true);
|
_ui->comboBox_stereoZed_resolution->setCurrentIndex(2);
|
||||||
|
_ui->comboBox_stereoZed_quality->setCurrentIndex(1);
|
||||||
|
_ui->comboBox_stereoZed_sensingMode->setCurrentIndex(1);
|
||||||
|
_ui->spinBox_stereoZed_confidenceThr->setValue(100);
|
||||||
|
_ui->lineEdit_zedSvoPath->clear();
|
||||||
|
|
||||||
_ui->checkBox_cameraImages_timestamps->setChecked(false);
|
_ui->checkBox_cameraImages_timestamps->setChecked(false);
|
||||||
_ui->checkBox_cameraImages_syncTimeStamps->setChecked(true);
|
_ui->checkBox_cameraImages_syncTimeStamps->setChecked(true);
|
||||||
@@ -1604,7 +1613,11 @@ void PreferencesDialog::readCameraSettings(const QString & filePath)
|
|||||||
settings.endGroup(); // StereoVideo
|
settings.endGroup(); // StereoVideo
|
||||||
|
|
||||||
settings.beginGroup("StereoZed");
|
settings.beginGroup("StereoZed");
|
||||||
_ui->checkBox_stereoZed_computeDisparity->setChecked(settings.value("compute_disp", _ui->checkBox_stereoZed_computeDisparity->isChecked()).toBool());
|
_ui->comboBox_stereoZed_resolution->setCurrentIndex(settings.value("resolution", _ui->comboBox_stereoZed_resolution->currentIndex()).toInt());
|
||||||
|
_ui->comboBox_stereoZed_quality->setCurrentIndex(settings.value("quality", _ui->comboBox_stereoZed_quality->currentIndex()).toInt());
|
||||||
|
_ui->comboBox_stereoZed_sensingMode->setCurrentIndex(settings.value("sensing_mode", _ui->comboBox_stereoZed_sensingMode->currentIndex()).toInt());
|
||||||
|
_ui->spinBox_stereoZed_confidenceThr->setValue(settings.value("confidence_thr", _ui->spinBox_stereoZed_confidenceThr->value()).toInt());
|
||||||
|
_ui->lineEdit_zedSvoPath->setText(settings.value("svo_path", _ui->lineEdit_zedSvoPath->text()).toString());
|
||||||
settings.endGroup(); // StereoZed
|
settings.endGroup(); // StereoZed
|
||||||
|
|
||||||
|
|
||||||
@@ -1993,7 +2006,11 @@ void PreferencesDialog::writeCameraSettings(const QString & filePath) const
|
|||||||
settings.endGroup(); // StereoVideo
|
settings.endGroup(); // StereoVideo
|
||||||
|
|
||||||
settings.beginGroup("StereoZed");
|
settings.beginGroup("StereoZed");
|
||||||
settings.setValue("compute_disp", _ui->checkBox_stereoZed_computeDisparity->isChecked());
|
settings.setValue("resolution", _ui->comboBox_stereoZed_resolution->currentIndex());
|
||||||
|
settings.setValue("quality", _ui->comboBox_stereoZed_quality->currentIndex());
|
||||||
|
settings.setValue("sensing_mode", _ui->comboBox_stereoZed_sensingMode->currentIndex());
|
||||||
|
settings.setValue("confidence_thr", _ui->spinBox_stereoZed_confidenceThr->value());
|
||||||
|
settings.setValue("svo_path", _ui->lineEdit_zedSvoPath->text());
|
||||||
settings.endGroup(); // StereoZed
|
settings.endGroup(); // StereoZed
|
||||||
|
|
||||||
|
|
||||||
@@ -2833,6 +2850,20 @@ void PreferencesDialog::selectSourceOni2Path()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PreferencesDialog::selectSourceSvoPath()
|
||||||
|
{
|
||||||
|
QString dir = _ui->lineEdit_zedSvoPath->text();
|
||||||
|
if(dir.isEmpty())
|
||||||
|
{
|
||||||
|
dir = getWorkingDirectory();
|
||||||
|
}
|
||||||
|
QString path = QFileDialog::getOpenFileName(this, tr("Select file"), _ui->lineEdit_zedSvoPath->text(), tr("ZED (*.svo)"));
|
||||||
|
if(!path.isEmpty())
|
||||||
|
{
|
||||||
|
_ui->lineEdit_zedSvoPath->setText(path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void PreferencesDialog::setParameter(const std::string & key, const std::string & value)
|
void PreferencesDialog::setParameter(const std::string & key, const std::string & value)
|
||||||
{
|
{
|
||||||
UDEBUG("%s=%s", key.c_str(), value.c_str());
|
UDEBUG("%s=%s", key.c_str(), value.c_str());
|
||||||
@@ -3988,10 +4019,27 @@ Camera * PreferencesDialog::createCamera(bool useRawImages)
|
|||||||
}
|
}
|
||||||
else if (driver == kSrcStereoZed)
|
else if (driver == kSrcStereoZed)
|
||||||
{
|
{
|
||||||
camera = new CameraStereoZed(
|
if(!_ui->lineEdit_zedSvoPath->text().isEmpty())
|
||||||
_ui->checkBox_stereoZed_computeDisparity->isChecked(),
|
{
|
||||||
this->getGeneralInputRate(),
|
camera = new CameraStereoZed(
|
||||||
this->getSourceLocalTransform());
|
_ui->lineEdit_zedSvoPath->text().toStdString(),
|
||||||
|
_ui->comboBox_stereoZed_quality->currentIndex(),
|
||||||
|
_ui->comboBox_stereoZed_sensingMode->currentIndex(),
|
||||||
|
_ui->spinBox_stereoZed_confidenceThr->value(),
|
||||||
|
this->getGeneralInputRate(),
|
||||||
|
this->getSourceLocalTransform());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
camera = new CameraStereoZed(
|
||||||
|
this->getSourceDevice().isEmpty()?0:atoi(this->getSourceDevice().toStdString().c_str()),
|
||||||
|
_ui->comboBox_stereoZed_resolution->currentIndex(),
|
||||||
|
_ui->comboBox_stereoZed_quality->currentIndex(),
|
||||||
|
_ui->comboBox_stereoZed_sensingMode->currentIndex(),
|
||||||
|
_ui->spinBox_stereoZed_confidenceThr->value(),
|
||||||
|
this->getGeneralInputRate(),
|
||||||
|
this->getSourceLocalTransform());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if(driver == kSrcUsbDevice)
|
else if(driver == kSrcUsbDevice)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>984</width>
|
<width>984</width>
|
||||||
<height>693</height>
|
<height>713</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
@@ -63,25 +63,16 @@
|
|||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>-477</y>
|
||||||
<width>685</width>
|
<width>686</width>
|
||||||
<height>1826</height>
|
<height>2023</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_16">
|
<layout class="QVBoxLayout" name="verticalLayout_16">
|
||||||
<property name="spacing">
|
<property name="spacing">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="leftMargin">
|
<property name="margin">
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin">
|
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
@@ -2120,7 +2111,7 @@ when using the file type, logs are saved in LogRtabmap.txt (located in the worki
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QStackedWidget" name="stackedWidget_rgbd">
|
<widget class="QStackedWidget" name="stackedWidget_rgbd">
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>6</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="page_32">
|
<widget class="QWidget" name="page_32">
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_63">
|
<layout class="QVBoxLayout" name="verticalLayout_63">
|
||||||
@@ -2788,7 +2779,7 @@ when using the file type, logs are saved in LogRtabmap.txt (located in the worki
|
|||||||
<item row="0" column="2">
|
<item row="0" column="2">
|
||||||
<widget class="QLabel" name="label_240">
|
<widget class="QLabel" name="label_240">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Driver</string>
|
<string>Driver.</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="wordWrap">
|
<property name="wordWrap">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
@@ -2805,7 +2796,7 @@ when using the file type, logs are saved in LogRtabmap.txt (located in the worki
|
|||||||
<item row="1" column="2">
|
<item row="1" column="2">
|
||||||
<widget class="QLabel" name="label_247">
|
<widget class="QLabel" name="label_247">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Generate disparity image and convert it to depth. The resulting output is a RGB-D image instead of stereo images.</string>
|
<string>Generate disparity image and convert it to depth. The resulting output is a RGB-D image instead of stereo images. Dense disparity parameters can found under StereoBM tab.</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="wordWrap">
|
<property name="wordWrap">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
@@ -2817,7 +2808,7 @@ when using the file type, logs are saved in LogRtabmap.txt (located in the worki
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QStackedWidget" name="stackedWidget_stereo">
|
<widget class="QStackedWidget" name="stackedWidget_stereo">
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>5</number>
|
<number>4</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="page_49">
|
<widget class="QWidget" name="page_49">
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_91">
|
<layout class="QVBoxLayout" name="verticalLayout_91">
|
||||||
@@ -3038,32 +3029,135 @@ when using the file type, logs are saved in LogRtabmap.txt (located in the worki
|
|||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Zed sdk</string>
|
<string>Zed sdk</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_102">
|
<layout class="QGridLayout" name="gridLayout_37" columnstretch="0,1">
|
||||||
<item>
|
<item row="2" column="0">
|
||||||
<layout class="QGridLayout" name="gridLayout_37" columnstretch="0,1">
|
<widget class="QComboBox" name="comboBox_stereoZed_sensingMode">
|
||||||
<item row="0" column="0">
|
<item>
|
||||||
<widget class="QCheckBox" name="checkBox_stereoZed_computeDisparity">
|
<property name="text">
|
||||||
|
<string>FULL</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>RAW</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="0">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_8">
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="toolButton_zedSvoPath">
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="lineEdit_zedSvoPath">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QLabel" name="label_272">
|
|
||||||
<property name="text">
|
|
||||||
<string>Compute disparity with the GPU (using Zed sdk approach). Note that "Generate disparity image..." above will be ignored if set.</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="textInteractionFlags">
|
|
||||||
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item row="0" column="0">
|
||||||
|
<widget class="QComboBox" name="comboBox_stereoZed_resolution">
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>HD2K</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>HD1080</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>HD720</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>VGA</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QLabel" name="label_274">
|
||||||
|
<property name="text">
|
||||||
|
<string>Resolution. Not used when a SVO file is used.</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QComboBox" name="comboBox_stereoZed_quality">
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>NONE</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>PERFORMANCE</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>QUALITY</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QLabel" name="label_290">
|
||||||
|
<property name="text">
|
||||||
|
<string>Quality. If NONE, the disparity is not computed on the GPU.</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QLabel" name="label_291">
|
||||||
|
<property name="text">
|
||||||
|
<string>Sensing mode.</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="1">
|
||||||
|
<widget class="QLabel" name="label_305">
|
||||||
|
<property name="text">
|
||||||
|
<string>Path to a *.SVO file.</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="5" column="0">
|
||||||
<spacer name="verticalSpacer_54">
|
<spacer name="verticalSpacer_54">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Vertical</enum>
|
<enum>Qt::Vertical</enum>
|
||||||
@@ -3071,11 +3165,31 @@ when using the file type, logs are saved in LogRtabmap.txt (located in the worki
|
|||||||
<property name="sizeHint" stdset="0">
|
<property name="sizeHint" stdset="0">
|
||||||
<size>
|
<size>
|
||||||
<width>20</width>
|
<width>20</width>
|
||||||
<height>0</height>
|
<height>13</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="3" column="1">
|
||||||
|
<widget class="QLabel" name="label_306">
|
||||||
|
<property name="text">
|
||||||
|
<string>Filtering value for the disparity map (and by extension the depth map). A lower value means more confidence and precision (but less density), an upper value reduces the filtering (more density, less certainty).</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0">
|
||||||
|
<widget class="QSpinBox" name="spinBox_stereoZed_confidenceThr">
|
||||||
|
<property name="maximum">
|
||||||
|
<number>100</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@@ -3514,16 +3628,7 @@ when using the file type, logs are saved in LogRtabmap.txt (located in the worki
|
|||||||
<string>Directory of images (optional settings)</string>
|
<string>Directory of images (optional settings)</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_93">
|
<layout class="QVBoxLayout" name="verticalLayout_93">
|
||||||
<property name="leftMargin">
|
<property name="margin">
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin">
|
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
@@ -3531,7 +3636,7 @@ when using the file type, logs are saved in LogRtabmap.txt (located in the worki
|
|||||||
<item row="1" column="2">
|
<item row="1" column="2">
|
||||||
<widget class="QLabel" name="label_255">
|
<widget class="QLabel" name="label_255">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Use file names as timestamps. Format is epoch time. Example: "1305031102.175304.png"</string>
|
<string>Use file names as timestamps. Format is epoch time. Example: "1305031102.175304.png".</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="wordWrap">
|
<property name="wordWrap">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
@@ -8680,16 +8785,7 @@ If set to false, classic RTAB-Map loop closure detection is done using only imag
|
|||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="page_54">
|
<widget class="QWidget" name="page_54">
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_85">
|
<layout class="QVBoxLayout" name="verticalLayout_85">
|
||||||
<property name="leftMargin">
|
<property name="margin">
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin">
|
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
@@ -8829,16 +8925,7 @@ Lower the ratio -> higher the precision. 0 means disabled, matching the neare
|
|||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="page_55">
|
<widget class="QWidget" name="page_55">
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_86">
|
<layout class="QVBoxLayout" name="verticalLayout_86">
|
||||||
<property name="leftMargin">
|
<property name="margin">
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin">
|
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
@@ -8996,16 +9083,7 @@ Lower the ratio -> higher the precision. 0 means disabled, matching the neare
|
|||||||
<property name="spacing">
|
<property name="spacing">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="leftMargin">
|
<property name="margin">
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin">
|
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
@@ -9085,16 +9163,7 @@ Lower the ratio -> higher the precision. 0 means disabled, matching the neare
|
|||||||
<property name="spacing">
|
<property name="spacing">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="leftMargin">
|
<property name="margin">
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin">
|
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
@@ -9206,16 +9275,7 @@ Lower the ratio -> higher the precision. 0 means disabled, matching the neare
|
|||||||
<property name="spacing">
|
<property name="spacing">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="leftMargin">
|
<property name="margin">
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin">
|
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
|
|||||||
@@ -243,7 +243,7 @@ int main(int argc, char * argv[])
|
|||||||
UERROR("Not built with ZED sdk support...");
|
UERROR("Not built with ZED sdk support...");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
camera = new rtabmap::CameraStereoZed(true);
|
camera = new rtabmap::CameraStereoZed(0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user