MATH220 Mathematical Modelling – droneposisjonsestimering med Extended Kalman Filter (EKF) og RTS-glatter.
KalmanDrone/
├── main.py # Inngangspunkt – kjør dette
├── modelling.py # Hoved-pipeline: les CSV, kjør EKF/RTS, plot, eksporter
├── extended_kalmanfilter.py # EKF-implementasjon (9-tilstandsvektor)
├── kalmanfilter.py # Lineær Kalman-filter (6-tilstandsvektor)
├── data/
│ └── drone.csv # Eksempeldata fra dronelogg
└── pyproject.toml # Avhengigheter (uv)
Prosjektet bruker uv for avhengighetsstyring:
uv syncAlternativt med pip:
pip install numpy matplotlib scipypython main.pyDette kjører EKF på data/drone.csv med standard parametere, viser plot og lagrer ekf_output.csv.
Input-CSV må ha disse kolonnene:
| Kolonne | Enhet | Beskrivelse |
|---|---|---|
timestamp_s |
s | Tidsstempel |
accel_x_ms2 |
m/s² | Akselerasjon x |
accel_y_ms2 |
m/s² | Akselerasjon y |
accel_z_ms2 |
m/s² | Akselerasjon z |
gyro_x_rads |
rad/s | Vinkelhastighet x |
gyro_y_rads |
rad/s | Vinkelhastighet y |
gyro_z_rads |
rad/s | Vinkelhastighet z |
gps_lat_deg |
° | GPS breddegrad |
gps_lon_deg |
° | GPS lengdegrad |
baro_alt_m eller gps_alt_m |
m | Høyde (barometer eller GPS) |
Valgfrie kolonner true_x_m, true_y_m, true_z_m aktiverer RMSE-beregning mot ground truth.