top of page
Eğitim Paneli

Pixhawk takeoff komutunu reddediyor, önce ARM ve moda bak

3 Eki
3 dakikada okunur

Güncelleme tarihi: 14 Eki

Python'dan takeoff komutu gönderiyorsun, kod hatasız bitiyor, drone yerinde duruyor. Motorlar dönmüyor, ekranda da hata yok.

Otopilot komutu alıyor, bir kontrol listesinden geçiriyor ve kontrollerden biri tutmazsa reddediyor. Reddettiğini sana bir cevapla bildiriyor, çoğu kod o cevabı hiç okumuyor.

Drone takeoff komutunu neden sessizce yok sayıyor

ArduPilot takeoff komutunu alınca dört şeye bakar: motorlar ARM edilmiş mi, drone yerde mi, seçili mod kalkışı destekliyor mu ve hedef yükseklik mevcut yükseklikten büyük mü. İlk tutmayan kontrol komutu reddeder.

Reddedilen komutun cevabında sonuç olarak 4 yazar, kabul edilen komutun cevabında 0 yazar. Kod bu sayıya bakmıyorsa "komutu gönderdim" ile "drone kalktı" birbirine karışır.

Aşağıdaki şekilde dört kontrolün sırasına ve hepsinin aynı kırmızı banda çıktığına bak.




Hangi modda takeoff komutu işe yarar

Takeoff komutunu GUIDED modunda gönder. Kaynak kodda LOITER, POSHOLD ve ZIGZAG modları da komutun mod kontrolünü geçiyor. STABILIZE modunda komut reddedilir, AUTO modu için kaynak kodda kalkış desteği tanımlı değildir.

ALT_HOLD, FLOWHOLD ve SPORT modlarında komut yalnızca üçüncü parametreye yatay konumun gerekmediğini söyleyen bayrak verilirse kabul edilir. Varsayılan gönderimde bu bayrak yoktur, o yüzden bu üç modda da komut reddedilir.

Sıra ArduCopter kaynak kodundaki sıradır. Kontroller takeoff.cpp dosyasında, hangi modun kalkışı desteklediği ise mode.h içindeki has_user_takeoff fonksiyonunda tanımlıdır.



ARM ettikten sonra neden hemen takeoff göndermelisin

Yerde ARM edilmiş ve gazı sıfır olan drone için ArduCopter varsayılan olarak 10 saniye sonra motorları kendisi DISARM eder. Süre DISARM_DELAY parametresinde tutulur, varsayılanı config.h içinde 10 olarak tanımlıdır.

Kodunu ARM sonucunu bekleyip hemen ardından takeoff gönderecek biçimde yaz. Araya kullanıcı girdisi ya da uzun bir hesap girerse drone takeoff gelmeden DISARM olur ve komut reddedilir; şekildeki iki şeridi karşılaştır.



Örnek: Teknofest pistinde yer istasyonundaki arkadaşın ARM tuşuna basıyor, sonra hakemin kalkış işaretini bekliyor. İşaret 10 saniyeden geç gelirse drone çoktan DISARM olmuştur ve ardından yolladığın takeoff komutunun cevabında 4 yazar. ARM ile takeoff'u aynı akışa koy, ikisini de hakem işaretinden sonra başlat.



Önce cevaba bak, sonra kodu düzelt

Aşağıdaki kod GPS 3D fix'i bekliyor, modu GUIDED'a alıyor, ARM edilene kadar deniyor, takeoff komutunu gönderiyor ve cevabın sonucunu okuyor. Sonuç 0 değilse hata fırlatıyor, böylece reddedilen komut sessiz kalmıyor.



Komut reddedilirse program "takeoff reddedildi, sonuc=4" hatasıyla durur. ARM edilmemiş drone'a ya da STABILIZE modunda ARM edilmiş drone'a takeoff yollarsan bu sonucu alırsın.

GUIDED modunda ARM edilmiş drone'a 10 metrelik komutu yollarsan cevap 0 gelir, drone 9,5 metreyi geçince program yüksekliği yazıp biter. Yükselme süresi drone'un kütlesine ve itkisine bağlıdır, kendi drone'unda logdan ölç.


Cevabı okurken komut numarasına bak. ARM komutunun cevabı da aynı hattan gelir. ack.command değeri 22 değilse o cevap takeoff'a ait değildir.


Kartta ARM iznine ayrıca bak

Gerçek Pixhawk'ta ARM izni GPS 3D fix'e, uydu sayısına ve EKF durumuna bağlıdır. ARM gelmiyorsa takeoff'a hiç sıra gelmez; Mission Planner'ın mesaj ekranındaki PreArm satırlarını oku.



Hata Mesajları

Konsolda ya da Mission Planner'ın mesaj ekranında şu satırlarla karşılaşabilirsin.



Got COMMAND_ACK: NAV_TAKEOFF: FAILED

MAVProxy konsolunda görülen satırdır, forumda bir kullanıcı bildirdi. Otopilot takeoff komutunu reddetti. ARM'ı, modu ve hedef yüksekliği sırayla kontrol et.



PreArm: Need Position Estimate

ARM komutu geldiğinde otopilot konum kestirimini henüz bulamadıysa bu satır düşer. GPS 3D fix gelene ve EKF GPS'i kullanmaya başlayana kadar bekle, sonra ARM'ı yeniden dene.



Auto: Missing Takeoff Cmd

AUTO moda geçerken motorlar ARM edilmiş, drone yerde ve görevin ilk komutu takeoff değilse bu satır düşer, metin mode_auto.cpp içinde geçer. Önce GUIDED'da kalk, sonra AUTO'ya geç ya da görevi takeoff komutuyla başlat.



Karar zincirini satır satır görmek istersen

Takeoff komutunun kaynak kodda hangi sırayla elendiğini ve forumdaki vakaları Python ile Sıfırdan İHA Kontrolü kursunda ders olarak anlatıyoruz.


İNDİRİM KUPONU

Kupon kodu: SOFTIVATION15

Eğitimi alırken ödeme ekranındaki "Kupon kodu" kutusuna bu kodu yaz, %15 iner.

Yorumlar


bottom of page