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 May 4 at 5:42

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.

| improve this answer | |
  • $\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$ – FourierFlux May 7 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$ – Vishnu Prem May 7 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$ – FourierFlux May 7 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$ – Vishnu Prem May 7 at 3:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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