ArduPilot batarya failsafe'de Python komutunu dinlemiyor
Güncelleme tarihi: 14 Eki
Python kodun GUIDED modda hız komutu yolluyor, drone bir noktadan sonra komutlara cevap vermiyor ve kendi başına eve dönmeye başlıyor. Döngü çalışıyor, komutlar da gidiyor.
Yer istasyonunda sarı bir batarya uyarısı geçip gittiyse sorunun yerini buldun. Uyarıyı hiç görmediysen de okumaya devam et, çünkü uyarı kodun gözünden kaçabilir.
Drone komutu alıyor ama uygulamıyor
Batarya voltajı eşiğin altında yeterince uzun kalınca ve batarya failsafe'ine bir eylem atanmışsa otopilot modu kendisi değiştirir. Senin kodun hâlâ GUIDED'da olduğunu sanıp hız komutu göndermeye devam eder.
Otopilot bu komutlara ret ya da hata cevabı yollamaz. Hız hedefi yalnızca araç GUIDED modundayken işlenir, başka bir moddayken mesaj sessizce atılır.
Şekildeki kesikli çizgiye bak. Mod RTL'ye döndükten sonra moda bakmayan kodun gönderdiği her komut boşa gider; modu izleyen kod ise o anda durur ve sana haber verir.
Varsayılan ayarda bunu hiç görmezsin
Varsayılan ayarda otopilot batarya düşünce yalnızca uyarır ve modu değiştirmez. Sorun, failsafe eylemini RTL ya da LAND gibi bir değere çevirdiğin gün ortaya çıkar.
Voltaj Copter'da varsayılan 10.5 V olan düşük voltaj eşiğinin altında, varsayılan 10 saniyelik süre boyunca kesintisiz kalmalı. Anlık bir voltaj çöküşü failsafe başlatmaz.
Kod modu kendisi izlemeli
Çözüm, komut göndermeden önce aracın hangi modda olduğuna bakmak. HEARTBEAT mesajındaki mod numarası GUIDED'dan (4) başka bir değere dönerse kod komut göndermeyi bırakır ve sana haber verir.
Kod kararı HEARTBEAT'teki mod numarasına göre veriyor. Batarya uyarısı eylem sıfırken de gelir ve modu değiştirmez; modun gerçekten değiştiğini HEARTBEAT içindeki numara gösterir.
Örnek: Kodun drone'u GUIDED'da hız komutuyla yük bırakma noktasına götürüyor. Uzun bir uçuşun sonunda voltaj eşiğin altına iner ve failsafe eylemi RTL ise otopilot eve dönmeye başlar. Moda bakmayan kod hâlâ bırakma noktasına doğru hız komutu yollar; yukarıdaki kod ise HEARTBEAT'te mod numarasının artık 4 olmadığını görür, "Mod değişti" yazar ve durur. Sen de yer istasyonundaki batarya uyarısıyla sebebi anlarsın.
Simülasyonda kendin gör
Yukarıdaki üç ayarın parametre adları şunlar: eylem BATT_FS_LOW_ACT (varsayılanı 0, yalnızca uyarı), eşik BATT_LOW_VOLT, süre BATT_LOW_TIMER.
Failsafe'i gerçek bataryayı boşaltarak denemek hem tehlikeli hem tekrarlanamaz. ArduPilot SITL'de voltajı parametreyle düşürür, aynı davranışı güvenle izlersin.
SITL'i -w ile başlat, BATT_FS_LOW_ACT değerini 2 (RTL) yap. Kodun GUIDED'da hız komutu gönderirken SIM_BATT_VOLTAGE değerini 9.5 V'a çek.
Voltaj 12.6 V'tan 9.5 V'a indikten yaklaşık 10 saniye sonra mod GUIDED'dan RTL'ye döner. Modu izlemeyen bir döngü bu sırada komut göndermeyi sürdürür ve mod değiştikten sonra gönderdiklerinin hepsi atılır.
Gerçek uçuşta voltajın eşiğin altına ne zaman ineceği bataryana ve yüküne bağlı.
Hata Mesajları
Battery 1 is low 9.50V used 469 mAh
Voltaj ya da kalan kapasite eşiği geçti. Voltaj ve mAh değerleri senin bataryanın o anki durumudur. Eylem 0 ise mod değişmez.
Battery Failsafe
Otopilot failsafe'i işledi. Eylem 0'dan farklıysa mod değişmiştir, HEARTBEAT içindeki mod numarasına bak.
Battery Failsafe - Disarming
Drone yerdeyken failsafe devreye girdi ve otopilot motorları kapattı. Havadaki bir drone bu mesajı vermez.
Kodla uçurmayı baştan öğrenmek istersen
Pymavlink ile bağlantıdan otonom göreve kadar adım adım gidiyoruz. Eğitim: Python ile Sıfırdan İHA Kontrolü.
İNDİRİM KUPONU
Kupon kodu: SOFTIVATION15
Eğitimi alırken ödeme ekranındaki "Kupon kodu" kutusuna bu kodu yaz, %15 iner.




Yorumlar