Softivation

Raspberry Pi'ye kablo bağlı, MAVLink hiç akmıyor

Raspberry Pi Pixhawk'a bağlı, Python kodu çalışıyor ama MAVLink verisi gelmiyor. Heartbeat varken telemetri neden akmaz ve hangi iki isteği yollamalısın?

Furkan IŞIKAY 4 dk okuma

Raspberry Pi'yi Pixhawk'ın telemetri portuna bağladın, kablolar doğru renklerde, güç geliyor. Python kodunu çalıştırdın, bağlantı kuruldu yazıyor. Ama ekranda konum yok, irtifa yok, parametre listesi boş.

Tek gelen şey birkaç saniyede bir tekrar eden bir sinyal. Gerisi sessiz. Kablo sorunu gibi görünüyor ama değil.

Neden yalnızca tek bir sinyal geliyor

Pixhawk bağlantı kurulur kurulmaz yalnızca kendini tanıtan bir sinyal gönderir. Konum, irtifa, batarya gibi telemetri bilgileri ve parametre listesi otomatik gelmez.

Bunları göndermesi için otopilottan açıkça istemen gerekir. Bu protokolün kuralıdır; kabloyu ya da portu değiştirmek sonucu değiştirmez.

En sık yapılan hata: bağlantı kurulduktan hemen sonra konum ya da parametre okumaya çalışmak. İstek gönderilmeden otopilot hiçbir şey göndermez; kod "bağlandı" der ama veri hiç gelmez.

Bağlantıdan sonra hatta ne var

Şekilde soldaki altı saniyeye bak. İstek yollanmadan hatta yalnızca tanıtım sinyali ve home noktası oturduğunda bir kez gelen home ve konum başlangıcı bilgisi var.

Bağlantıdan sonra Pixhawk'tan Pi'ye ne akar

Bağlantıdan sonra Pixhawk yalnızca periyodik HEARTBEAT ve bir kez konum başlangıcı yollar; Pi parametre listesi ve telemetri isteği yollayınca yoğun mesaj akışı başlar.
Nereye bak: aşağıdan yukarı giden iki kırmızı ok. Mavi yoğun akış ancak Pi bu istekleri yolladıktan sonra başlar; soldaki altı saniyede gri HEARTBEAT okları ve home oturduğunda bir kez gelen koyu ok dışında bir şey yok.

Yoğun akış, Pi parametre listesini ve telemetri akışını istedikten sonra başlar. Bu iki isteği yollayan kod aşağıda.

İki isteği kendin yolla

Bağlantıdan sonra iki isteği açıkça gönder: parametreler için PARAM_REQUEST_LIST, telemetri için REQUEST_DATA_STREAM (ya da güncel SET_MESSAGE_INTERVAL). İkisi de gönderilmeden ekran boş kalır.

Python
from pymavlink import mavutil

m = mavutil.mavlink_connection('tcp:127.0.0.1:5760')
m.wait_heartbeat()

# Parametreler istenmeden gelmez
m.mav.param_request_list_send(m.target_system, m.target_component)

# Telemetri istenmeden gelmez (eski API, hala calisir)
m.mav.request_data_stream_send(
    m.target_system, m.target_component,
    mavutil.mavlink.MAV_DATA_STREAM_EXTRA1, 4, 1)

İstek yollamadan beklersen altı saniye boyunca yalnızca tanıtım sinyalini görürsün. PARAM_REQUEST_LIST'i yollarsan parametre listesi birkaç saniyede boşalır (ArduCopter 4.7.0'da 4 saniyede 1369 PARAM_VALUE; sayı karta ve sürüme göre değişir), stream isteğinden sonra da 4 saniyede yaklaşık 318 telemetri mesajı akar.

Örnek: Görüntü işleme yapan Pi'nin kodu, hedefi bulunca drone'un o anki konumunu okuyup yer istasyonuna bildirecek. Kod bağlantı kurulur kurulmaz konum mesajını beklerse sonsuza kadar bekler ve takım kabloyu, portu, baud hızını değiştirerek saatler kaybeder. Kodun açılış sırasına önce bu iki isteği koy, konumu ondan sonra oku.

Hata Mesajları ve Anlamları

Birebir kaynakta geçen mesaj tipi adları ve forumlarda bildirilen semptomlar:

Yalnızca tanıtım sinyali geliyor, başka mesaj yok. Bağlantı ve protokol doğru ama hiçbir istek gönderilmemiş. Forumda birebir aynı semptom: "Companion computer receives only heartbeat messages." Yardımcı bilgisayar yalnızca tanıtım sinyalini görüyor, geri kalan stream'ler istek gönderilene kadar hiç gelmiyor.

recv_match() hep None dönüyor. pymavlink ile bağlanıp beklenen mesaj tipini beklerken sürekli None dönmesi de aynı kökten: mesaj hiç akmadığı için yakalanacak bir şey yok. Forumda "PyMavlink no Message Output" başlığı bu durumu anlatıyor.

Parametre isteği zaman aşımına uğruyor. mavp2p ya da mavlink-router gibi bir ara katman kullanıyorsan PARAM_REQUEST_LIST bazen kayboluyor; forumda "Getting Heartbeat but Param requests hang" bu senaryoyu anlatıyor.

Kursla devam et

Bu konuyu kaynak kod kanıtıyla ve saha vakalarıyla birlikte İHA Haberleşme Teknolojileri eğitiminde anlatıyoruz.

Bu yazı işinize yaradı mı?

Ücretsiz kaynakArduPilot SITL kurulum rehberiKodunuzu sahaya çıkmadan SITL'de deneyin: kurulum ve bağlantı baştan sona.