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

2023-05-16

目录

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) //如果飞控解锁成功
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MP地面站二次开发教程(三)Mavlink通讯协议(1) 的相关文章

  • docker基础命令操作---镜像操作

    1 搜索官方仓库镜像 xff1a docker search image name 镜像名 例如 xff1a docker search nginx 命令执行结果参数说明 xff1a 参数 说明 NAME 镜像名称 DESCRIPTION
  • ESP8266连接天猫精灵(一)

    背景 接触天猫精灵后 xff0c 就想作一些小东西能接入天猫精灵 查看官网的文档后 xff0c 选择了ESP系列 xff0c 官方在文档中也比较推荐 读技术文档是个很难受的事情 xff0c 容易犯困 xff0c 最好有可以操作的设备 准备如
  • Windows下Boost库的安装与使用

    目录 1 基本介绍 2 下载安装 3 配置boost环境 xff08 VS2010 xff09 4 测试 1 基本介绍 Boost库是为C 43 43 语言标准库提供扩展的一些C 43 43 程序库的总称 xff0c 由Boost社区组织开
  • 嵌入式JetSon TX2上使用RealSense D435 (外加IMU芯片) 运行RTAB-Map与VINS-MONO的全流程记录

    本周成功的在JetSon TX2上移植了Vins Mono与RTAB Map xff0c 并使用摄像头RealSense D435顺利跑通了这两个框架 中间遇到了各种各样神奇的问题 xff0c 踩坑无数 xff0c 现整理记录一下整体流程
  • 微信公众号本地开发调试 - 无公网IP,内网穿透

    文章目录 前言1 配置本地服务器2 内网穿透2 1 下载安装cpolar内网穿透2 2 创建隧道 3 测试公网访问4 固定域名4 1 保留一个二级子域名4 2 配置二级子域名 5 使用固定二级子域名进行微信开发 前言 在微信公众号开发中 x
  • opencv图像通道 8UC1?

    转载自博主 64 马卫飞 https blog csdn net maweifei article details 51221259 CV lt bit depth gt S U F C lt number of channels gt b
  • gazebo中urdf、xacro、sdf模型文件关系

    gazebo的模型是用xml格式的文本文件来描述的 具体有三种形式 xff1a urdf xacro sdf urdf urdf是老的gazebo模型格式 xff0c 本身有一些缺陷 xff0c 也缺一些功能 但是网上很多gazebo模型都
  • 1_树莓派开启ssh服务

    树莓派3 开启 SSH 服务 原文链接 xff1a https blog csdn net qq 16775293 article details 88385393 文章目录 1 使用管理工具2 启动服务3 自动启动服务 3 1 Windo
  • 树莓派4b串口通信配置

    树莓派4b本身是两个串口 xff0c 运行ls dev al如下 xff1a 请注意 xff1a 在默认状态下 xff0c serial0 就是GPIO14 15 是映射到ttyS0的 xff08 就是MINI串口 xff1a dev tt
  • Pandas第三次作业20200907

    练习1 读取北向 csv 指定trade date为行索引 查看数据的基本信息 有无缺失值 对其缺失值进行处理 删除缺失值所在行 查看数据的基本信息 查看数据是否清洗完毕 index列没啥用 将index列删除 观察数据是否有重复行 将重复
  • 新手入门板卡硬件调试

    硬件电路调试步骤 新手入门板卡硬件调试一看 观察焊接情况二测 测量阻抗三接触式上电调试遇到的问题一般解决思路电源供电运放出现震荡测量时GND的选取振铃现象 新手入门板卡硬件调试 一看 观察焊接情况 1 拿到板卡后 xff0c 首先观察下焊接
  • 用shell 命令获取占用cpu 最多的前五位

    通常情况下使用ps axu 来获得系统中所有进程占用资源情况 xff0c 通常也可以使用top 命令来动态的获得系统中资源占用最多的进程 假设我们使用ps aux gt file tmp来获取linux系统中的进程占用资源情况 xff0c
  • 关于准确率accuracy和召回率recall的理解

    假设有100个样本 xff0c 其中正样本70 xff0c 负样本30 xff0c 这个是由数据集本身决定的 xff0c 机器要做的就是判别这100个样本中哪几个样本是正样本 xff0c 哪几个样本是负样本 现在机器做出了预测 xff1a
  • pytorch BERT文本分类保姆级教学

    pytorch BERT文本分类保姆级教学 本文主要依赖的工具为huggingface的transformers xff0c 更详细的解释可以查阅文档 定义模型 模型定义主要是tokenizer config和model的定义 xff0c
  • class balanced loss pytorch 实现

    cb loss pytorch 实现 xff0c 可直接调用 参考 xff1a https github com vandit15 Class balanced loss pytorch blob master class balanced
  • 解决不平衡数据集问题

    解决不平衡数据集问题 数据不平衡通常反映数据集中类的不均匀分布 例如 xff0c 在信用卡欺诈检测数据集中 xff0c 大多数信用卡交易都不是欺诈 xff0c 只有很少的类是欺诈交易 这使得我们在欺诈类和非欺诈类之间的比例约为50 1 迄今
  • matlab报错解决---当前文件夹或MATLAB路径中未发现xxxx.m,但它位于xx\xxx\xxx\路径下

    解决 xff1a 选定为找到的文件 xff0c 右键 xff0c 找到 选择文件夹和子文件夹 选项 xff0c 添加到路径即可 xff0c 之后文件会变亮色 xff0c 不是灰色 修改之后 xff0c 发现没有 添加路径 的选项了 最后解决
  • sdf模型插入gazebo_ros_control插件

    gazebo ros control目前只支持老版的urdf模型 xff0c 官方教程 xff1a http gazebosim org tutorials tut 61 ros control sdf模型怎么办呢 xff1f 回答 xff
  • PreparedStatement 在mysql下中文乱码解决方案

    在顶目中无意中碰到PreparedStatement 在存DB时出现乱码 xff0c 困扰了好久终于解决问题 问题代码如下 pstmt 61 con prepareStatement INSERT OFFLINE pstmt setStri
  • 2013年终总结

    2013年即将过去 xff0c 回顾这一年 xff0c 有得有失 xff0c 有喜有悲 xff0c 些许记忆碎片留在脑海中 简单做个总结 xff0c 也算划上一个完美的句号 xff0c 再迎接充满挑战的2014 xff01 项目 一年过来

随机推荐

  • 程序员的生活,其实苦不堪言

    前一天 A 下班前把这个代码发给我 B 好的 xff01 第二天 A 都他妈中午了 xff0c 代码怎么还没发过来 xff1f B 我他妈还没下班呢 xff01 程序猿的真实写照 曾经刚参加工作 xff0c 接手一个项目的维护 xff0c
  • 不容错过的用户标签全面解读。建议收藏!

    过去几年来 xff0c 随着我国整体人口红利优势不再 xff0c 市场竞争加剧 xff0c 获客成本不断飙升 xff0c 互联网也告别增长进入存量时代 xff0c 品牌方的营销目标也从最大化追求用户数量规模转变为追求用户质量的精细化营销上
  • 【书写makefile】相关符号介绍

    本文将介绍一下几种符号 xff1a 61 43 61 61 61 makefile中 xff0c 的意思是取变量的意思 xff0c 比如 xff0c a 61 4 那么在后面的语句中 xff0c a 就代表的是取a的值 如果给a定义的是个宏
  • python人工智能技术

    人工智能 xff08 AI xff09 已成为当今世界的热门话题 xff0c 它的应用范围越来越广泛 其中 xff0c Python成为AI开发中最受欢迎的编程语言之一 Python提供了许多功能强大的库和框架 xff0c 大大简化了开发人
  • 利用X-CTU软件给P900数传配置参数

    转自 xff1a 70条消息 P900数传参数配置 落体偏东 CSDN博客 ATS104设置网络号 xff08 设置主从之间通讯连接的密码 xff09 ATS105设置单元号 xff08 给自己使用的数传进行编号 xff0c 防止主从混乱
  • px4添加自己编写的代码并编译

    1 在px4项目下的src文件夹下的modules文件夹中创建一个文件夹 xff0c 如图我创建了一个position control文件夹 xff0c 在该文件夹中添加自己写的代码程序 xff0c 同时添加一个CmakeLists txt
  • 思岚A1M8激光雷达-ubuntu18.04-slam建图参考

    Rplidar A1 A2使用及Hector SLAM建图 NouriXiiX的博客 CSDN博客 激光雷达初体验 Ubuntu 18 04 43 思岚科技 RPLIDAR A1M8 43 ROS 上手使用 银时大魔王的博客 CSDN博客
  • intel Realsense D/T系列 kalibr标定

    kalibr官方源码GitHub ethz asl kalibr The Kalibr visual inertial calibration toolbox 鼠标下拉找到install follow the install wiki pa
  • gazebo仿真遇到的FCU问题

    当使用roslaunch xxx launch命令进行gazebo仿真时出现 FCU Preflight Fail Accel 0 uncalibrated或者FCU Preflight Fail Baro Sensor 0 missing
  • 大广角USB摄像头选用指南

    起因是我要做一个二维码引导无人机降落的实验 四旋翼无人机搭载单目下视摄像头 xff0c 用于识别地面的二维码 我选择摄像头的标准基本上只有一个 xff1a 视场角越大越好 为此查阅了一些资料 xff0c 买了很多镜头和底板 xff0c 有了
  • 一:XTDrone平台上将视觉SLAM2与gazebo仿真集合

    1 XTDrone仿真平台配置 参考官方教程 xff0c 基本没大问题 仿真平台基础配置 语雀 依赖安装sudo apt install y n https www yuque com xtdrone manual cn basic con
  • 线程和进程的区别

    不少刚看到这两个词 xff08 特别是不是计算机专业的 xff09 小伙伴可能会比较疑惑 xff0c 线程和进程有什么区别 xff0c 网上有许多专业性的解答 xff0c 但是既然不少小伙伴不是计算机专业的 xff0c 那就结合例子做个大概
  • Pixhawk烧写自己开发过的1.11.0固件连接不上QGC

    最近在更改代码烧写固件后 xff0c 飞控就连接不上地面站 xff0c 以为是飞控坏了 xff0c 烧写了最新版的固件发现有可以连接到地面站了 xff0c 又烧写了同一版本的其他代码发现也可以连接qgc xff0c 应该是自己写的代码某个部
  • C标准库string.h源码(简单版)

    C标准库string h源码 xff08 简单版 xff09 strcpy strncpystrcat strncatstrcmp strncmpstrchr strrchr strchrnul strstrmemcpy memmove s
  • 二进制浮点数以及二进制浮点数算术运算

    二进制浮点数以及二进制浮点数算术运算 二进制浮点数表示半精度浮点数单精度浮点数双精度浮点数特殊情况 浮点数的运算步骤一 对阶二 尾数运算三 结果规格化左规操作右规操作 四 舍入处理五 溢出判断六 例子二进制浮点数加法二进制浮点数减法二进制浮
  • SMPL源代码实现和模型解读

    对于SLAM的工作已经告一段落了 xff0c 传统的人体动态三维重建也要告一段落了 xff0c 由于课题研究的方向是基于图像 视频的人体三维重建 xff0c 三维shape pose的恢复 xff1a 所以今天和大家交流的是SMPL模型 x
  • 自主悬停&高度融合 作者:nieyong

    自主悬停 amp 高度融合 作者 xff1a nieyong 自主悬停是Crazepony玩家问得最多的问题 xff0c 也是技术难度最高的问题 首先我们明确什么是自主悬停 xff1f 下面是一位资深航模玩家对于自主悬停的解释 飞行器能够悬
  • 如何高效地阅读技术类书籍与博客

    原文地址 xff1a http www nowamagic net librarys veda detail 2050 如何高效地阅读技术类书籍与博客 影像阅读法 阅读是自我提升的一个有效方法 xff0c 阅读书籍 阅读博客都是我们技术提升
  • MP地面站二次开发教程(一)开发环境搭建和编译

    目录 基于Mavlink的上位机地面站开发教程 第一节 开发环境搭建 1 预编译 xff08 源码尽量放到非中文目录下面 xff09 2 初次编译 3 删除这个speech引用 xff0c 重新引用这个speech包 每个人的环境不一样 x
  • MP地面站二次开发教程(三)Mavlink通讯协议(1)

    目录 1 协议介绍 消息结构 消息解析 消息数据流 2 消息解析 3 指令发送 Mavlink主要是飞控和地面站之间的消息指令发送 xff0c 包含地面站解析飞控发来的mavlink数据流 xff0c 和地面站向飞控发送mavlink指令