İrtifa kayıyor, barometre normal görünüyor
Mission Planner sabit irtifa gösterirken drone alçalıyorsa barometre kaymıştır. İrtifa kaymasının üç kök nedenini logdan ayırmayı adım adım anlatıyoruz.
Drone havada duruyor, kumandaya dokunmuyorsun. Mission Planner ekranında irtifa 20 metrede sabit. Ama gözünle bakınca drone yavaş yavaş alçalıyor. Bir süre sonra ağaç hizasına iniyor, ekran hâlâ 20 metre diyor.
Bu durumda ilk akla gelen şey barometrenin bozulduğu oluyor. Çoğu zaman bozulmuş değil. Barometre kendi ölçtüğü şeyi doğru söylüyor; sorun o ölçümün artık gerçek yüksekliğe karşılık gelmemesi.
Ekrandaki irtifa nereden geliyor
Otopilot yüksekliği doğrudan ölçmez. Hava basıncını ölçer ve basınçtan yüksekliğe geçer. Yukarı çıktıkça basınç düşer, aşağı indikçe artar. Kalkıştan önce okunan basınç sıfır kabul edilir, sonrasındaki her değişim yükseklik farkı olarak yorumlanır.
Bu yüzden ölçülen basınç gerçekten yükseklik değiştiği için değil de başka bir sebeple değişirse, otopilot bunu tırmanış ya da alçalış sanır. İrtifa döngüsü de bu sahte hareketi bastırmak için drone'u ters yönde hareket ettirir. Ekranda hedeflenen yükseklik korunmuş görünür, gerçekte korunmaz.
Aşağıdaki grafikte barometre irtifası saniyede 5 santimetre kaymaya başladığında iki eğrinin nasıl ayrıldığına bak.
Ekran 20 m diyor, drone alçalıyor
Kayma başladıktan sonra ekrandaki değer 20 metrede kalır, gerçek yükseklik 20 metreden 1,5 metreye iner. Aradaki fark 18,6 metreyi bulur ve alçalma hızı kaymanın hızıyla neredeyse aynıdır.
Kayma durduğunda alçalma da durur, ama kaybedilen yükseklik geri gelmez.
Ekrandaki sayı bir ölçüm değil, bir yorumdur. Barometrenin okuduğu basıncın yüksekliğe çevrilmiş hâlidir. Basınç yalan söylerse, ekran da aynı yalanı tutarlı biçimde gösterir.
Basıncı bozan üç şey
Aynı belirtiyi üreten üç ayrı sebep var ve hangisi olduğunu ne zaman ortaya çıktığına bakarak ayırıyorsun. Aşağıdaki şekilde her birinin logdaki izini karşılaştır.
- Sıcaklık: otopilot kartı çalışırken ısınır, barometre ısındıkça basıncı kaydırarak okur. Bu, drone hiç havalanmadan masada dururken bile birikir.
- Gövde içi hava akımı: barometre kabinin içindeki basıncı ölçer. Üst ve alt havalandırma delikleri dengesizse ileri uçuşta kabin içinde basınç farkı oluşur, manevra bitince birden kaybolur.
- Havanın kendisi: uzun uçuşlarda atmosfer basıncı zaten değişir. Aynı rotayı iki kez uçtuğunda yükseklikler tutmuyorsa sebep genelde budur.
Aynı belirti, logda üç ayrı iz
Doğrudan güneş ışığının barometrenin üstüne düşmesi de ani sapmalara yol açar. Barometrenin üstündeki süngerin görevi ışığı ve hava akımını kesmek, havayı ise geçirmektir. Sünger zamanla büzüşüp yerinden kayarsa koruma biter.
Örnek: Sıra sana gelince drone'u açar açmaz kalkıyorsun ve kart ilk dakikalarını havada ısınarak geçiriyor. Ekran 20 metre derken drone gözle görülür biçimde alçalıyorsa ilk bakacağın yer logdaki BARO[0].Temp ile BARO[0].Alt eğrilerinin birlikte yükselip yükselmediği. Aynı drone öğle güneşinde gölgeden açık alana geçince irtifası birden sıçrıyorsa, bu kez süngerin yerinde olup olmadığına bak.
Kendi logunda neye bakacaksın
Parametre değiştirmeden önce hangi katmanın yanlış olduğunu bulman gerekiyor. Uçuş logunu indir ve şu sırayı takip et.
- Logda CTUN.BAlt ile CTUN.Alt'ı üst üste çiz. İkisi de aynı yönde kayıyorsa sorun tahminde değil, barometrenin okuduğu basınçta.
- BARO[0].Temp ile BARO[0].Alt'ı aynı grafiğe koy. Sıcaklık yükselirken irtifa da yükseliyorsa termal kayma; kart ısınırken yerde dururken bile olur.
- BARO.Alt ile GPS.Alt farkını zamana karşı çiz. Fark uçuş boyunca büyüyorsa hava basıncı değişiyor, kısa süreli rüzgâr etkisi değil.
- Kaymanın yalnızca manevrada olup olmadığına bak. İleri uçuşta ya da yana kayışta düşüyorsa gövde içi basınca ve pervane rüzgârına bakılır.
- İki barometre varsa BARO[0].Alt ile BARO[1].Alt'ı karşılaştır. Yalnızca biri kayıyorsa donanım, ikisi birden kayıyorsa gövde ya da hava.
Bu eğrilerin hepsi ArduPilot'un kendi log mesajlarında var. Alan adlarının resmî açıklamalarını log mesajları listesinde bulabilirsin.
Kendi kartında canlı izleme
Log indirmeden önce hızlı bir fikir edinmek istersen, kartına bağlanıp bildirilen irtifa ile GPS yüksekliği arasındaki farkın zamanla büyüyüp büyümediğine bakabilirsin. Aşağıdaki kod bağlandığı andaki farkı sıfır kabul eder ve sonrasındaki değişimi yazar.
# Barometre irtifasi ile GPS irtifasini yan yana izler.
# Kendi kartina baglaniyorsan baglanti adresini degistir:
# USB -> 'com3' ya da '/dev/ttyACM0'
# telem -> '/dev/ttyUSB0', baud=57600
import time
from pymavlink import mavutil
BAGLANTI = 'tcp:127.0.0.1:5760' # kendi kartin icin degistir
SURE_SN = 60 # kac saniye izlenecek
arac = mavutil.mavlink_connection(BAGLANTI)
arac.wait_heartbeat()
print('baglandi, sysid', arac.target_system)
for msg_id in (mavutil.mavlink.MAVLINK_MSG_ID_GLOBAL_POSITION_INT,
mavutil.mavlink.MAVLINK_MSG_ID_SCALED_PRESSURE,
mavutil.mavlink.MAVLINK_MSG_ID_GPS_RAW_INT):
arac.mav.command_long_send(
arac.target_system, arac.target_component,
mavutil.mavlink.MAV_CMD_SET_MESSAGE_INTERVAL, 0,
msg_id, 500000, 0, 0, 0, 0, 0)
ekran = gps = basinc = sicaklik = None
fix_var = False
t0 = time.time()
ilk_fark = None
print(' sure ekran_m gps_m fark_m basinc_hPa baro_C')
while time.time() - t0 < SURE_SN:
m = arac.recv_match(blocking=True, timeout=2)
if m is None:
continue
tip = m.get_type()
if tip == 'GLOBAL_POSITION_INT':
ekran = m.relative_alt / 1000.0
elif tip == 'GPS_RAW_INT':
fix_var = m.fix_type >= 3 # fix yoksa GPS irtifasi anlamsiz
gps = m.alt / 1000.0
elif tip == 'SCALED_PRESSURE':
basinc = m.press_abs
sicaklik = m.temperature / 100.0
if fix_var and None not in (ekran, gps):
fark = ekran - gps
if ilk_fark is None:
ilk_fark = fark
print('%5.0f %8.2f %8.2f %8.2f %11.2f %7.2f'
% (time.time() - t0, ekran, gps, fark - ilk_fark, basinc, sicaklik))Kart yeni açıldıysa ilk dakikalarda barometre sıcaklığının yükseldiğini, fark sütununun da onunla birlikte kaydığını görürsün. Kod çalışırken ekrana şöyle bir tablo düşer:
baglandi, sysid 1
sure ekran_m gps_m fark_m basinc_hPa baro_C
10 0.00 500.10 0.00 954.60 26.98
10 0.00 500.10 0.00 954.60 27.06
11 0.00 500.10 0.00 954.60 27.13
11 0.00 500.10 0.00 954.60 27.21
12 0.00 500.10 0.00 954.60 27.28
12 0.00 500.10 0.00 954.60 27.36
13 0.00 500.10 0.00 954.60 27.43Fark sütunu düzenli olarak tek yöne büyüyorsa kayma var demektir. Sıcaklık sütunuyla birlikte büyüyorsa ısınma kaynaklıdır.
Hata Mesajları ve Anlamları
Barometre ve irtifa ile ilgili kalkış öncesi mesajların hepsi ArduPilot kaynak kodunda birebir şu şekilde geçer.
PreArm: Baro: not healthy
Otopilot barometreden geçerli veri alamıyor. Sensör cevap vermiyor ya da okunan değerler sağlık kontrolünden geçmiyor. Kablo, lehim ve varsa ikinci barometrenin durumu bakılır.
PreArm: Baro: GPS alt error 5811m (see BARO_ALTERR_MAX)
GPS yüksekliği ile basınçtan hesaplanan yükseklik arasındaki fark kabul edilen sınırı aşmış. Sınırı BARO_ALTERR_MAX belirler ve varsayılanı 2000 metredir. Bu kadar büyük bir fark genelde sensörün yanlış modelle okunmasından gelir, birkaç metrelik kaymadan değil.
PreArm: Altitude disparity
Barometreden gelen yükseklik ile atalet çözümünün yüksekliği birbirinden ayrılmış. Bu kontrolün eşiği kaynak kodda 1.0 metre olarak tanımlıdır. Kalkış öncesi görülen en dar irtifa kontrolü budur.
PreArm: Need Alt Estimate
Otopilotun elinde henüz güvenilir bir yükseklik tahmini yok. Filtre oturmamış ya da barometre verisi kesik. Aynı gerekçe uçuş sırasında mod değiştirmeye çalışırken de karşına çıkabilir.
PreArm: EKF height variance
Yükseklik tahmininin belirsizliği kabul edilen bandın dışında. Titreşim ve barometre gürültüsü birlikte bu mesajı üretir; tek başına barometreyi suçlamadan önce titreşim seviyelerine de bakılır.
Kaynağı kendi kartında ölç
Bu davranışın büyük kısmı gerçek donanıma bağlı: kartın ısınması, gövdenin delik düzeni, güneş ve pervane rüzgârı. Bu yüzden kaynağı masada ve kısa bir uçuşta ölçerek bulursun.
Bunun için üç şey yeterli: kartı çalıştırıp hiç havalandırmadan yirmi dakika bekleyip bildirilen irtifanın kaç metre kaydığına bak, aynı sırada barometre sıcaklığını kaydet, sonra kısa bir uçuşta ileri gidip durarak irtifanın manevrayla oynayıp oynamadığını gör. Bu üç ölçüm, üç kök nedenden hangisiyle uğraştığını söyler.
Kursta devamı
Bu konunun dersi Sensörlerden Uçuşa Temel İHA eğitiminde var. Derste kaymanın kaynak koddaki karar sırasını, parametrelerin gerçek varsayılan değerlerini, log imzası tablolarını ve sahadan gelen vakaları bulacaksın.
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