Robotik & Otonomi
Sıfırdan Kalman / EKF
Uygulamalı bir durum kestirimi kütüphanesi: NumPy ile sıfırdan yazılmış KF ve EKF; 1B takipten sensör füzyonuna, EKF radar takibine ve gerçek bir drone uçuş kaydı vaka çalışmasına uzanan yedi aşamalı örnek.
- Rolüm
- Yazar
- Bağlam
- Açık kaynak eğitim
- Teknolojiler
- Python · NumPy · SciPy · State estimation
- Bağlantılar
- muhammeteminayhan/kalman-filter-tutorial
7
uygulamalı örnek
KF+EKF
sıfırdan
Real
drone uçuş kaydı
Neden yazdım
Durum kestirimi robotiğin sessiz omurgası: her drone, gezgin robot ve telefon, gürültülü sensörleri nerede olduğuna dair tek bir inanca dönüştürüyor. Tamamen anladığım bir sürüm istedim; bu yüzden filtreleri kendim yazdım ve her biri tek bir fikir ekleyen yedi çalıştırılabilir örnek hazırladım. Aynı fikirler, stajımdaki durum kestirimi çalışmalarında ve GPS’siz İHA projesinde de karşıma çıkıyor.
Kütüphane
Minimum bağımlılıklı (NumPy / SciPy) iki küçük sınıf: sayısal kararlılık için Joseph formunda kovaryans güncellemesi yapan doğrusal bir KalmanFilter ve doğrusal olmayan modelleri Jacobian’larıyla doğrusallaştıran bir ExtendedKalmanFilter.
kf = KalmanFilter(
F=np.array([[1, dt], [0, 1]]), # sabit hız modeli
H=np.array([[1, 0]]), # yalnızca konum ölçüyoruz
Q=np.diag([0.05, 0.05]), # süreç gürültüsü
R=np.array([[9.0]]), # ölçüm gürültüsü
x0=[0, 0], P0=np.diag([10, 10]),
)
for z in measurements:
kf.predict()
kf.update(z)
Yedi örnek, her seferinde bir fikir
- Gürültülü bir ölçüm: problemin tanımı.
- 1B sabit hız: yalnızca konumdan filtre hızı da çıkarıyor. Konum RMSE 2,7 → 1,7 m.
- Sabit ivme: manevra yapan bir hedefi takip ediyor.
- 2B takip: eğri bir yol boyunca 4 durumlu
[x, vx, y, vy]filtre. Takip RMSE 2,2 → 0,9 m. - Sensör füzyonu: tahmini ivmeölçer yönlendiriyor, barometre düzeltiyor.
- EKF radar: menzil ve açı konuma göre doğrusal değil; EKF her adımda doğrusallaştırıyor.
- Gerçek uçuş kaydı: gerçek, ~45 dakikalık bağlı (tethered) bir drone uçuşu.


Gerçek veri vaka çalışması
Son örnek simülasyonu geride bırakıyor. Araç üstü barometreyi, tutum kuaterniyonuyla dünya çerçevesine döndürülmüş IMU düşey ivmesiyle birleştiriyor ve ölçüm sınıfı gerçek referansa karşı doğruluyor. Füzyonlu kestirim gerçek değerin 2,7 m içinde kalırken ham GPS 5,5 m sapıyor; yakınlaştırma paneli filtrenin gerçek barometre titreşimini yumuşattığını gösteriyor.


