В этом примере показано, как реализовать микросервисы MAVLink, такие как Mission protocol и Parameter protocol, используя блоки MAVLink Serializer и MAVLink Deserializer в Simulink ®.
В этом примере используются:
MATLAB ®
Симулинк ®
БПЛА Toolbox™
Stateflow™
Toolbox™ управления приборами
Toolbox™ системы DSP
Микросервис протокола миссии в MAVLink позволяет наземной станции управления (GCS) связываться с беспилотником для отправки и получения информации о миссии, необходимой для выполнения миссии. Микросервис протокола Mission позволяет:
Загрузка миссии из GCS на беспилотник
Загрузить миссию с беспилотника
Установка текущего элемента миссии
Микросервис Parameter protocol в MAVLink позволяет обмениваться между дроном и GCS параметрами, представляющими важную конфигурационную информацию. Параметры представлены парами ключ-значение.
В этом примере объясняется, как:
Загрузите миссию, состоящую из 10 ППМ из GCS, на беспилотник, эмулированный в Simulink. В качестве GCS используйте QGroundControl (QGC). Если на хост-компьютере не установлен QGC, загрузите его отсюда.
Считывание и запись данных в список из 28 параметров от КГК и дрона.
Чтобы начать работу, выполните следующие действия.
1. Откройте файл exampleHelperMAVLinkMissionAndParamProtocol в MATLAB и нажмите кнопку Выполнить. При этом создаются переменные рабочей области, необходимые для инициализации данных в Simulink и загрузки параметров автопилота в QGC.
2. Запустите пример модели в Simulink, щелкнув Открыть модель (Open Model) в верхней части этой страницы. Можно также использовать следующую команду для запуска модели в любое время после однократного нажатия кнопки Открыть модель (Open Model).
open_system('MissionAndParameterProtocolUsingMAVLink.slx');

Модель Simulink состоит из:
1. Настройка модели: Эта область в модели состоит из двух блоков подсистемы - Initialize Function и Global Data Stores. Эти блоки используются для инициализации данных, которые будут использоваться в модели из сигналов, генерируемых в базовой рабочей области.
2. Протокол Rx: Эта область в модели состоит из receive_udp блок подсистемы, который используется для приема данных UDP от QGC. Подсистема содержит функцию Simulink, которая считывает данные MAVLink по UDP из QGC на каждом этапе моделирования. Принятые данные MAVLink передаются в диаграмму Stateflow для декодирования и синтаксического анализа.

3. Протокол миссии: Эта область в модели состоит из двух блоков подсистемы, которые отправляют запросы миссии и подтверждения миссии в QGC. Эти функции вызываются из диаграммы Stateflow, реализующей микросервис миссии.
4. Mission and Parameter Protocol (Протокол задания и параметров): Диаграмма статофлоу (Stateflow), реализующая логику задания и параметров в модели.

Полученные данные MAVLink десериализованы в process_udp Функция Simulink, а затем переданная логике Stateflow, которая выполняет четыре задачи:
A. Миссия: Эта подшаблон Stateflow получает задание от QGC и декодирует ППМ в миссии. Он реализует протокол микросервиса Миссии, который загружает миссию из QGC на беспилотник, как описано в Upload a Mission to the Vehicle.

b. Sending Params: Этот вложенный блок Stateflow загружает параметры, созданные в базовой рабочей области, в QGC, следуя протоколу параметров, как описано в разделе Чтение всех параметров.

C. SendSingleParams: Этот подшарт Stateflow определяет, как отправить один параметр из дрона в QGC, как описано в разделе Чтение одного параметра.
d. WriteSingleParam: этот подшарт Stateflow определяет, как обновлять значения параметров из QGC и видеть их на беспилотнике, как описано в разделе Параметры записи.

5. Логика считывания полученных ППМ и параметров: Stateflow реализует два протокола и выводит полученные ППМ и загруженные значения параметров.

В следующем разделе объясняется, как загрузить миссию из QGC на беспилотник.
1. Запустите QGC и перейдите к виду в плане.

2. В этом примере доступна предварительно спланированная миссия MissionProtocol.plan. Нажмите кнопку Открыть модель в верхней части этой страницы, чтобы сохранить файл плана на компьютере. После сохранения файла .plan запустите QGC и щелкните Файл > Открыть, чтобы загрузить план в QGC.

После загрузки плана миссия отображается в QGC.

3. Запустите модель Simulink. Модель Simulink посылает сообщение HEARTBEAT по MAVLink в QGC и таким образом устанавливает соединение с QGC.
4. Щелкните Загрузить в правом верхнем углу интерфейса QGC, чтобы загрузить задание из QGroundControl.

5. Обратите внимание, что значения широты и долготы первых двух ППМ загруженной миссии отображаются в Simulink.

6. Измените ППМ 1 и ППМ 2 в QGC, перетащив ППМ в другое место на плане. Загрузите измененную миссию, нажав Загрузить обязательный.

7. Проверьте измененные значения широты/долготы для ППМ 1 и 2 в Simulink.

При запуске файла exampleHelperMAVLinkMissionAndParamProtocol в окне команд MATLAB создается переменная рабочего пространства apParams, представляющая собой массив из 28 параметров полета.
При запуске модели Simulink она соединяется с QGC, и QGC считывает параметры из Simulink.
Параметры могут быть визуализированы и изменены в QGC:
1. Перейдите на панель Настройка транспортного средства (Vehicle Setup) в QGC. Выберите вкладку Параметры (Parameters).
2. На вкладке Параметры (Parameters) выберите Другое (Other), чтобы вывести список всех параметров, считанных QGC из Simulink.

3. В модели отображаются значения параметров GDNC_TSTAR и GDNC_TURN_LEAD. Щелкните по GDNC_TSTAR и GDNC_TURN_LEAD параметрам и измените их соответствующие значения в QGC.

4. QGC записывает значения этих измененных параметров с помощью микросервиса протокола параметров в Simulink. Наблюдайте за изменяемыми значениями параметров в Simulink.

Диаграммы Stateflow, описанные в этом примере, не реализуют следующий сценарий:
Если связь между дроном и QGC обрывается в какой-то момент и вновь подключается, загрузка протокола миссии должна возобновиться после ППМ, из которого дрон передал данные перед отключением.
Диаграммы Stateflow можно изменять так, чтобы даже при привязке связи Stateflow запомнил последний переданный ППМ.