mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-02 01:20:25 +08:00
Fixed Stereo parameters not used for OdometryBOW. Saving parameters in Memory and Feature2D to re-use old parameters when underlaying algorithm strategies are re-created.
This commit is contained in:
@@ -354,6 +354,8 @@ Feature2D::~Feature2D()
|
||||
}
|
||||
void Feature2D::parseParameters(const ParametersMap & parameters)
|
||||
{
|
||||
uInsert(parameters_, parameters);
|
||||
|
||||
Parameters::parse(parameters, Parameters::kKpMaxFeatures(), maxFeatures_);
|
||||
Parameters::parse(parameters, Parameters::kKpMaxDepth(), _wordsMaxDepth);
|
||||
Parameters::parse(parameters, Parameters::kKpMinDepth(), _wordsMinDepth);
|
||||
@@ -399,7 +401,7 @@ void Feature2D::parseParameters(const ParametersMap & parameters)
|
||||
if((iter=parameters.find(Parameters::kStereoOpticalFlow())) != parameters.end())
|
||||
{
|
||||
delete _stereo;
|
||||
_stereo = Stereo::create(parameters);
|
||||
_stereo = Stereo::create(parameters_);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -377,6 +377,8 @@ Memory::~Memory()
|
||||
|
||||
void Memory::parseParameters(const ParametersMap & parameters)
|
||||
{
|
||||
uInsert(parameters_, parameters);
|
||||
|
||||
UDEBUG("");
|
||||
ParametersMap::const_iterator iter;
|
||||
|
||||
@@ -438,7 +440,7 @@ void Memory::parseParameters(const ParametersMap & parameters)
|
||||
_feature2D = 0;
|
||||
}
|
||||
|
||||
_feature2D = Feature2D::create(detectorStrategy, parameters);
|
||||
_feature2D = Feature2D::create(detectorStrategy, parameters_);
|
||||
}
|
||||
else if(_feature2D)
|
||||
{
|
||||
|
||||
@@ -96,14 +96,8 @@ OdometryBOW::OdometryBOW(const ParametersMap & parameters) :
|
||||
for(ParametersMap::const_iterator iter=parameters.begin(); iter!=parameters.end(); ++iter)
|
||||
{
|
||||
std::string group = uSplit(iter->first, '/').front();
|
||||
if(group.compare("SURF") == 0 ||
|
||||
group.compare("SIFT") == 0 ||
|
||||
group.compare("BRIEF") == 0 ||
|
||||
group.compare("FAST") == 0 ||
|
||||
group.compare("ORB") == 0 ||
|
||||
group.compare("FREAK") == 0 ||
|
||||
group.compare("GFTT") == 0 ||
|
||||
group.compare("BRISK") == 0)
|
||||
if(Parameters::isFeatureParameter(iter->first) ||
|
||||
group.compare("Stereo") == 0)
|
||||
{
|
||||
customParameters.insert(*iter);
|
||||
}
|
||||
|
||||
@@ -60,15 +60,6 @@ RegistrationVis::RegistrationVis(const ParametersMap & parameters) :
|
||||
_flowMaxLevel(Parameters::defaultVisCorFlowMaxLevel())
|
||||
{
|
||||
_featureParameters = Parameters::getDefaultParameters();
|
||||
uInsert(_featureParameters, ParametersPair(Parameters::kMemIncrementalMemory(), "true")); // make sure it is incremental
|
||||
uInsert(_featureParameters, ParametersPair(Parameters::kMemRehearsalSimilarity(), "1.0")); // desactivate rehearsal
|
||||
uInsert(_featureParameters, ParametersPair(Parameters::kMemBinDataKept(), "false"));
|
||||
uInsert(_featureParameters, ParametersPair(Parameters::kMemSTMSize(), "0"));
|
||||
uInsert(_featureParameters, ParametersPair(Parameters::kKpIncrementalDictionary(), "true")); // make sure it is incremental
|
||||
uInsert(_featureParameters, ParametersPair(Parameters::kKpNewWordsComparedTogether(), "false"));
|
||||
uInsert(_featureParameters, ParametersPair(Parameters::kKpBadSignRatio(), "0"));
|
||||
uInsert(_featureParameters, ParametersPair(Parameters::kMemGenerateIds(), "true"));
|
||||
|
||||
uInsert(_featureParameters, ParametersPair(Parameters::kKpNNStrategy(), _featureParameters.at(Parameters::kVisCorNNType())));
|
||||
uInsert(_featureParameters, ParametersPair(Parameters::kKpNndrRatio(), _featureParameters.at(Parameters::kVisCorNNDR())));
|
||||
uInsert(_featureParameters, ParametersPair(Parameters::kKpDetectorStrategy(), _featureParameters.at(Parameters::kVisFeatureType())));
|
||||
|
||||
@@ -362,11 +362,13 @@ void Rtabmap::close(bool databaseSaved)
|
||||
}
|
||||
_databasePath.clear();
|
||||
parseParameters(Parameters::getDefaultParameters()); // reset to default parameters
|
||||
_modifiedParameters.clear();
|
||||
_parameters.clear();
|
||||
}
|
||||
|
||||
void Rtabmap::parseParameters(const ParametersMap & parameters)
|
||||
{
|
||||
uInsert(_parameters, parameters);
|
||||
|
||||
ULOGGER_DEBUG("");
|
||||
ParametersMap::const_iterator iter;
|
||||
if((iter=parameters.find(Parameters::kRtabmapWorkingDirectory())) != parameters.end())
|
||||
@@ -481,7 +483,7 @@ void Rtabmap::parseParameters(const ParametersMap & parameters)
|
||||
|
||||
for(ParametersMap::const_iterator iter = parameters.begin(); iter!=parameters.end(); ++iter)
|
||||
{
|
||||
uInsert(_modifiedParameters, ParametersPair(iter->first, iter->second));
|
||||
uInsert(_parameters, ParametersPair(iter->first, iter->second));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -776,7 +778,7 @@ void Rtabmap::resetMemory()
|
||||
|
||||
if(_memory)
|
||||
{
|
||||
_memory->init(_databasePath, true, _modifiedParameters, true);
|
||||
_memory->init(_databasePath, true, _parameters, true);
|
||||
if(_memory->getLastWorkingSignature())
|
||||
{
|
||||
optimizeCurrentMap(_memory->getLastWorkingSignature()->id(), false, _optimizedPoses, &_constraints);
|
||||
|
||||
@@ -225,7 +225,6 @@ std::vector<cv::Point2f> calcStereoCorrespondences(
|
||||
{
|
||||
if(level>0)
|
||||
{
|
||||
UDEBUG("");
|
||||
tmpMaxDisparity = tmpMinDisparity+(bestScoreIndex+1)*(1<<level);
|
||||
tmpMaxDisparity+=tmpMaxDisparity%level;
|
||||
if(tmpMaxDisparity > maxDisparity)
|
||||
@@ -247,7 +246,6 @@ std::vector<cv::Point2f> calcStereoCorrespondences(
|
||||
|
||||
if(bestScoreIndex>=0)
|
||||
{
|
||||
UDEBUG("");
|
||||
//subpixel refining
|
||||
int d = -(tmpMinDisparity+bestScoreIndex);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user