CCCorelib: updated wrong output check. Updated RGBD/MaxOdomCacheSize approach to work properly with Rtabmap/CreateIntermediateNodes=true.

This commit is contained in:
matlabbe
2022-01-28 14:48:32 -05:00
parent 02140f92db
commit 315350dbfc
2 changed files with 3 additions and 4 deletions

View File

@@ -1579,7 +1579,7 @@ bool Rtabmap::process(
} }
// Localization mode stuff // Localization mode stuff
_lastLocalizationPose = newPose; // keep in cache the latest corrected pose _lastLocalizationPose = newPose; // keep in cache the latest corrected pose
if(!_memory->isIncremental()) if(!_memory->isIncremental() && signature->getWeight() >= 0)
{ {
UDEBUG("Update odometry localization cache (size=%d/%d)", (int)_odomCachePoses.size(), _maxOdomCacheSize); UDEBUG("Update odometry localization cache (size=%d/%d)", (int)_odomCachePoses.size(), _maxOdomCacheSize);
if(!_odomCachePoses.empty()) if(!_odomCachePoses.empty())

View File

@@ -137,15 +137,14 @@ rtabmap::Transform icpCC(
icpTransformation.setNull(); icpTransformation.setNull();
return icpTransformation; return icpTransformation;
} }
else if(finalPointCount < 50) else if(!transform.R.isValid())
{ {
std::string msg = uFormat("CCCoreLib has failed: Rejecting transform as finalPointCount %d < 50 ", finalPointCount); std::string msg = uFormat("CCCoreLib has failed: Rotation matrix is invalid");
UDEBUG(msg.c_str()); UDEBUG(msg.c_str());
if(errorMsg) if(errorMsg)
{ {
*errorMsg = msg; *errorMsg = msg;
} }
icpTransformation.setNull(); icpTransformation.setNull();
return icpTransformation; return icpTransformation;
} }