mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-02 17:40:23 +08:00
OdometryViso2: updated for dynamic local transform
This commit is contained in:
@@ -54,6 +54,7 @@ private:
|
|||||||
bool lost_;
|
bool lost_;
|
||||||
bool keep_reference_frame_;
|
bool keep_reference_frame_;
|
||||||
Transform reference_motion_;
|
Transform reference_motion_;
|
||||||
|
Transform previousLocalTransform_;
|
||||||
ParametersMap viso2Parameters_;
|
ParametersMap viso2Parameters_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -86,6 +86,7 @@ void OdometryViso2::reset(const Transform & initialPose)
|
|||||||
}
|
}
|
||||||
lost_ = false;
|
lost_ = false;
|
||||||
reference_motion_.setIdentity();
|
reference_motion_.setIdentity();
|
||||||
|
previousLocalTransform_.setNull();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -253,10 +254,19 @@ Transform OdometryViso2::computeTransform(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!t.isNull() && !t.isIdentity() && !data.stereoCameraModel().localTransform().isIdentity() && !data.stereoCameraModel().localTransform().isNull())
|
const Transform & localTransform = data.stereoCameraModel().localTransform();
|
||||||
|
if(!t.isNull() && !t.isIdentity() && !localTransform.isIdentity() && !localTransform.isNull())
|
||||||
{
|
{
|
||||||
// from camera frame to base frame
|
// from camera frame to base frame
|
||||||
t = data.stereoCameraModel().localTransform() * t * data.stereoCameraModel().localTransform().inverse();
|
if(!previousLocalTransform_.isNull())
|
||||||
|
{
|
||||||
|
t = previousLocalTransform_ * t * localTransform.inverse();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
t = localTransform * t * localTransform.inverse();
|
||||||
|
}
|
||||||
|
previousLocalTransform_ = localTransform;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(info)
|
if(info)
|
||||||
|
|||||||
Reference in New Issue
Block a user