TuW
TuW

Reputation: 89

Implementing Kalman Filter with latitude and longitude

I am from non mathematics background and need some help in implementing kalman filter in my java application. Basically, I get inputs from various sensors of a particular entity on map. The inputs are the location in latitude and longitude terms along with its accuracy. Now based on several inputs that I received for the same entity, I need to predict the accurate position of the entity on the map. Note that I don't have to track it continuously.

How do I provide inputs of lat,long and accuracy to kalman filter such that I get a fused predicted value as an output from which lat&long can be obtained to plot the same back on map?

Upvotes: 1

Views: 3113

Answers (1)

tele
tele

Reputation: 138

As you dont provide much information on the problem, I will present a simple solution with only a latitude/longitude/accuracy:

I would start by defining the Kalman filter dynamics as a random walk with velocity having the random noise

x = [rx, ry, vx, vy],

where x is the state of the Kalman filter. Now the prediction part of the model becomes

x_{k+1} = A*x_k + Q,

where

A = [1, 0, dt, 0;0, 1, 0, dt;0, 0, 1, 0;0, 0, 0, 1]

and Q can be found on page 56 of Applied Stochastic Differential Equations

For applying the observation on lat/lon/accuracy, I would start by converting the WGS84 coordinates to local ENU coordinates (metric). This makes the system more robust and easier to interpret.

The update becomes

y = H*x + R,

where y is the observation of the position [rx, ry] and

H = [1,0,0,0;0,1,0,0]

and you use your accuracy in observation noise:

R = diag([accuracyx, accuracy]),

where accuracy is now the variance of the position.

This is a standard way to do this kind of 2D tracking. As you only use lat/lon/accuracy the results might not be as accurate as you want.

Now you can apply the above system to produce the Kalman predict and update methods

Upvotes: 2

Related Questions