Quote:
Originally Posted by Tom Bottiglieri
Try a Kalman filter. There is source code to some optimized versions floating around on the internet. (The full filter is a bit labor intensive.) This filter was designed to read noisy signals and make estimates of true value based on it.
http://en.wikipedia.org/wiki/Kalman_filter
|
First of all, Kalman Filters are great
Second of all, the rest of this post will likely sound like non-sense unless you've read a couple articles in Kalman Filters. If you think you're interested in Kalman Filtering,
this is a good place to start.
Now onto what I was going to say: I've never had a Kalman treat the accelerometers as direct measurements in a nav system before. There are a couple reasons for this. Keep in mind, I use a full 6DOF system where all of this is more complicated. For one, it requires running the Kalman faster than we want to (at the full 400Hz IMU rate). Additionally, doing so requires the linearization of a fairly gnarly prediction function (since the prediction function is doing an implicit double-integration).
Finally, and I think this is the most important one: if your state vector includes acceleration and you are Kalman filtering your acceleration. You need a MODEL of how you expect your acceleration to change from one time-sample to the next. It's comparing this prediction to what you actually measure that allows a Kalman to function well. You have no means of acquiring such a prediction, especially when you want to measure things like crashes and bumps (outside the scope of your controlled values). So basically, to tune your Kalman to reflect the unpredictable nature of your accelerations, the process noise will have to be high enough that very little smoothing will actually happen.
What we tend to do is leave acceleration out of our state vector. We track position, orientation, and velocity inside the Kalman. We then integrate the accels/gyros using the inertial nav equations essentially as part of the prediction phase, and use this to update our predicted position/orientation/velocity values. Then, we use the Kalman measurement update to incorporate additional sensors such as GPS/IMU and correct these terms.
Calibrating and working out bugs in this kind of system is the kind of nightmare that can take an experienced engineer months (or years) to get right. At work, the Kalman Filter we use for our nav system has a state vector with 150 elements in it. Needless to say, it is still being debugged.
But you guys are working in 3DOF and I expect the problem is likely more tractable in that case. Maybe I'll review the equations when I get a chance this afternoon.
Where a Kalman would really shine is fusing measurements from your accelerometers with measurements from your shaft encoder or other sensors.
Anyone, please feel free to contact me if you would like to discuss Kalman filtering in more details.