mirror of
https://github.com/introlab/rtabmap.git
synced 2026-10-08 02:57:46 +08:00
Fixed nodes weight not modified in db when deleted
This commit is contained in:
@@ -280,7 +280,6 @@ private:
|
||||
std::list<Signature *> getRemovableSignatures(int count,
|
||||
const std::set<int> & ignoredIds = std::set<int>());
|
||||
int getNextId();
|
||||
void initCountId();
|
||||
void rehearsal(Signature * signature, Statistics * stats = 0);
|
||||
bool rehearsalMerge(int oldId, int newId);
|
||||
bool canBeReduced(const Link & link, float maxDistance, int direction);
|
||||
|
||||
@@ -62,7 +62,7 @@ public:
|
||||
virtual ~Signature();
|
||||
|
||||
/**
|
||||
* Must return a value between >=0 and <=1 (1 means 100% similarity).
|
||||
* Must return a value between >=0 and <=1 (1 means 100% similarity).
|
||||
*/
|
||||
float compareTo(const Signature & signature) const;
|
||||
bool isBadSignature() const;
|
||||
@@ -70,10 +70,10 @@ public:
|
||||
int id() const {return _id;}
|
||||
int mapId() const {return _mapId;}
|
||||
|
||||
void setWeight(int weight) {_modified=_weight!=weight;_weight = weight;}
|
||||
void setWeight(int weight) {_modified=_modified || _weight!=weight;_weight = weight;}
|
||||
int getWeight() const {return _weight;}
|
||||
|
||||
void setLabel(const std::string & label) {_modified=_label.compare(label)!=0;_label = label;}
|
||||
void setLabel(const std::string & label) {_modified=_modified || _label.compare(label)!=0;_label = label;}
|
||||
const std::string & getLabel() const {return _label;}
|
||||
|
||||
double getStamp() const {return _stamp;}
|
||||
|
||||
@@ -139,7 +139,6 @@ private:
|
||||
bool _incrementalFlann;
|
||||
float _rebalancingFactor;
|
||||
bool _byteToFloat;
|
||||
bool _autoUpdate;
|
||||
float _nndrRatio;
|
||||
std::string _dictionaryPath; // a pre-computed dictionary (.txt or .db)
|
||||
std::string _newDictionaryPath; // a pre-computed dictionary (.txt or .db)
|
||||
@@ -151,6 +150,7 @@ private:
|
||||
cv::Mat _dataTree;
|
||||
bool _modified;
|
||||
NNStrategy _strategy;
|
||||
bool _autoUpdate;
|
||||
std::map<int ,int> _mapIndexId;
|
||||
std::map<int ,int> _mapIdIndex;
|
||||
std::map<int, VisualWord*> _unusedWords; //<id,VisualWord*>, note that these words stay in _visualWords
|
||||
|
||||
@@ -443,11 +443,16 @@ void Memory::loadDataFromDb(bool postInitClosingEvents)
|
||||
}
|
||||
else
|
||||
{
|
||||
if(_dummyDictionary)
|
||||
{
|
||||
UWARN("A dummy dictionary is requested but %s is false, loading the dictionary as usual.", Parameters::kMemInitWMWithAllNodes().c_str());
|
||||
}
|
||||
UDEBUG("load words");
|
||||
// load the last dictionary
|
||||
_dbDriver->load(*_vwd, _vwd->isIncremental());
|
||||
}
|
||||
UDEBUG("%d words loaded!", _vwd->getUnusedWordsSize());
|
||||
UDEBUG("Dictionary memory usage: %ld Bytes", _vwd->getMemoryUsed());
|
||||
if(_vwd->isAutoUpdateEnabled()) {
|
||||
_vwd->update();
|
||||
}
|
||||
@@ -3180,6 +3185,10 @@ void Memory::deleteLocation(int locationId, std::list<int> * deletedWords, bool
|
||||
this->moveToTrash(location, keepLinkedInDb, deletedWords);
|
||||
_memoryChanged = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
UWARN("Location %d has not been found in STM/WM, cannot delete it.", locationId);
|
||||
}
|
||||
}
|
||||
|
||||
void Memory::saveLocationData(int locationId)
|
||||
|
||||
Reference in New Issue
Block a user