В этом примере показано, как реализовать микросервисы MAVLink как протокол Миссии и протокол Параметра с помощью Сериализатора MAVLink, и MAVLink Deserializer блокируется в Simulink®.
Этот пример использует:
MATLAB®
Simulink®
UAV Toolbox™
Stateflow™
Instrument Control Toolbox™
DSP System Toolbox™
Микросервис протокола Миссии в MAVLink позволяет Станции наземного управления (GCS) связываться с беспилотником, чтобы отправить и получить информацию о миссии, должен был выполнить миссию. Микросервис протокола Миссии позволяет вам:
Загрузите миссию от GCS до беспилотника
Загрузите миссию от беспилотника
Установите текущий элемент миссии
Микросервис протокола Параметра в MAVLink позволяет вам обмениваться параметрами, представляющими важную конфигурационную информацию между беспилотником и GCS. Параметры представлены как пары "ключ-значение".
Этот пример объясняет как:
Загрузите миссию, состоящую из 10 waypoints от GCS до беспилотника, эмулированного в Simulink. Используйте QGroundControl (QGC) в качестве GCS. Если вам не установили QGC на хосте - компьютере, загрузите его отсюда.
Читайте и запишите данные к списку 28 параметров от QGC и беспилотника.
Чтобы начать, выполните эти шаги:
1. Откройте exampleHelperMAVLinkMissionAndParamProtocol файл в MATLAB и нажмите Run. Это создает переменные рабочей области, требуемые инициализировать данные в Simulink и загрузить параметры автопилота на QGC.
2. Запустите модель в качестве примера в Simulink путем нажатия на Open Model наверху этой страницы. Можно также использовать следующую команду, чтобы запустить модель в любое время после того, как вы нажали кнопку Open Model однажды:
open_system('MissionAndParameterProtocolUsingMAVLink.slx');
Модель Simulink состоит из:
1. Setup модели: Эта область в модели состоит из двух блоков подсистемы - Инициализируют Хранилища Функциональных и Глобальных данных. Эти блоки используются, чтобы инициализировать данные, которые будут использоваться в модели от сигналов, сгенерированных в базовом рабочем пространстве.
2. Протокол Rx: Эта область в модели состоит из receive_udp
блок подсистемы, который используется, чтобы получить данные о UDP из QGC. Подсистема содержит функцию Simulink, которая считывает данные MAVLink по UDP от QGC в каждом шаге симуляции. Полученные данные MAVLink передаются диаграмме Stateflow для декодирования и парсинга.
3. Протокол миссии: Эта область в модели состоит из двух блоков подсистемы, которые отправляют запросы миссии и подтверждения миссии к QGC. Эти функции вызваны от диаграммы Stateflow, которая реализует микросервис миссии.
4. Миссия и Протокол Параметра: диаграмма Stateflow, которая реализует миссию и логику параметра в модели.
Полученные данные MAVLink десериализовываются в process_udp
Функция Simulink и затем передала логике Stateflow, которая выполняет четыре задачи:
a. ReceivingMission: Эта субдиаграмма Stateflow получает миссию от QGC и декодирует waypoints в миссии. Это реализует протокол микросервиса Миссии, который загружает миссию от QGC, чтобы гудеть, как описано в Загрузке Миссия к Транспортному средству.
b. SendingParams: Эта субдиаграмма Stateflow загружает параметры, созданные в базовом рабочем пространстве к QGC следующим протокол параметра, как описано в Чтении Все Параметры.
c. SendSingleParams: Эта субдиаграмма Stateflow задает, как отправить один параметр от беспилотника к QGC, как описано в Чтении Один Параметр.
d. WriteSingleParam: Эта субдиаграмма Stateflow задает, как обновить значения параметров от QGC и видеть их на беспилотнике, как описано в Параметрах Записи.
5. Логика, чтобы считать полученный waypoints и параметры: Stateflow реализует эти два протокола и выводит полученный waypoints и загруженные значения параметров.
Следующий раздел объясняет, как загрузить миссию от QGC до беспилотника.
1. Запустите QGC и перейдите к Представлению Плана.
2. Предварительно запланированная миссия, MissionProtocol.plan, доступна с этим примером. Нажмите Open Model наверху этой страницы, чтобы сохранить файл плана к вашему компьютеру. После того, как вы сохранили .plan файл, запускаете QGC и нажимаете File> Open, чтобы загрузить план на QGC.
После того, как вы загрузите план, миссия отображается в QGC.
3. Запустите модель Simulink. Модель Simulink отправляет сообщение HEARTBEAT по MAVLink к QGC, и таким образом установите связь с QGC.
4. Нажмите Upload в правом верхнем из интерфейса QGC, чтобы загрузить миссию от QGroundControl.
5. Заметьте, что значения широты и долготы от первых двух waypoints загруженной миссии отображаются в Simulink.
6. Измените waypoint1 и waypoint2 в QGC путем перетаскивания waypoints в другое место в плане. Загрузите модифицированную миссию путем нажатия на Upload Required.
7. Наблюдайте модифицированные значения Широты/Долготы для waypoint 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, объясненные в этом примере, не реализуют следующий сценарий:
Если связь между беспилотником и QGC прерывается в какой-то момент и снова соединяется, загрузка протокола миссии должна возобновиться после waypoint, от которого у беспилотника были передаваемые данные перед разъединением.
Можно изменить диаграммы Stateflow, так, чтобы, даже когда коммуникация привязывается, Stateflow помнил последний переданный waypoint.