diff --git a/docs/mavlink.md b/docs/mavlink.md index 5ba18e4e..c744f345 100644 --- a/docs/mavlink.md +++ b/docs/mavlink.md @@ -36,3 +36,150 @@ MAVLink-сообщение это отдельная "порция" данных Каждое устройство (дрон, базовая станция и т. д.) имеет ID в сети MAVLink. В PX4 MAVLink ID менятся с помощью параметра `MAV_SYS_ID`. Каждое MAVLink сообщение содержит поле с ID системы-отправителя. Кроме того, некоторые сообщения (например, `COMMAND_LONG`) содержат также ID системы-получателя. Помимо ID систем, сообщения могут содержать ID компонента-отправителя и компонента-получателя. Примеры компонентов системы: полетный контроллер, внешняя камера, управляющий бортовой компьютер (Raspberry Pi в случае Клевера) и т. д. + +### Пример пакета + +Пример структуры MAVLink-пакета с сообщением `COMMAND_LONG`: + +
| + | Поле | +Длина | +Имя | +Комментарий | +
|---|---|---|---|---|
Заголовок |
+ magic |
+ 1 байт | +Метка начала | +0xFD для MAVLink 2.0 | +
len |
+ 1 байт | +Размер данных | ++ | |
incompat_flags |
+ 1 байт | +Обратно несовместимые флаги | +На данный момент не используется | +|
compat_flags |
+ 1 байт | +Обратно совместимые флаги | +На данный момент не используется | +|
seq |
+ 1 байт | +Порядковый номер сообщения | ++ | |
sysid |
+ 1 байт | +ID системы-отправителя | ++ | |
compid |
+ 1 байт | +ID компонента-отправителя | ++ | |
msgid |
+ 3 байта | +ID сообщения | ++ | |
Данные (пример) |
+ target_system |
+ 1 байт | +ID системы-получателя | ++ |
target_component |
+ 1 байт | +ID компонента–получателя | ++ | |
command |
+ 2 байта | +ID команды | ++ | |
confirmation |
+ 1 байт | +Номер для подтверждения | ++ | |
param1 |
+ 4 байта | +Параметр 1 | +Число с плавающей точкой одинарной точности | +|
param2 |
+ 4 байта | +Параметр 2 | ++ | |
param3 |
+ 4 байта | +Параметр 3 | ++ | |
param4 |
+ 4 байта | +Параметр 4 | ++ | |
param5 |
+ 4 байта | +Параметр 5 | ++ | |
param6 |
+ 4 байта | +Параметр 6 | ++ | |
param7 |
+ 4 байта | +Параметр 7 | ++ | |
| + | checksum |
+ 2 байта | +Контрольная сумма | ++ |
| + | signature |
+ 13 байт | +Сигнатура (опционально) | +Позволяет убедиться, что пакет не был скомпроментирован. +Обычно не используется. | +