mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-02 01:20:25 +08:00
rtabmap: Added parameter to disable logs of the statistics
rtabmap: Added parameter to avoid saving to database nodes/words of rehearsed nodes git-svn-id: http://rtabmap.googlecode.com/svn/trunk/rtabmap@834 f169173b-cf89-36c8-b27e-44dbe73f0c83
This commit is contained in:
@@ -149,7 +149,7 @@ private:
|
|||||||
bool keepRawData=false);
|
bool keepRawData=false);
|
||||||
|
|
||||||
//keypoint stuff
|
//keypoint stuff
|
||||||
void disableWordsRef(int signatureId);
|
void disableWordsRef(int signatureId, bool saveToDatabase = true);
|
||||||
void enableWordsRef(const std::list<int> & signatureIds);
|
void enableWordsRef(const std::list<int> & signatureIds);
|
||||||
void cleanUnusedWords();
|
void cleanUnusedWords();
|
||||||
int getNi(int signatureId) const;
|
int getNi(int signatureId) const;
|
||||||
@@ -162,6 +162,7 @@ private:
|
|||||||
float _similarityThreshold;
|
float _similarityThreshold;
|
||||||
bool _rehearsalOnlyWithLast;
|
bool _rehearsalOnlyWithLast;
|
||||||
bool _rawDataKept;
|
bool _rawDataKept;
|
||||||
|
bool _keepRehearsedNodesInDb;
|
||||||
bool _incrementalMemory;
|
bool _incrementalMemory;
|
||||||
int _maxStMemSize;
|
int _maxStMemSize;
|
||||||
float _recentWmRatio;
|
float _recentWmRatio;
|
||||||
|
|||||||
@@ -131,6 +131,7 @@ class RTABMAP_EXP Parameters
|
|||||||
RTABMAP_PARAM(Rtabmap, MaxRetrieved, unsigned int, 2); // Maximum locations retrieved at the same time from LTM
|
RTABMAP_PARAM(Rtabmap, MaxRetrieved, unsigned int, 2); // Maximum locations retrieved at the same time from LTM
|
||||||
RTABMAP_PARAM(Rtabmap, LikelihoodNullValuesIgnored, bool, true); // Ignore null values on likelihood normalization
|
RTABMAP_PARAM(Rtabmap, LikelihoodNullValuesIgnored, bool, true); // Ignore null values on likelihood normalization
|
||||||
RTABMAP_PARAM(Rtabmap, StatisticLogsBufferedInRAM, bool, true); // Statistic logs buffered in RAM instead of written to hard drive after each iteration.
|
RTABMAP_PARAM(Rtabmap, StatisticLogsBufferedInRAM, bool, true); // Statistic logs buffered in RAM instead of written to hard drive after each iteration.
|
||||||
|
RTABMAP_PARAM(Rtabmap, StatisticLogged, bool, true); // Logging enabled
|
||||||
|
|
||||||
// Hypotheses selection
|
// Hypotheses selection
|
||||||
RTABMAP_PARAM(Rtabmap, LoopThr, float, 0.15); // Loop closing threshold
|
RTABMAP_PARAM(Rtabmap, LoopThr, float, 0.15); // Loop closing threshold
|
||||||
@@ -139,7 +140,8 @@ class RTABMAP_EXP Parameters
|
|||||||
// Memory
|
// Memory
|
||||||
RTABMAP_PARAM(Mem, RehearsalSimilarity, float, 0.2); // Rehearsal mean for each sensor
|
RTABMAP_PARAM(Mem, RehearsalSimilarity, float, 0.2); // Rehearsal mean for each sensor
|
||||||
RTABMAP_PARAM(Mem, RehearsalOnlyWithLast, bool, true); // Only compare to the last signature in STM, otherwise it compares to all signatures in STM
|
RTABMAP_PARAM(Mem, RehearsalOnlyWithLast, bool, true); // Only compare to the last signature in STM, otherwise it compares to all signatures in STM
|
||||||
RTABMAP_PARAM(Mem, ImageKept, bool, true); // Keep image
|
RTABMAP_PARAM(Mem, ImageKept, bool, true); // Keep images in db
|
||||||
|
RTABMAP_PARAM(Mem, RehearsedNodesKept, bool, true); // Keep rehearsed ndoes in db
|
||||||
RTABMAP_PARAM(Mem, STMSize, unsigned int, 30); // Short-term memory size
|
RTABMAP_PARAM(Mem, STMSize, unsigned int, 30); // Short-term memory size
|
||||||
RTABMAP_PARAM(Mem, IncrementalMemory, bool, true);
|
RTABMAP_PARAM(Mem, IncrementalMemory, bool, true);
|
||||||
RTABMAP_PARAM(Mem, RecentWmRatio, float, 0.2); // Ratio of locations after the last loop closure in WM that cannot be transferred
|
RTABMAP_PARAM(Mem, RecentWmRatio, float, 0.2); // Ratio of locations after the last loop closure in WM that cannot be transferred
|
||||||
|
|||||||
@@ -111,6 +111,7 @@ private:
|
|||||||
unsigned int _maxRetrieved;
|
unsigned int _maxRetrieved;
|
||||||
bool _likelihoodNullValuesIgnored;
|
bool _likelihoodNullValuesIgnored;
|
||||||
bool _statisticLogsBufferedInRAM;
|
bool _statisticLogsBufferedInRAM;
|
||||||
|
bool _statisticLogged;
|
||||||
|
|
||||||
int _lcHypothesisId;
|
int _lcHypothesisId;
|
||||||
float _lcHypothesisValue;
|
float _lcHypothesisValue;
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ public:
|
|||||||
void addWordRef(int wordId, int signatureId);
|
void addWordRef(int wordId, int signatureId);
|
||||||
void removeAllWordRef(int wordId, int signatureId);
|
void removeAllWordRef(int wordId, int signatureId);
|
||||||
const VisualWord * getWord(int id) const;
|
const VisualWord * getWord(int id) const;
|
||||||
const VisualWord * getUnusedWord(int id) const;
|
VisualWord * getUnusedWord(int id) const;
|
||||||
void setLastWordId(int id) {_lastWordId = id;}
|
void setLastWordId(int id) {_lastWordId = id;}
|
||||||
void getCommonWords(unsigned int nbCommonWords, int totalSign, std::list<int> & commonWords) const;
|
void getCommonWords(unsigned int nbCommonWords, int totalSign, std::list<int> & commonWords) const;
|
||||||
const std::map<int, VisualWord *> & getVisualWords() const {return _visualWords;}
|
const std::map<int, VisualWord *> & getVisualWords() const {return _visualWords;}
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ Memory::Memory(const ParametersMap & parameters) :
|
|||||||
_similarityThreshold(Parameters::defaultMemRehearsalSimilarity()),
|
_similarityThreshold(Parameters::defaultMemRehearsalSimilarity()),
|
||||||
_rehearsalOnlyWithLast(Parameters::defaultMemRehearsalOnlyWithLast()),
|
_rehearsalOnlyWithLast(Parameters::defaultMemRehearsalOnlyWithLast()),
|
||||||
_rawDataKept(Parameters::defaultMemImageKept()),
|
_rawDataKept(Parameters::defaultMemImageKept()),
|
||||||
|
_keepRehearsedNodesInDb(Parameters::defaultMemRehearsedNodesKept()),
|
||||||
_incrementalMemory(Parameters::defaultMemIncrementalMemory()),
|
_incrementalMemory(Parameters::defaultMemIncrementalMemory()),
|
||||||
_maxStMemSize(Parameters::defaultMemSTMSize()),
|
_maxStMemSize(Parameters::defaultMemSTMSize()),
|
||||||
_recentWmRatio(Parameters::defaultMemRecentWmRatio()),
|
_recentWmRatio(Parameters::defaultMemRecentWmRatio()),
|
||||||
@@ -251,6 +252,10 @@ void Memory::parseParameters(const ParametersMap & parameters)
|
|||||||
{
|
{
|
||||||
_rawDataKept = uStr2Bool((*iter).second.c_str());
|
_rawDataKept = uStr2Bool((*iter).second.c_str());
|
||||||
}
|
}
|
||||||
|
if((iter=parameters.find(Parameters::kMemRehearsedNodesKept())) != parameters.end())
|
||||||
|
{
|
||||||
|
_keepRehearsedNodesInDb = uStr2Bool((*iter).second.c_str());
|
||||||
|
}
|
||||||
if((iter=parameters.find(Parameters::kMemIncrementalMemory())) != parameters.end())
|
if((iter=parameters.find(Parameters::kMemIncrementalMemory())) != parameters.end())
|
||||||
{
|
{
|
||||||
_incrementalMemory = uStr2Bool((*iter).second.c_str());
|
_incrementalMemory = uStr2Bool((*iter).second.c_str());
|
||||||
@@ -1341,7 +1346,7 @@ void Memory::moveToTrash(Signature * s, bool saveToDatabase)
|
|||||||
UINFO("id=%d", s?s->id():0);
|
UINFO("id=%d", s?s->id():0);
|
||||||
if(s)
|
if(s)
|
||||||
{
|
{
|
||||||
this->disableWordsRef(s->id());
|
this->disableWordsRef(s->id(), saveToDatabase);
|
||||||
|
|
||||||
_workingMem.erase(s->id());
|
_workingMem.erase(s->id());
|
||||||
_stMem.erase(s->id());
|
_stMem.erase(s->id());
|
||||||
@@ -1590,8 +1595,10 @@ bool Memory::addLoopClosureLink(int oldId, int newId)
|
|||||||
this->copyData(newS, oldS);
|
this->copyData(newS, oldS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool saveToDb = !onRehearsal || _keepRehearsedNodesInDb;
|
||||||
|
|
||||||
// remove location
|
// remove location
|
||||||
moveToTrash(_idUpdatedToNewOneRehearsal?oldS:newS);
|
moveToTrash(_idUpdatedToNewOneRehearsal?oldS:newS, saveToDb);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -2327,7 +2334,7 @@ Signature * Memory::createSignature(const Image & image, bool keepRawData)
|
|||||||
return ks;
|
return ks;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Memory::disableWordsRef(int signatureId)
|
void Memory::disableWordsRef(int signatureId, bool saveToDatabase)
|
||||||
{
|
{
|
||||||
ULOGGER_DEBUG("id=%d", signatureId);
|
ULOGGER_DEBUG("id=%d", signatureId);
|
||||||
|
|
||||||
@@ -2341,6 +2348,18 @@ void Memory::disableWordsRef(int signatureId)
|
|||||||
for(std::list<int>::const_iterator i=keys.begin(); i!=keys.end(); ++i)
|
for(std::list<int>::const_iterator i=keys.begin(); i!=keys.end(); ++i)
|
||||||
{
|
{
|
||||||
_vwd->removeAllWordRef(*i, signatureId);
|
_vwd->removeAllWordRef(*i, signatureId);
|
||||||
|
if(!saveToDatabase)
|
||||||
|
{
|
||||||
|
// assume just removed word doesn't have any other references
|
||||||
|
VisualWord * w = _vwd->getUnusedWord(*i);
|
||||||
|
if(w)
|
||||||
|
{
|
||||||
|
std::vector<VisualWord*> wordToDelete;
|
||||||
|
wordToDelete.push_back(w);
|
||||||
|
_vwd->removeWords(wordToDelete);
|
||||||
|
delete w;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
count -= _vwd->getTotalActiveReferences();
|
count -= _vwd->getTotalActiveReferences();
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ Rtabmap::Rtabmap() :
|
|||||||
_maxRetrieved(Parameters::defaultRtabmapMaxRetrieved()),
|
_maxRetrieved(Parameters::defaultRtabmapMaxRetrieved()),
|
||||||
_likelihoodNullValuesIgnored(Parameters::defaultRtabmapLikelihoodNullValuesIgnored()),
|
_likelihoodNullValuesIgnored(Parameters::defaultRtabmapLikelihoodNullValuesIgnored()),
|
||||||
_statisticLogsBufferedInRAM(Parameters::defaultRtabmapStatisticLogsBufferedInRAM()),
|
_statisticLogsBufferedInRAM(Parameters::defaultRtabmapStatisticLogsBufferedInRAM()),
|
||||||
|
_statisticLogged(Parameters::defaultRtabmapStatisticLogged()),
|
||||||
_lcHypothesisId(0),
|
_lcHypothesisId(0),
|
||||||
_lcHypothesisValue(0),
|
_lcHypothesisValue(0),
|
||||||
_retrievedId(0),
|
_retrievedId(0),
|
||||||
@@ -109,74 +110,81 @@ void Rtabmap::setupLogFiles(bool overwrite)
|
|||||||
_foutInt = 0;
|
_foutInt = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string attributes = "a+"; // append to log files
|
if(_statisticLogged)
|
||||||
if(overwrite)
|
|
||||||
{
|
{
|
||||||
// If a file with the same name already exists
|
std::string attributes = "a+"; // append to log files
|
||||||
// its content is erased and the file is treated
|
if(overwrite)
|
||||||
// as a new empty file.
|
{
|
||||||
attributes = "w";
|
// If a file with the same name already exists
|
||||||
|
// its content is erased and the file is treated
|
||||||
|
// as a new empty file.
|
||||||
|
attributes = "w";
|
||||||
|
}
|
||||||
|
|
||||||
|
bool addLogFHeader = overwrite || !UFile::exists(_wDir+LOG_F);
|
||||||
|
bool addLogIHeader = overwrite || !UFile::exists(_wDir+LOG_I);
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
fopen_s(&_foutFloat, (_wDir+LOG_F).toStdString().c_str(), attributes.c_str());
|
||||||
|
fopen_s(&_foutInt, (_wDir+LOG_I).toStdString().c_str(), attributes.c_str());
|
||||||
|
#else
|
||||||
|
_foutFloat = fopen((_wDir+LOG_F).c_str(), attributes.c_str());
|
||||||
|
_foutInt = fopen((_wDir+LOG_I).c_str(), attributes.c_str());
|
||||||
|
#endif
|
||||||
|
// add header (column identification)
|
||||||
|
if(addLogFHeader && _foutFloat)
|
||||||
|
{
|
||||||
|
fprintf(_foutFloat, "Column headers:\n");
|
||||||
|
fprintf(_foutFloat, " 1-Total iteration time (s)\n");
|
||||||
|
fprintf(_foutFloat, " 2-Memory update time (s)\n");
|
||||||
|
fprintf(_foutFloat, " 3-Retrieval time (s)\n");
|
||||||
|
fprintf(_foutFloat, " 4-Likelihood time (s)\n");
|
||||||
|
fprintf(_foutFloat, " 5-Posterior time (s)\n");
|
||||||
|
fprintf(_foutFloat, " 6-Hypothesis selection time (s)\n");
|
||||||
|
fprintf(_foutFloat, " 7-Transfer time (s)\n");
|
||||||
|
fprintf(_foutFloat, " 8-Statistics creation time (s)\n");
|
||||||
|
fprintf(_foutFloat, " 9-Loop closure hypothesis value\n");
|
||||||
|
fprintf(_foutFloat, " 10-NAN\n");
|
||||||
|
fprintf(_foutFloat, " 11-Maximum likelihood\n");
|
||||||
|
fprintf(_foutFloat, " 12-Sum likelihood\n");
|
||||||
|
fprintf(_foutFloat, " 13-Mean likelihood\n");
|
||||||
|
fprintf(_foutFloat, " 14-Std dev likelihood\n");
|
||||||
|
fprintf(_foutFloat, " 15-Virtual place hypothesis\n");
|
||||||
|
fprintf(_foutFloat, " 16-Join trash time (s)\n");
|
||||||
|
fprintf(_foutFloat, " 17-Weight Update (rehearsal) similarity\n");
|
||||||
|
fprintf(_foutFloat, " 18-Empty trash time (s)\n");
|
||||||
|
fprintf(_foutFloat, " 19-Retrieval database access time (s)\n");
|
||||||
|
fprintf(_foutFloat, " 20-Add loop closure link time (s)\n");
|
||||||
|
}
|
||||||
|
if(addLogIHeader && _foutInt)
|
||||||
|
{
|
||||||
|
fprintf(_foutInt, "Column headers:\n");
|
||||||
|
fprintf(_foutInt, " 1-Loop closure ID\n");
|
||||||
|
fprintf(_foutInt, " 2-Highest loop closure hypothesis\n");
|
||||||
|
fprintf(_foutInt, " 3-Locations transferred\n");
|
||||||
|
fprintf(_foutInt, " 4-NAN\n");
|
||||||
|
fprintf(_foutInt, " 5-Words extracted from the last image\n");
|
||||||
|
fprintf(_foutInt, " 6-Vocabulary size\n");
|
||||||
|
fprintf(_foutInt, " 7-Working memory size\n");
|
||||||
|
fprintf(_foutInt, " 8-Is loop closure hypothesis rejected?\n");
|
||||||
|
fprintf(_foutInt, " 9-NAN\n");
|
||||||
|
fprintf(_foutInt, " 10-NAN\n");
|
||||||
|
fprintf(_foutInt, " 11-Locations retrieved\n");
|
||||||
|
fprintf(_foutInt, " 12-Retrieval location ID\n");
|
||||||
|
fprintf(_foutInt, " 13-Unique words extraced from last image\n");
|
||||||
|
fprintf(_foutInt, " 14-Retrieval ID\n");
|
||||||
|
fprintf(_foutInt, " 15-Non-null likelihood values\n");
|
||||||
|
fprintf(_foutInt, " 16-Weight Update ID\n");
|
||||||
|
fprintf(_foutInt, " 17-Is last location merged through Weight Update?\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
ULOGGER_DEBUG("Log file (int)=%s", (_wDir+LOG_I).c_str());
|
||||||
|
ULOGGER_DEBUG("Log file (float)=%s", (_wDir+LOG_F).c_str());
|
||||||
}
|
}
|
||||||
|
else
|
||||||
bool addLogFHeader = overwrite || !UFile::exists(_wDir+LOG_F);
|
|
||||||
bool addLogIHeader = overwrite || !UFile::exists(_wDir+LOG_I);
|
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
fopen_s(&_foutFloat, (_wDir+LOG_F).toStdString().c_str(), attributes.c_str());
|
|
||||||
fopen_s(&_foutInt, (_wDir+LOG_I).toStdString().c_str(), attributes.c_str());
|
|
||||||
#else
|
|
||||||
_foutFloat = fopen((_wDir+LOG_F).c_str(), attributes.c_str());
|
|
||||||
_foutInt = fopen((_wDir+LOG_I).c_str(), attributes.c_str());
|
|
||||||
#endif
|
|
||||||
// add header (column identification)
|
|
||||||
if(addLogFHeader && _foutFloat)
|
|
||||||
{
|
{
|
||||||
fprintf(_foutFloat, "Column headers:\n");
|
UDEBUG("Log disabled!");
|
||||||
fprintf(_foutFloat, " 1-Total iteration time (s)\n");
|
|
||||||
fprintf(_foutFloat, " 2-Memory update time (s)\n");
|
|
||||||
fprintf(_foutFloat, " 3-Retrieval time (s)\n");
|
|
||||||
fprintf(_foutFloat, " 4-Likelihood time (s)\n");
|
|
||||||
fprintf(_foutFloat, " 5-Posterior time (s)\n");
|
|
||||||
fprintf(_foutFloat, " 6-Hypothesis selection time (s)\n");
|
|
||||||
fprintf(_foutFloat, " 7-Transfer time (s)\n");
|
|
||||||
fprintf(_foutFloat, " 8-Statistics creation time (s)\n");
|
|
||||||
fprintf(_foutFloat, " 9-Loop closure hypothesis value\n");
|
|
||||||
fprintf(_foutFloat, " 10-NAN\n");
|
|
||||||
fprintf(_foutFloat, " 11-Maximum likelihood\n");
|
|
||||||
fprintf(_foutFloat, " 12-Sum likelihood\n");
|
|
||||||
fprintf(_foutFloat, " 13-Mean likelihood\n");
|
|
||||||
fprintf(_foutFloat, " 14-Std dev likelihood\n");
|
|
||||||
fprintf(_foutFloat, " 15-Virtual place hypothesis\n");
|
|
||||||
fprintf(_foutFloat, " 16-Join trash time (s)\n");
|
|
||||||
fprintf(_foutFloat, " 17-Weight Update (rehearsal) similarity\n");
|
|
||||||
fprintf(_foutFloat, " 18-Empty trash time (s)\n");
|
|
||||||
fprintf(_foutFloat, " 19-Retrieval database access time (s)\n");
|
|
||||||
fprintf(_foutFloat, " 20-Add loop closure link time (s)\n");
|
|
||||||
}
|
}
|
||||||
if(addLogIHeader && _foutInt)
|
|
||||||
{
|
|
||||||
fprintf(_foutInt, "Column headers:\n");
|
|
||||||
fprintf(_foutInt, " 1-Loop closure ID\n");
|
|
||||||
fprintf(_foutInt, " 2-Highest loop closure hypothesis\n");
|
|
||||||
fprintf(_foutInt, " 3-Locations transferred\n");
|
|
||||||
fprintf(_foutInt, " 4-NAN\n");
|
|
||||||
fprintf(_foutInt, " 5-Words extracted from the last image\n");
|
|
||||||
fprintf(_foutInt, " 6-Vocabulary size\n");
|
|
||||||
fprintf(_foutInt, " 7-Working memory size\n");
|
|
||||||
fprintf(_foutInt, " 8-Is loop closure hypothesis rejected?\n");
|
|
||||||
fprintf(_foutInt, " 9-NAN\n");
|
|
||||||
fprintf(_foutInt, " 10-NAN\n");
|
|
||||||
fprintf(_foutInt, " 11-Locations retrieved\n");
|
|
||||||
fprintf(_foutInt, " 12-Retrieval location ID\n");
|
|
||||||
fprintf(_foutInt, " 13-Unique words extraced from last image\n");
|
|
||||||
fprintf(_foutInt, " 14-Retrieval ID\n");
|
|
||||||
fprintf(_foutInt, " 15-Non-null likelihood values\n");
|
|
||||||
fprintf(_foutInt, " 16-Weight Update ID\n");
|
|
||||||
fprintf(_foutInt, " 17-Is last location merged through Weight Update?\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
ULOGGER_DEBUG("Log file (int)=%s", (_wDir+LOG_I).c_str());
|
|
||||||
ULOGGER_DEBUG("Log file (float)=%s", (_wDir+LOG_F).c_str());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Rtabmap::flushStatisticLogs()
|
void Rtabmap::flushStatisticLogs()
|
||||||
@@ -211,6 +219,10 @@ void Rtabmap::init(const ParametersMap & parameters, bool deleteMemory)
|
|||||||
{
|
{
|
||||||
this->setWorkingDirectory(iter->second.c_str());
|
this->setWorkingDirectory(iter->second.c_str());
|
||||||
}
|
}
|
||||||
|
if((iter=parameters.find(Parameters::kRtabmapStatisticLogged())) != parameters.end())
|
||||||
|
{
|
||||||
|
_statisticLogged = uStr2Bool(iter->second.c_str());
|
||||||
|
}
|
||||||
this->resetMemory(true);
|
this->resetMemory(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -320,6 +332,10 @@ void Rtabmap::parseParameters(const ParametersMap & parameters)
|
|||||||
{
|
{
|
||||||
_statisticLogsBufferedInRAM = uStr2Bool(iter->second.c_str());
|
_statisticLogsBufferedInRAM = uStr2Bool(iter->second.c_str());
|
||||||
}
|
}
|
||||||
|
if((iter=parameters.find(Parameters::kRtabmapStatisticLogged())) != parameters.end())
|
||||||
|
{
|
||||||
|
_statisticLogged = uStr2Bool(iter->second.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
// By default, we create our strategies if they are not already created.
|
// By default, we create our strategies if they are not already created.
|
||||||
// If they already exists, we check the parameters if a change is requested
|
// If they already exists, we check the parameters if a change is requested
|
||||||
|
|||||||
@@ -1012,7 +1012,7 @@ const VisualWord * VWDictionary::getWord(int id) const
|
|||||||
return uValue(_visualWords, id, (VisualWord *)0);
|
return uValue(_visualWords, id, (VisualWord *)0);
|
||||||
}
|
}
|
||||||
|
|
||||||
const VisualWord * VWDictionary::getUnusedWord(int id) const
|
VisualWord * VWDictionary::getUnusedWord(int id) const
|
||||||
{
|
{
|
||||||
return uValue(_unusedWords, id, (VisualWord *)0);
|
return uValue(_unusedWords, id, (VisualWord *)0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -140,6 +140,7 @@ PreferencesDialog::PreferencesDialog(QWidget * parent) :
|
|||||||
_ui->general_checkBox_publishPdf->setObjectName(Parameters::kRtabmapPublishPdf().c_str());
|
_ui->general_checkBox_publishPdf->setObjectName(Parameters::kRtabmapPublishPdf().c_str());
|
||||||
_ui->general_checkBox_publishLikelihood->setObjectName(Parameters::kRtabmapPublishLikelihood().c_str());
|
_ui->general_checkBox_publishLikelihood->setObjectName(Parameters::kRtabmapPublishLikelihood().c_str());
|
||||||
_ui->general_checkBox_statisticLogsBufferedInRAM->setObjectName(Parameters::kRtabmapStatisticLogsBufferedInRAM().c_str());
|
_ui->general_checkBox_statisticLogsBufferedInRAM->setObjectName(Parameters::kRtabmapStatisticLogsBufferedInRAM().c_str());
|
||||||
|
_ui->general_checkBox_statisticLogged->setObjectName(Parameters::kRtabmapStatisticLogged().c_str());
|
||||||
_ui->general_doubleSpinBox_timeThr->setObjectName(Parameters::kRtabmapTimeThr().c_str());
|
_ui->general_doubleSpinBox_timeThr->setObjectName(Parameters::kRtabmapTimeThr().c_str());
|
||||||
_ui->general_spinBox_memoryThr->setObjectName(Parameters::kRtabmapMemoryThr().c_str());
|
_ui->general_spinBox_memoryThr->setObjectName(Parameters::kRtabmapMemoryThr().c_str());
|
||||||
_ui->general_spinBox_imagesBufferSize->setObjectName(Parameters::kRtabmapImageBufferSize().c_str());
|
_ui->general_spinBox_imagesBufferSize->setObjectName(Parameters::kRtabmapImageBufferSize().c_str());
|
||||||
@@ -150,6 +151,7 @@ PreferencesDialog::PreferencesDialog(QWidget * parent) :
|
|||||||
|
|
||||||
// Memory
|
// Memory
|
||||||
_ui->general_checkBox_keepRawData->setObjectName(Parameters::kMemImageKept().c_str());
|
_ui->general_checkBox_keepRawData->setObjectName(Parameters::kMemImageKept().c_str());
|
||||||
|
_ui->general_checkBox_keepRehearsedNodes->setObjectName(Parameters::kMemRehearsedNodesKept().c_str());
|
||||||
_ui->general_spinBox_maxStMemSize->setObjectName(Parameters::kMemSTMSize().c_str());
|
_ui->general_spinBox_maxStMemSize->setObjectName(Parameters::kMemSTMSize().c_str());
|
||||||
_ui->general_checkBox_similarityOnlyLast->setObjectName(Parameters::kMemRehearsalOnlyWithLast().c_str());
|
_ui->general_checkBox_similarityOnlyLast->setObjectName(Parameters::kMemRehearsalOnlyWithLast().c_str());
|
||||||
_ui->doubleSpinBox_similarityThreshold->setObjectName(Parameters::kMemRehearsalSimilarity().c_str());
|
_ui->doubleSpinBox_similarityThreshold->setObjectName(Parameters::kMemRehearsalSimilarity().c_str());
|
||||||
|
|||||||
@@ -86,7 +86,7 @@
|
|||||||
<enum>QFrame::Raised</enum>
|
<enum>QFrame::Raised</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>7</number>
|
<number>3</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="page_22">
|
<widget class="QWidget" name="page_22">
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_29">
|
<layout class="QVBoxLayout" name="verticalLayout_29">
|
||||||
@@ -1086,14 +1086,14 @@ when using the file type, logs are saved in Logrtabmap.txt (located in the worki
|
|||||||
<string>RTAB-Map settings</string>
|
<string>RTAB-Map settings</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout_4" columnstretch="0,0,1">
|
<layout class="QGridLayout" name="gridLayout_4" columnstretch="0,0,1">
|
||||||
<item row="12" column="0">
|
<item row="13" column="0">
|
||||||
<widget class="QLineEdit" name="lineEdit_workingDirectory">
|
<widget class="QLineEdit" name="lineEdit_workingDirectory">
|
||||||
<property name="readOnly">
|
<property name="readOnly">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="7" column="0">
|
<item row="8" column="0">
|
||||||
<widget class="QSpinBox" name="general_spinBox_imagesBufferSize">
|
<widget class="QSpinBox" name="general_spinBox_imagesBufferSize">
|
||||||
<property name="maximum">
|
<property name="maximum">
|
||||||
<number>999</number>
|
<number>999</number>
|
||||||
@@ -1103,7 +1103,7 @@ when using the file type, logs are saved in Logrtabmap.txt (located in the worki
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="12" column="2">
|
<item row="13" column="2">
|
||||||
<widget class="QLabel" name="label_87">
|
<widget class="QLabel" name="label_87">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Working directory (where the database is saved/loaded).</string>
|
<string>Working directory (where the database is saved/loaded).</string>
|
||||||
@@ -1133,7 +1133,7 @@ when using the file type, logs are saved in Logrtabmap.txt (located in the worki
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="5" column="2">
|
<item row="6" column="2">
|
||||||
<widget class="QLabel" name="label_18">
|
<widget class="QLabel" name="label_18">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>T_time : Max time (ms) allowed (0 means inf).</string>
|
<string>T_time : Max time (ms) allowed (0 means inf).</string>
|
||||||
@@ -1143,7 +1143,7 @@ when using the file type, logs are saved in Logrtabmap.txt (located in the worki
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="7" column="2">
|
<item row="8" column="2">
|
||||||
<widget class="QLabel" name="label_84">
|
<widget class="QLabel" name="label_84">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Images buffer size (0 means inf).</string>
|
<string>Images buffer size (0 means inf).</string>
|
||||||
@@ -1153,7 +1153,7 @@ when using the file type, logs are saved in Logrtabmap.txt (located in the worki
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="8" column="0">
|
<item row="9" column="0">
|
||||||
<widget class="QDoubleSpinBox" name="general_doubleSpinBox_hardThr">
|
<widget class="QDoubleSpinBox" name="general_doubleSpinBox_hardThr">
|
||||||
<property name="maximum">
|
<property name="maximum">
|
||||||
<double>1.000000000000000</double>
|
<double>1.000000000000000</double>
|
||||||
@@ -1166,7 +1166,7 @@ when using the file type, logs are saved in Logrtabmap.txt (located in the worki
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="8" column="2">
|
<item row="9" column="2">
|
||||||
<widget class="QLabel" name="label_93">
|
<widget class="QLabel" name="label_93">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>T_loop : Loop closure threshold. Setting to 0 means that the new place hypothesis is used as threshold.</string>
|
<string>T_loop : Loop closure threshold. Setting to 0 means that the new place hypothesis is used as threshold.</string>
|
||||||
@@ -1176,7 +1176,7 @@ when using the file type, logs are saved in Logrtabmap.txt (located in the worki
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="9" column="2">
|
<item row="10" column="2">
|
||||||
<widget class="QLabel" name="label_96">
|
<widget class="QLabel" name="label_96">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>T_ratio : The loop closure hypothesis must be over T_ratio x lastHypothesisValue.</string>
|
<string>T_ratio : The loop closure hypothesis must be over T_ratio x lastHypothesisValue.</string>
|
||||||
@@ -1186,7 +1186,7 @@ when using the file type, logs are saved in Logrtabmap.txt (located in the worki
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="9" column="0">
|
<item row="10" column="0">
|
||||||
<widget class="QDoubleSpinBox" name="general_doubleSpinBox_loopRatio">
|
<widget class="QDoubleSpinBox" name="general_doubleSpinBox_loopRatio">
|
||||||
<property name="maximum">
|
<property name="maximum">
|
||||||
<double>1.000000000000000</double>
|
<double>1.000000000000000</double>
|
||||||
@@ -1199,14 +1199,14 @@ when using the file type, logs are saved in Logrtabmap.txt (located in the worki
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="12" column="1">
|
<item row="13" column="1">
|
||||||
<widget class="QToolButton" name="toolButton_workingDirectory">
|
<widget class="QToolButton" name="toolButton_workingDirectory">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>...</string>
|
<string>...</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="10" column="0">
|
<item row="11" column="0">
|
||||||
<widget class="QSpinBox" name="general_spinBox_maxRetrieved">
|
<widget class="QSpinBox" name="general_spinBox_maxRetrieved">
|
||||||
<property name="maximum">
|
<property name="maximum">
|
||||||
<number>999</number>
|
<number>999</number>
|
||||||
@@ -1219,7 +1219,7 @@ when using the file type, logs are saved in Logrtabmap.txt (located in the worki
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="10" column="2">
|
<item row="11" column="2">
|
||||||
<widget class="QLabel" name="label_103">
|
<widget class="QLabel" name="label_103">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Maximum locations retrieved at the same time from LTM to WM.</string>
|
<string>Maximum locations retrieved at the same time from LTM to WM.</string>
|
||||||
@@ -1229,7 +1229,7 @@ when using the file type, logs are saved in Logrtabmap.txt (located in the worki
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="5" column="0">
|
<item row="6" column="0">
|
||||||
<widget class="QDoubleSpinBox" name="general_doubleSpinBox_timeThr">
|
<widget class="QDoubleSpinBox" name="general_doubleSpinBox_timeThr">
|
||||||
<property name="decimals">
|
<property name="decimals">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
@@ -1245,7 +1245,7 @@ when using the file type, logs are saved in Logrtabmap.txt (located in the worki
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="6" column="0">
|
<item row="7" column="0">
|
||||||
<widget class="QSpinBox" name="general_spinBox_memoryThr">
|
<widget class="QSpinBox" name="general_spinBox_memoryThr">
|
||||||
<property name="maximum">
|
<property name="maximum">
|
||||||
<number>99999</number>
|
<number>99999</number>
|
||||||
@@ -1255,7 +1255,7 @@ when using the file type, logs are saved in Logrtabmap.txt (located in the worki
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="6" column="2">
|
<item row="7" column="2">
|
||||||
<widget class="QLabel" name="label_111">
|
<widget class="QLabel" name="label_111">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Maximum signatures allowed in Working Memory (0 means inf).</string>
|
<string>Maximum signatures allowed in Working Memory (0 means inf).</string>
|
||||||
@@ -1316,7 +1316,7 @@ when using the file type, logs are saved in Logrtabmap.txt (located in the worki
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="11" column="2">
|
<item row="12" column="2">
|
||||||
<widget class="QLabel" name="label_132">
|
<widget class="QLabel" name="label_132">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Ignore null values on likelihood normalization.</string>
|
<string>Ignore null values on likelihood normalization.</string>
|
||||||
@@ -1326,7 +1326,7 @@ when using the file type, logs are saved in Logrtabmap.txt (located in the worki
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="11" column="0">
|
<item row="12" column="0">
|
||||||
<widget class="QCheckBox" name="general_checkBox_likelihoodNullValuesIgnored">
|
<widget class="QCheckBox" name="general_checkBox_likelihoodNullValuesIgnored">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
@@ -1339,7 +1339,7 @@ when using the file type, logs are saved in Logrtabmap.txt (located in the worki
|
|||||||
<item row="4" column="2">
|
<item row="4" column="2">
|
||||||
<widget class="QLabel" name="label_143">
|
<widget class="QLabel" name="label_143">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Statistics logs buffered in RAM and written to hard drive on exit (otherwise logs are written at each iteration on hard drive)</string>
|
<string>Statistics logs buffered in RAM and written to hard drive on exit (otherwise logs are written at each iteration on hard drive).</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="wordWrap">
|
<property name="wordWrap">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
@@ -1356,6 +1356,26 @@ when using the file type, logs are saved in Logrtabmap.txt (located in the worki
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="5" column="2">
|
||||||
|
<widget class="QLabel" name="label_144">
|
||||||
|
<property name="text">
|
||||||
|
<string>Log statistics (in LogI.txt and LogF.txt in the working directory).</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="5" column="0">
|
||||||
|
<widget class="QCheckBox" name="general_checkBox_statisticLogged">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@@ -1660,14 +1680,14 @@ when using the file type, logs are saved in Logrtabmap.txt (located in the worki
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="0">
|
<item row="3" column="0">
|
||||||
<widget class="QCheckBox" name="checkBox_dbInMemory">
|
<widget class="QCheckBox" name="checkBox_dbInMemory">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="0">
|
<item row="4" column="0">
|
||||||
<widget class="QSpinBox" name="spinBox_dbCacheSize">
|
<widget class="QSpinBox" name="spinBox_dbCacheSize">
|
||||||
<property name="minimum">
|
<property name="minimum">
|
||||||
<number>10</number>
|
<number>10</number>
|
||||||
@@ -1683,7 +1703,7 @@ when using the file type, logs are saved in Logrtabmap.txt (located in the worki
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="1">
|
<item row="4" column="1">
|
||||||
<widget class="QLabel" name="label_75">
|
<widget class="QLabel" name="label_75">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Sqlite3 cache size,
|
<string>Sqlite3 cache size,
|
||||||
@@ -1694,7 +1714,7 @@ see Sqlite3 doc 'PRAGMA cache_size'.</string>
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="0">
|
<item row="5" column="0">
|
||||||
<widget class="QComboBox" name="comboBox_dbJournalMode">
|
<widget class="QComboBox" name="comboBox_dbJournalMode">
|
||||||
<item>
|
<item>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@@ -1723,7 +1743,7 @@ see Sqlite3 doc 'PRAGMA cache_size'.</string>
|
|||||||
</item>
|
</item>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="1">
|
<item row="5" column="1">
|
||||||
<widget class="QLabel" name="label_77">
|
<widget class="QLabel" name="label_77">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Sqlite3 journal mode,
|
<string>Sqlite3 journal mode,
|
||||||
@@ -1734,7 +1754,7 @@ see Sqlite3 doc 'PRAGMA journal_mode'.</string>
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="1">
|
<item row="3" column="1">
|
||||||
<widget class="QLabel" name="label_74">
|
<widget class="QLabel" name="label_74">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Using database in the memory instead of a file on the hard disk (this greatly improve database access performance but it requires more RAM memory).</string>
|
<string>Using database in the memory instead of a file on the hard disk (this greatly improve database access performance but it requires more RAM memory).</string>
|
||||||
@@ -1744,7 +1764,7 @@ see Sqlite3 doc 'PRAGMA journal_mode'.</string>
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="1">
|
<item row="2" column="1">
|
||||||
<widget class="QLabel" name="label_110">
|
<widget class="QLabel" name="label_110">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Compress images when saving to database.</string>
|
<string>Compress images when saving to database.</string>
|
||||||
@@ -1754,7 +1774,7 @@ see Sqlite3 doc 'PRAGMA journal_mode'.</string>
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<item row="2" column="0">
|
||||||
<widget class="QCheckBox" name="general_checkBox_imagesCompressed">
|
<widget class="QCheckBox" name="general_checkBox_imagesCompressed">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
@@ -1764,7 +1784,7 @@ see Sqlite3 doc 'PRAGMA journal_mode'.</string>
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="5" column="1">
|
<item row="6" column="1">
|
||||||
<widget class="QLabel" name="label_89">
|
<widget class="QLabel" name="label_89">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Sqlite3 synchronous,
|
<string>Sqlite3 synchronous,
|
||||||
@@ -1775,7 +1795,7 @@ see Sqlite3 doc 'PRAGMA synchronous'.</string>
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="6" column="1">
|
<item row="7" column="1">
|
||||||
<widget class="QLabel" name="label_120">
|
<widget class="QLabel" name="label_120">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Sqlite3 temp store,
|
<string>Sqlite3 temp store,
|
||||||
@@ -1786,7 +1806,7 @@ see Sqlite3 doc 'PRAGMA temp_store'.</string>
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="5" column="0">
|
<item row="6" column="0">
|
||||||
<widget class="QComboBox" name="comboBox_dbSynchronous">
|
<widget class="QComboBox" name="comboBox_dbSynchronous">
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>2</number>
|
<number>2</number>
|
||||||
@@ -1808,7 +1828,7 @@ see Sqlite3 doc 'PRAGMA temp_store'.</string>
|
|||||||
</item>
|
</item>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="6" column="0">
|
<item row="7" column="0">
|
||||||
<widget class="QComboBox" name="comboBox_dbTempStore">
|
<widget class="QComboBox" name="comboBox_dbTempStore">
|
||||||
<item>
|
<item>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@@ -1827,6 +1847,26 @@ see Sqlite3 doc 'PRAGMA temp_store'.</string>
|
|||||||
</item>
|
</item>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QLabel" name="label_86">
|
||||||
|
<property name="text">
|
||||||
|
<string>Keep rehearsed nodes.</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QCheckBox" name="general_checkBox_keepRehearsedNodes">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|||||||
Reference in New Issue
Block a user