Yazılım
İki Beyinli İHA: Pixhawk 6C ve Raspberry Pi 5 Yazılım Mimarisi
Tek karta sıkıştırmaya çalışmadık. İki ayrı işlemci, aralarında MAVLink köprüsü, sahaya çıkmadan önce SITL'de iki hafta test. Mimarinin nasıl oturduğunu anlatıyoruz.
İlk başta tek karta sığdırmayı denemek istemiştik. Raspberry Pi 4 + Navio2 kombinasyonu gözden geçirildi. İki hafta sonra vazgeçtik. Sebebi şu: PID döngüsünün deterministik tepki süresi var, görüntü işlemenin yok. İki yükü birbiriyle yarıştırınca her ikisi de fakirleşiyor. Sonunda iki ayrı donanıma geçtik.
Görev paylaşımı
- Pixhawk 6C: sensörden veri okuma, motora PWM gönderme, havada stabil durma. Hepsi bu.
- Raspberry Pi 5 (8 GB): görüntü işleme + karar mekanizması.
- İki kart arasındaki köprü: FTDI USB-TTL üzerinden MAVLink protokolü.
Pixhawk'ı kasten 'aptal' tutuyoruz. Karar Pi'de, sadece komut Pixhawk'ta. Bu ayrım, hangi tarafın çöktüğünü ayıklamayı çok kolaylaştırdı. Bir keresinde otonom test sırasında İHA havada dönüp duruyordu; üç dakika sonra anladık ki Pi'deki OpenCV scripti exception atmış ama Pixhawk son verilen 'sağa' komutuna sadık kalıyor. Bunu mimaride bir hata değil, beklenen davranış olarak işliyoruz. Pi'nin watchdog'u eklendikten sonra problem tekrar etmedi.
ArduPilot, PID ve karbon fiber detayı
Uçuş yazılımı olarak ArduPilot tercihimiz açık kaynak yapısı için. PX4'ü de değerlendirdik; ArduPilot ile dökümantasyon daha bol, Türkçe toplulukta da destek var. Karbon fiber gövdenin dinamiği plastik gövdeden farklı; Stabilize moddaki P, I, D değerlerini iki gün ayarlamak zorunda kaldık. AutoTune'u açtık ama önerdiği değerler bizde aşırı agresifti, manuel düşürdük.
Pi tarafı: DroneKit ve PyMAVLink
Pi 5'te koşan Python kodu, OpenCV'nin bulduğu hedef koordinatlarını hata payı vektörüne çeviriyor. Bu vektör DroneKit ile Guided modda velocity_target komutuna dönüşüyor. PyMAVLink ise daha düşük seviyeli; bazı komutlar için elimiz daha rahat oluyor. İkisini birlikte kullanıyoruz. 8 GB RAM ve aktif soğutucu varken bütün döngü 200 ms civarında tamamlanıyor.
SITL: sahaya çıkmadan önce iki hafta
İHA donanımı pahalı; kaza riskini sıfırlamak istedik. Bütün otonom görev ve hedef tespit algoritmalarını önce SITL (Software In The Loop) altında çalıştırdık. SITL, gerçek Pixhawk firmware'ini sanal bir araç üzerinde simüle ediyor. İlk SITL koşusunda 'iniş' komutu hedefin 4 metre yanına geliyordu. Hatanın sebebi: koordinat dönüşümünde y-ekseni ters çevrilmemişti. Bunu sahada bulsaydık muhtemelen propeller değiştirmek zorunda kalırdık.
- MAVLink kanalı
- TELEM2
- Telemetri
- 915 MHz
- Kumanda
- 2.4 GHz
- Motor tepki süresi
- 0.0059 s
Yer istasyonu
Sahada Mission Planner kullanıyoruz. Hem anlık konum ve batarya takibi için, hem de PID parametrelerini hızlı revize etmek için. Bir dizüstüde tüm uçuşlar logleniyor; eve dönünce log dosyalarını inceliyoruz, Pi tarafından gelen kararla Pixhawk'ın gerçek tepkisi arasında fark var mı diye bakıyoruz. Holybro 3DR 100 mW 915 MHz telemetri kullandığımız için 2.4 GHz kumandayla çakışma sorunu yaşamadık.
Bu yazıyla ilgili sorularını veya iş birliği önerini bize ilet.
İletişime Geç →