Drone kendiliğinden DISARM oluyor (Python ARM etmişti)
- Furkan IŞIKAY

- 2 gün önce
- 2 dakikada okunur
Betiği çalıştırıyorsun, ekranda ARM satırını görüyorsun, sonra hiçbir şey olmuyor. Motorlar birkaç saniye rölantide dönüyor ve kendiliğinden susuyor.
Kalkış komutunu gönderdiğinde araç yerde duruyor. İlk bakışta kod hatası gibi görünür, ama aynı kodu ikinci kez çalıştırdığında da aynı yerde durursun. Kodun ARM'ı doğru yapmıştır; onu geri alan başka bir şey vardır.
Otopilotun içinde işleyen bir sayaç var
ArduPilot, araç ARM'lı hâlde beklerken bir sayaç işletir. Araç yere temaslı ve gaz kolu düşükken bu sayaç dolarsa otopilot motorları kendisi DISARM eder.
Sayacın süresi DISARM_DELAY parametresinde tutulur, birimi saniyedir. Kaynak koddaki varsayılan değeri 10'dur. Kendi kartında başka bir değer yazıyor olabilir, bu yüzden okumadan varsayma.
Sayaç ne zaman sıfırlanıyor
Karar sırası her döngüde baştan işler. Aşağıdakilerden biri geçerliyse sayaç sıfırlanır ve DISARM gelmez.
Motorlar zaten DISARM ise ya da DISARM_DELAY sıfır yazılmışsa
Kalkış isteniyorsa, yani motorların hedef durumu rölantinin üstündeyse
Gaz kolu düşük değilse ya da araç yere temaslı sayılmıyorsa
Uçuş modu THROW ise
Betikle uçarken bunların hiçbiri gerçekleşmez. ARM edip GPS beklemeye ya da rota hesaplamaya oturursan araç yerde, gaz kolu sıfırda kalır. Sayaç da sonuna kadar işler.
İki koşuyu yan yana koyduk
Aynı SITL kurulumunda iki koşu yaptık. Birincisinde ARM'dan sonra hiçbir komut göndermedik. İkincisinde ARM'ın hemen ardından kalkış komutunu gönderdik.
Birinci koşu ARM'dan tam 10 saniye sonra kapandı ve telemetriye şu satırlar düştü.
ARM edildi
STATUSTEXT: Disarming motors
DISARM oldu, ARM'dan 10.0 s sonra (simulasyon saati)
kalkis komutu gonderildi
irtifa: 0.01 mNe yapman gerekiyor
Çözüm sırayı düzeltmek: hazırlığın tamamı ARM'dan önce biter. ARM ile kalkış komutu arasına hiçbir bekleme girmez.
Uzun bir hazırlık kaçınılmazsa DISARM_DELAY'i büyütebilirsin. Bunun bedeli var: yerde unutulan bir araç daha uzun süre ARM'lı kalır. Süreyi büyütmeden önce hazırlığı öne almayı dene.
Hata Mesajları ve Anlamları
Disarming motors
Otopilot DISARM ettiğinde bastığı satır. Tek başına arıza anlamına gelmez. ARM'dan sonra sen istemeden geldiyse sayacın dolduğunu gösterir.
PreArm: Motor Interlock Enabled
Bu başka bir durum. Araç henüz ARM olmamıştır, interlock kanalı açık konumdayken otopilot ARM izni vermez. Sayaçla ilgisi yoktur.
PreArm: Safety Switch
Kart üstündeki güvenlik butonuna basılmamış. Yine ARM öncesi bir engeldir; bu mesajı görüyorsan araç zaten hiç ARM olmamıştır.
Simülasyonda ve sahada ne değişir
Sayacın kendisi firmware içindedir, SITL'de de kartında da aynı işler. Yukarıdaki 10 saniyelik pencere simülasyon koşusundan geldi.
Sahada bir fark var. Kumandan bağlıysa gaz kolunun konumu sayacı sıfırlayabilir ve arıza hiç görünmeyebilir. Kumandasız otonom kurulumlarda böyle bir kurtarıcı yoktur.
Devamını nerede bulursun
Karar zincirinin firmware içindeki tam sırası, log imzaları ve gövde tipine göre değişen davranış Python ile Sıfırdan İHA Kontrolü eğitimi içinde işleniyor.
İNDİRİM KUPONU
Kupon kodu: SOFTIVATION15
Eğitimi alırken ödeme ekranındaki "Kupon kodu" kutusuna bu kodu yaz, %15 iner.



Yorumlar