mavlink协议是什么.docx

上传人:b****8 文档编号:9728695 上传时间:2023-02-06 格式:DOCX 页数:9 大小:22.51KB
下载 相关 举报
mavlink协议是什么.docx_第1页
第1页 / 共9页
mavlink协议是什么.docx_第2页
第2页 / 共9页
mavlink协议是什么.docx_第3页
第3页 / 共9页
mavlink协议是什么.docx_第4页
第4页 / 共9页
mavlink协议是什么.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

mavlink协议是什么.docx

《mavlink协议是什么.docx》由会员分享,可在线阅读,更多相关《mavlink协议是什么.docx(9页珍藏版)》请在冰豆网上搜索。

mavlink协议是什么.docx

mavlink协议是什么

竭诚为您提供优质文档/双击可除

mavlink协议是什么

  篇一:

术语表

  术语表

  注意:

术语表不是索引。

它是按字母表排序方便大家更方便的找到自己想要的主题

  2.4ghz:

在我们的数码无线通讯中使用的频率波段,包括2.4g遥控器,蓝牙以及其他的视频传输设备。

这是一个与原来旧的模拟遥控通讯中使用的72mhz波段完全不同的频率段。

为了避免撞频,通常在使用2.4ghz作为图传频段时使用72mhz的遥控,或者在使用2.4ghz遥控时使用900mhz的图传频段。

  agl:

离地面高度(与海拔高度相区分)

  ahRs:

高度朝向参照系统。

imu加上代码来处理传感器的数据以稳定飞机的xyz轴距离和朝向。

  apm:

  ama:

航空模型学会。

美国最主要的航模组织。

ama与联邦航空管理局(Faa)密切合作,以保证合理的规范与成熟uaV的使用。

不同的ama规定与区域可能有稍微不同的规定,但是在ama场地进行飞行与测试可以确保不违反组织或者Faa的各项规定。

  arduino:

一个开源的嵌入式处理器系统。

包括一个基于atmelatmega168微处理器的硬件规范与其他支持硬件,以及一个基于c类似语言的编程环境。

官方网站在此。

  apm(autopilotmega):

可提供自稳飞行、位置保持与自动航点任务飞行的飞行控制器。

  apm:

copter:

针对apm系统的旋翼机自动飞行软件

  apm:

plane:

针对apm系统的固定翼自动飞行软件

  apm:

Rover:

针对apm系统的地面与水上自动飞行软件

  bec:

直译为“电池消除电路”。

这是在位于esc里面的一个单独的电压整压部件。

他可以给遥控组件、自驾仪和其他的板载元件提供5V电压

  bootloader:

一个存储在微处理器的非易失性储存器中的特殊软件代码,它可以与电脑交互以下载用户程序。

请参见“固件”。

  coa:

授权证明。

一个Faa对于无人机飞行的批准。

详细信息请参见网站或者diydroneRegulationFaq页面。

  dcm:

方向余弦矩阵。

一种算法,相比卡尔曼滤波计算量比较小。

查看更多。

  eaglefile:

由免费项目开发的原理图和pcb文件生成软件。

它是在开源硬件世界中最常用的的标准,尽管它自己并不是一个开源软件。

不用说,这并不是最好的而且eagle软件非常的笨拙而且难学。

我们希望哪天一个新的开源程序可以出现。

  电调(esc):

电子调速器。

用于控制电动飞行器电机的装置。

作为遥控接收机与主电池之前的连接。

通常esc中都包含bec,可为遥控系统和其他之于自驾仪的电子设备提供电源。

  固件:

储存在微处理器的非易失性储存器中的软件。

它被称为固件,是因为它位于非易失性储存器,即使断电也不会对它带来影响。

在自驾仪中,它是决定自驾仪如何做,怎么做的程序应用。

  FpV:

第一人称视角。

它通过一个视频摄像头与无线连接,使得地面上的控制者可以通过视频眼镜获得飞行员座舱效果的飞行体验。

  Ftdi:

将usb转串行通讯的标准。

一般是一个芯片具有usb接口或者以连接引脚。

Ftdi代表Futuretechnologydevicesinternational,是开发芯片的公司名。

  地面站(gcs):

地面控制站。

在地面计算机上运行的软件,实时显示接收到的uaV发回的遥测信号,一般包括视频和其他传感器数据。

同时可发送飞行实时指令到无人机。

  硬磁干扰:

由机架上面的磁体或者磁化金属对罗盘造成的干扰。

无论飞行器处于什么朝向,干扰始终是处于同一个方向。

这种干扰可以从通过增加磁场计的补偿来抵消。

  hil(硬件回路模拟):

软件在其他计算机上面运行,发送模拟的传感器数据数据给apm。

自驾仪并不知道它接收到的数据是模拟的,所以它会当真实的传感器数据来做出反应。

与模拟器中模拟自驾仪不同,hip将自驾仪的物理硬件与模拟器相连进行模拟。

在“开环”模拟中,模拟软件将模拟数据发送给自驾仪,在“闭环”模拟中,自驾仪硬件将数据发送回模拟器。

  i2c:

一种串行总线,允许之于传感器之类的低速外接设备可以与微处理器相连接。

点此查看更多。

  ide:

集成开发环境,例如的编辑/下载/串口监控软件。

经常包括调试器。

  imu:

惯性测量单元,例如ardupilotoilpan。

通常包含至少三个加速度传感器(测量xyz三个方向的重力矢量)和两个陀螺仪(测量横滚和俯仰两个方

  面的偏转)。

由于加速度传感器会因为移动产生较大误差(例如:

在段时间内会有很大噪音)二陀螺仪随着时间会发生漂移,因此直接使用它们任何一种的数据是不足够的。

从这两种传感器得到的数据必须在软件中相结合以决定飞行器真实的高度和动作,产生ahRs。

实现以上的一种方法是卡尔曼滤波(见如下)。

现在被飞行控制器所取代,cpu和传感器在一个单元上。

内循环/外循环:

通常用来指代自驾仪的自稳和导航功能。

自稳功能必须每秒实时运行100次以上(内循环),导航功能通常每秒运行一次并且可以承受延时与扰动(外循环)。

  ins:

惯性导航系统。

使用航位推测法结合初始gps位置与速度运动传感器来计算位置的方法。

通常在gps不可用或者暂时丢失信号时使用。

  icsp:

电路串行编程器。

将代码导入微处理器的方法。

通常以一个6pin(两排3pin)接口的形式出现在pcb板上。

你需要一个编程器,例如使用spi标准的编程器,进行编程。

  卡尔曼滤波器:

一个相对复杂的算法,在我们的应用中,它结合加速度传感器与陀螺仪的数据以获得飞机实时姿态与动作的精确描述。

点此查看更多。

los:

视线。

请参考下面的Vlos。

  lipo:

锂聚合物电池。

锂离子电池(li-ion)的变种。

它与nimh和nica电池相比具有更高的能量和更轻的质量。

  maVlink:

arducopter和arduplane使用的微型飞行器通信协议。

关于maVlink的更多信息请参考。

  maV:

微型飞行器。

小的无人机。

更多信息请参考。

  nmea:

国际海洋电子协会关于gps的标准。

当我们说“nmea语句”时,我们指的是gps模块的ascii数据串,例如:

  $gpgga,123519,4807.038,n,01131.000,e,1,08,0.9,545.4,m,46.9,m,,47oilpan:

与apm相配套的arduino规格的集成模块。

包括绝大多数的传感器(陀螺仪,加速度传感器,气压计等),使得apm具有自驾仪的完整功能。

现在已被集成cpu和传感器的新飞控所取代。

  osd:

在屏显示。

一种把数据(通常是遥测数据)整合在飞机传回地面的实时视频流中的方法。

  pcb:

印刷电路板。

与其他可以重复使用的面包板不同,在我们的使用中,板子是为了特定用途而专门设计制造的。

  pcm:

脉冲代码调制:

这是一些先进遥控器与接收机通信遥控频段信号的技术。

它以数码代码代表频段号,遥控摇杆与开关的位置和一些其他信息。

一些先进遥控系统可以提供数字信号去控制数码舵机。

  分电板(pdb):

电源分配板。

在多轴飞行器中用来将电源分给多个电调供电。

  pic:

飞手指挥。

根据Faa的要求,在进行无须coa批准的休闲飞行时,uaV必须处于飞行员的直接控制之下。

见于视线上方。

(不要与microchip的pic处理器系列弄混)

  pid:

“比例/积分/导数”控制方法。

它是一种更加精确的传感器-动作控制循环和更少过控的机器控制算法。

点此查看更多。

  poi:

兴趣点。

指定一个点,无人机会保持相机指向这里。

  篇二:

px4pixhawk程序研究笔记

  px4pixhawk程序研究笔记

  编译环境建立

  参考链接:

  1、首先确保电脑安装了java运行环境。

  2、下载并安装px4toolchain,链接:

  3、在开始菜单中选择:

px4toolchain->px4softwaredownload来获取一个初始软件设置。

它会在安装路径下(默认为c:

\px4)下载如下文件夹:

px4

  Firmware–px4firmware(forallmodules),includesmaVlink

  

  nuttx–thenuttxRealtimeoperatingsystem(Rtos)libopencm3–optional:

opensourcecortexmxlibrary,usedonlyin

  the

  bootloaders

  bootloader–optional:

bootloaders,doesnormallynotneedtobetouched

  4、配置eclipse,开始菜单->所有程序–>px4toolchain->px4eclipse

  默认的workspace路径是刚好正确的:

  new→makefileprojectwithexistingcode:

  选择crossgcc

  ,并指定文件夹位置为:

“c:

\px4\Firmware”。

  打开右边的

  “maketarget”并点击“newmaketarget”:

  你应当创建如下targets:

  

  

  

  

  archives–buildsthenuttxosall–buildstheautopilotsoftware(dependsonarchives)distclean–cleanseverything,includingthenuttxbuildclean–cleansonlytheapplication(autopilot)partuploadpx4fmu-v1_default–uploadstopx4Fmuv1.xboards

  uploadpx4fmu-v2_default–uploadstopx4Fmuv2.xboards

  编译方法:

  参考链接:

  1、双击distclean;

  2、双击archives;

  3、双击all;

  4、双击uploadpx4fmu-v1_default(px4)或uploadpx4fmu-v2_default(pixhawk)来上传固件。

  注意:

只有在nuttx更新或者改变时才需要进行”distclean“和”archives“。

如果你只是编辑了px4的程序,最便捷的办法是直接运行uploadpx4fmu-v1_default(px4)或uploadpx4fmu-v2_default(pixhawk)来编译并上传固件。

  eclipse使用技巧

  1、选中一个函数,鼠标不动,0.5秒后会弹出一个悬浮框显示该函数的定义,双击该框,会出现滑动条,这时可以使用这个框看此函数的全部定义。

以上操作可以由“F2”键代替。

  2、选中一个函数,按“F3”直接跳转到该函数的定义处,而不是通过一个悬浮框显示。

  板载软件结构

  px4自动驾驶仪软件可分为三大部分:

实时操作系统、中间件和飞行控制栈。

  1.nuttx实时操作系统

  提供posix-style的用户操作环境(如printf(),

  pthreads,/dev/ttys1,open(),write(),poll(),ioctl()),进行底层的任务调度。

  2.px4中间件

  px4中间件运行于操作系统之上,提供设备驱动和一个微对象请求代理

  (microobjectrequestbroker,uoRb)用于驾驶仪上运行的单个任务之间的异步通信。

  3.px4飞行控制栈

  飞行控制栈可以使用px4的控制软件栈,也可以使用其他的控制软件,如apm:

plane、apm:

copter,但必须运行于px4中间件之上。

  px4飞行控制栈遵循bsd协议,可实现多旋翼和固定翼完全自主的航路点飞行。

采用了一套通用的基础代码和通用的飞行管理代码,提供了一种灵活的、结构化的方法,可以用相同的航路点和安全状态机来运行不同的固定翼控制器或旋翼机控制器。

  其板载程序结构图如下:

  参考链接:

  篇三:

px4的无人机飞控应用开发

  px4/pixhawk无人机飞控应用开发

  1、px4/pixhawk飞控软件架构简介

  px4是目前最流行的开源飞控板之一。

px4的软件系统实际上就是一个firmware,其核心os为nuttx实时aRm系统。

其固件同时附带了一系列工具集、系统驱动/模块与外围软件接口层,所有这些软件(包括用户自定义的飞控软件)随os内核一起,统一编译为固件形式,然后上传到飞控板中,从而实现对飞控板的软件配置。

  px4配套的软件架构主要分为4层。

理解其软件架构是开发用户自定义飞控应用软件的基础。

  a)api层:

这个好理解。

  b)框架层:

包含了操作基础飞行控制的默认程序集(节点)

  c)系统库:

包含了所有的系统库和基本交通控制的函数

  d)os内核:

提供硬件驱动程序、网络、uaVcan和故障安全系统

  上述是个面向px4系统实现者的相对具体的软件架构。

实际上还有另外一种面向px4自定义飞控应用开发者的高层软件架构描述,相对抽象,但更简单,就是整个px4的软件从整体上分为2层:

  a)px4flightstack:

一(mavlink协议是什么)系列自治无人机自动控制算法的集合

  b)px4middleware:

一系列针对无人机控制器、传感器等物理设备的驱动及底层通信、调度等机制的集合

  px4软件架构中,最有意思的一点在于整个架构的抽象性(多态性)。

即,为了最大限度保障飞控算法代码的重用性,其将飞控逻辑与具体的底层控制器指令实现进行了解耦合。

一套高层飞控算法(如autopilot、geoFence等)在不做显著修改的情况下,能够适用于固定翼、直升机、多旋翼等多种机型的控制场合,这时候就体现出px4飞控的威力来了:

在用户程序写好之后,如果需要替换无人机机架的话,仅需简单的修改一下机架配置参数即可,高层的用户自定义飞控应用几乎无需修改。

  理解上述初衷至关重要。

有很多搞自动化出身、没太多软件经验的朋友倾向于直接使用底层控制协议来控制飞控板,但实际上px4架构已经在更高的抽象层面上提供了更好的选择,无论是代码维护成本、开发效率、硬件兼容性都能显著高于前者。

很多支持前者方式的开发者的理由主要在于高层封装机制效率较低,而飞控板性能不够,容易给飞控板造成较大的处理负载,但实际从个人感觉上来看,遵循px4的软件架构模式反倒更容易实现较高处理性能,不容易产生控制拥塞,提升无人机侧系统的并发处理效率。

  2、px4/pixhawk飞行控制协议与逻辑

  mavlink是目前最常见的无人机飞控协议之一。

px4对mavlink协议提供了良好的原生支持。

该协议既可以用于地面站(gcs)对无人机(uaV)的控制,也可用于uaV对gcs的信息反馈。

其飞控场景一般是这样的:

  a)手工飞控:

gcs->(mavlink)->uaV

  b)信息采集:

gcs  c)自治飞控:

userapp->(mavlink)->uaV

  也就是说,如果你想实现地面站控制飞行,那么由你的地面站使用mavlink协议,通过射频信道(或wifietc.)给无人机发送控制指令就可以了。

如果你想实现无人机自主飞行,那么就由你自己写的应用(运行在无人机系统上)使用mavlink协议给无人机发送本地的控制指令就可以了。

  然而,为实现飞控架构的灵活性,避免对底层实现细节的依赖,在px4中,并不鼓励开发者在自定义飞控程序中直接使用mavlink,而是鼓励开发者使用一种名为uoRb((microobjectRequestbroker,微对象请求代理)的消息机制。

其实uoRb在概念上等同于posix里面的命名管道(namedpipe),它本质上是一种进程间通信机制。

由于px4实际使用的是nuttx实时aRm系统,因此uoRb实际上相当于是多个进程(驱动级模块)打开同一个设备文件,多个进程(驱动级模块)通过此文件节点进行数据交互和共享。

  在uoRb机制中,交换的消息被称之为topic,一个topic仅包含一种message类型(即数据结构)。

每个进程(或驱动模块)均可“订阅”或“发布”多个topic,一个topic可以存在多个发布者,而且一个订阅者可也订阅多个topic。

而正因为有了uoRb机制的存在,上述飞控场景变成了:

  a)手工飞控:

gcs->(mavlink)->(uoRbtopic)->uaV

  b)信息采集:

gcs  c)自治飞控:

userapp->(uoRbtopic)->(mavlink)->uaV

  有了以上背景基础,便可以自写飞控逻辑了,仅需在px4源码中,添加一个自定义module,然后使用uoRb订阅相关信息(如传感器消息等),并发布相关控制信息(如飞行模式控制消息等)即可。

具体的uoRbapi、uoRb消息定义可参考px4文档与源码,所有控制命令都在firmware代码的msg里面,不再敷述。

  最后值得一提的是,在px4系统中,还提供了一个名为mavlink的专用module,源码在firmware的src/modules/mavlink中,这货与linux的控制台命令工具集相当相似,其既可以作为ntt控制台下的命令使用,又可作为系统模块加载后台运行。

其所实现的功能包括:

1)uoRb消息解析,将uoRb消息实际翻译为具体的mavlink底层指令,或反之。

2)通过serial/

  射频通信接口获取或发送mavlink消息,既考虑到了用户自写程序的开发模式,也适用于类似linux的脚本工具链开发模式,使用起来很灵活,有兴趣的可以看看。

  px4飞控中利用ekF估计姿态角代码详解

  px4飞控中主要用ekF算法来估计飞行器三轴姿态角,具体c文件在

  px4\Firmware\src\modules\attitude_estimator_ekf\codegen\目录下

  

  具体原理程序详解下一步

  1.具体原理ekF算法原理不再多讲,具体可参见上一篇

  blog.

  这篇讲ekF算法执行过程,需要以下几个关键式子:

飞行器状态矩阵:

这里表示三轴角速度,

  表示三轴角加速度,

  表示加速度在机体坐标系三轴分量,

  ,表示磁力计在机体坐标系三轴分量。

  测量矩阵

  分别由三轴陀螺仪,加速度计,磁力计测得。

  状态转移矩阵:

  飞行器下一时刻状态预测矩阵如下:

  其中w项均为高斯噪声,

  对该函数在为飞行器在姿态发生变化后,坐标系余旋变换矩阵,处求一阶偏导,可得到状态转移矩阵:

  此时可得到飞行器状态的先验估计:

  利用测量值修正先验估计:

  这里测量矩阵h与状态矩阵x为线性关系,故无需求偏导。

  卡尔曼增益:

状态后验估计:

方差后验估计:

  2.程序详解

  整个ekF的代码挺长的,大部分是矩阵运算,而且使用嵌套for循环来执行的,所以读起来比较费劲,但是要是移植到自己工程上的话必然离不开这一步,所以花了一个下午把各个细节理清楚,顺便记录分享。

  /*includefiles*/

  #include"rt_nonfinite.h"

  #include"attitudekalmanfilter.h"

  #include"rdivide.h"

  #include"norm.h"

  #include"cross.h"

  #include"eye.h"

  #include"mrdivide.h"

  /*

  输入参数:

updateVect[3]:

用来记录陀螺仪,加速度计,磁力计传感器数值是否有效

  z[9]:

测量矩阵

  

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1