C# yer istasyonundan Pixhawk arm olmuyor (komut gidiyor)
Kendi yazdığın C# yer kontrol istasyonunda ARM düğmesine basıyorsun, pervaneler kıpırdamıyor. Aynı Pixhawk Mission Planner'a bağlanınca ARM oluyor; senin programında ise ya hiçbir şey olmuyor ya da ekrana tek satırlık bir red düşüyor.
Bu iki belirti farklı yerleri gösterir. Hiç cevap gelmiyorsa paket otopilota varmadan elenmiştir. Red geliyorsa paket yerine ulaşmış, sebep de başka bir mesajla yola çıkmıştır.
ARM düğmesine basınca paket nereye gidiyor
Düğme otopilota COMMAND_LONG adlı bir MAVLink mesajı yollar. İçinde komut numarası 400, ilk parametre 1 yazar. Otopilot bu paketi sırayla üç kapıdan geçirir; aşağıdaki şekil her kapının hayır dalının nereye çıktığını gösteriyor.
Şekildeki kesik çizgili iki kutuya bak. O iki dalda otopilot geriye tek bayt yollamaz, programın da cevap beklerken sonsuza kadar bekler.
Hiç cevap gelmiyorsa ilk iki kapıya bak
İlk kapı sağlama baytlarıdır. MAVLink her mesaj türünün sağlamasına sabit bir bayt katar; COMMAND_LONG için bu sayı 152'dir. Sayı yanlışsa otopilot paketi bozuk sayar ve sessizce atar.
İkinci kapı kimliklerdir. Paketteki hedef sistem numarası otopilotun kendi numarasıyla tutmalı, varsayılan kurulumda bu 1'dir. Programının kendi kimliği ise otopilotunkiyle birebir aynı olmamalı: gönderen 1/1 olunca ArduPilot paketi kendi yankısı sayıp işlemez.
ArduPilot yer istasyonu numarası olarak varsayılanda 255'i bekler. Programında kendi numaran olarak 255'i kullanırsan hem bu kapıdan hem de ileride açılabilecek kimlik kısıtından takılmadan geçersin.
Red geliyorsa sebep arkadan gelir
Paket üçüncü kapıya vardıysa otopilot COMMAND_ACK ile cevap verir. Sonuç 0 ise ARM tamamdır. Sonuç 4 ise kontrollerden biri tutmamıştır ve otopilot nedenini ayrı bir STATUSTEXT mesajına yazar.
COMMAND_ACK gelince okuma döngüsünden çıkarsan sebep satırını kaçırırsın. ArduPilot red sebebini çoğunlukla ACK'in hemen arkasından yollar; döngü orada biterse ekranda yalnızca FAILED kalır.
Örnek: inişten sonra ikinci kalkış
Provada drone'u LAND moduyla indirdin, bataryayı değiştirdin ve yer kontrol istasyonundan yeniden ARM'a bastın. Bu arada uçuş modunu değiştirmediysen otopilot hâlâ LAND modundadır ve LAND'de ARM izni vermez.
Programın sonuç olarak 4 alır, hemen ardından gelen satırda Arm: Land mode not armable yazar. Modu STABILIZE ya da LOITER'a alıp düğmeye yeniden basınca sonuç 0'a döner.
Kısa kod: ARM yolla, cevabı oku
Aşağıdaki .NET konsol programı hiçbir MAVLink paketi yüklemeden çerçeveyi elle kurar ve gelen cevapları ekrana basar. Örnek 127.0.0.1:5760 TCP adresine bağlanıyor; kartta seri portu açıp onun BaseStream'ini kullanırsın.
Kodda p[30] ve p[31] hedef kimlikleri, f[5] ve f[6] ise programının kendi kimliğidir. Hedef 1/1, kendi kimliğin 255/190 olarak kalsın.
Ne Göreceksin
Drone STABILIZE modundayken ve ARM kontrollerinin hepsi temizken programı çalıştırırsan şunu görürsün:
COMMAND_ACK result = 0
Arming motorsOtopilot LAND modunda kaldıysa çıktı şöyle değişir:
COMMAND_ACK result = 4
Arm: Land mode not armableEkrana hiçbir satır gelmiyorsa 152 sabitine ve iki kimlik çiftine yeniden bak. Satır geliyor ama 4 yazıyorsa çözüm, arkasından gelen Arm: satırındadır.
Hata Mesajları ve Anlamları
Arm: Land mode not armable
Otopilot LAND modunda. ARM'dan önce STABILIZE, ALT_HOLD ya da LOITER'a geç.
Arm: RTL mode not armable
Otopilot RTL modunda kalmış. Aynı şekilde ARM izni veren bir moda geçip tekrar dene.
Arm: Mode requires mission
AUTO modundasın ama otopilotta yüklü görev yok. Rotayı yükle ya da ARM'ı başka bir modda ver.
Arm: Hardware safety switch
Pixhawk'a bağlı güvenlik düğmesi hâlâ yanıp sönüyor. Işık sabit yanana kadar düğmeye basılı tut, sonra ARM'ı yeniden yolla.
Arm: System not initialised
Otopilot açılışını bitirmedi. Birkaç saniye bekleyip komutu tekrar gönder.
Kartta Ayrıca Kontrol Et
Mission Planner aynı COM portunu açık tutuyorsa C# programın o portu açamaz. Önce Mission Planner'ın bağlantısını kes.
Telemetri radyosu kullanıyorsan programındaki baud değeri radyonun seri hızıyla aynı olsun. Mission Planner'da bağlanırken seçtiğin hız budur.
Kendi yer kontrol istasyonunu sağlam kur
Elle kurduğun MAVLink istemcisinde ilk takılacağın yer çoğu zaman ARM komutudur. Sıfırdan İleri Seviyeye C# eğitiminde WinForms ile yer kontrol istasyonunu adım adım yazıyorsun; Güncel Eklemeler bölümünde bu komutun otopilottaki karar sırası, kaynak koddaki yeri ve hızlı teşhis tablosu duruyor.
DİJİTAL ÜRÜN İNDİRİMİ
Özel Türkçe yer kontrol istasyonu kütüphanesi: Türkçe yorum satırlı C# MAVLink kütüphanesi ve hazır test arayüzüyle kendi YKİ'ni kurmaya başlarsın.
Kupon kodu: SOFTIVATIONYKI15 · ürün sayfasında ödeme ekranında %15 iner.




Yorumlar