MainWindow: don't save empty database. Odometry: return null pose when not initialized.

This commit is contained in:
Mathieu Labbe
2014-12-03 22:27:31 -05:00
parent 9e1d38fe09
commit 821c1602bf
6 changed files with 20 additions and 11 deletions

View File

@@ -69,7 +69,6 @@ Odometry::Odometry(const rtabmap::ParametersMap & parameters) :
_angularUpdate(Parameters::defaultOdomAngularUpdate()),
_resetCountdown(Parameters::defaultOdomResetCountdown()),
_force2D(Parameters::defaultOdomForce2D()),
_pose(Transform::getIdentity()),
_resetCurrentCount(0)
{
Parameters::parse(parameters, Parameters::kOdomLinearUpdate(), _linearUpdate);
@@ -121,6 +120,11 @@ bool Odometry::isLargeEnoughTransform(const Transform & transform)
Transform Odometry::process(SensorData & data, int * quality, int * features, int * localMapSize)
{
if(_pose.isNull())
{
_pose.setIdentity(); // initialized
}
Transform t = this->computeTransform(data, quality, features, localMapSize);
if(!t.isNull())
{

View File

@@ -1045,11 +1045,12 @@ bool Rtabmap::process(const SensorData & data)
}
else if(hypothesis.second < _loopRatio*_lcHypothesisValue)
{
UDEBUG("rejected hypothesis: not satisfying ratio");
UWARN("rejected hypothesis: not satisfying hypothesis ratio (%f < %f * %f)",
hypothesis.second, _loopRatio, _lcHypothesisValue);
}
else
{
UDEBUG("rejected hypothesis: by epipolar geometry");
UWARN("rejected hypothesis: by epipolar geometry");
}
rejectedHypothesis = true;
}