mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-01 17:10:26 +08:00
RegistraitonVis: generate always 3D keypoints if possible
This commit is contained in:
@@ -228,7 +228,7 @@ Transform OdometryF2M::computeTransform(
|
||||
std::multimap<int, cv::Mat> mapDescriptors = map_->getWordsDescriptors();
|
||||
Transform t = this->getPose()*output;
|
||||
UASSERT(mapPoints.size() == mapDescriptors.size());
|
||||
UASSERT(lastFrame_->getWordsDescriptors().size() == lastFrame_->getWords3().size());
|
||||
UASSERT_MSG(lastFrame_->getWordsDescriptors().size() == lastFrame_->getWords3().size(), uFormat("%d vs %d", lastFrame_->getWordsDescriptors().size(), lastFrame_->getWords3().size()).c_str());
|
||||
std::list<int> newIds = uUniqueKeys(lastFrame_->getWordsDescriptors());
|
||||
for(std::list<int>::iterator iter=newIds.begin(); iter!=newIds.end(); ++iter)
|
||||
{
|
||||
|
||||
@@ -518,9 +518,7 @@ Transform RegistrationVis::computeTransformationImpl(
|
||||
{
|
||||
kptsFrom3D = uValues(fromSignature.getWords3());
|
||||
}
|
||||
if((_estimationType == 0 || (_estimationType == 1 && !varianceFromInliersCount()) || !_forwardEstimateOnly) &&
|
||||
toSignature.getWords3().empty() &&
|
||||
!toSignature.sensorData().imageRaw().empty())
|
||||
if(toSignature.getWords3().empty())
|
||||
{
|
||||
kptsTo3D = detector->generateKeypoints3D(toSignature.sensorData(), kptsTo);
|
||||
}
|
||||
|
||||
@@ -2109,7 +2109,8 @@ bool Rtabmap::process(
|
||||
}
|
||||
else if(_memory->isIncremental() && // FIXME: not tested in localization mode, so do it only in mapping mode
|
||||
_optimizationMaxLinearError > 0.0f &&
|
||||
loopClosureLinksAdded.size())
|
||||
loopClosureLinksAdded.size() &&
|
||||
optimizationIterations > 0)
|
||||
{
|
||||
const Link * maxLinearLink = 0;
|
||||
for(std::multimap<int, Link>::iterator iter=constraints.begin(); iter!=constraints.end(); ++iter)
|
||||
|
||||
Reference in New Issue
Block a user