removed ImagesDbExtractor tool (already inside databaseViewer)

add optional delay to DBReader
added more options to odometryViewer tool


git-svn-id: http://rtabmap.googlecode.com/svn/trunk/rtabmap@1264 f169173b-cf89-36c8-b27e-44dbe73f0c83
This commit is contained in:
matlabbe
2014-02-28 22:11:36 +00:00
parent 669e7363cc
commit ac626a846e
13 changed files with 235 additions and 109 deletions

View File

@@ -20,10 +20,12 @@ namespace rtabmap {
DBReader::DBReader(const std::string & databasePath,
float frameRate,
bool odometryIgnored) :
bool odometryIgnored,
float delayToStartSec) :
_path(databasePath),
_frameRate(frameRate),
_odometryIgnored(odometryIgnored),
_delayToStartSec(delayToStartSec),
_dbDriver(0),
_currentId(_ids.end())
{
@@ -100,6 +102,10 @@ void DBReader::setFrameRate(float frameRate)
void DBReader::mainLoopBegin()
{
if(_delayToStartSec > 0.0f)
{
uSleep(_delayToStartSec*1000.0f);
}
_timer.start();
}

View File

@@ -187,7 +187,7 @@ Transform OdometryBinary::computeTransform(Image & image)
if(_lastKeypoints.size())
{
if(newDescriptors.rows)
if(newDescriptors.rows && newDescriptors.rows > _lastKeypoints.size()/2) // at least 50% keypoints
{
cv::Mat results;
cv::Mat dists;
@@ -333,6 +333,11 @@ Transform OdometryBinary::computeTransform(Image & image)
UWARN("Not enough inliers %d < %d", oi, this->getMinInliers());
}
}
else if(newDescriptors.rows)
{
UWARN("At least 50%% keypoints of the last image required. New=%d last=%d",
newDescriptors.rows, _lastKeypoints.size());
}
else
{
UWARN("No feature extracted!");
@@ -437,7 +442,12 @@ Transform OdometryBOW::computeTransform(Image & image)
if(previousSignature && newSignature)
{
Transform transform;
if(!previousSignature->getWords3().empty() && !newSignature->getWords3().empty())
if(newSignature->getWords3().size() < previousSignature->getWords3().size()/2)
{
UWARN("At least 50%% keypoints of the last image required. New=%d last=%d",
newSignature->getWords3().size(), previousSignature->getWords3().size());
}
else if(!previousSignature->getWords3().empty() && !newSignature->getWords3().empty())
{
pcl::PointCloud<pcl::PointXYZ>::Ptr inliers1(new pcl::PointCloud<pcl::PointXYZ>); // previous
pcl::PointCloud<pcl::PointXYZ>::Ptr inliers2(new pcl::PointCloud<pcl::PointXYZ>); // new