mirror of
https://github.com/introlab/rtabmap_ros.git
synced 2026-10-04 00:37:46 +08:00
DatabaseViewer: fixed update of constraintView when moving the image sliders.
git-svn-id: http://rtabmap.googlecode.com/svn/trunk/rtabmap@2049 f169173b-cf89-36c8-b27e-44dbe73f0c83
This commit is contained in:
@@ -109,7 +109,8 @@ private:
|
|||||||
void updateWordsMatching();
|
void updateWordsMatching();
|
||||||
void updateConstraintView(const rtabmap::Link & link,
|
void updateConstraintView(const rtabmap::Link & link,
|
||||||
const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloudFrom = pcl::PointCloud<pcl::PointXYZ>::Ptr(new pcl::PointCloud<pcl::PointXYZ>),
|
const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloudFrom = pcl::PointCloud<pcl::PointXYZ>::Ptr(new pcl::PointCloud<pcl::PointXYZ>),
|
||||||
const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloudTo = pcl::PointCloud<pcl::PointXYZ>::Ptr(new pcl::PointCloud<pcl::PointXYZ>));
|
const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloudTo = pcl::PointCloud<pcl::PointXYZ>::Ptr(new pcl::PointCloud<pcl::PointXYZ>),
|
||||||
|
bool updateImageSliders = true);
|
||||||
void updateConstraintButtons();
|
void updateConstraintButtons();
|
||||||
Link findActiveLink(int from, int to);
|
Link findActiveLink(int from, int to);
|
||||||
bool containsLink(
|
bool containsLink(
|
||||||
|
|||||||
@@ -1081,7 +1081,13 @@ void DatabaseViewer::update(int value,
|
|||||||
{
|
{
|
||||||
if(i != ui_->horizontalSlider_loops->value())
|
if(i != ui_->horizontalSlider_loops->value())
|
||||||
{
|
{
|
||||||
|
ui_->horizontalSlider_loops->blockSignals(true);
|
||||||
ui_->horizontalSlider_loops->setValue(i);
|
ui_->horizontalSlider_loops->setValue(i);
|
||||||
|
ui_->horizontalSlider_loops->blockSignals(false);
|
||||||
|
this->updateConstraintView(loopLinks_.at(i),
|
||||||
|
pcl::PointCloud<pcl::PointXYZ>::Ptr(new pcl::PointCloud<pcl::PointXYZ>),
|
||||||
|
pcl::PointCloud<pcl::PointXYZ>::Ptr(new pcl::PointCloud<pcl::PointXYZ>),
|
||||||
|
false);
|
||||||
}
|
}
|
||||||
ui_->horizontalSlider_neighbors->blockSignals(true);
|
ui_->horizontalSlider_neighbors->blockSignals(true);
|
||||||
ui_->horizontalSlider_neighbors->setValue(0);
|
ui_->horizontalSlider_neighbors->setValue(0);
|
||||||
@@ -1097,7 +1103,13 @@ void DatabaseViewer::update(int value,
|
|||||||
{
|
{
|
||||||
if(i != ui_->horizontalSlider_neighbors->value())
|
if(i != ui_->horizontalSlider_neighbors->value())
|
||||||
{
|
{
|
||||||
|
ui_->horizontalSlider_neighbors->blockSignals(true);
|
||||||
ui_->horizontalSlider_neighbors->setValue(i);
|
ui_->horizontalSlider_neighbors->setValue(i);
|
||||||
|
ui_->horizontalSlider_neighbors->blockSignals(false);
|
||||||
|
this->updateConstraintView(neighborLinks_.at(i),
|
||||||
|
pcl::PointCloud<pcl::PointXYZ>::Ptr(new pcl::PointCloud<pcl::PointXYZ>),
|
||||||
|
pcl::PointCloud<pcl::PointXYZ>::Ptr(new pcl::PointCloud<pcl::PointXYZ>),
|
||||||
|
false);
|
||||||
}
|
}
|
||||||
ui_->horizontalSlider_loops->blockSignals(true);
|
ui_->horizontalSlider_loops->blockSignals(true);
|
||||||
ui_->horizontalSlider_loops->setValue(0);
|
ui_->horizontalSlider_loops->setValue(0);
|
||||||
@@ -1386,7 +1398,8 @@ void DatabaseViewer::sliderLoopValueChanged(int value)
|
|||||||
|
|
||||||
void DatabaseViewer::updateConstraintView(const rtabmap::Link & link,
|
void DatabaseViewer::updateConstraintView(const rtabmap::Link & link,
|
||||||
const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloudFrom,
|
const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloudFrom,
|
||||||
const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloudTo)
|
const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloudTo,
|
||||||
|
bool updateImageSliders)
|
||||||
{
|
{
|
||||||
std::multimap<int, Link>::iterator iter = util3d::findLink(linksRefined_, link.from(), link.to());
|
std::multimap<int, Link>::iterator iter = util3d::findLink(linksRefined_, link.from(), link.to());
|
||||||
rtabmap::Transform t = link.transform();
|
rtabmap::Transform t = link.transform();
|
||||||
@@ -1400,42 +1413,45 @@ void DatabaseViewer::updateConstraintView(const rtabmap::Link & link,
|
|||||||
|
|
||||||
ui_->label_constraint->setText(t.prettyPrint().c_str());
|
ui_->label_constraint->setText(t.prettyPrint().c_str());
|
||||||
|
|
||||||
bool updateA = false;
|
if(updateImageSliders)
|
||||||
bool updateB = false;
|
|
||||||
ui_->horizontalSlider_A->blockSignals(true);
|
|
||||||
ui_->horizontalSlider_B->blockSignals(true);
|
|
||||||
// set from on left and to on right
|
|
||||||
if(ui_->horizontalSlider_A->value() != idToIndex_.value(link.from()))
|
|
||||||
{
|
{
|
||||||
ui_->horizontalSlider_A->setValue(idToIndex_.value(link.from()));
|
bool updateA = false;
|
||||||
updateA=true;
|
bool updateB = false;
|
||||||
}
|
ui_->horizontalSlider_A->blockSignals(true);
|
||||||
if(ui_->horizontalSlider_B->value() != idToIndex_.value(link.to()))
|
ui_->horizontalSlider_B->blockSignals(true);
|
||||||
{
|
// set from on left and to on right
|
||||||
ui_->horizontalSlider_B->setValue(idToIndex_.value(link.to()));
|
if(ui_->horizontalSlider_A->value() != idToIndex_.value(link.from()))
|
||||||
updateB=true;
|
{
|
||||||
}
|
ui_->horizontalSlider_A->setValue(idToIndex_.value(link.from()));
|
||||||
ui_->horizontalSlider_A->blockSignals(false);
|
updateA=true;
|
||||||
ui_->horizontalSlider_B->blockSignals(false);
|
}
|
||||||
if(updateA)
|
if(ui_->horizontalSlider_B->value() != idToIndex_.value(link.to()))
|
||||||
{
|
{
|
||||||
this->update(idToIndex_.value(link.from()),
|
ui_->horizontalSlider_B->setValue(idToIndex_.value(link.to()));
|
||||||
ui_->label_indexA,
|
updateB=true;
|
||||||
ui_->label_parentsA,
|
}
|
||||||
ui_->label_childrenA,
|
ui_->horizontalSlider_A->blockSignals(false);
|
||||||
ui_->graphicsView_A,
|
ui_->horizontalSlider_B->blockSignals(false);
|
||||||
ui_->label_idA,
|
if(updateA)
|
||||||
false); // don't update constraints view!
|
{
|
||||||
}
|
this->update(idToIndex_.value(link.from()),
|
||||||
if(updateB)
|
ui_->label_indexA,
|
||||||
{
|
ui_->label_parentsA,
|
||||||
this->update(idToIndex_.value(link.to()),
|
ui_->label_childrenA,
|
||||||
ui_->label_indexB,
|
ui_->graphicsView_A,
|
||||||
ui_->label_parentsB,
|
ui_->label_idA,
|
||||||
ui_->label_childrenB,
|
false); // don't update constraints view!
|
||||||
ui_->graphicsView_B,
|
}
|
||||||
ui_->label_idB,
|
if(updateB)
|
||||||
false); // don't update constraints view!
|
{
|
||||||
|
this->update(idToIndex_.value(link.to()),
|
||||||
|
ui_->label_indexB,
|
||||||
|
ui_->label_parentsB,
|
||||||
|
ui_->label_childrenB,
|
||||||
|
ui_->graphicsView_B,
|
||||||
|
ui_->label_idB,
|
||||||
|
false); // don't update constraints view!
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ui_->constraintsViewer->isVisible())
|
if(ui_->constraintsViewer->isVisible())
|
||||||
|
|||||||
Reference in New Issue
Block a user