INFO_PANEL.md
Информационная панель (проект)
- Последнее обновление: 29/07/2025
- Владелец документа: Безнос Юрий
- Статус: на рассмотрении
- Обсуждение: документ для предложений
Информационная панель предназначена наглядно объяснить, что происходит на соревнованиях.
Данный документ систематизирует работу над информационной панелью.
Желаемый функционал
Экран 1
Экран 2
Наброски
- Информационная панель (наброски реализации)
- 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/ЛНС неисправен
- второй вариант добавляется сломанный автопилот
-
- 1.1 показывает информацию о
- Блок 2 (приоритет)- цели безопасности
- динамически обновляемый (получает информацию от МБ)
- состояния у ЦБ три - да/нет/ещё не проверялось
- ЦБ и как их проверять
- ЦБ1 - Выполняются только аутентичные полётные задания
- изначально белое
- если полётное задание подписано правильной подписью, то зелёная
- проблемы с подписью - красная
- нарушение согласованного полётного задания - красная
- ЦБ2 - Выполняются только авторизованные системой ОрВД задания
- изначально стоит беленькое - пустота
- как только миссия согласована с сервером ОрВД - ставим зелёную галочку
- если сервер отправил, что лететь нельзя (миссия неавторизована), а дрон продолжит - ставим красную метку
- если при перестроении маршрута не согласует с сервером (при изменении зон) - закрасить красным
- если летит, а разрешения нет - красная
- ЦБ3 - Все операции включая место сброса груза, выполняются согласно ограничениям в полётном задании.
- изначально белое
- если груз сбросили в нужной точке - зелёное
- скорость/высота/зоны соблюдаются - зелёное (при начале полёта)
- любое нарушение скорость/высота/зоны - красное
- если сбросили где-то в другом месте - красное
- считаем по логу
- ЦБ4 - В случае критического отказа дрон снижается вертикально со скоростью не более 1 м/с (применительно только для последнего киберпрепятствия, когда летит в сторону и не реагирует на корректировки)
- изначально белое
- срабатывание killswitch и buzzer в нужном месте - зелёное
- включение раньше или не включение в нужном месте - красное
- ЦБ5 Для запроса авторизации вылета к система ОрВД используется только аутентичный идентификатор дрона
- изначально белое
- при согласовании с сервером вылета с подписью - зелёное
- ЦБ6 При любых обстоятельствах полёты осуществляются вне запретных зон
- изначально белое
- при старте полёта - зелёное
- при попадании в запретную зону если не на земле, то красная
- ЦБ1 - Выполняются только аутентичные полётные задания
- Блок 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метра от точки сброса груза
- Если да – то всё хорошо
- Узнаём по координатам cargo drop
- Как считаем – От первого Takeoff – До сброса груза в нужном месте
- Поле - 3 – Команда/ВУЗ/город таблица редактируемая под паролем
- Можем сразу вбить список в ИнфоПанель
- Запись на полёты и администратор выбирает чья попытка сейчас
- Та команда, кого администратор выбрал отображается в ИнфоПанели в блоке 6-3
- Нужна кнопка ресета попытки (время и баллы)
- Поля таблицы
- Команда
- ВУЗ
- Город
- Критерий 1 - Наличие формальных артефактов
- Критерий 2 - Прохождение виртуальной трассы в ЦД
- Критерий 3 - Прохождение предстартового теста физическим дроном – Таблица с метками – Поля
- номер
- координата (или несколько полей координат)
- идентификатор rfid – На эту таблицу должна быть завязана логика подсветки меток на карте – И логика суммирования
-
Блок 7 - повтор
- повтор записи экрана демонстрационного полёта
- запишем экран какого-то полёта и будем показывать при необходимости
Первый этап: получить необходимые для визуализации события
- Приоритетами являются блоки 2 и 3, остальные по возможности.
- Задачи со сроками в процессе формирования
- Реализация инфо панели пересекается с первым этапом автоматизации оценки соревнований
Второй этап: отобразить требуемые данные
Отдельное web приложение отображает полученные данные.
Третий этап: пересмотреть структуру отображения информации (дизайн)
Работа над представлением данных (может быть как до соревнований, так уже и после)
Словарь терминов и сокращений
- API - Application Programming Interface (интерфейс взаимодействия с программой/системой)
- КП - Киберпрепятствия
- МБ - Модуль безопасности
- MQTT - Message Queuing Telemetry Transport т.е. подразумевается использование отдельного посредника для сообщений (message broker), например mosquitto.
- ЦБ - Цели Безопасности
- Страницы
- AUTOMATIC_SCORER
- INFO_PANEL
- README
- ZONES