mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-02 17:40:23 +08:00
DbViewer: fixed error log when showing landmarks in Constraints view.
This commit is contained in:
@@ -5481,7 +5481,7 @@ void DatabaseViewer::updateConstraintView(
|
|||||||
|
|
||||||
if(signatureTo.id()>0)
|
if(signatureTo.id()>0)
|
||||||
{
|
{
|
||||||
dataTo = signatureTo.sensorData();
|
dataTo = signatureTo.sensorData();
|
||||||
}
|
}
|
||||||
else if(link.to()>0)
|
else if(link.to()>0)
|
||||||
{
|
{
|
||||||
@@ -5569,18 +5569,29 @@ void DatabaseViewer::updateConstraintView(
|
|||||||
constraintsViewer_->removeCloud("words1");
|
constraintsViewer_->removeCloud("words1");
|
||||||
if(ui_->checkBox_show3DWords->isChecked())
|
if(ui_->checkBox_show3DWords->isChecked())
|
||||||
{
|
{
|
||||||
std::list<int> ids;
|
std::list<int> ids;
|
||||||
|
ids.push_back(link.from());
|
||||||
|
if(link.to()>0)
|
||||||
|
{
|
||||||
ids.push_back(link.to());
|
ids.push_back(link.to());
|
||||||
}
|
}
|
||||||
std::list<Signature*> signatures;
|
std::list<Signature*> signatures;
|
||||||
dbDriver_->loadSignatures(ids, signatures);
|
dbDriver_->loadSignatures(ids, signatures);
|
||||||
if(signatures.size() == 2 || (link.to()<0 && signatures.size()==1))
|
if(signatures.size() == 2 || (link.to()<0 && signatures.size()==1))
|
||||||
{
|
{
|
||||||
const Signature * sFrom = signatureFrom.id()>0?&signatureFrom:signatures.front();
|
const Signature * sFrom = signatureFrom.id()>0?&signatureFrom:signatures.front();
|
||||||
|
const Signature * sTo = 0;
|
||||||
|
if(signatures.size()==2)
|
||||||
|
{
|
||||||
|
sTo = signatureTo.id()>0?&signatureTo:signatures.back();
|
||||||
|
UASSERT(sTo);
|
||||||
}
|
}
|
||||||
UASSERT(sFrom);
|
UASSERT(sFrom);
|
||||||
pcl::PointCloud<pcl::PointXYZ>::Ptr cloudFrom(new pcl::PointCloud<pcl::PointXYZ>);
|
pcl::PointCloud<pcl::PointXYZ>::Ptr cloudFrom(new pcl::PointCloud<pcl::PointXYZ>);
|
||||||
pcl::PointCloud<pcl::PointXYZ>::Ptr cloudTo(new pcl::PointCloud<pcl::PointXYZ>);
|
pcl::PointCloud<pcl::PointXYZ>::Ptr cloudTo(new pcl::PointCloud<pcl::PointXYZ>);
|
||||||
|
cloudFrom->resize(sFrom->getWords3().size());
|
||||||
|
if(sTo)
|
||||||
|
{
|
||||||
cloudTo->resize(sTo->getWords3().size());
|
cloudTo->resize(sTo->getWords3().size());
|
||||||
}
|
}
|
||||||
int i=0;
|
int i=0;
|
||||||
@@ -5589,11 +5600,14 @@ void DatabaseViewer::updateConstraintView(
|
|||||||
++iter)
|
++iter)
|
||||||
{
|
{
|
||||||
cloudFrom->at(i++) = pcl::PointXYZ(iter->second.x, iter->second.y, iter->second.z);
|
cloudFrom->at(i++) = pcl::PointXYZ(iter->second.x, iter->second.y, iter->second.z);
|
||||||
}
|
}
|
||||||
i=0;
|
|
||||||
for(std::multimap<int, cv::Point3f>::const_iterator iter=sTo->getWords3().begin();
|
|
||||||
i=0;
|
i=0;
|
||||||
++iter)
|
if(sTo)
|
||||||
|
{
|
||||||
|
for(std::multimap<int, cv::Point3f>::const_iterator iter=sTo->getWords3().begin();
|
||||||
|
iter!=sTo->getWords3().end();
|
||||||
|
++iter)
|
||||||
|
{
|
||||||
cloudTo->at(i++) = pcl::PointXYZ(iter->second.x, iter->second.y, iter->second.z);
|
cloudTo->at(i++) = pcl::PointXYZ(iter->second.x, iter->second.y, iter->second.z);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5624,7 +5638,10 @@ void DatabaseViewer::updateConstraintView(
|
|||||||
{
|
{
|
||||||
constraintsViewer_->addCloud("words1", cloudTo, pose, Qt::cyan);
|
constraintsViewer_->addCloud("words1", cloudTo, pose, Qt::cyan);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
if(sTo)
|
||||||
|
{
|
||||||
UWARN("Empty 3D words for node %d", link.to());
|
UWARN("Empty 3D words for node %d", link.to());
|
||||||
}
|
}
|
||||||
constraintsViewer_->removeCloud("words1");
|
constraintsViewer_->removeCloud("words1");
|
||||||
|
|||||||
Reference in New Issue
Block a user