使用pymavlink库接收和发送mavlink消息
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用pymavlink库接收和发送mavlink消息相关的知识,希望对你有一定的参考价值。
我在QGC(地面控制站)和Python车辆之间创建了一个代理。这是代码:
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。当我运行代码时,我得到这个error。
有没有人可以帮助我?
答案
如果您在发送之前打印消息,则会在尝试发送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
以上是关于使用pymavlink库接收和发送mavlink消息的主要内容,如果未能解决你的问题,请参考以下文章