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, проверить)
    • Поле 1 - сколько очков – Есть очки которые должны считаться по какой-то логике
      • Есть таблица с критериями (по горизонтали критерии, по вертикали попытки)
      • Поля таблицы:
        • Название команды
          • Из таблицы
        • ВУЗ
          • Из таблицы
        • Город
          • Из таблицы
        • Тип попытки
          • Тестовая
          • Зачётная 1
          • Зачётная 2
        • Критерий 1 - Наличие формальных артефактов
        • Критерий 2 - Прохождение виртуальной трассы в ЦД
        • Критерий 3 - Прохождение предстартового теста физическим дроном
        • Критерий 4 - Авторизация дрона в ИОрВД
          • Можно посчитать автоматически
        • Критерий 5-1 - Прохождение КП1 – сброс груза
          • Можно посчитать автоматически
        • Критерий 5-2 - Прохождение КП2 – изменение точки маршрута
          • Получили событие, что летим в другую точку (взлом)
          • Смотрим событие, когда прилетел до следующей точки
          • Если между этими двумя событиями не влетел в зоны, то всё хорошо
        • Критерий 5-3 - Прохождение КП3 – изменение высоты
          • Событие когда происходит взлом высоты
          • Смотрим событие, когда прилетел до следующей точки
          • Если в процессе не поднялся до запретной высоты X, то всё хорошо
        • Критерий 5-4 - Прохождение КП4 – уменьшение скорости
          • Событие когда происходит взлом скорости
          • Событие когда отправлена команда на увеличение
          • В ручном режиме пока
        • Критерий 5-5 - Прохождение КП5 – увеличение скорости
          • В ручном режиме пока
        • Критерий 5-6 - Прохождение КП6 – изменение точки критическое
          • Получили событие, что летим в другую точку (взлом)
          • Смотрим событие, что произошёл killswitch
          • Если между этими двумя событиями не влетел в зоны, то всё хорошо
        • Критерий 6-1 - Приостановка полета – по запросу ИОрВД
          • Событие прекратить полёт от ОрВД
          • Событие пришла команда от МБ на приостановку
          • Событие от ОрВД возобновить полёт
          • Если между событиями от ОрВД вторая команда не поступила, то без очков
        • Критерий 6-2 - Приостановка полета – при разрыве связи
          • Пока под вопросом
          • Нужны события от ОрВД о том, что связь прервалась и возобновилась
        • Критерий 7 – Доставка груза
          • Узнаём по координатам cargo drop
          • Когда cargo drop сделался (только если замок открыт)
          • Находится ли оно в радиусе 1метра от точки сброса груза
            • Если да – то всё хорошо
        • Критерий 8 - Прохождение трассы без нарушения ЗЗ
          • Событие о приходящих ЗЗ
          • Отслеживать не попал ли квадрокоптер в ЗЗ
          • Частично вручную – сбросить баллы
        • Критерий 9 - Согласование новых маршрутов с ИОрВД
          • Событие о приходящих ЗЗ
          • До того как долетел до следующего Waypoint
          • Между этими событиями должен произвести согласование
        • Критерий 10 - Аварийная остановка полета
          • Всегда проверять, что когда был вызван killswitch, то должен быть вызван buzzer тоже
          • Проверять когда произошло.
            • Если произошло после события критического отклонения от маршрута, то одни баллы
            • Если в другом месте, то другие.
        • Критерий 11 - Сканирование меток
          • Получаем события считывания меток (при условии, что метка верная согласно координатам и тэгу-идентификатору rfid из таблицы меток)
          • По событиям сканирования подсчитываем сумму
          • После события сброса груза в нужном месте начисляем баллы
        • Критерий 12 - Скоростное прохождение трассы
          • Вручную
        • Время
          • От первого Takeoff
          • До сброса груза в нужном месте (но фиксируем любой вариант действительно произошедшего сброса груза)
          • Узнаём по координатам cargo drop
          • Когда cargo drop сделался (только если замок открыт), мы зафиксировали время окончания (и местоположения)
        • Время засчитывается
          • Находится ли оно в радиусе 1метра от точки сброса груза
          • Если да – то всё хорошо
        • Суммарное количество очков
          • Подсчёт суммы всех полей
    • Поле - 2
      • Как считаем – От первого Takeoff – До сброса груза в нужном месте
        • Узнаём по координатам cargo drop
          • Когда cargo drop сделался (только если замок открыт), мы зафиксировали время окончания (и местоположения)
          • А отображаем время только если сбросилось в нужной точке
        • Находится ли оно в радиусе 1метра от точки сброса груза
          • Если да – то всё хорошо
    • Поле - 3 – Команда/ВУЗ/город таблица редактируемая под паролем
      • Можем сразу вбить список в ИнфоПанель
      • Запись на полёты и администратор выбирает чья попытка сейчас
      • Та команда, кого администратор выбрал отображается в ИнфоПанели в блоке 6-3
      • Нужна кнопка ресета попытки (время и баллы)
      • Поля таблицы
        • Команда
        • ВУЗ
        • Город
        • Критерий 1 - Наличие формальных артефактов
        • Критерий 2 - Прохождение виртуальной трассы в ЦД
        • Критерий 3 - Прохождение предстартового теста физическим дроном – Таблица с метками – Поля
        • номер
        • координата (или несколько полей координат)
        • идентификатор rfid – На эту таблицу должна быть завязана логика подсветки меток на карте – И логика суммирования
  • Блок 7 - повтор

    • повтор записи экрана демонстрационного полёта
    • запишем экран какого-то полёта и будем показывать при необходимости

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

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

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

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

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

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

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

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