【PX4与QGC通信----Mavlink学习笔记】

本文详细介绍了MAVLINK1和MAVLINK2的区别,包括首字节、协议结构变化、安全特性升级等。重点讲解了PX4与QGC之间的通讯协议,以及如何通过messageID解析消息内容和协议转换技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录一下在调试指控与协议转换时MAVLINK的使用与修改

MAVLINK1:

目前共有MAVLINK 1 和MAVLINK2两个版本,最新使用MAVLINK2 居多,如自行设计协议,需要在PX4配置中选定使用哪个协议,以防协议无法校验成功,MAVLINK1首字节为FE,MAVLINK2首字节为FD,其余区别可见下文,在测试中应当注意协议版本
在这里插入图片描述

MAVLINK2

在这里插入图片描述
在这里插入图片描述

与V1.0不同点:(最明显区别 首字节:V1.0、FE;V2.0、FD)

(1)INC FLAGS(Incompatibility flags):此标志位会影响包的结构,标志指示数据包是否包含某些在分析数据包时必须考虑的功能。 例如,不兼容标志等于0x01表示该数据包已签名,并且在数据包的末尾附加了签名;
(2)CMP FLAGS(compatibility flags):不影响包的结构,它指示如果没有理解,可以忽略的标志,即使无法解释标志,也不会阻止解析器处理消息;
(3)Message ID (MSGID):相较于V1.0版本的8位变为24位,它允许在MAVLink 2.0中使用更多类型的消息,最多可以达到16777215种类型;
(4)可选用的SIGNATURE:最后,MAVLink 2.0使用可选的13字节签名域来确保链接是防篡改的。 此功能显着改善了MAVLink 1.0的安全性,因为它允许对消息进行身份验证并验证消息源自受信任的源。 如果不兼容标志设置为0x01,则会附加消息的签名;
(5)STX:1.0版本中为0XFE,2.0版本中为0XFD。

MAVLINK 官网协议个人理解

在使用时,根据message ID 来确认每条消息包的内容,消息对应的具体内容可参考mavlink官网
参考MAVLINK全部协议内容:MAVLINK协议
官网协议中分为三个内容:
(1)MAVLink Type Enumerations (消息枚举)
指的是消息中各个变量中不同数字代表的意义,如
在这里插入图片描述

在这里插入图片描述
HI_LATENCY2中的failureflags中为HL_FAILURE_FLAG,其中包含哪些枚举的变量
(2)MAVLink Commands (需求信息)
该内容也是消息中的一个子内容,内容最多7字节,比如
在这里插入图片描述
在这里插入图片描述

该需求信息包含在COMMAND_INT消息中,其中command字节为需求的ID,剩下的七个字节填入消息中
(3)MAVLINK MESSAGE(消息类型)
这个最好理解,就是消息中msgid对应的协议包内容,比如
在这里插入图片描述
HEARTBEAT消息是MAVLink中最重要的消息,msgid为0,其结构上图所示。它表示无人系统存在且处于活动状态。无人系统定期(通常每秒)将心跳消息发送到地面站,以通知GCS它处于活动状态。心跳是必备消息。除报头外,消息有效负载还包含有关无人系统的基本信息。

(1)type:它表示微型飞行器的类型。根据最新规范,在MAV_TYPE中定义了33种预定义类型,包括四旋翼(MAV_TYPE_QUADROTOR = 2),直升机(MAV_TYPE_HELICOPTER = 4),固定翼(MAV_TYPE_FIXED_WING = 1),以及其他几种。

(2)autopilot:自动驾驶的类型。 MAV_AUTOPILOT枚举结构中定义了几种类型。例如,MAV_AUTOPILOT_GENERIC = 0表示通用自动驾驶仪,MAV_AUTOPILOT _ARDUPILOTMEGA = 3表示ArduPilot自动驾驶仪,MAV_AUTOPILOT_PX4 = 12用于PX4自动驾驶仪。

(3)base_mode:指示不同的操作模式。 正确理解心跳消息并从中提取有用信息对理解base_mode至关重要。 它以8位编码。 共有8个预定义的标记。

(4)custom_mode:自定义模式,也是必不可少的。 它指示除基本模式外还解释的自动驾驶仪特定标记。 在心跳消息解析中使用它来确定自动驾驶仪系统的飞行模式。 自定义模式有一些预定义的值,其中0表示手动飞行模式,4表示引导模式,10表示自动模式,11表示RTL模式,9表示LAND模式,2表示ALT_HOLD,5表示LOITER。

(5)system_status:一个系统状态的标志。 根据最新规范,已定义:

(6)mavlink_version:表示MAVLink版本。 用户不可编辑,由协议设置。
以上各个内容都可通过MAVLink Type Enumerations(类型枚举)去查

PX4与QGC通讯协议内容

在测试PX4与QGC的通信数据包时,最开始可以查看下飞控往MAV串口长发哪些帧,此时我们可以将飞控上电,并将一路串口连接到电脑上,打开串口助手查看

在这里插入图片描述
根据以上的基础知识,结合官网协议内容,我们对这两帧内容进行解析:
第一帧,首字节0xFE代表MAVLINK1,第二个字节0x51代表有效载荷81个字节,第三个41代表包的序列号,计数用的,第四个0x01代表系统ID,官方注释:发送消息的 system (飞机) 的 ID。 用于区分网络上的系统。第五个0x01代表组建ID,官方注释:Used to differentiate components in a system (e.g. autopilot and a camera). Use appropriate values in MAV_COMPONENT. 个人理解指的是系统中的子系统如飞控或者相机发送的mavlink协议,第六个字节0x5D代表消息ID,即为#93,查看官网协议表,HIL_ACTUATOR_CONTROLS ( #93 )为半实物仿真系统的控制输出消息,帧长度为81字节,各字节内容如下,0x68,0x1A为校验位低字节、高字节;
在这里插入图片描述
同理第二帧为帧长度为21的msgid为36的SERVO_OUTPUT_RAW ( #36 ),电机输出值

MAVLINK协议收发与协议转换

持续更新

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值