MAVLink

Перейти к: навигация, поиск

MAVLink (Micro Air Vehicle Link) — протокол обмена информацией между наземной станцией (GCS, Ground control station, а также её компонентами) и любыми малыми беспилотными аппаратами (MAV - Micro Air Vehicle): летающими, ездящими, плавающими, и т.д.

3a6546469555d30cfcdaf4c30929d146.png

MAVLink распространяется под лицензией LGPL в виде модуля для python (есть удобная обёртка DroneKit) и генератора библиотек под различные языки, в том числе header-only С/C++ библиотеки. Есть так же репозитории уже сгенерированных библиотек для MAVLink версии v1 и версии v2.

Формат

Базовый пакет MAVLink, имеет следующий формат:

6e1d1419c9209e3ad47a4d5281eb5b4d.png

  • Первый байт пакета (STX) — это символ начала пакета:
    • 0xFD для версии v2.0
    • 0xFE для версии v1.0
    • 0x55 для версии v0.9
  • LEN — длина информационной части пакета.
  • SEQ — счётчик пакета (0-255), который поможет выявить потерю сообщения.
  • SYS (System ID) — идентификатор отправляющей системы.
  • COMP (Component ID) — идентификатор отправляющего компонента.
  • MSG (Message ID) — тип сообщения, от него зависит, какие данные будут лежать в информационной части пакета.
  • PAYLOAD — информационная часть пакета: сообщение, размером от 0 до 255 байт.
  • Два последних байта пакета — CKA и CKB, нижний и верхний байт, соответственно, содержат контрольную сумму пакета.

Библиотека MAVLink позволяет кодировать и раскодировать пакеты согласно протоколу, но она не регламентирует, какими аппаратными и программными средствами данные будет отправлены — это могут быть TCP/UDP сообщения, обмен через последовательный порт, да что угодно, что обеспечивает двухсторонний обмен. Библиотека обрабатывает входные данные побайтово, добавляя их в буфер и сама собирает из них пакет. Каждая система или компонент, может одновременно обмениваться данными по разным источникам, тогда для каждого источника назначается специальный идентификатор, называемый channel (канал). MAVLink содержит буфер на каждый канал.

Ссылки

См. также