MP地面站二次开发教程Mavlink通讯协议

news/2024/12/24 13:51:07/文章来源:https://www.cnblogs.com/shiyh/p/18627249

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。 serialPort1.Write(packet, 0, packet.Length);//通过串口读写,把封装好的packet(mavlink命令消息)发送到飞控var ack = readsomedata(sysid, compid);//读取飞控发来的应答数据
3。if (ack.result == (byte)MAVLink.MAV_RESULT.ACCEPTED) //如果飞控解锁成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/858124.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【unity】学习制作类银河恶魔城游戏-1-

vs连接unity创建对象,刚体,碰撞体积,材料 创建一个正方体当作平台,创建一个球给球加入实体/刚体,使其能够随重力下落给球加入圆形碰撞体(collider)给平台加入碰撞体更改球的下落速度(gravity n.重力)启动!!发现球落在了平台上创建物理材料,修改摩檫力和弹力给球应用…

智能监控与实时响应:下一代防火墙运维方案

北京智和信通防火墙监控运维方案,实现多品牌防火墙集中管理、实时监控、告警快速响应,支持远程控制和策略编排,通过智能化运维降低运维负担,确保网络稳定高效运作。 防火墙是维护网络安全的关键要素之一。随着网络攻击手段的不断复杂化、智能化以及高速化的发展,防…

实验六c++

实验任务四 源代码 Vector.hpp1 #include<iostream>2 #include<stdexcept>3 using namespace std;4 5 template<typename T>6 class Vector {7 public:8 Vector(int n);9 Vector(int n, T a); 10 Vector(const Vector<T>& c); 11 …

10款装了不后悔的高效PC软件,桌面便签、日历、录屏、搜索……

在使用Win电脑办公时,一些简单高效的工具软件可以让工作事半功倍!今天就来介绍10款装了不后悔的软件! 1、浏览器:夸克 电脑浏览器,除了电脑自带的edge,还可以试试夸克,它有自带的网盘,可以保存重要的资料,在手机端也可以同步使用。2、桌面便签+待办+日历:敬业签 在电…

Win10 系统安装 Linux 子系统教程(WSL2 + Ubuntu 20.04 + xlaunch桌面 )

安装 WSL 1 安装 WSL1 (1)启用“适用于 Linux 的 Windows 子系统”可选功能 需要先启用“适用于 Linux 的 Windows 子系统”可选功能,然后才能在 Windows 上安装 Linux 分发。可以使用命令行的方式,也可以使用图形界面的方式。 图形界面方式 在【设置 -> 更新与安全->…

#渗透测试 kioptix level 2靶机通关教程及提权

声明! 文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!工具链接:https://pan.quark.cn/s/530656ba5503 一、准备阶段 复现请将靶机ip换成自己的kali: 192.168.108.130 靶机:192.168.108.1361. 找出ip端口…

【日记】财经绞肉机(1037 字)

正文我真诚地希望,每年年底的时候,谁能把我一棒子敲晕,让我在 1 月 1 日元旦的时候准时醒来,这样我就不用度过年底这段疯狂忙碌的日子了。这段时间大家都是肉眼可见的忙碌,但老搭档柜面主管除外,她刚好轮岗。新的柜面主管又必须培训一周才能上岗。看起来两个人都煞是清闲…

微软edge浏览器 v131.0.2903.99便携版

点击上方蓝字睿共享关注我 前言 Microsoft Edge浏览器是个新浏览器,它用起来很简单,界面也很清爽。这个浏览器功能特别多,里面还带了微软的小助手Contana,能帮用户做不少贴心的事儿。它支持安装各种小工具(插件),还能在网页上做标记。而且,管理网页标签也变得很容易,不…

Ubuntu22.04 LTS 安装nvidia显卡驱动

准备跑老师给定的Github上的多模态源码,但是用了这么久ubuntu还没有尝试过安装nvidia驱动,好在也是一次成功,于是记录下来。 借鉴的是https://blog.csdn.net/Eric_xkk/article/details/131800365这篇文章,按照流程来基本没有问题,不过个人觉得有些步骤比较冗余,所以记录下…

中年程序员的新赛道:摆摊?(附赠原味牛杂和卤味摆摊教程)

中年程序员的职业困境在当今竞争激烈的职场环境中,中年程序员面临着诸多挑战。随着年龄的增长,身体机能逐渐下降,长时间的高强度工作变得越发吃力。与此同时,职场的竞争压力却丝毫未减,年轻一代程序员如雨后春笋般涌现,他们往往对新技术有着更敏锐的洞察力和更快的学习速…

E91 换根DP P3647 [APIO2014] 连珠线

视频链接:E91 换根DP P3647 [APIO2014] 连珠线_哔哩哔哩_bilibili P3647 [APIO2014] 连珠线 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)// 换根DP O(n) #include <iostream> #include <cstring> #include <algorithm> #include <vector> usin…

KeilV5在线找器件支持包

在keil软件中选择Pack installer 进入之后,会自动获取软件最新的包列表。速度较慢,需要长时间等待