I want to build a navigation system with gyroscope/odemeter and gps. I have konwn there is a famous method called kalman filter for this application. And now, I have done some experiment in matlab with kalman filter to get hide state vector which included vehicle's current postion/velocity/heading etc. But out of my expection, the result is not very good even more bad than origin data which comes from gps. May be you could guess the reason why they are so so bad. Yes, gyroscope and odemeter have uncertained error also as gps, so that's why you use kalman filter to deal with them. In some case that's useful enough. But in some scenario case that's not working. Because the character of original data can't match with requriment of kalman filter. As I probably know, it suppose that filter works under the condition of which your data noise is white gaussian or some other types. so many artical tell me you must have good knowledge to character of this noise, but on the other hand they don't tell me how to know it. that's just my problem and ask you in here. how to do it and how to deal with it for kalman filter?
Kalman filter have basic requirements that the random processes like input signal, measurement signal,process noise and measurement noises all should be white Gaussian in nature.what Kalman filter actually do is that it uses the system model and input signal and generates its own output which is actually a predicted value now using the observation from the system it calculate the correction to be applied to the predicted output and hence final results are better than observations obtained from the system. Hence very first step- is that you need a system model. i am totally disagree with @Deniz notion that in non-linear case you should use particle filter. particle filter is used when the random process as mentioned above are not white Gaussian. Even if your system is non linear you can use Extended kalman filter or unscented kalman filter. As ur case is concerned i think you should apply extended or unscented kalman filter as velocities for navigation will keep on changing.