Skip to content
Snippets Groups Projects
Commit 867e195d authored by Dinesh Atchuthan's avatar Dinesh Atchuthan
Browse files

Fix getState() that failed when querying non-buffered time stamps

parent 652d7b84
No related branches found
No related tags found
1 merge request!177Hotfix
Pipeline #
...@@ -271,8 +271,16 @@ void ProcessorMotion::getState(const TimeStamp& _ts, Eigen::VectorXs& _x) ...@@ -271,8 +271,16 @@ void ProcessorMotion::getState(const TimeStamp& _ts, Eigen::VectorXs& _x)
{ {
// We found a CaptureMotion whose buffer contains the time stamp // We found a CaptureMotion whose buffer contains the time stamp
VectorXs state_0 = capture_motion->getOriginFramePtr()->getState(); VectorXs state_0 = capture_motion->getOriginFramePtr()->getState();
VectorXs delta = capture_motion->getDeltaCorrected(origin_ptr_->getCalibration(), _ts);
Scalar dt = _ts - capture_motion->getBuffer().get().front().ts_; // Get delta and correct it with new bias
VectorXs calib_preint = capture_motion->getBuffer().getCalibrationPreint();
Motion motion = capture_motion->getBuffer().getMotion(_ts);
VectorXs delta_error = motion.jacobian_calib_ * (origin_ptr_->getCalibration() - calib_preint);
VectorXs delta = capture_motion->correctDelta( motion.delta_integr_, delta_error);
// Compose on top of state using the buffered time stamp, not the query time stamp
// TODO Interpolate the delta to produce a state at the query time stamp _ts
Scalar dt = motion.ts_ - capture_motion->getBuffer().get().front().ts_; // = _ts - capture_motion->getOriginPtr()->getTimeStamp();
statePlusDelta(state_0, delta, dt, _x); statePlusDelta(state_0, delta, dt, _x);
} }
else else
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment