Reputation: 89
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
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