По видеоканалу необходимо обеспечить обнаружение, захват и сопровождение самолёта, идущего на посадку. При этом камера размещена на подвижно платформе, для которой требовалось управление. В мои задачи входило:

  • Разработка архитектуры ПО Станции
  • Выбор механизма обмена между низкоуровневой частью и GUI оператора (MQTT+Flatbuffers), разработка протокола
  • Внедрение модели определения и сопровождения БПЛА по видеоканалу средствами OpenCV
  • Web-документация, Python утилиты для экспериментов

Связь компонентов можно представить диаграммой:

graph LR; subgraph ПК pc1[Станция] pc2[Имитатор контроллера] pc3[Логгер] pc4[Брокер MQTT] end subgraph Ethernet e1[Топики брокера] e2[GigE] end subgraph Платформа l1[Камера] l2[Управляющий контроллер] l3[Другие контроллеры] end l2---e1 pc1---e1 l1-->e2 e2-->pc1 pc2-.->e1 e1-.->pc3

Размещение компонентов:

  • ПК - ноутбук с установленным ПО станции, брокером и соответствующими утилитами.
  • Платформа - тренога с контроллерами, поворотной системой и камерами. Обмениваются по Ethernet.

В платформу входят следующие физические компоненты:

  • Управляющий контроллер - интерфейсная плата, через которую идёт взаимодействие по Ethernet со станцией.
  • Другие контроллеры - платы управления двигателями, к которым имеет доступ только управляющий контроллер по низкоуровневым интерфейсам.
  • Камеры - сверхконтрастная для поиска и сопровождения цели, видимая для анализа оператором.

Программные компоненты ПК:

  • Станция - ПО для работы пользователя, управляет остальным оборудованием.
  • Брокер - сервер mosquitto для организации сетевого обмена.
  • Имитатор контроллера - консольное приложение, которое взаимодействует с сервером вместо реального управляющего контроллера. Используется для локальной отладки.
  • Логгер - консольное приложение, осуществляет запись всех сообщений по топикам брокера.