mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-01 17:10:26 +08:00
Odometry: Added process() with optional guess interface
This commit is contained in:
@@ -55,12 +55,14 @@ public:
|
||||
public:
|
||||
virtual ~Odometry();
|
||||
Transform process(SensorData & data, OdometryInfo * info = 0);
|
||||
Transform process(SensorData & data, const Transform & guess, OdometryInfo * info = 0);
|
||||
virtual void reset(const Transform & initialPose = Transform::getIdentity());
|
||||
|
||||
//getters
|
||||
const Transform & getPose() const {return _pose;}
|
||||
bool isInfoDataFilled() const {return _fillInfoData;}
|
||||
const Transform & previousVelocityTransform() const {return previousVelocityTransform_;}
|
||||
double previousStamp() const {return previousStamp_;}
|
||||
|
||||
private:
|
||||
virtual Transform computeTransform(SensorData & data, const Transform & guess = Transform(), OdometryInfo * info = 0) = 0;
|
||||
|
||||
@@ -194,6 +194,11 @@ void Odometry::reset(const Transform & initialPose)
|
||||
}
|
||||
|
||||
Transform Odometry::process(SensorData & data, OdometryInfo * info)
|
||||
{
|
||||
return process(data, Transform(), info);
|
||||
}
|
||||
|
||||
Transform Odometry::process(SensorData & data, const Transform & guessIn, OdometryInfo * info)
|
||||
{
|
||||
UASSERT(!data.imageRaw().empty());
|
||||
|
||||
@@ -261,7 +266,7 @@ Transform Odometry::process(SensorData & data, OdometryInfo * info)
|
||||
}
|
||||
|
||||
double dt = previousStamp_>0.0f?data.stamp() - previousStamp_:0.0;
|
||||
Transform guess = dt && guessFromMotion_?Transform::getIdentity():Transform();
|
||||
Transform guess = dt && guessFromMotion_ && !previousVelocityTransform_.isNull()?Transform::getIdentity():Transform();
|
||||
UASSERT_MSG(dt>0.0 || (dt == 0.0 && previousVelocityTransform_.isNull()), uFormat("dt=%f previous transform=%s", dt, previousVelocityTransform_.prettyPrint().c_str()).c_str());
|
||||
if(!previousVelocityTransform_.isNull())
|
||||
{
|
||||
@@ -287,6 +292,11 @@ Transform Odometry::process(SensorData & data, OdometryInfo * info)
|
||||
}
|
||||
}
|
||||
|
||||
if(!guessIn.isNull())
|
||||
{
|
||||
guess = guessIn;
|
||||
}
|
||||
|
||||
UTimer time;
|
||||
Transform t;
|
||||
if(_imageDecimation > 1)
|
||||
|
||||
Reference in New Issue
Block a user