ArduPilot uçuş ortasında RTL moduna geçiyor
Drone kendi kendine RTL moduna geçiyorsa mod değişimini bir failsafe istemiştir. Hangi failsafe olduğunu ekrandaki tek satırlık uyarıdan ayırt edersin.
Havada duruyorsun, drone bir noktayı tutuyor. Kumandaya elini sürmedin, yer istasyonunda da bir düğmeye basmadın. Ekranda mod bir anda RTL oluyor ve araç burnunu eve çevirip gidiyor.
İlk refleks kumandaya yapışmak oluyor. Oysa o saniyede sana lazım olan şey ekranın üstünden akıp giden tek satırlık uyarı. Otopilot mod değiştirdiğinde bunu sessizce yapmaz, sebebini de yazar.
Aşağıda önce o satırı okumayı, sonra satırı kaçırdıysan aynı bilgiyi uçuş kaydından çıkarmayı bulacaksın.
Mod değişimini kim istedi
Otopilot uçuş modunu iki sebeple değiştirir. Ya sen istersin, ya da bir failsafe koşulu oluşur. İkincisinde ekrana kısa bir uyarı düşer ve o uyarının ilk kelimesi kaynağı söyler.
Dört kaynak var: kumanda hattı, batarya, yer istasyonu bağlantısı ve konum kestirimi. Mesajın başındaki kelime bunlardan hangisi olduğunu tek başına belirler.
Bazen mesajın sonuna tire ile ikinci bir parça eklenir. O parça, otopilotun ayarındaki davranıştan neden saptığını anlatır; örneğin araç zaten inişteyse dönüş yerine inişi sürdürür.
Radyo failsafe'i iki ayrı yoldan gelir
Kumanda hattı koptuğunda alıcının yapabileceği iki şey var ve hangisini yaptığını alıcının kendi ayarı belirler.
- Alıcı otopilota veri göndermeyi tamamen keser. Otopilot belli bir süre hiç kare gelmezse hattı kopmuş sayar. Varsayılan süre bir saniye.
- Alıcı hattı kaybedince gaz kanalını normal aralığın altına çeker. Otopilot bu değeri bir eşikle karşılaştırır ve art arda üç kare eşiğin altında kalırsa failsafe başlatır.
İki yolu ayıran şey karar ölçütü: birincide otopilot geçen süreye bakıyor, ikincide eşiğe. Alıcın hangisini yapıyorsa ayarı da ona göre yapman gerekiyor.
Eşiği gelişigüzel bir sayıya çekmek en sık düşülen tuzak. Eşik fazla yukarıdaysa hat hiç kopmadan, sen sadece gaz kolunu dibe indirdiğin için failsafe başlar.
Gaz kanalı eşiği nereye oturmalı
Şekildeki alt satıra bak: eşik gaz kolunun dip değerinin üstüne çıkınca kırmızı bölge o noktayı da içine alıyor. Doğru yer, üst satırdaki gibi iki noktanın arası.
Eşiği belirlerken tek bir ölçüm yetmez. Vericiyi kapatıp gaz kanalının kaça düştüğüne, sonra vericiyi açıp gaz kolu dipteyken kaç geldiğine ayrı ayrı bakman gerekiyor. Eşik bu ikisinin arasında bir yere oturur.
Batarya failsafe'i neden geç gelir
Radyo failsafe'i neredeyse anında gelir: ArduCopter 4.7.0'da gaz kanalı eşiği geçtikten 0,13 saniye sonra uyarı ekrandadır. Batarya tarafında araya bir sayaç girer; gerilimin eşiğin altına inmesi yetmez, orada bir süre kalması gerekir.
Varsayılan bekleme on saniye. Gerilim eşiğin altına indikten sonra uyarı 10,61 saniye sonra gelir; sert bir manevrada anlık düşen gerilim failsafe başlatmaz, paket gerçekten bittiyse başlatır.
Eşik geçildikten uyarıya kadar: kumanda hattı ve batarya
Şekilde iki noktanın arasındaki mesafeye bak. Batarya failsafe'inde "birden oldu" dediğin an, tetikleyicinin oluşmasından yaklaşık on saniye sonradır; kayda bakarken on saniye geriye gitmen gerekiyor.
Örnek: Görev uçuşunun ortasında araç eve dönüyor ve yer istasyonundaki takım arkadaşın şeritte Battery Failsafe yazdığını söylüyor. Son baktığında gerilim sağlamdı; ama uyarı, gerilimin eşiğin altına inmesinden on saniye sonra gelir ve o on saniyede ekrana bakmamıştın. Kayıtta mod değişimi satırından on saniye geriye gidince gerilimin eşiğin altına indiği anı bulursun; uyarı "birden" gelmemiştir.
Aynı olayı masanın üstünde görebilirsin
Bunu gerçek araçta denemek, kumandayı kapatıp aracın hakikaten eve dönmesini beklemek demek. Riski yüksek, tekrarı zor ve bir şey ters giderse elinde kumanda da yok.
Simülasyonda aynı zincir aynı yazılımla, hiçbir şeyi riske atmadan çalışıyor. Kendi bilgisayarında şu komutla bir araç ayağa kaldırıyorsun:
./arducopter -S -I0 --model + --speedup 1 --defaults copter.parm --home 37.1591,38.7969,500,0Sonra ikinci bir terminalde aşağıdaki izleyiciyi çalıştırıyorsun. Bu kod yalnızca dinliyor: mod değişimlerini ve failsafe mesajlarını zaman damgasıyla yazıyor. Sahada telemetri portunu verirsen gerçek uçuşta da aynı işi görüyor.
# Failsafe izleyici: mod degisimini ve failsafe mesajlarini zaman damgasiyla yazar.
# SITL icin tcp:127.0.0.1:5762, sahada telemetri icin /dev/ttyUSB0 gibi bir port ver.
import sys, time
from pymavlink import mavutil
PORT = sys.argv[1] if len(sys.argv) > 1 else 'tcp:127.0.0.1:5762'
m = mavutil.mavlink_connection(PORT, baud=57600)
m.wait_heartbeat()
print("baglandi:", PORT, "sysid", m.target_system)
# Istemeden mesaj gelmez; akisi acikca istemek gerekir.
m.mav.request_data_stream_send(m.target_system, m.target_component,
mavutil.mavlink.MAV_DATA_STREAM_ALL, 4, 1)
MOD = {v: k for k, v in m.mode_mapping().items()}
onceki_mod = None
onceki_arm = None
t0 = time.time()
while True:
msg = m.recv_match(blocking=True, timeout=5)
if msg is None:
continue
t = time.time() - t0
tur = msg.get_type()
if tur == 'HEARTBEAT':
mod = MOD.get(msg.custom_mode, str(msg.custom_mode))
armli = bool(msg.base_mode & mavutil.mavlink.MAV_MODE_FLAG_SAFETY_ARMED)
if mod != onceki_mod:
print("[%7.2f] MOD %-9s -> %s" % (t, onceki_mod or "-", mod))
onceki_mod = mod
if armli != onceki_arm:
print("[%7.2f] %s" % (t, "ARM edildi" if armli else "DISARM edildi"))
onceki_arm = armli
elif tur == 'STATUSTEXT':
yazi = msg.text.strip('\x00')
if 'Failsafe' in yazi or 'failsafe' in yazi or msg.severity <= 4:
print("[%7.2f] MESAJ sev=%d %s" % (t, msg.severity, yazi))Araç yirmi metrede asılı dururken gaz kanalını eşiğin altına indirirsen ekrana şu satırlar düşer:
baglandi: tcp:127.0.0.1:5762 sysid 1
[ 0.00] MOD - -> GUIDED
[ 0.00] DISARM edildi
[ 20.98] ARM edildi
[ 32.90] MOD GUIDED -> LOITER
[ 47.95] MOD LOITER -> RTL
[ 47.95] MESAJ sev=4 Radio Failsafe
[ 85.99] DISARM edildi
[ 86.27] MESAJ sev=2 PreArm: Throttle below failsafe
[ 86.27] MESAJ sev=2 PreArm: Radio failsafe onAsıl bilgi ortadaki iki satırda. Mod değişimi ile failsafe uyarısı aynı saniye damgasını taşıyor. Mod değişiminin sebebi işte o uyarı.
Mesajdan ayara
Uyarının ilk kelimesini bulduktan sonra bakacağın parametreler bu tabloda.
| Ekrandaki mesaj | Ne oldu | Bakacağın parametre | Uyarıya kadar |
|---|---|---|---|
| Radio Failsafe | kumanda sinyali kesildi ya da gaz kanalı FS_THR_VALUE altına düştü | FS_THR_ENABLE / FS_THR_VALUE | 0,13 s |
| Battery Failsafe | gerilim BATT_LOW_VOLT altında BATT_LOW_TIMER kadar kaldı | BATT_LOW_VOLT / BATT_FS_LOW_ACT | 10,61 s |
| GCS Failsafe | yer istasyonundan heartbeat gelmiyor | FS_GCS_ENABLE / FS_GCS_TIMEOUT | 5 s |
| EKF Failsafe | konum ya da hız varyansı eşiği aştı | FS_EKF_THRESH / FS_EKF_ACTION | 1 s |
Son sütunda radyo ve batarya satırları ArduCopter 4.7.0'da eşik geçildikten uyarıya kadar geçen süre; GCS ve EKF satırları parametre varsayılanı.
Hata Mesajları ve Anlamları
Radio Failsafe
Kumanda hattı koptu ya da gaz kanalı eşiğin altına indi. Otopilot ayarındaki davranışa geçti; varsayılan davranış RTL.
Radio Failsafe - Disarming
Aynı olay araç yerdeyken oldu. Havada olmadığı için dönüş yerine motorlar durduruldu.
Radio Failsafe Cleared
Kumanda hattı geri geldi. Dikkat: araç kendiliğinden eski moduna dönmez, modu sen geri almalısın.
Battery Failsafe
Gerilim ya da tüketilen kapasite eşiği aştı ve bekleme süresi doldu. Ölçüm hattın bozuksa bu mesaj dolu pakette de gelir.
GCS Failsafe
Yer istasyonundan gelen düzenli sinyal kesildi. Telemetri menzilinden çıkmak ya da yer istasyonu programının donması bunu tetikler.
EKF Failsafe
Konum, hız ya da pusula kestirimindeki güvensizlik eşiği aştı. Arkasında çoğunlukla titreşim ya da GPS kalitesi vardır.
PreArm: Throttle below failsafe
Henüz kalkmadan geliyor. Gaz kanalının o anki değeri eşiğin altında; ya eşik fazla yukarıda ya kumanda kapalı.
PreArm: Radio failsafe on
Radyo failsafe'i hâlâ etkin. Önce hattı geri getir, mesaj temizlenmeden ARM izni çıkmaz.
Sahada ilk üç hamle
- Mesaj şeridini kapatma. Failsafe uyarısı bir kez geçer ve mod değişiminin tek açıklaması odur.
- İndikten sonra uçuş kaydını indir, mod değişimi satırının sebebine bak. Sebep alanı pilot komutu ile failsafe'i birbirinden ayırır.
- Kaynağı bulduktan sonra o kaynağın eşiğini ve bekleme süresini kendi aracında ölç. Varsayılan değerler senin kurulumun için doğru olmak zorunda değil.
Bu konu hangi eğitimde var
Failsafe zincirinin firmware içindeki karar sırası, hangi parametrenin nerede kullanıldığı, log imzaları ve saha vakaları eğitimin Sorun Giderme bölümünde adım adım işleniyor.
Eğitim: Sensörlerden Uçuşa Temel İHA.
Bu yazı işinize yaradı mı?
Bu konuyu baştan sona öğrenin
Sezon: altı eğitimin hepsi 9 ay, ayda ₺790. Lise ve üniversite öğrencisine ayda ₺390, üye kodunuzla ilk ay ₺351. İstediğiniz ay bırakırsınız. Sezon'a başlayın · Öğrenciyim