GUIDED modda hız komutuyla drone dönmeye başlıyor
Python'dan pymavlink ile drone'a hız komutu gönderiyorsun, yaw'a hiç dokunmuyorsun. Yine de drone ilerlerken aynı anda dönmeye başlıyor, sanki kendi kararını veriyor.
Bu, GUIDED modda tek başına hız gönderen herkesin er ya da geç karşılaştığı bir davranış. Sebebi type_mask alanına yazdığın tek bir sayı.
Ne zaman görülüyor
SET_POSITION_TARGET_LOCAL_NED ile sadece hız (vx, vy, vz) gönderirken, tip maskesinde hem yaw hem yaw_rate alanını "ignore" işaretlersen ortaya çıkıyor. Topluluk kayıtlarına göre ArduCopter 4.1 ve sonraki sürümlerde gözlemleniyor, 4.0.7'de bildirilmemiş.
Neden dönüyor
Geliştiricinin varsayımı şu: "yaw alanlarını ignore edersem otopilot yaw'a dokunmaz." ArduCopter tam tersini yapıyor. Hem yaw hem yaw_rate ignore edilince mevcut yaw hedefini korumuyor, kendi varsayılan yönlendirme davranışına geri dönüyor ve drone hareket yönüne doğru dönmeye başlıyor.
Minimal kod
Aşağıdaki iki çağrı aynı hız komutunu gönderiyor, tek fark type_mask değeri. 3527 yaw_rate'i de ignore ediyor, 2503 yaw_rate alanına açıkça 0.0 yazıyor.
Hata Mesajları ve Anlamları
Bu davranış bir konsol hatası basmıyor, sessizce oluyor. Aşağıdakiler ArduPilot forumunda kullanıcıların bu davranışı tarif ederken kullandığı birebir ifadeler.
the drone starts rotating if the y velocity component, v_y, is non-zero
Sebep: yaw_rate alanı ignore edilirken vy sıfırdan farklı olunca ArduCopter yön değiştiriyor. Çözüm: yaw_rate alanını ignore etme, 0.0 gönder (type_mask 2503).
Doğrulama
Kendi SITL koşumuzda iki fazlı ölçüm yaptık; bu bizim yayın öncesi doğrulama adımımız, okurun tekrarlaması beklenmez. Faz A'da (mask 3527) yaw 0,2 dereceden başlayıp 95 dereceye çıktı ve 90 derece civarında oturdu. Faz B'de (mask 2503, yaw_rate=0) yaw 90,5 derecede sabit kaldı.
faz A yaw aralığı: 95.1° · faz B yaw aralığı: 0.1° (SITL, ArduCopter master)Bu konuyu derste daha derine indiriyoruz
type_mask'in bit bazında neden bu şekilde davrandığını, kaynak koddaki ModeGuided::set_yaw_state_rad fonksiyonunu ve kart bazlı farkları Python ile Sıfırdan İHA Kontrolü eğitiminde satır satır işliyoruz.




Yorumlar