
ŞEK. 01
KAYIT KÜNYESİ
Kategori
Aviyonik
TARİH
Sahada en sık karşılaştığımız senaryo şöyle: görevi akşam evde planlıyoruz, sabah hava aracına yazıyoruz, AUTO'ya alıyoruz ve hava aracı planladığımızdan 20 metre alçaktan uçuyor. Kimse yanlış bir şey yapmadı. İrtifa çerçevesi "Relative" seçiliyken home noktası, gerçekte kalktığımız yerden farklı bir yükseklikte belirlenmişti.
Haritaya waypoint bırakmak kolay; bir görevin dört farklı sahada, dört farklı home noktasıyla aynı şekilde davranmasını sağlamak disiplin ister. Bu yazıda SUAS 2026 hazırlığında kullandığımız iş akışını baştan sona anlatıyoruz: ekranın anatomisi, komut seçimi, Survey/Grid ile tarama planı üretmek, görevi hava aracına yazmak ve AUTO'ya geçmenin ön koşulları.
Parametre adları ArduPilot Copter içindir. Copter-4.7.0 ile birçoğu SI birimlerine çevrildi ve yeniden adlandırıldı (WPNAV_SPEED → WP_SPD, RTL_ALT → RTL_ALT_M vb.); daha eski bir yazılım sürümündeyseniz parantez içinde verilen adları kullanın.
Flight Plan ekranının anatomisi
Ekranın üstünde harita, altında görev tablosu duruyor; o tablodaki her satır bir komut. Default Alt alanı yeni eklenen waypoint'lerin varsayılan irtifasını belirliyor. Haritaya tıklamak, o noktanın enlem ve boylamını taşıyan yeni bir NAV_WAYPOINT satırı ekliyor.
Asıl iş sağ tık menüsünde dönüyor: Draw Polygon → Add Polygon Point tarama alanının sınırını çiziyor, Auto WP → Survey (Grid) bu poligonu otomatik tarama görevine dönüştürüyor, Prefetch ise sahanın harita karolarını önceden indiriyor (sahada internet olmayabilir; bunu her seferinde yapıyoruz).
Alttaki dört düğme bir görevin yaşam döngüsünü belirliyor:
Düğme | Ne yapar | Ne zaman |
|---|---|---|
Write | Görevi otopilota gönderir ve EEPROM'a yazar | Plan bittiğinde |
Read | Görevi hava aracından geri okur | Write'ın hemen ardından, doğrulamak için |
Save WP File | Diske bir | Sürüm takibi, yedekleme |
Load WP File | Kayıtlı bir görevi yükler | Sahada hızlı toparlanma |
Verify height kutusu, Google Earth yükseklik verisini kullanarak her waypoint'in irtifasını altındaki zemin yüksekliğine göre düzeltiyor. Eğimli arazide çalışıyorsanız işe yarar; ama tek başına terrain following (arazi takibi) değil, yalnızca planlama anında uygulanan bir düzeltme.
İrtifa çerçevesi: hataların yarısı buradan başlıyor
Her waypoint'in bir irtifa çerçevesi var ve bu çerçeveleri karıştırmak en pahalı hata. Üç seçenek:
Çerçeve | Sıfır referansı | Ne zaman kullanılır | Risk |
|---|---|---|---|
Relative | Home noktasının yüksekliği | Düz sahalarda varsayılan tercih; yarışma görevlerinin çoğu | Home yanlış belirlenirse görevin tamamı dikeyde kayar |
Absolute | Ortalama deniz seviyesi (AMSL) | Size AMSL cinsinden tavan verildiğinde (NOTAM, ATC kısıtı) | Barometre/GPS yükseklik hatası doğrudan irtifaya yansır |
Terrain | Zeminin kendisi | Eğimli veya tepelik arazi, zeminden sabit yükseklik gerektiren taramalar |
|
Terrain kullanacaksanız iki şeyin doğru olması gerekiyor: TERRAIN_ENABLE = 1 olmalı ve yer kontrol istasyonu SRTM verisini MAVLink üzerinden hava aracına göndermiş olmalı (Mission Planner, QGroundControl ve MAVProxy bunu destekliyor). ArduPilot belgeleri SRTM doğruluğunu bölgeye göre değişmekle birlikte ortalama 10 metre mertebesinde veriyor ve arazi takibini 60 m üzerindeki irtifalar için öneriyor; daha alçakta rangefinder tabanlı takip daha doğru sonuç veriyor.
Pratik kuralımız: tek bir görev dosyasında çerçeveleri karıştırmayın.
Komut seti: hangi satırı neden ekliyoruz
Komut | Önemli alanlar | Ne zaman kullanıyoruz |
|---|---|---|
| Alt | Görevin ilk NAV komutu. Hava aracı zaten o irtifanın üzerindeyse komut tamamlanmış sayılır ve bir sonraki waypoint'e geçilir |
| Delay, Hit Rad, Yaw Ang, Lat/Lon/Alt | İş atı. Delay > 0 ile nokta üzerinde bekler |
| Time (s) / Turns, Radius | Gözlem molası ya da görüntü toplamak için hedefin etrafında tur atmak |
| Lat/Lon/Alt | Hız kaybetmeden yumuşak dönüşler; tarama hatlarındaki süreyi kısaltır |
| Lat/Lon/Alt | Burnu/gimbal'ı sabit bir hedefe kilitlemek |
| Type, Speed (m/s) | Tarama hattında yavaşlamak, transit geçişte hızlanmak |
| Ser No, PWM (1000–2000) | Airdrop mandalını açmak |
| Distance (m) | Mesafeye dayalı kamera tetikleme (Survey aracı bunu kendi hesaplar) |
| WP no, tekrar sayısı | Aynı turu N kez uçmak |
| Yok |
|
| Lat/Lon | Belirli bir noktaya iniş |
Bir görev sırasında aynı anda en fazla bir "Navigation" ve bir "Do" komutu çalışır; Do komutları, önlerindeki navigasyon komutu bittikten sonra işlenir. Bu yüzden DO_SET_SERVO görevin ilk veya son komutu olamaz. Airdrop tarafında bir günümüzü yakan ikinci ayrıntı: komutun tetiklenebilmesi için o çıkışın SERVOn_FUNCTION değeri 0 (Disabled) olmalı; fonksiyon başka bir şeye atanmışsa komut sessizce yok sayılır.
Servo tabanlı airdrop bırakmalarımızı yaklaşık 20 m'den yaptık; DO_SET_SERVO komutunu, bırakma noktasının hemen öncesindeki NAV_WAYPOINT satırının hemen ardına koyduk.
Güvenlik: servo/airdrop testlerini pervaneler sökülmüş hâlde yapın. Pixhawk sınıfı otopilotlar servoyu doğrudan besleyemez; harici bir 5V BEC gerekir. Servo komutunu arm etmeden çalıştırmak, tetikleme mantığını doğrulamanın en ucuz yolu.
Survey/Grid: hat aralığını tahminle değil formülle belirleyin
Poligonu çizip Auto WP → Survey (Grid) seçtiğinizde Mission Planner kamera modelini, overlap (ileri) ve sidelap (yanal) değerlerini soruyor; gelişmiş seçenekleri açtığınızda lens ve sensör alanları çıkıyor. Bu girdilerden DO_SET_CAM_TRIGG_DIST aralığını kendisi hesaplıyor ve görevin sonuna bu değeri sıfırlayan bir komut ekliyor. Alan adları MP sürümleri arasında yer değiştiriyor ama arkalarındaki matematik değişmiyor:
Yer ayak izi (pinhole yaklaşımı, lens distorsiyonu ihmal edildi)
width_m= 2 *altitude_m* tan(HFOV / 2)
height_m= 2 *altitude_m* tan(VFOV / 2)16:9 karede HFOV'dan VFOV türetmek
tan(VFOV/2) = tan(HFOV/2) * (9 / 16)
Planlama çıktıları
line_spacing_m=width_m* (1 - sidelap)
trigger_distance_m=height_m* (1 - overlap), yaniDO_SET_CAM_TRIGG_DIST
GSD_cm_px= (width_m* 100) /image_width_px
Kendi kurulumumuz için (SIYI A8 mini, 81° HFOV, 1080p) 40 m'de adım adım:
tan(81/2) = tan(40.5°) = 0.854
width = 2 * 40 * 0.854 = 68.3 m
tan(VFOV/2) = 0.854 * 0.5625 = 0.480 -> VFOV = 51.3°
height = 2 * 40 * 0.480 = 38.4 m
60% sidelap -> line_spacing = 68.3 * 0.40 = 27.3 m
75% overlap -> trigger_distance = 38.4 * 0.25 = 9.6 m
GSD = 6830 cm / 1920 px = 3.6 cm/px
300 × 200 m'lik bir alanı 300 m'lik hatlarla tararsanız: 200 / 27.3 = 7.3 → 8 hat. Toplam yol ≈ 8×300 + 7×27.3 = 2591 m. WP_SPD = 8 m/s'de bu ≈ 324 s, dönüşlerdeki yavaşlamayı da hesaba katınca kabaca 6-7 dakika. Tek uçuşa sığmıyorsa daha yükseğe çıkmaktansa alanı ikiye bölmek daha iyi bir fikir; çünkü GSD doğrudan tespite yansıyor: 3.6 cm/px'te 30 cm'lik bir hedef yaklaşık 8 piksel eder ve bu, ham çıkarım için sınırdadır. Ayrıntılar küçük nesne tespiti ve SAHI dilimli çıkarım yazımızda.

Görevi yazmak ve AUTO'ya geçmek
Write'a basmadan önce kontrol ettiğimiz ön koşullar:
3D GPS fix ve makul bir HDOP. ArduPilot belgeleri AUTO için 1.4'ün altındaki HDOP değerini referans alıyor.
Home noktası belirlenmiş olmalı. Home, arm anında hava aracı neredeyse oraya yazılır. GCS'ten "Set Home Here" ile elle taşıdıysanız RTL o noktaya döner.
Arm. Varsayılan ayarlarla AUTO'da arm edemezsiniz; başka bir modda (örneğin Loiter) arm edip sonra AUTO'ya geçersiniz.
AUTO_OPTIONSparametresi bu davranışı değiştirebilir.Yerden başlıyorsanız gaz kolu aşağıda olmalı; AUTO'ya geçtikten sonra görev, gazı sıfırın üzerine aldığınız anda başlar. Zaten havadaysanız AUTO'ya geçtiğiniz anda ilk komuttan başlar.
AUTO'ya yeniden girmek görevi son komuttan devam ettirir; baştan başlaması için
MIS_RESTART = 1yapın.
Simülasyonda (bkz. SITL + Gazebo rehberimiz) bu ön koşulları elle tıklayarak değil bir betikle doğruluyoruz:
MAVLink tarafını bir companion computer üzerinden kuruyorsanız MAVLink rehberimiz bu akışın bittiği yerden devam ediyor.
Geofence ve RTL irtifası
Geofence'i görevden ayrı düşünmeyin: iki taraftaki sayılar birbiriyle çelişiyorsa hava aracı görev ortasında mod değiştirir. FENCE_ENABLE = 1 ile açılır; FENCE_TYPE bir bit maskesi (bit 0: maksimum irtifa, bit 1: home etrafında silindirik "tin can", bit 2: poligon, bit 3: minimum irtifa). FENCE_RADIUS en az 30 m olmalı ve FENCE_MARGIN değerinden büyük kalmalı. İhlal durumunda ne olacağını FENCE_ACTION belirler (RTL, LAND, BRAKE vb.).
RTL_ALT_M (eskiden RTL_ALT, cm cinsinden) hava aracının eve dönmeden önce tırmandığı minimum irtifa; ArduPilot belgelerine göre varsayılan 15 m, 0 değeri ise mevcut irtifasında dönmesini sağlıyor. RTL_ALT_TYPE = 1 ile bu irtifa zeminden yükseklik olarak yorumlanıyor. Kontrol basit: RTL_ALT_M < FENCE_ALT_MAX − FENCE_MARGIN olmalı; en yüksek waypoint'inizi de bu tavanın altında tutun.
Sık düşülen tuzaklar
Yanlış irtifa çerçevesi. Sahanın yüksekliği, planı çizdiğiniz haritanın yüksekliğinden farklıysa Relative bir görev toptan kayar. Sahaya vardığınızda home'u yeniden belirleyin ve Verify Height ile bir tur geçin.
Home noktası sürprizi. Home, arm anında yazılır. Hava aracını taşıyıp farklı bir noktadan kalkarsanız eski görev dosyasındaki mesafeler hâlâ doğrudur ama irtifa referansı yanlıştır.
WP yarıçapını büyütmek.
WP_RADIUS_M(eskidenWPNAV_RADIUS, cm cinsinden; varsayılan 2 m) bir waypoint'in "ulaşıldı" sayıldığı yarıçap. Büyütürseniz hava aracı köşeleri keser ve airdrop noktasını metrelerce ıskalayabilir; küçültürseniz dur-kalk davranışı ve daha uzun uçuş süresi elde edersiniz.DO_SET_SERVO'yu ilk veya son satıra koymak, ya daSERVOn_FUNCTIONdeğerini 0'da bırakmamak.Terrain seçip
TERRAIN_ENABLE = 0bırakmak. Görev sorunsuz yazılır ama irtifalar beklediğiniz gibi yorumlanmaz.Write sonrası Read yapmamak. Zayıf telemetri bağlantısında görev eksik yazılabilir; Read 5 saniyelik bir sigorta.
Pratik özet
Çerçeveyi bir kez seçin ve görev boyunca değiştirmeyin. Düz sahalarda Relative, eğimli arazide Terrain (artı
TERRAIN_ENABLE = 1ve indirilmiş SRTM verisi).Tarama irtifasını GSD hesabından belirleyin, "yükseğe çıkalım hepsi sığsın" mantığıyla değil. Formülü kendi kameranızın HFOV'uyla bir kez çalıştırın ve sonucu bir yere yazın.
Her Write'ın ardından bir Read yapın ve görevi sürümlenmiş bir
.waypointsdosyası olarak saklayın.AUTO'dan önce dört kontrol: 3D fix, home doğru, başka bir modda arm, gaz aşağıda. Sahada bunları ezberden değil bir kontrol listesinden okuyun.
Fence ve RTL sayılarını görevle birlikte doğrulayın:
RTL_ALT_M<FENCE_ALT_MAX−FENCE_MARGINolmalı; en yüksek waypoint de bu tavanın altında kalmalı.
Bu akışı SITL'de en az bir kez uçurmadan sahaya taşımıyoruz; simülasyonda 10 dakikada yakalanan bir çerçeve hatası sahada yarım güne mal oluyor.
