MAVLink认识、使用、自定义

对mavlink的认识

MAVLink是针对小型飞行器(MAV)的一个lightweight, header-only message marshalling library(由头文件构成的信息编组库)
它被封装成C结构,可以通过串行总线把数据包发送到地面站,与地面站进行数据通信,它在PX4,PIXHAWK,Parror AR.Drone平台上得到广泛测试,作为MCU/IMU通信以及Linux和地面站通信的主要方式

它可以通过串行通道高效率地包装C结构,并将这些数据包发送到地面控制站。它在PX4,PIXHAWK,APM和Parrot AR.Drone平台上进行了广泛的测试,作为MCU / IMU通信以及Linux进程间和地面链路通信的通信骨干。

MAVLink message common 官方定义

| 数据帧头信息(6 Byte) | 有效数据信息 nByte | 校验信息 2Byte |

字节帧 0 1 2 3 4 5 6-(6+n) (n+7)-n+8
含义 开始标志 载荷长度 包序列 SystemID DeviceID MesgID 消息内容 哈希校验
范围 v1(FE) v0.9(55) 0-255 0-255循环 0-255 0-255 0-255 0-255Byte
OO心跳信息 fe 09 ce 01 01 00 00 00 01 00 02 0c 41 03 03 25 5d
01状态信息 fe 1f cf 01 01 01 00 00 00 00 00 00 00 00 00 00 00 00 14 01 ff ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 ff 00 9d
74 fe 14 86 01 01 4a 00 00 00 00 00 00 00 00 1f 8b ab 45 00 00 00 80 5c 00 00 00 6f db

性能

链路速度 硬件 更新速率 负载
115200baud XBee Pro 2.4 GHz 50Hz 224bytes
9600 baud XBee Pre XSC 50Hz 13bytes

mavlink的使用

MAVLink的板载移植
MAVLink是一个header–only库,所以MCU不用编译它。只需要添加mavlink/include到自己的包含目录的列表中(通常是你的Makefile)。

注意!! MAVLink的连接是无状态的

  • 但是QGroundControl要跟踪系统是否使用心跳消息。因此,请确保每60s/ 30s/10s或1s发送心跳(建议使用1Hz)。一旦心跳到达,系统只会被视为连接。
  • MAVLink并不是板载架构的核心部分。它仅仅提供的任务栏处理参数和任务/航点传输,自动驾驶仪只需要从相应的数据结构中读取值。
  • MAVLink具有非常稳定的消息格式,这是许多GCS和自动驾驶仪支持它的主要原因之一

附录使用mavlink协议的项目

1) 使用MAVLink的自动驾系统
ArduPilotMega (mainprotocol)
pxIMU Autopilot (mainprotocol)
SLUGS Autopilot (mainprotocol)
FLEXIPILOT (optionalprotocol)
UAVDevBoard/Gentlenav/MatrixPilot (optionalprotocol)
SenseSoarAutopilot (main protocol)
SmartAPAutopilot (main protocol)
AutoQuad 6 AutoPilot (mainprotocol)
2) 使用MAVLink的软件包
QGroundControl(Windows/Mac/Linux)
HK GroundControl Station (Windows)
APMPlanner (Windows/Mac)
QGroundControlw/ AutoQuad MainWidget (Windows/Mac/Linux)
Copter GCS(Android)
AutoQuadGCS (Android)
ROS to MAVLink bridge: https://github.com/mavlink/mavlink-ros 【还有mavros】
MAVCONN Lightweight Aerial Middleware http://pixhawk.ethz.ch/software/middleware/start
oooArk / MAVSim http://www.youtube.com/watch?v=-wQVrM5SL2o&fe
MAVLinkpython bindings
MAVProxy (allows toconnect multiple UDP/serial links, including flightgear):
3) 使用MAVLink的项目
ArduPilotMega http://code.google.com/p/ardupilot-mega/
MatrixPilot UAVDevBoard http://code.google.com/p/gentlenav/
PIXHAWK http://pixhawk.ethz.ch/
ETH Flying MachineArena http://www.idsc.ethz.ch/Research_DAndrea/FMA
ETH SenseSoarSolar Airplane Project http://www.sensesoar.ethz.ch/doku.php?id=news
ETH Skye BlimpProject http://www.projectskye.ch/
UC Santa CruzSLUGS http://slugsuav.soe.ucsc.edu/index.html
ArduCAMOSD http://code.google.com/p/arducam-osd/
Sky-Drones - UAVFlight Control Systems http://www.sky-drones.com/
AutoQuad -Autonomous Multirotor Vehicle controller http://autoquad.org/


MAVLink—最强大的微型飞行器通信协议

MAVLink 官方全部源码

Mavlink地面站编写之–协议分析

Mavlink资源及其相关索引

移植mavlink协议到STM32详细教程

mission planner发送数据之mavlink

Mavlink地面站编写之二–Mission PLanner地面站构架分析之MAVLINK航点读写

Mavlink地面站编写之三–Mission PLanner地面站构架分析之MAVLINK航点写入

Mavlink地面站编写之四-Mission Planner中ProgressReporterDialogue和读串口线程serialreaderthread的分析

你可能感兴趣的:(MAVLink认识、使用、自定义)