mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-03 01:50:24 +08:00
Rtabmap: avoid optimizing for only gravity if odometry is already aligned with gravity
This commit is contained in:
@@ -218,6 +218,7 @@ public:
|
||||
const Feature2D * getFeature2D() const {return _feature2D;}
|
||||
bool isGraphReduced() const {return _reduceGraph;}
|
||||
const std::vector<double> & getOdomMaxInf() const {return _odomMaxInf;}
|
||||
bool isOdomGravityUsed() const {return _useOdometryGravity;}
|
||||
|
||||
void dumpMemoryTree(const char * fileNameTree) const;
|
||||
virtual void dumpMemory(std::string directory) const;
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user