7. ünite / 10
Navigasyon: GPS, EKF ve ara nokta görevi
Bu ünitenin sonunda
- GPS hatasının yapısını (yavaş gezinen hata) açıklamak
- Konum → hız → ivme → eğim kaskadını kurmak
- Azami eğim açısından azami yatay ivmeyi hesaplamak
- Rüzgârın etkisini ve I teriminin bunu nasıl telafi ettiğini simülasyonda göstermek
Ders notları
Konum denetimi yönelim denetiminin üstünde çalışan üçüncü döngüdür. Hedefe olan uzaklık bir hız hedefine (seyir hızıyla sınırlı), hız hatası bir ivme komutuna, ivme de eğim açısına çevrilir:
25° azami eğimde yatay ivme en çok 9,81 × tan 25° ≈ 4,6 m/s²'dir. Rüzgâr sürekli bir kuvvettir; onu dengelemek için drone rüzgâra doğru eğik durmalıdır ve bu eğimi hız döngüsünün I terimi bulur.
Konumu kim biliyor?
Kontrolcü gerçek konumu değil, kestirilen konumu (p̂) bilir. PX4'te bunu EKF2 üretir: IMU'yu yüksek hızda entegre eder, GPS, barometre, pusula (ve varsa optik akış, LiDAR) ölçümleriyle düzeltir. GPS hatası 1–3 m'dir ve yavaşça gezinir; ortalaması almakla geçmez. Ara noktaya varış kontrolü bile kestirime göre yapılır: simülasyonda drone ara noktayı "geçtiğini" düşündüğünde gerçekte metrelerce uzakta olabilir.
- Varış yarıçapı (acceptance radius) GPS hatasından küçük seçilirse drone ara noktada dolanabilir.
- Telemetri bağlantısı görev sırasında konum, batarya ve uyarıları yer istasyonuna taşır.
Simülasyon
Ara nokta görevi ve hassas iniş (3B uçuş + 2B harita)
Kalkış → ara noktalar → iniş pedine iniş. Kontrolcü yalnız kestirilen konumu bilir: GPS hatası yavaşça gezinir. İnişte ArUco kamerası açılınca hata santimetrelere düşer. Haritaya tıklayarak ara nokta ekle (sonuncusu ped), rüzgâr ve GPS hatasını değiştir.
3B sahne yükleniyor…
Simülasyon görevi
Görev simülasyonunda iniş kaynağı "Yalnız GPS" iken görevi üç kez yeniden başlat: iniş hatası her seferinde ne kadar? GPS hatasını 0'a indir: hata ne oldu? 8 m/s doğu rüzgârı ver ve rotanın nasıl değiştiğini izle. Konum P'yi 0,3 ve 2,5 yaparak görev süresini karşılaştır. Haritaya tıklayarak kendi rotanı kur.
Kod
import math
G, MAX_TILT = 9.81, math.radians(25)
A_MAX = G * math.tan(MAX_TILT) # azami yatay ivme ≈ 4,6 m/s²
class Navigator:
def __init__(self, waypoints, cruise=6.0, pos_p=0.9, vel_p=1.8, vel_i=0.3, accept=1.0):
self.wps, self.i = waypoints, 0
self.cruise, self.pos_p, self.vel_p, self.vel_i, self.accept = cruise, pos_p, vel_p, vel_i, accept
self.vi = [0.0, 0.0]
def step(self, est, vel, dt):
"""est: kestirilen konum (m), vel: hız (m/s) → ivme komutu"""
tx, ty = self.wps[self.i]
if math.hypot(tx - est[0], ty - est[1]) < self.accept and self.i < len(self.wps) - 1:
self.i += 1 # varış: sonraki ara nokta
tx, ty = self.wps[self.i]
vx, vy = self.pos_p * (tx - est[0]), self.pos_p * (ty - est[1])
n = math.hypot(vx, vy)
if n > self.cruise:
vx, vy = vx * self.cruise / n, vy * self.cruise / n
ex, ey = vx - vel[0], vy - vel[1]
ax, ay = self.vel_p * ex + self.vi[0], self.vel_p * ey + self.vi[1]
a = math.hypot(ax, ay)
if a > A_MAX:
ax, ay = ax * A_MAX / a, ay * A_MAX / a # doyum: integrali dondur
else:
self.vi[0] += self.vel_i * ex * dt
self.vi[1] += self.vel_i * ey * dt
# ivme → eğim açıları (küçük açı): pitch ≈ -ax/g, roll ≈ ay/g (gövde eksenine çevrilir)
return ax, aySık yapılan hatalar
- GPS hatasını beyaz gürültü sanıp ortalama alarak düzelteceğini düşünmek.
- Pusulayı kalibre etmemek: EKF yön hatası konum denetimini spirale sokar.
- Varış yarıçapını GPS hatasından küçük seçmek.
- Azami eğimi çok düşük tutup rüzgârda konum tutamamak; ya da çok yüksek tutup itkiyi irtifa tutmaya yetmez hale getirmek.
Yazılım mühendisliği bağlantısı
Navigasyon kodu arayüzler üzerinden test edilir: kontrolcü "kestirim" arayüzüne bağımlı olsun, GPS sürücüsüne değil.
- Kestirimi sahte bir nesneyle (mock) besleyerek kontrolcüyü sensörsüz test et: sabit rüzgâr, sıçrayan GPS, kayıp GPS senaryoları.
- Her senaryo için kabul ölçütü yaz: "8 m/s rüzgârda ara noktaya 1 m içinde varış".
Kendini sına
Azami eğim 25° ise drone'un azami yatay ivmesi yaklaşık nedir?
GPS'le inişte neden metre düzeyinde sapma olur?
Uçuş kontrolcüsü ara noktaya vardığına neye bakarak karar verir?
PX4 EKF2 hangi sensörleri birleştirir?
Bu ünitenin parçaları
3B modelli gerçek Hyvex parçaları:
