mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-02 17:40:23 +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;}
|
const Feature2D * getFeature2D() const {return _feature2D;}
|
||||||
bool isGraphReduced() const {return _reduceGraph;}
|
bool isGraphReduced() const {return _reduceGraph;}
|
||||||
const std::vector<double> & getOdomMaxInf() const {return _odomMaxInf;}
|
const std::vector<double> & getOdomMaxInf() const {return _odomMaxInf;}
|
||||||
|
bool isOdomGravityUsed() const {return _useOdometryGravity;}
|
||||||
|
|
||||||
void dumpMemoryTree(const char * fileNameTree) const;
|
void dumpMemoryTree(const char * fileNameTree) const;
|
||||||
virtual void dumpMemory(std::string directory) const;
|
virtual void dumpMemory(std::string directory) const;
|
||||||
|
|||||||
@@ -1276,7 +1276,10 @@ bool Rtabmap::process(
|
|||||||
UINFO("Odometry refining rejected: %s", info.rejectedMsg.c_str());
|
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)
|
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()));
|
_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
|
lastProximitySpaceClosureId>0 || // can be different map of the current one
|
||||||
statistics_.reducedIds().size() ||
|
statistics_.reducedIds().size() ||
|
||||||
(signature->hasLink(signature->id(), Link::kPosePrior) && !_graphOptimizer->priorsIgnored()) || // prior edge
|
(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 ||
|
proximityDetectionsInTimeFound>0 ||
|
||||||
landmarkDetected!=0 ||
|
landmarkDetected!=0 ||
|
||||||
signaturesRetrieved.size()) // can be different map of the current one
|
signaturesRetrieved.size()) // can be different map of the current one
|
||||||
|
|||||||
Reference in New Issue
Block a user