My question relates to the prediction step in EKF SLAM when we get measurements. This is a question I've encountered while implementing EKF SLAM in ROS.

At the beginning of the SLAM loop, we predict where we think the robot is by taking its expected location given the previous location and the previous controls. If we have valid measurements we then use those to compute the Kalman gain and update the robot position given these measurements.

These measurements, from a LIDAR scan, for example, will probably be captured in between SLAM loops, meaning that at time $t$ the measurements will be with respect to some time between $t-1$ and $t$.

Consider, for example, that the measurements come in at time $t-0.1$. In order to make the update step more accurate, shouldn't we predict up to time $t-0.1$, update, and then predict up to time $t$?


1 Answer 1


Your intuition is correct. You run the prediction step to the timestamp with the measurement, and then keep on running the prediction step.

Basically prediction, and measurement update must always coincide on the same timestamp.

Now this is easy to do if you know your time delay. If ,however, you don't know it then you have to somehow figure it out, or design your system to be robust against it. Probably the most common method people use is to add the time delay to your state vector.

  • $\begingroup$ Won't there be issues with adding noise to the covariance matrix more than once in the same time step? $\endgroup$
    – Pedro
    Dec 18, 2020 at 17:05
  • $\begingroup$ No. If you are modeling a time dependent system then $t$ should creep into your propagation equations. Ultimately then the covariance should scale to be bigger or smaller depending on how big $t$ is. $\endgroup$
    – edwinem
    Dec 19, 2020 at 15:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.