Jump to content

МАВЛинк

MAVLink или Micro Air Vehicle Link — протокол для связи с небольшими беспилотными летательными аппаратами . Он спроектирован как библиотека маршалинга сообщений только для заголовков. MAVLink был впервые выпущен в начале 2009 года. [ 1 ] Лоренц Мейер по лицензии LGPL . [ 2 ]

Приложения

[ редактировать ]

Он используется в основном для связи между наземной станцией управления (GCS) и беспилотными транспортными средствами , а также для взаимной связи подсистем транспортного средства. Его можно использовать для передачи ориентации автомобиля, его местоположения по GPS и скорости.

Структура пакета

[ редактировать ]

В версии 1.0 структура пакета следующая:

Имя поля Индекс (байты) Цель
Начало кадра 0 Обозначает начало передачи кадра (v1.0: 0xFE)
Длина полезной нагрузки 1 длина полезной нагрузки (n)
Последовательность пакетов 2 Каждый компонент подсчитывает свою последовательность отправки. Позволяет обнаружить потерю пакетов.
Идентификатор системы 3 Идентификация системы ОТПРАВКИ. Позволяет различать разные системы в одной сети.
Идентификатор компонента 4 Идентификация компонента SENDING. Позволяет различать различные компоненты одной и той же системы, например, IMU и автопилот.
Идентификатор сообщения 5 Идентификация сообщения — идентификатор определяет, что «означает» полезная нагрузка и как ее следует правильно декодировать.
Полезная нагрузка от 6 до (n+6) Данные в сообщении зависят от идентификатора сообщения.
КПР (n+7) до (n+8) Контрольная сумма всего пакета, исключая знак начала пакета (от младшего к старшему биту).

После версии 2 структура пакета была расширена до следующего: [ 3 ]

Имя поля Индекс (байты) Цель
Начало кадра 0 Обозначает начало передачи кадра (v2: 0xFD)
Длина полезной нагрузки 1 длина полезной нагрузки (n)
флаги несовместимости 2 Флаги, которые необходимо понимать для совместимости с MAVLink
флаги совместимости 3 Флаги, которые можно игнорировать, если они не понятны
Последовательность пакетов 4 Каждый компонент подсчитывает свою последовательность отправки. Позволяет обнаружить потерю пакетов.
Идентификатор системы 5 Идентификация системы ОТПРАВКИ. Позволяет различать разные системы в одной сети.
Идентификатор компонента 6 Идентификация компонента SENDING. Позволяет различать различные компоненты одной и той же системы, например, IMU и автопилот.
Идентификатор сообщения с 7 до 9 Идентификация сообщения — идентификатор определяет, что «означает» полезная нагрузка и как ее следует правильно декодировать.
Полезная нагрузка от 10 до (n+10) Данные в сообщении зависят от идентификатора сообщения.
КПР (n+11) до (n+12) Контрольная сумма всего пакета, исключая знак начала пакета (от младшего к старшему биту).
Подпись (n+13) до (n+25) Подпись для проверки того, что сообщения происходят из надежного источника. (необязательный)

Чтобы гарантировать целостность сообщения, для каждого сообщения в последних двух байтах вычисляется контрольная сумма циклического избыточного кода (CRC). Другая функция поля CRC — гарантировать, что отправитель и получатель согласны с передаваемым сообщением. Он вычисляется с использованием хэша ITU X.25/SAE AS-4 байтов в пакете, исключая индикатор начала кадра (поэтому оцениваются 6+n+1 байт, дополнительный +1 является начальным значением). .

Кроме того, при вычислении CRC в конец данных добавляется начальное значение. Начальное значение генерируется с каждым новым набором сообщений протокола и хэшируется аналогично пакетам из каждой спецификации сообщения. Системы, использующие протокол MAVLink, могут использовать для этой цели предварительно вычисленный массив. [ 4 ]

Алгоритм CRC MAVLink реализован на многих языках, например Python. [ 5 ] и Ява. [ 6 ] [ 7 ] [ 8 ]

Сообщения

[ редактировать ]

Полезной нагрузкой описанных выше пакетов являются сообщения MAVLink. Каждое сообщение идентифицируется по полю идентификатора в пакете, а полезные данные содержат данные из сообщения. документ XML- в исходном коде MAVlink. [ 9 ] имеет определение данных, хранящихся в этой полезной нагрузке.

Ниже приведено сообщение с идентификатором 24, извлеченное из XML-документа.

<message id="24" name="GPS_RAW_INT">
        <description>The global position, as returned by the Global Positioning System (GPS). This is NOT the global position estimate of the system, but rather a RAW sensor value. See message GLOBAL_POSITION for the global position estimate. Coordinate frame is right-handed, Z-axis up (GPS frame).</description>
        <field type="uint64_t" name="time_usec">Timestamp (microseconds since UNIX epoch or microseconds since system boot)</field>
        <field type="uint8_t" name="fix_type">0-1: no fix, 2: 2D fix, 3: 3D fix. Some applications will not use the value of this field unless it is at least two, so always correctly fill in the fix.</field>
        <field type="int32_t" name="lat">Latitude (WGS84), in degrees * 1E7</field>
        <field type="int32_t" name="lon">Longitude (WGS84), in degrees * 1E7</field>
        <field type="int32_t" name="alt">Altitude (WGS84), in meters * 1000 (positive for up)</field>
        <field type="uint16_t" name="eph">GPS HDOP horizontal dilution of position in cm (m*100). If unknown, set to: UINT16_MAX</field>
        <field type="uint16_t" name="epv">GPS VDOP vertical dilution of position in cm (m*100). If unknown, set to: UINT16_MAX</field>
        <field type="uint16_t" name="vel">GPS ground speed (m/s * 100). If unknown, set to: UINT16_MAX</field>
        <field type="uint16_t" name="cog">Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX</field>
        <field type="uint8_t" name="satellites_visible">Number of satellites visible. If unknown, set to 255</field>
</message>

Примечание. XML-документ описывает логический порядок полей протокола. В фактическом формате проводов (и типичном представлении в памяти) порядок полей изменен. [ 10 ] для уменьшения проблем с выравниванием структуры данных . Это может стать источником путаницы при чтении кода, созданного на основе определений сообщений.

[ редактировать ]

MAVLink используется в качестве протокола связи во многих проектах, что может означать некоторую совместимость между ними. Написано руководство, объясняющее основы MAVLink. [ 11 ]

  1. ^ «Первоначальная фиксация · mavlink/mavlink@a087528» . Гитхаб .
  2. ^ «Протокол связи MAVLink Micro Air Vehicle — QGroundControl GCS» . Архивировано из оригинала 18 августа 2018 г. Проверено 31 июля 2013 г.
  3. ^ «Сериализация · Руководство разработчика MAVLink» . mavlink.io . Проверено 22 августа 2019 г.
  4. ^ «Переупорядочение полей и дополнительный расчет CRC — QGroundControl GCS» . qgroundcontrol.org . Архивировано из оригинала 15 июня 2013 г.
  5. ^ «GitHub — ArduPilot/pymavlink: интерфейс и утилиты Python MAVLink» . 18 августа 2019 г. – через GitHub.
  6. ^ «GitHub — arthurbenemann/droidplanner: наземная станция управления для устройств Android» . 2 июля 2019 г. – через GitHub.
  7. ^ «Генератор кода Java и библиотека Java для MAVLink: ghelle/MAVLinkJava» . 4 августа 2019 г. – через GitHub.
  8. ^ «GitHub —dronefleet/mavlink: Java API для связи MAVLink» . 2 августа 2019 г. – через GitHub.
  9. ^ «GitHub — mavlink/mavlink: Библиотека сортировки/связи для дронов» . 20 августа 2019 г. — через GitHub.
  10. ^ «Переупорядочение полей и дополнительный расчет CRC — QGroundControl GCS» . qgroundcontrol.org . Архивировано из оригинала 15 июня 2013 г.
  11. ^ Баласубраманиан, Шьям (15 ноября 2013 г.). «Учебное пособие по MAVLink для абсолютных чайников (Часть –I)» . diydrones.com .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 87dd955ee53ee6571705bb90657123a2__1709900400
URL1:https://arc.ask3.ru/arc/aa/87/a2/87dd955ee53ee6571705bb90657123a2.html
Заголовок, (Title) документа по адресу, URL1:
MAVLink - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)