Softivation

Drone waypoint'te yine dönüyor (Mission Planner yaw)

Mission Planner yaw satırı tek bacak sürüyor, drone sonraki waypoint'te yine dönüyorsa açıyı WP_YAW_BEHAVIOR siliyor. Yönü rota sonuna kadar tutmayı öğren.

Furkan IŞIKAY 5 dk okuma

Tarama görevinde kamera hep aynı yöne baksın diye Mission Planner rotasına bir yaw satırı ekledin. Drone o satırdan sonraki bacakta burnunu istediğin yöne çeviriyor. Bir sonraki waypoint'e varınca burun yine gideceği yöne dönüyor.

Otopilot her yeni waypoint'te burnu kimin yöneteceğine baştan karar verir ve varsayılan ayarda senin verdiğin açıyı siler.

Burun neden bir bacak sonra rotaya dönüyor

ArduCopter AUTO modunda her WAYPOINT satırı başlarken yaw'ı WP_YAW_BEHAVIOR parametresine göre yeniden kurar. Çok rotorlu araçlarda bu parametrenin varsayılanı 2: drone burnunu sonraki waypoint'e çevirir, RTL sırasında çevirmez.

CONDITION_YAW satırı burnu verdiğin açıya kilitler. Kilit sıradaki WAYPOINT satırı başlayınca açılır. Kaynak kodda kilidi koruyan yalnızca iki durum var: burun bir ROI noktasına bakıyorsa ya da WP_YAW_BEHAVIOR 0 ise.

Yaw satırı, listede üstündeki waypoint'e varınca çalışır. Kalkıştan sonraki ilk bacakta da burnun dönmesini istiyorsan satırı TAKEOFF'un hemen altına koy.

Teknofest'teki bir tarama görevini düşün: öne bakan kameranın kareleri tespit modeline gidiyor ve hedeflerin her karede aynı açıdan görünmesini istiyorsun. Varsayılan ayarla açı yalnız yaw satırından sonraki bacakta doğru kalır, sonraki köşelerde kamera başka yönlere bakar.

İki ayarı aynı rotada karşılaştır

Aşağıdaki rota kare biçiminde: Home'dan kuzeye 80 m (satır 2), oradan doğuya 80 m (satır 4), güneye 80 m (satır 5) ve tekrar Home. Satır 3 burnu 45°'ye, yani kuzeydoğuya çeviren yaw satırı.

Aynı görev, iki ayar: oklar burnun baktığı yön

Aynı görev, iki ayar: oklar burnun baktığı yön
Sol panelde 4 numaralı satırdan sonraki bacağa bak: oklar güneye döner. Sağda 45° sona kadar kalır.

Şekilde sol panelde güneye dönen kırmızı oklar varsayılan ayarı gösteriyor. Sağ panelde WP_YAW_BEHAVIOR 0 ve burun son bacağa kadar 41 ile 49° arasında kalıyor.

Sağ panelin ilk bacağına da dikkat et. 0 değerinde otopilot burna kendiliğinden dokunmaz. Yaw satırı çalışana kadar drone, görevi hangi yöne bakarak başlattıysa o yöne bakarak uçar.

Yönü görev sonuna kadar tutmak

  1. CONFIG > Full Parameter List'te WP_YAW_BEHAVIOR'u 0 yap ve Write Params'a bas. Refresh Params'tan sonra 0 görmelisin; eski değer duruyorsa yazma gitmemiştir, Messages sekmesine bak.
  2. PLAN ekranında yaw satırını, yönün başlamasını istediğin waypoint'in hemen altına ekle: Deg 45, rel/abs 0 (kuzeye göre açı), Dir 0 (kısa yoldan dön). Görevi yazdıktan sonra Read ile geri oku; satır başka bir sıraya düştüyse yerine taşı.
  3. AUTO'da Messages sekmesinde "Mission: 3 CondYaw" satırını görmelisin. Bu satırdan sonra burun hâlâ kendi kendine dönüyorsa kumandanın yaw çubuğunu kontrol et.

Speed deg/s sütununu 0 bırakırsan dönüş hızını ATC_RATE_WPY_MAX sınırlar, varsayılanı 60°/s.

WP_YAW_BEHAVIOR'a dokunmak istemiyorsan yaw satırını her waypoint'in altına yeniden yaz. Aynı kare rotada bu düzenle burun 41 ile 54° arasında kalır; her köşede açı kısa süre oynar ve alttaki satır onu geri kurar.

Burnun sabit bir yön yerine bir noktaya bakması gerekiyorsa DO_SET_ROI kullan. ArduPilot görev komutları sayfası burnun görev bitene ya da sıfır koordinatlı ikinci bir DO_SET_ROI gelene kadar o noktaya bakacağını yazar.

Kumanda açıkken yaw çubuğuna dokunursan burnu sen yönetirsin ve yaw satırının açısı silinir. Görev boyunca çubuğun etkisini kapatmak için AUTO_OPTIONS'ta Ignore pilot yaw bitini işaretle.

Görev tablosundaki satır türlerini ve sütunları sırayla görmek istersen Sıfırdan Mission Planner Eğitimi bu ekranı baştan anlatıyor.

Burnu uçarken kodla izle

Mission Planner açıkken ikinci bir MAVLink bağlantısından görev satırını ve burun yönünü saniyede bir yazdırabilirsin. Kod pymavlink kütüphanesini ister (pip install pymavlink).

Pythonyon_izle.py
import time
from pymavlink import mavutil

# Mission Planner açıkken ikinci bir bağlantı kullan (ör. "udp:127.0.0.1:14551" ya da "COM7", baud=57600)
baglanti = mavutil.mavlink_connection("tcp:127.0.0.1:5762")
baglanti.wait_heartbeat()
baglanti.mav.request_data_stream_send(baglanti.target_system, baglanti.target_component,
                                      mavutil.mavlink.MAV_DATA_STREAM_ALL, 4, 1)
satir, son = None, 0
while True:
    m = baglanti.recv_match(type=["MISSION_CURRENT", "VFR_HUD"], blocking=True)
    if m.get_type() == "MISSION_CURRENT":
        satir = m.seq
    elif satir is not None and time.time() - son >= 1:
        print(f"görev satırı {satir:2d}   burun {m.heading:3d}°")
        son = time.time()

WP_YAW_BEHAVIOR 2 iken bu kare rotada şunu görürsün (satırlar kısaltıldı):

Çıktı
görev satırı  2   burun   0°
görev satırı  4   burun  45°
görev satırı  5   burun 181°
görev satırı  6   burun 270°

Parametreyi 0'a çektikten sonra aynı rotada çıktı şöyle olur:

Çıktı
görev satırı  4   burun  46°
görev satırı  5   burun  44°
görev satırı  6   burun  43°

Hata Mesajları ve Anlamları

Mission: 3 CondYaw

Görevin 3. satırındaki yaw komutu başladı. Bu mesaj üstteki waypoint'e varınca düşer; hiç düşmüyorsa yaw satırı listede beklediğin yerde değildir ya da görev oraya ulaşmamıştır.

Reached command #4

Drone 4 numaralı waypoint'e vardı. Varsayılan ayarda yaw satırının açısı bu mesajın hemen ardından kaybolur.

Mission: 5 WP

Sıradaki waypoint satırı başladı. Otopilot yaw'ı burada WP_YAW_BEHAVIOR'a göre yeniden kurar; burnun döndüğünü gördüğün an budur.

Bu yazı işinize yaradı mı?

Bu konuyu baştan sona öğrenin

Sezon: altı eğitimin hepsi 9 ay, ayda ₺790. Lise ve üniversite öğrencisine ayda ₺390, üye kodunuzla ilk ay ₺351. İstediğiniz ay bırakırsınız. Sezon'a başlayın · Öğrenciyim