mission planner发送数据之mavlink

2023-05-16

前段时间研究mp的地面站,看了几天有点体会,看网上的解析比较少,写上来和大家分享下,全是自己的理解,东西比较少,硬货不多,还请见谅。

最开始是想做个无人机超声波定位的东西,不过定位机连着pc,数据首先传到pc。所以要设计个东西把定位机传过来的数据发到机载端去,因此先研究了mavlink协议。在GitHub下了mission planner的源码,这个好找,网上到处都有,有点C#基础就行了,代码比较简单。运行成功后,

这个是MP的全部文件。当时浏览里面的mavlink部分,主要在Libs文件夹,有个mavlink文件

里面集成了这几个很重要;其次的是第一个MissionPlanner文件里的Mavlink文件,其中的MAVLinkInterface很重要。如果想实现发送数据的功能,这几个最好还是都浏览下。

第一个mavlink.cs文件主要是传输协议的数据结构,每个帧的形式和发送的message_info。定义新的messageID的时候,其中有个crc自己设的很重要很重要,它其实是在飞控生成的,并不是自己随便写的,就是这个crc,如果会pixhawk,在上面创建了你自己的messageID后,会自动生成这个crc,你再在地面站填写这个crc,随便写是不能通过的(这个很重要,开始我自己设了一个crc,但是和飞控连接不上,还是后来写飞控的师兄找到了这个东西);第二个mavlinkCRC是校验位,看了一下就是个16位校验,有高位和低位两个;第三个mavlinkmessage就是把这个消息的头,序号,校验位等提取出来,但是未对payload里的内容进行处理;第四,五个param没怎么研究;最后一个util好像是个内存分配的东西,看着有点复杂,我没特别仔细看。

mavlinkinterface就很重要了,收发整个过程的发送,接收,打包,解析都是在这个文件里,其中的getHeartBeat是判断接收到的是不是心跳包的东西,是个握手的文件,要注意下;后面的sendPacket和 generatepacket就是发送的整个过程了,要好好的看,全部了解透,它把怎么压缩这个payload,每一位对应什么,整个过程都详细的表达在这个地方。

前面把背景介绍完了,就说怎么实现发数了。首先,你要把你发送数据的内容,长度,ID号都明确清楚,写在一张纸上;然后在Libs文件的mavlink的mavlink.cs中添加你要发送的数据结构,像这样

然后在枚举MAVLINK_MSG_ID 中加入你ID信息;再去这添加你的messageinfo

注意对着格式写,其中的crc要通过飞控自动生成,不能随便写。第二步,我是在MissionPlanner文件的GCSViews文件里找到FlightPlanner.cs这个界面窗口,在窗口中加了一个按钮,对应后面button1_Click调用。简单的发送指令就是这样

你的结构定义好后,生成对应的payload,你想把每个字节添加什么东西,都可以写进去,然后调用sendpacket方法就可以发送了。我是根据原始文件中一个上传信息写的,原始信息发送的是MAVLink.mavlink_hil_state_t这个信息,可以查看引用自己找找。

当程序写完,自己调试的时候,可以用两个串口调试助手,第一个是双口的助手,第二个单口的助手。把第一个的一端连在MP上,第二端连着第二个串口助手。这样就可以把第二个串口助手模拟成一个飞控。要建立连接的下一步就是你需要找一段飞控的握手代码(因为地面站和飞控第一步要建立连接,我的办法是先把自己的电脑连着飞控pixhawk,然后用串口接着pixhawk,这个时候串口里就有很多数,是飞控发下来的姿态等信息,这个时候我从中拷贝了一段复制下来),然后我把拷贝下来的代码放到第二个串口助手中,点的重复发送,这样相当于这个串口就是一个不断向外发数的“飞控”了,只不过他的参数都是假的- -。然后这个时候建立连接就没问题啦,虽然获取不到参数信息,但是通过这个“连接”的握手协议是没问题的。然后在MP上点击之前的按钮,就可以在串口中看到你发的信息啦。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mission planner发送数据之mavlink 的相关文章

  • Docker镜像编译方式

    1 普通Dockerfile的缺点 我们通常情况下要编译Spring Boot的Docker镜像 xff0c 一般会写一个下面这样的Dockerfile FROM openjdk span class token operator span
  • Python入门第一章笔记 从安装到编写hello world

    1 下载Python安装包 xff1b 可以到官网下载 xff1a https www python org 但是如果没有翻墙的话 xff0c 下载会很慢 25M安装包 xff0c 需要1个小时以上 如果没有耐心等可以在csdn进行下载 x
  • 养老产业政策链接

    江西省养老政策文件 xff1a 江西省养老服务条例 http mzw ganzhou gov cn gzsmzjy c103172 202201 d238525b35bb47b49b3de312c9b63a60 shtml 南昌市养老服务体
  • 我多变的2013

    我多变的2013 第一篇 xff1a 回顾 回顾工作 首先简单的做个自我介绍吧 xff0c 我是87年的 xff0c 北漂已经是第5个年头了 xff0c 一直都从事java开发工作 前后只换过一家公司 xff0c 第一家待了近两年 xff0
  • 我花1200大洋所学的“元学习课”究竟学了些什么?

    我花1200大洋所学的 元学习课 究竟学了些什么 xff1f 讲课的是台湾的一位大牛名叫Xdite xff0c 以及亿万富豪李笑来 能够跟牛人学习怎么学习我想应该不会有错吧 xff0c 对我来说这次做的应该是一次正确的决定 xff0c 所谓
  • 成长记录-开启我的新生 (2016-12-06)

    真的是很惊险 xff0c 我差一点就错过了 获得新生 的机会 xff0c 我在蜻蜓音频中听到了逻辑思维 xff0c 从逻辑思维中了解到了 得到 xff0c 从 得到 中订阅了吴军博士的 硅谷来信 xff0c 却在过去的好几个月里 xff0c
  • 最新Java电子书

    最新Java电子书 JAVA参考大全 J2SE 5EDITION 世界级程序设计大师作品 Thinking in Java第三版 43 第四版 xff08 中文版 43 习题答案 xff09 Java数据库高级编程宝典 Java核心技术第八
  • ELK-ElasticSearch权威指南笔记

    ELK ElasticSearch笔记 文章目录 ELK ElasticSearch笔记 前言测试工具 语法索引 xff0c 文档和类型文档元数据检索索引里文档数据查看当前节点的所有 Index查看所有index的mapping 映射 查看
  • 关于JAVA中内存溢出的解决办法

    关于JAVA中内存溢出的解决办法 J2ee应用系统是运行在J2EE应用服务器上的 xff0c 而j2ee应用服务器又是运行在JVM上的 xff0c 生成环境中JVM参数的优化和设置对于J2EE应用系统性能有着决定性的作用 要优化系统 xff
  • ireport的使用总结

    ireport的使用总结 截图居然都没显示出来 xff0c 如有需要可以到 xff08 http download csdn net detail czp0608 4140640 xff09 下载 相信很多java程序员们 xff0c 在开
  • 卡尔曼滤波C代码分析

    文章下载地址 xff1a http wenku baidu com view 3c42b7733186bceb18e8bb29
  • 作为一个新人,怎样学习嵌入式Linux?

    作为一个新人 xff0c 怎样学习嵌入式Linux xff1f 被问过太多次 xff0c 特写这篇文章来回答一下 在学习嵌入式Linux之前 xff0c 肯定要有C语言基础 汇编基础有没有无所谓 就那么几条汇编指令 xff0c 用到了一看就
  • pixhawk启动脚本分析

    Nuttx系统启动是由ardupilot mk PX4 ROMFS init d里的rcS和rc APM完成的 笔者阅读了rcS和rc APM xff0c 该脚本类似C语言 xff0c 并做了相关注释 主要是一些设备自检 xff0c 启动各
  • pixhawk ArduPilot_main启动与运行分析

    上节分析 2 个系统启动脚本 xff0c 一个是 ardupilot mk PX4 ROMFS init d 里的 rcS xff0c 另一个是 rc APM xff0c 这个脚本在 rcS 里得到了调用 xff0c 也就是说 xff0c
  • pixhawk make文件分析

    由于笔者没学过Linux等系统 xff0c 对make文件所知甚少 xff0c 本节分析可能有大量错误 xff0c 只提供参考 xff0c 随着技术积累 xff0c 以后会回过头改正错误的地方 xff0c 也非常欢迎提出指导意见 其中分析大
  • pixhawk 从main开始分析传感器数据如何流动起来,以GPS为例

    void Copter loop scheduler run time available gt MAIN LOOP MICROS 0u time available 本文以GPS数据为代表 xff0c 分析数据如何从硬件驱动层慢慢的流到主
  • pixhawk uORB初步分析

    再次编辑 xff0c 因为发现大神的解析 xff0c 添加在最后 xff0c 若一般人我不告诉他 根据自己理解画的流程图 xff1a xff08 2016 05 29加 xff09 由于上节分析GPS涉及到AP GPS PX4 read函数
  • pixhawk硬件构架

    1 Phxhawk连接线路 2 Phxhawk硬件芯片列表 处理器 STM32F427 VIT6 168 Mhz 256 KB RAM 2 MB 闪存 100Pin 32位 STM32F100C8T6 xff08 48Pin xff09 故
  • ELK-日志收集工具nxlog

    ELK 日志收集工具nxlog 文章目录 ELK 日志收集工具nxlog 前言安装语法宏变量 通用模块指令格式Module 模块名FlowControlInputType 指定输入类型OutputType xff1a 指定输出类型Exec
  • pixhawk原生码rcS分析

    代码执行流程 1 编译时将 cmake configs nuttx px4fmu v2 default cmake 文件中配置的模块全部编译并烧写到固件中去 2 地面站的配置会在 flash 中生成 fs mtd params 文件 xff

随机推荐

  • pixhawk win编译环境搭建

    经过笔者亲自试验搭建win编译环境 xff0c 试验成功 xff0c 以下为具体步骤 问题和解决方案 其实Linux下编译会快很多 xff0c 对于后期开发会缩短等待编译的时间 xff0c 正在尝试搭建Linux编译环境 1 pixhawk
  • pixhawk PX4FMU和PX4IO最底层启动过程分析

    首先 xff0c 大体了解PX4IO 与PX4FMU各自的任务 PX4IO STM32F100 为PIXHAWK 中专用于处理输入输出的部分 输入为支持的各类遥控器 PPM SPKT DSM SBUS 输出为电调的PWM 驱动信号 它与PX
  • pixhawk 姿态与控制部分的记录

    此篇是把之前看到的资料总结整理一遍 xff0c 大部分是搬砖 xff0c 也加入了自己的一点思考 xff0c 写的过程中晕了好多次 xff0c 先大体记录下来 xff0c 肯定有错误 xff0c 日后再改正吧 关于pixhawk程序执行流程
  • pixhawk 光流--位置估计--姿态估计--位置控制--姿态控制

    本文是边分析边写的 xff0c 顺便就记录下了分析的思路 xff0c 并不是按照教材那种思路介绍性的 xff0c 而是按照程序员分析程序的思路来的 所以读者跟着看有些地方看了意义不大 xff0c 但是这种程序分析的思路还是可以借鉴的 xff
  • pixhawk 整体架构的认识

    此篇blog的目的是对px4工程有一个整体认识 xff0c 对各个信号的流向有个了解 xff0c 以及控制算法采用的控制框架 PX4自动驾驶仪软件 可分为三大部分 xff1a 实时操作系统 中间件和飞行控制栈 1 NuttX实时操作系统 提
  • pixhawk mc_pos_control.cpp源码解读

    好久没跟新blog了 xff0c 这段时期边调试边看程序 xff0c 所以有点慢 要开始着手调试了 这篇blog是顺着上一篇pixhawk 整体架构的认识写的 xff0c 接下来看程序的话 xff0c 打算把各个功能模块理解一遍 xff0c
  • pixhawk position_estimator_inav.cpp思路整理及数据流

    写在前面 xff1a 这篇blog主要参考pixhawk的高度解算算法解读 xff0c 并且加以扩展 xff0c 扩展到其他传感器 xff0c 其实里面处理好多只是记录了流程 xff0c 至于里面实际物理意义并不是很清楚 xff0c 也希望
  • 调试记录(一)pixhawk参数设置的问题

    一 光流模式进入不了 1 xff0e 网上下载的固件 xff0c 进入定点模式 xff0c qgc显示 拒绝 烧写自己编译的固件定高和定点都 拒绝 并且按照 xff08 源码解读 xff09 position estimator inav
  • 卡尔曼算法笔记---思想和实际应用物理含义的理解

    此片blog的目的是理解卡尔曼算法的思想和实际应用的物理含义 xff0c 想法很好 xff0c 却只能理解冰山一角 xff0c 先记下这一角 另本blog参考卡尔曼滤波 从推导到应用和徐亦达卡尔曼推导视频 首先认识卡尔曼算法在数学领域是什么
  • ELK-LogStash6.5.4

    ELK LogStash6 5 4 前言 与Elasticsearch Kibana不同 xff0c Logstash默认并不作为系统服务安装 xff0c 我们也不建议作为服务启动 主要原因为 xff1a 大多数情况下 xff0c Elas
  • pixhawk博客导读

    写的东西有点多 xff0c 写的也有点乱 xff0c 看题目也不知道内容是什么 xff0c 为了方便网友观看自己感兴趣的地方 xff0c 笔者把pixhawk博客归类一下 由于笔者也是边学习边写的 xff0c 难免有错误 xff0c 还请多
  • 科普“智能导航”--整理自大疆工程师

    1 飞行器想要稳定飞行 xff0c 需要 15 个状态量 xff1a 三维角度 xff0c 三维角度对应的三维速度 三维加速度 三维角速度 xff0c 三维位置 传感器的测量如下 xff1a 2 传感器自身的限制 xff1a 1 惯性测量元
  • pixhawk px4 字符型设备驱动

    分析字符型设备为什么register open read write怎样与底层驱动代码联系在一起的 xff0c 为什么需要注册 xff0c 为什么会有路径 xff0c 为什么open之后read write就可以读 写了 另 xff1a 此
  • pixhawk px4 spi设备驱动

    此篇blog是以nuttx官网介绍为出发点 xff0c 先分析如何初始化的 xff0c 再分析如何读取传感器数据的 xff0c 最后对比了字符型设备操作和spi驱动的实现方式的差别 如有错误还请指正 6 字符型设备 所有的结构体和API都在
  • Linux驱动概念扫盲篇

    驱动程序完全隐藏了设备工作的细节 用户的活动通过一套标准化的调用来进行 这些调用与特别的驱动是独立的 设备驱动的角色就是将这些调用映射到作用于实际硬件的和设备相关的操作上 驱动应当做到使硬件可用 将所有关于如何使用硬件的事情留给应用程序 一
  • ardupilot & px4 书写自己的app & drivers (二)

    新建任务列表任务 打印时间 任务列表 const AP Scheduler span class hljs tag Task span Copter span class hljs tag scheduler tasks span span
  • Docs » Learning the ArduPilot Codebase » EKF » Extended Kalman Filter Navigation Overview and Tuning

    原文 xff1a http ardupilot org dev docs extended kalman filter html extended kalman filter navigation overview and tuning 本
  • Linux常用命令

    压缩 解压命令 01 tar格式 解包 xff1a xff0a xff0a xff0a xff0a xff0a xff0a xff0a tar xvf FileName tar 打包 xff1a xff0a xff0a xff0a xff0
  • linux C编程控制树莓派

    系统准备 1 xff09 打开Win32DiskImager exe 2 xff09 PC机插入sd卡 3 xff09 选择要烧录的系统 xff0c 笔者选择Ubuntu mate 16 04 4 xff09 烧录 显示 默认HDMI显示
  • mission planner发送数据之mavlink

    前段时间研究mp的地面站 xff0c 看了几天有点体会 xff0c 看网上的解析比较少 xff0c 写上来和大家分享下 xff0c 全是自己的理解 xff0c 东西比较少 xff0c 硬货不多 xff0c 还请见谅 最开始是想做个无人机超声