MP地面站二次开发教程(三)Mavlink通讯协议(1)

目录

1、协议介绍

消息结构

消息解析

消息数据流

2、消息解析

3、指令发送


Mavlink主要是飞控和地面站之间的消息指令发送,包含地面站解析飞控发来的mavlink数据流,和地面站向飞控发送mavlink指令(指令,航点数据,校准数据)两部分。地面站有mavlink库,对应飞控端也有一套mavlink库。

1、协议介绍

Mavlink协议官网:http://qgroundcontrol.org/mavlink/start Pixhawk/APM都是采用MAVLINK协议实现的飞控的数据链路传输。先简单介绍下mavlink协议。Mavlink协议最早由 苏黎世联邦理工学院 计算机视觉与几何实验组的 Lorenz Meier于2009年发布,并遵循LGPL开源协议。Mavlink协议是在串口通讯(可扩展为网络TCP/IP通信)基础上的一种更高层的开源通讯协议,主要应用在微型飞行器(micro aerial vehicle)的通讯上。Mavlink是为小型飞行器和地面站(或者其他飞行器)通讯时常常用到的那些数据制定一种发送和接收的规则并加入了校验(checksum)功能。

消息结构

比较简单的消息结构如图:

消息解析

消息数据流

我们接上数传在串口调试助手具体分析下MAVLINK消息的解析:
尝试解析 0号消息

FE 09 57 01 01 00 00 00 01 00 02 0C 51 03 03 04 5F - FE消息头, - 09表示数据包长度, - 57消息帧序号,- 01表示系统ID, - 01表示组件ID, - 00表示消息序号(表示心跳包),-00 00 01 00 02 0C 51 03 03 有效载荷数据


http://mavlink.org/messages/common(Mvlink消息定义)
 00 ---- type
00 ---- autopilot
01 ---- base_mode(基本模式)
00 02 0C 51 ---- custom_mode(自稳模式)
03 ---- sytem_status
03 ---- mavlink_version
04 5F --CRC校验
尝试解析
FE 3E 4B 01 01 69 DB 7E C8 1D 00 00 00 00 A0 6D 2C BD CC 23 E3 BE D2 D5 1C C1 FC 3A AD 3A 68 6C 31 3A 00 E0 99 BA EB 43 9A BE 40 1B 6D 3E 9F 86 04 3F 00 00 00 00 00 00 00 00  70 72 06 44  1F 85 04  42 FF 1B 9F F8  69号消息

2、消息解析

MissionPlanner-MissionPlanner1.3.49\ExtLibs\SimpleExample 这个源码目录里面有一个非常好的地面站开发入门教程,是一个原始的地面站开发教程,里面有完整的协议解析,指令发送,飞控应答方法


步骤

  1. 打开串口
  2. 配置串口,设置超时时间
  3. 读取串口数据流,调用mavlink库,解析数据packet.data.GetType()==typeof(MAVLink.mavlinkheartbeatt)
  4. 向飞控请求数据流mavlink.GenerateMAVLinkPacket10(MAVLink.MAVLINKMSGID.REQUESTDATASTREAM
  5. 判断消息包类型
  6. 发送mavlink消息指令,等待飞控应答

3、指令发送

向飞控发送指令协议,重点是指令发送成功,飞控接受以后会返回一个应答数据,通过判断应答数据是否成功,可以知道飞控是否接受本次指令。

  1. byte[]packet=mavlink.GenerateMAVLinkPacket10(MAVLink.MAVLINKMSGID.COMMAND_LONG,req);//消息命令封装,封装到packet
  2. 2 serialPort1.Write(packet, 0, packet.Length);//通过串口读写,把封装好的packet(mavlink命令消息)发送到飞控var ack = readsomedata(sysid, compid);//读取飞控发来的应答数据
  3. if (ack.result == (byte)MAVLink.MAV_RESULT.ACCEPTED) //如果飞控解锁成功
  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chris_Brown

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值