Обмен данными для микросервисов MAVLink, таких как протокол миссии и протокол параметра, с использованием Simulink

В этом примере показано, как реализовать микросервисы MAVLink, такие как протокол Mission и протокол Parameter, с помощью блоков MAVLink Serializer и MAVLink Deserializer в Simulink ®.

Этот пример использует:

  • MATLAB ®

  • Simulink ®

  • UAV- Toolbox™

  • Stateflow™

  • Instrument Control Toolbox™

  • DSP System Toolbox™

Mission protocol microservice в MAVLink позволяет наземной станции управления (GCS) общаться с беспилотником для отправки и получения информации миссии, необходимой для выполнения миссии. Микросервис протокола Mission позволяет:

  • Загрузите миссию от GCS к беспилотнику

  • Загрузите миссию с дрона

  • Установите текущий элемент миссии

Микросервис протокола Parameter в MAVLink позволяет обмениваться параметрами, представляющими важное строение информацию между дроном и GCS. Параметры представлены в виде пар "ключ-значение".

Этот пример объясняет, как:

  • Загрузите миссию, состоящую из 10 путевых точек от GCS, на беспилотник, эмулированный в Simulink. Используйте QGroundControl (QGC) в качестве GCS. Если на хост-компьютер не установлен QGC, загрузите его отсюда.

  • Считывайте и записывайте данные в список 28 параметров от QGC и дрона.

Модель проекта

Чтобы начать, выполните следующие действия:

1. Откройте файл exampleHelperMAVLinkMissionAndParamProtocol в MATLAB и нажатие кнопки Запуска. Это создает переменные рабочей области, необходимые для инициализации данных в Simulink и загрузки параметров автопилота в QGC.

2. Запустите пример модели в Simulink, нажав Открыть модель в верхней части этой страницы. Можно также использовать следующую команду, чтобы запустить модель в любое время после того, как вы один раз нажали кнопку Открыть модель (Open Model):

open_system('MissionAndParameterProtocolUsingMAVLink.slx');

Модель Simulink состоит из:

1. Модель Setup: Эта область в модели состоит из двух блоков подсистемы - Initialize Function и Глобальных данных 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, которая выполняет четыре задачи:

А. ReceivingMission: Эта субдиаграмма Stateflow получает миссию от QGC и декодирует путевые точки в миссии. Он реализует протокол микросервиса Миссии, который загружает миссию от КГК к беспилотнику, как описано в разделе «Загрузка миссии к транспортному средству».

б. SendingParams: Эта субдиаграмма Stateflow загружает параметры, созданные в базовом рабочем пространстве, в QGC путем следования протоколу параметра, как описано в Read All Parameters.

c. SendSingleParams: Эта субдиаграмма Stateflow определяет, как отправить один параметр от дрона в QGC, как описано в Read Single Parameter.

d. WriteSingleParam: Эта субдиаграмма Stateflow определяет, как обновить значения параметров из QGC и увидеть их на дроне, как описано в Write Parameters.

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

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

Загрузите миссию от QGC на беспилотник и запустите модель Simulink

1. Запустите QGC и перейдите к виду в плане.

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

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

3. Запустите модель Simulink. Модель Simulink отправляет сообщение HEARTBEAT по MAVLink в QGC и таким образом устанавливает связь с QGC.

4. Нажмите Загрузить в правом верхнем углу интерфейса QGC, чтобы загрузить миссию из QGroundControl.

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

6. Измените точки пути 1 и точки пути 2 в QGC путем перетаскивания точек пути в другое место на плане. Загрузите измененное задание, нажав Загрузить обязательно.

7. Наблюдайте измененные значения Широты/Долготы для путевой точки 1 и 2 в Simulink.

Измените параметры в QGC и отправьте их в Simulink

Когда вы запускаете файл exampleHelperMAVLinkMissionAndParamProtocol в Командном окне MATLAB, создается переменная рабочей области apParams, которая является массивом из 28 параметров рейса.

Когда вы запускаете модель Simulink, она соединяется с QGC, и QGC читает параметры из Simulink.

Параметры могут быть визуализированы и изменены в QGC:

1. Перейдите к панели «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, объясненные в этом примере, не реализуют следующий сценарий:

  • Если связь между дроном и КГК обрывается в какой-то момент и вновь соединяется, загрузка протокола миссии должна возобновиться после путевой точки, с которой беспилотник передал данные перед отключением.

Можно изменить диаграммы Stateflow, так что, даже когда связь привязывается, Stateflow запоминает последнюю переданную путевую точку.