STM32控制APM飞控(五)MAVLINK的C源码的解释及MAVLINK心跳包

本文详细介绍了MAVLink协议中的心跳包,它是与APM飞控建立连接的关键。心跳包包含系统ID、组件ID、消息编号、用户模式、飞行器类型、飞控板类型、基本模式、系统状态和 MAVLink 版本等信息,通过这些信息可以判断系统状态和控制模式。理解心跳包对于STM32与APM飞控的通信至关重要。
摘要由CSDN通过智能技术生成

心跳包是整个mavlink中最典型的数据包,也是必不可少的,因为要与APM连接,必须要有心跳,这样APM才会认为你与它建立联系,才会接受与我们通信。

摘自:https://blog.csdn.net/u011919377/article/details/78466052

STM32控制APM飞控(五)MAVLINK的C源码的解释及MAVLINK心跳包

JIN金 2017-11-07 11:23:53 3595 收藏 6

分类专栏: APM飞控 文章标签: APM MAVLINK STM32 无人机

版权

MAVLINK的C源码的解释及MAVLINK心跳包

一.MAVLINK转化成C源码后的文件及文件夹解释

用pathon2.7将从github官网下载下来的MAVLINK源码转换成c语言源码的文件夹如图:

解释:

a:ardupilotmega文件夹(APM):文件夹里都是APM飞控板自己定义的mavlink消息类型,原始的mavlink消息放在commom文件夹里面(大部分消息在common文件夹中).

b:checksum.h文件:存放的是计算的校验码的代码

c:malink_helpers.h文件:将各个消息包补充完整(调用checksum.h中的函数计算校验码并补上消息帧的头),比如:sysid和compid等,成为mavlink消息帧再发送

d:mavlink_conversions.h:里面是dcm,欧拉角,四元数三种姿态表示方法之间的转换代码.

e:mavlink_types.h文件:里面放的是各个枚举类型,主要是发送参数时使用的数据格式,参数应该被复制到本机类型(无类型转换).

f:protocol.h文件:里面是一些宏定义和字符处理的函数

 

二.MAVLINK的心跳包详解

样例数据:

FE 09 36 01 01 00 00 00 00 00 0D 03 51 03 03 F4 11

FE 09 3D 01 01 00 00 00 00 00 0D 03 51 03 03 A9 7D

FE 09 AE 01 01 00 02 00 00 00 0D 03 51 03 03 D0 F6

上述是3帧心跳包数据,解释如下:

第一个数FE:mavlink数据包的起始位(mavlink1.0是以FE开头)

第二个数09:表明数据包的有效载荷长度为9个即00 00 00 00 0D 03 51 03 03

第三个数36/3D/AE:发送该心跳包是从开机开始算的第几个数据包,中间可能掺杂了其他的数据包

第四个数01:sysid(system ID)发送系统的ID

第五个数01:compid(componene ID)发送单元ID

第六个数00:代表本消息的有效载荷的编号,即心跳包的编号是#0,如下是官网的截图

第七个数(uint32_t即4个16进制数)00 00 00 00:即custom_mode(用户模式),即用于自动驾驶仪的特别的一个标志位的模式设置,APM中包括17模式,在使用APM飞控时,根据自己的目的要在使用前,先给APM发送改变模式的数据包,将APM变化模式,一般custom_mode和base_mode是一起的。00 00 00 00表示0是STABILIZE(自稳模式)

第八个数0D:即type(类型),0D表示MAV_TYPE_HEXAROTOR(六轴)

第九个数03:即autopilot(微型飞行器即飞控板类型),03表示MAV_AUTOPILOT_ARDUPILOTMEGA(ArduPilotMega / ArduCopter即APM飞控)

第十个数51:即base_mode(基本模式),如下图

源码里面base_mode都是用‘|’即或运算,所有51=32+16+2+1,即base_mode=MAV_MODE_FLAG_HIL_ENABLED | MAV_MODE_FLAG_STABILIZE_ENABLED | MAV_MODE_FLAG_TEST_ENABLED | MAV_MODE_FLAG_CUSTOM_MODE_ENABLED

第十一个数03:即system_status(系统状态标志)如下图,03表示系统已接地并处于待机状态。任何时间都可以发射。

第十二个数03:即mavlink_version(mavlink版,不可写的用户,获取补充协议因为神奇的数据类型),默认就是3,这是开发者写好的。

第十三和十四个数F4 11:这是校验位,调用系统函数后,会加到消息包的最后。

 

心跳包是整个mavlink中最典型的数据包,也是必不可少的,因为要与APM连接,必须要有心跳,这样APM才会认为你与它建立联系,才会接受与我们通信。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值