Rtabmap: avoid optimizing for only gravity if odometry is already aligned with gravity

This commit is contained in:
matlabbe
2020-02-26 13:40:03 -05:00
parent 80bee99bfc
commit 5daf4e5b2b
2 changed files with 6 additions and 2 deletions

View File

@@ -1276,7 +1276,10 @@ bool Rtabmap::process(
UINFO("Odometry refining rejected: %s", info.rejectedMsg.c_str());
if(!info.covariance.empty() && info.covariance.at<double>(0,0) > 0.0 && info.covariance.at<double>(0,0) != 1.0 && info.covariance.at<double>(5,5) > 0.0 && info.covariance.at<double>(5,5) != 1.0)
{
std::cout << info.covariance << std::endl;
if(ULogger::level() <= ULogger::kInfo)
{
std::cout << info.covariance << std::endl;
}
_memory->updateLink(Link(oldId, signature->id(), signature->getLinks().begin()->second.type(), guess, (info.covariance*100.0).inv()));
}
}
@@ -2562,7 +2565,7 @@ bool Rtabmap::process(
lastProximitySpaceClosureId>0 || // can be different map of the current one
statistics_.reducedIds().size() ||
(signature->hasLink(signature->id(), Link::kPosePrior) && !_graphOptimizer->priorsIgnored()) || // prior edge
(signature->hasLink(signature->id(), Link::kGravity) && _graphOptimizer->gravitySigma()>0.0f) || // gravity edge
(signature->hasLink(signature->id(), Link::kGravity) && _graphOptimizer->gravitySigma()>0.0f && !_memory->isOdomGravityUsed()) || // gravity edge
proximityDetectionsInTimeFound>0 ||
landmarkDetected!=0 ||
signaturesRetrieved.size()) // can be different map of the current one