I'm trying to implement an indirect Kalman for pose estimation of a wheeled robot. I found two papers that describe this approach.

For this post I will reference the second paper, since it is much more detailed.

My understanding of this approach

In order to estimate the vehicle pose (xy-coords and orientation), two sources of information are fused together. Both odometry and accelerometer combined with gyroscope provide the relative position and rotation information (xy-velocities and rotational speed) and that can be integrated to get the pose.

Since both methods are error-prone their outputs are compared and used to estimate those errors using a Kalman filter [red arrow]. This estimation is fed back to the sensor models that were compared as input [light blue arrows].

Multi-Sensor Data Fusion Block Diagram In the second paper I mentioned almost all components needed for implementation are described in detail:

The final measurement and observation model equations used for data fusion in state space model form are as follows:

ΔX(t + 1) = A(t) ∙ ΔX(t) + w(t)
ΔY(t) = C(t, VL, VR, ωe, Ax, Ay, Ω) ∙ ΔX(t) + v(t)


A(t) = [A1 A2 A3]
C(t, VL, VR, ωe, Ax, Ay, Ω) = [C1 C2 C3]
Ax(t), Ay(t) = Accelerometer Readings
Ω(t) = Gyroscope Readings
VL(t), VR(t) = Linear Velocity from Encoders
ωe(t) = Angular Velocity from Encoders
ΔT = Samping Time

Using naming conventions from above I would asume the following Filter structure:

Kalman filter structure

C(t) = C(t, VL, VR, ωe, Ax, Ay, Ω)

My problem is that all papers and descriptions I found so far didn't really explain how ΔY is used. I know how Kalman filters work in general but I have no idea how ΔY can update ΔX (I've marked this part with questionmarks in the picture above). Do you know how the Measurement Update could work here?



Your Answer

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