В этом примере показано, как реализовать микросервисы 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 на беспилотник.
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.
Когда вы запускаете файл 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 запоминает последнюю переданную путевую точку.