GÖREV KAYDI

GÖREV KAYDI

KAYIT AÇIK

ATILIM UAV · YER KONTROL İSTASYONU

GÖREV KAYDI / DETAY

Arşiv

CANLI · OKUMA MODU

Aviyonik

Mission Planner'da Otonom Görev Planlama: Waypoint'ler, Grid Taramaları ve AUTO Modu

Mission Planner'da Otonom Görev Planlama: Waypoint'ler, Grid Taramaları ve AUTO Modu

Tarama geometrisi: irtifa, yer genişliği, overlap ve hat aralığı

ŞEK. 01

KAYIT KÜNYESİ

Kategori

Aviyonik

TARİH

TÜM KAYITLAR

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_SPEEDWP_SPD, RTL_ALTRTL_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 .waypoints dosyası olarak kaydeder

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_ENABLE=1 ve SRTM verisi önceden indirilmiş olmalı

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

NAV_TAKEOFF

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

NAV_WAYPOINT

Delay, Hit Rad, Yaw Ang, Lat/Lon/Alt

İş atı. Delay > 0 ile nokta üzerinde bekler

NAV_LOITER_TIME / NAV_LOITER_TURNS

Time (s) / Turns, Radius

Gözlem molası ya da görüntü toplamak için hedefin etrafında tur atmak

NAV_SPLINE_WAYPOINT

Lat/Lon/Alt

Hız kaybetmeden yumuşak dönüşler; tarama hatlarındaki süreyi kısaltır

DO_SET_ROI

Lat/Lon/Alt

Burnu/gimbal'ı sabit bir hedefe kilitlemek

DO_CHANGE_SPEED

Type, Speed (m/s)

Tarama hattında yavaşlamak, transit geçişte hızlanmak

DO_SET_SERVO

Ser No, PWM (1000–2000)

Airdrop mandalını açmak

DO_SET_CAM_TRIGG_DIST

Distance (m)

Mesafeye dayalı kamera tetikleme (Survey aracı bunu kendi hesaplar)

DO_JUMP

WP no, tekrar sayısı

Aynı turu N kez uçmak

NAV_RETURN_TO_LAUNCH

Yok

RTL_ALT_M irtifasına tırmanır ve home'a döner

NAV_LAND

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), yani DO_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:

  1. tan(81/2) = tan(40.5°) = 0.854

  2. width = 2 * 40 * 0.854 = 68.3 m

  3. tan(VFOV/2) = 0.854 * 0.5625 = 0.480 -> VFOV = 51.3°

  4. height = 2 * 40 * 0.480 = 38.4 m

  5. 60% sidelap -> line_spacing = 68.3 * 0.40 = 27.3 m

  6. 75% overlap -> trigger_distance = 38.4 * 0.25 = 9.6 m

  7. 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.



Tarama geometrisi: HFOV, yer ayak izi, hat aralığı ve sidelap

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_OPTIONS parametresi 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 = 1 yapın.

Simülasyonda (bkz. SITL + Gazebo rehberimiz) bu ön koşulları elle tıklayarak değil bir betikle doğruluyoruz:

from pymavlink import mavutil

m = mavutil.mavlink_connection('udp:127.0.0.1:14550')
m.wait_heartbeat()

gps = m.recv_match(type='GPS_RAW_INT', blocking=True)
assert gps.fix_type >= 3, "no 3D fix"

m.mav.command_long_send(m.target_system, m.target_component,
    mavutil.mavlink.MAV_CMD_GET_HOME_POSITION, 0, 0, 0, 0, 0, 0, 0, 0)
home = m.recv_match(type='HOME_POSITION', blocking=True, timeout=5)
assert home is not None, "no home position"

m.set_mode('AUTO')          # custom mode = 3 for Copter
from pymavlink import mavutil

m = mavutil.mavlink_connection('udp:127.0.0.1:14550')
m.wait_heartbeat()

gps = m.recv_match(type='GPS_RAW_INT', blocking=True)
assert gps.fix_type >= 3, "no 3D fix"

m.mav.command_long_send(m.target_system, m.target_component,
    mavutil.mavlink.MAV_CMD_GET_HOME_POSITION, 0, 0, 0, 0, 0, 0, 0, 0)
home = m.recv_match(type='HOME_POSITION', blocking=True, timeout=5)
assert home is not None, "no home position"

m.set_mode('AUTO')          # custom mode = 3 for Copter

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_MAXFENCE_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 (eskiden WPNAV_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 da SERVOn_FUNCTION değerini 0'da bırakmamak.

  • Terrain seçip TERRAIN_ENABLE = 0 bı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

  1. Çerçeveyi bir kez seçin ve görev boyunca değiştirmeyin. Düz sahalarda Relative, eğimli arazide Terrain (artı TERRAIN_ENABLE = 1 ve indirilmiş SRTM verisi).

  2. 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.

  3. Her Write'ın ardından bir Read yapın ve görevi sürümlenmiş bir .waypoints dosyası olarak saklayın.

  4. 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.

  5. Fence ve RTL sayılarını görevle birlikte doğrulayın: RTL_ALT_M < FENCE_ALT_MAXFENCE_MARGIN olmalı; 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.

©2026 ATILIM UAV TEAM

©2026 ATILIM UAV TEAM