簡體   English   中英

使用pymavlink庫接收和發送mavlink消息

[英]receiving and sending mavlink messages using pymavlink library

我在Python中創建了QGC(地面控制站)和車輛之間的代理。 這是代碼:

gcs_conn = mavutil.mavlink_connection('tcpin:localhost:15795')
gcs_conn.wait_heartbeat()
print("Heartbeat from system (system %u component %u)" %(gcs_conn.target_system, gcs_conn.target_system))
vehicle = mavutil.mavlink_connection('tcp:localhost:5760')
vehicle.wait_heartbeat() # recieving heartbeat from the vehicle
print("Heartbeat from system (system %u component %u)" %(vehicle.target_system, vehicle.target_system))
while True:
     gcs_msg = gcs_conn.recv_match()
     if gcs_msg == None:
         pass
     else:
         vehicle.mav.send(gcs_msg)
         print(gcs_msg)

     vcl_msg = vehicle.recv_match()
     if vcl_msg == None:
         pass
     else:
         gcs_conn.mav.send(vcl_msg)
         print(vcl_msg)

我需要接收來自QGC的消息,然后將它們轉發到車輛,還需要接收來自車輛的消息,並將它們轉發給QGC。 當我運行代碼時,出現此錯誤

有誰可以幫助我嗎?

如果在發送之前打印消息,您會發現嘗試發送BAD_DATA消息類型時,消息總是失敗。

因此,這應該可以解決(與vcl_msg相同):

if gcs_msg and gcs_msg.get_type() != 'BAD_DATA':
    vehicle.mav.send(gcs_msg)

PD:我注意到您沒有將tcp指定為輸入或輸出,它默認為input 比意味着兩個連接都是輸入。 我建議將GCS連接設置為輸出:

gcs_conn = mavutil.mavlink_connection('tcp:localhost:15795', input=False)

https://mavlink.io/en/mavgen_python/#connection_string

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM