AerospaceNU / AerospaceNU/stm32-avionics
Calculate kalman gain at runtime using curve fit
- Lenguaje dominante
- C
- Estrellas
- 5
- Forks
- 0
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción

For a linear system, kalman gain varies linearly with discretization timestep (loop speed). Proof is left as an exercise for the reader.
```
import control as ct
import frccontrol as fct
import numpy as np
import matplotlib.pyplot as plt
sysc = ct.ss(np.array([[0, 1], [0, 0]]), np.array(
[[0], [1]]), np.array([1, 0]), np.array([0]))
# units of m and m/s
state_std_devs = [0.5, 3]
# units of m
measurement_std_devs = [80]
dt_list = []
gain_list = []
for dt in np.arange(0.001, 0.011, 0.001):
observer = fct.KalmanFilter(sysc, state_std_devs, measurement_std_devs, dt)
print(f"{dt}, {observer.K[0]}, {observer.K[1]}")
gain_list.append(observer.K)
dt_list.append(dt * 1000)
gain_list = np.array(gain_list)
plt.figure()
plt.scatter(dt_list, gain_list[:,0], label="K[0,0]")
plt.scatter(dt_list, gain_list[:,1], label="K[1,0]")
plt.title("Kalman gain vs discretization timestep")
plt.xlabel("dt, ms")
plt.ylabel("gain, output per error")
plt.legend()
plt.show()
```
requirements.txt
```
frccontrol
control
numpy
matplotlib
```
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Evaluación
Este issue todavía no se ha evaluado.