INFO_PANEL.md


Информационная панель (проект)

Информационная панель предназначена наглядно объяснить, что происходит на соревнованиях.

Данный документ систематизирует работу над информационной панелью.

Желаемый функционал

Экран 1

screen1

Экран 2

screen2

Наброски

  • Информационная панель (наброски реализации)
    • web страничка
    • скорее всего с iframe вставками
    • две таблички
      • очередь и полёты (форма + таблица)
      • таблица лидеров (таблица)
    • две камеры (желательно к компу подключены и в сквадус поток)
    • Живая карта где отображается квадрокоптер в полёте (динамическая)
      • Картинка - трасса
      • Местоположение
      • Монетки которые не собраны
    • Визуализация происходящего внутри квадрокоптера
    • Цели безопасности
      • Отображаются все
      • Отображение того, что сработало, что ещё не сработало
      • А тут сработал kill switch

Детальное рассмотрение

  • Блок 1 (Ближайшее событие т.е. что произойдёт)
    • 1.1 показывает информацию о ближайшем задании
      • (MQTT) (возможно в отдельный топик) при срабатывании киберпрепятствия информация отображается
      • (MQTT) (реализация) отправление миссии и подтверждение от ОРВД через MQTT
      • анализируем миссию и по ней отображаем информацию
      • проверять, что точка миссии попадает в область КП
      • разрыв связи с сервером и т.п.
    • 1.2 показывает живую информацию по трассе
      • схема трассы, какая-то картинка квадрокоптера
        • (MQTT) маршрут из миссии
        • (MQTT) будет получать зоны и от туда их возьмёт панель
        • расположение монет и киберпрепятствий фиксированы (карта задаётся изначально вручную)
      • красными пятнами обозначить киберпрепятствия
      • обозначаем монетки
        • присутствует и отсутсвует
        • (MQTT) будет информация о монетках (при считывании наша и сами коды уже участники)
          • считалось или не считалась наша функция и она же будет передавать в MQTT факт считывания
      • квадрокоптер летит картинкой
        • (MQTT) брать из очереди
    • 1.3 показать на физическом уровне происходящее
      • требуется картинка квадрокоптера на которой будет обозначаться срабатывания киберпрепятствий и прочих эффектов
      • что мы можем отобразить (оформление например картинка поверх квадратики где появляется замочек и меняется цвет - квадратик зелёное, красное, без цвета и тоже самое с замочком)
        • (MQTT) открытие закрытия сервопривода и замок (пропускает сигнал или не пропускает)
        • (MQTT) killswitch с моторами
        • (MQTT) пищалка (клаксон)
        • (MQTT) диоды (для участников соревнований)
          • (TODO) проверить работу диодов и какие пины ему требуется, есть ли свободные.
          • полётный контроллер (есть, но пока не понятно требуется ли)
          • модуль безопасности
            • проверить мигание диодами с любого свободнго пина GPIO (с учётом занятых пинов UART и i2c)
            • два диода, синий, красный (один загорается, второй тухнет)
            • добавить в API функции (включает и выключает диоды)
        • (MQTT) модуль wifi который отображает, что нет связи с сервером
        • (MQTT) кп высота - умер барометр (отображаем его неисправность)
        • (MQTT) кп скорость - какой-то отдельный прибор (акселерометр)
        • (MQTT) кп смена маршрута - GPS/ЛНС неисправен
          • второй вариант добавляется сломанный автопилот
  • Блок 2 (приоритет)- цели безопасности
    • динамически обновляемый (получает информацию от МБ)
    • состояния у ЦБ три - да/нет/ещё не проверялось
    • ЦБ и как их проверять
      • ЦБ1 - Выполняются только аутентичные полётные задания
        • изначально белое
        • если полётное задание подписано правильной подписью, то зелёная
          • проблемы с подписью - красная
        • нарушение согласованного полётного задания - красная
      • ЦБ2 - Выполняются только авторизованные системой ОрВД задания
        • изначально стоит беленькое - пустота
        • как только миссия согласована с сервером ОрВД - ставим зелёную галочку
        • если сервер отправил, что лететь нельзя (миссия неавторизована), а дрон продолжит - ставим красную метку
          • если при перестроении маршрута не согласует с сервером (при изменении зон) - закрасить красным
          • если летит, а разрешения нет - красная
      • ЦБ3 - Все операции включая место сброса груза, выполняются согласно ограничениям в полётном задании.
        • изначально белое
        • если груз сбросили в нужной точке - зелёное
        • скорость/высота/зоны соблюдаются - зелёное (при начале полёта)
        • любое нарушение скорость/высота/зоны - красное
        • если сбросили где-то в другом месте - красное
          • считаем по логу
      • ЦБ4 - В случае критического отказа дрон снижается вертикально со скоростью не более 1 м/с (применительно только для последнего киберпрепятствия, когда летит в сторону и не реагирует на корректировки)
        • изначально белое
        • срабатывание killswitch и buzzer в нужном месте - зелёное
        • включение раньше или не включение в нужном месте - красное
      • ЦБ5 Для запроса авторизации вылета к система ОрВД используется только аутентичный идентификатор дрона
        • изначально белое
        • при согласовании с сервером вылета с подписью - зелёное
      • ЦБ6 При любых обстоятельствах полёты осуществляются вне запретных зон
        • изначально белое
        • при старте полёта - зелёное
        • при попадании в запретную зону если не на земле, то красная
  • Блок 3 (приоритет) - камеры
    • две отображающие полётную зону с двух углов
    • один или два источника подключенных к squadus/любой трансляции которую можно взять по сети
    • iframe/video obs что угодно
    • (TODO) разобраться с настройкой
  • Блок 4 - таблицы информационные и QR коды на полную версию
    • топ 3 очередь на полёты (гугловые/яндекс и т.п.)
    • топ 3 таблица лидеров (гугловые/яндекс или свою т.п.)
  • Блок 5 - Полезная информация
    • блок текстов, объявления, слайды
  • Блок 6 - сводный результат текущей команды
    • сколько очков
    • сколько летит
    • время доставки груза
    • разница между временем сброса комманд
    • название команд/вуз/город
      • (MQTT) старт получаем в виде какого-то серийника в топике
      • по серийнику узнаём какая команда/вуз/город т.к. выдавали конкретной команде конкретный квадрокоптер
      • (TODO) (возможно появились уникальные серийники raspberry pi4, проверить)
  • Блок 7 - повтор
    • повтор записи экрана демонстрационного полёта
    • запишем экран какого-то полёта и будем показывать при необходимости

Первый этап: получить необходимые для визуализации события

  • Приоритетами являются блоки 2 и 3, остальные по возможности.
  • Задачи со сроками в процессе формирования
  • Реализация инфо панели пересекается с первым этапом автоматизации оценки соревнований

Второй этап: отобразить требуемые данные

Отдельное web приложение отображает полученные данные.

Третий этап: пересмотреть структуру отображения информации (дизайн)

Работа над представлением данных (может быть как до соревнований, так уже и после)

Словарь терминов и сокращений

  • API - Application Programming Interface (интерфейс взаимодействия с программой/системой)
  • КП - Киберпрепятствия
  • МБ - Модуль безопасности
  • MQTT - Message Queuing Telemetry Transport т.е. подразумевается использование отдельного посредника для сообщений (message broker), например mosquitto.
  • ЦБ - Цели Безопасности