What is the standard way to fuse multiple sensor measurements in an EKF framework?

Say you have Odometry, IMU and some form of Lidar which can produce landmarks.

EKF is normally presented as a prediction/correction framework after each action but it's not clear how 3+ sensor sources can be integrated.

  • $\begingroup$ If you are using ROS, then simply use the robot_localization package, it will do for you. $\endgroup$
    – Franky
    Commented May 4, 2020 at 5:42

1 Answer 1


An EKF or any of the variants of the Kalman filter, as you said mainly works in two steps: prediction and correction. The prediction steps gives you a state estimate based on your process model and the correction step updates your state estimate based on the current measurement. If you have multiple measurements from more than one sensor, you would just update the state as you would in the correction step whenever a new measurement is available. The only difference is that your measurement model would change depending on which sensor is giving you the measurement. If your sensors give you data at different rates then you would do something like: prediction, correction1, prediction, correction2 ... and so on, where correction 1 and correction 2 are based on measurements from sensor 1 and sensor 2 respectively.

  • $\begingroup$ But how do you handle multiple measurements at once? And is there a difference between simultaneously updating and sequentially updating based upon measurements of they were taken simultaneously? $\endgroup$ Commented May 7, 2020 at 0:59
  • 2
    $\begingroup$ If you do not want to sequentially update, then you can consider the multiple sensors as one system that gives you a single measurement using a complex measurement model. You can find more deatils about this starting from slide 144 here $\endgroup$ Commented May 7, 2020 at 3:13
  • $\begingroup$ Thanks, that was super useful. I have to ask, how do you go about finding the covariance data between the sensors? $\endgroup$ Commented May 7, 2020 at 3:42
  • 2
    $\begingroup$ In a real world problem, the noise covariance data is provided by the sensor manufacturer. If this is not available, it is common to use a diagonal matrix where you tune the values to get better performance. Intuitively, if your sensor is less reliable, these values would be higher. This value would represent the variance of the Gaussian distribution that models your uncertainty. $\endgroup$ Commented May 7, 2020 at 3:49

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.