Openvario / sensord

Daemon to poll air data from Openvario sensorboard
6 stars 11 forks source link

Kalman filters #29

Open hpmax opened 3 years ago

hpmax commented 3 years ago

My friend has been looking at the Kalman filter and cannot understand the process covariance matrix. The current matrix is:

[ Td^4/4 Td^3/2 Td^3/2 Td^2] * var_x_accel

The more common matrix for this sort of application is:

[ Td^3/3 Td^2/2 Td^2/2 Td] * var_x_accel

The Q(1,1) term appears to have a /4 instead of a /3, this could be nothing more than fat fingering. Our simulations have shown this doesn't make much difference either way. The other difference obviously is there is an extra Td term, hence there's could be written as:

[Td^3/4 Td^2/2 Td^2/2 Td] Td var_x_accel

It's worth noting that var_x_accel is treated as a constant( .3) and Td, when this was originally written, was treated as a constant (0.05). So, as long as Td is a constant this could just be rolled into var_x_accel. Of course, Td is now mostly accurate and no longer a constant (also, I halved Td when switching from 50ms sample rate to 25), so... Does anyone see a good reason for the extra Td or can we just assume this is wrong?

63% response time to a step is about 1.5 seconds. Does this seem reasonable or do we want to change the settling time? What's a good limit on how much noise we allow to get through the filter also? Do we want this to be in-flight adjustable or have multiple filters with different response times?