INFO_PANEL.md
Информационная панель (проект)
- Последнее обновление: 18/06/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, проверить)
- Блок 7 - повтор
- повтор записи экрана демонстрационного полёта
- запишем экран какого-то полёта и будем показывать при необходимости
Первый этап: получить необходимые для визуализации события
- Приоритетами являются блоки 2 и 3, остальные по возможности.
- Задачи со сроками в процессе формирования
- Реализация инфо панели пересекается с первым этапом автоматизации оценки соревнований
Второй этап: отобразить требуемые данные
Отдельное web приложение отображает полученные данные.
Третий этап: пересмотреть структуру отображения информации (дизайн)
Работа над представлением данных (может быть как до соревнований, так уже и после)
Словарь терминов и сокращений
- API - Application Programming Interface (интерфейс взаимодействия с программой/системой)
- КП - Киберпрепятствия
- МБ - Модуль безопасности
- MQTT - Message Queuing Telemetry Transport т.е. подразумевается использование отдельного посредника для сообщений (message broker), например mosquitto.
- ЦБ - Цели Безопасности
- Страницы
- AUTOMATIC_SCORER
- INFO_PANEL
- README
- ZONES