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)
|
||||
{
|
||||
dataTo = signatureTo.sensorData();
|
||||
dataTo = signatureTo.sensorData();
|
||||
}
|
||||
else if(link.to()>0)
|
||||
{
|
||||
@@ -5569,18 +5569,29 @@ void DatabaseViewer::updateConstraintView(
|
||||
constraintsViewer_->removeCloud("words1");
|
||||
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());
|
||||
}
|
||||
std::list<Signature*> signatures;
|
||||
std::list<Signature*> signatures;
|
||||
dbDriver_->loadSignatures(ids, signatures);
|
||||
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);
|
||||
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());
|
||||
}
|
||||
int i=0;
|
||||
@@ -5589,11 +5600,14 @@ void DatabaseViewer::updateConstraintView(
|
||||
++iter)
|
||||
{
|
||||
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;
|
||||
++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);
|
||||
}
|
||||
}
|
||||
@@ -5624,7 +5638,10 @@ void DatabaseViewer::updateConstraintView(
|
||||
{
|
||||
constraintsViewer_->addCloud("words1", cloudTo, pose, Qt::cyan);
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
if(sTo)
|
||||
{
|
||||
UWARN("Empty 3D words for node %d", link.to());
|
||||
}
|
||||
constraintsViewer_->removeCloud("words1");
|
||||
|
||||
Reference in New Issue
Block a user