Техник Шоу Сервер

Сервер для управления группой дронов во время шоу. Отображает их состояние в реальном времени, позволяет отправлять команды, файлы анимаций и конфигураций.


Содержание

  1. Требования и запуск
  2. Структура проекта
  3. Общее устройство
  4. Главное окно
  5. Таблица дронов
  6. Кнопки управления
  7. Меню
  8. Типичные сценарии работы

1. Требования и запуск

Что нужно для запуска

  • Python 3.9.7
  • Менеджер виртуальных окружений (venv или pyenv)
  • Установленные библиотеки из requirements.txt

Файл requirements.txt содержит:

configobj==5.0.6
PyQt5
PyQt5-sip
Quamash==0.6.1
selectors2==2.0.1
six==1.13.0

Как запустить

# 1. Клонировать репозиторий
git clone https://github.com/Gromodzila/Technic-Show-Server.git
cd Technic-Show-Server

# 2. Создать виртуальное окружение с Python 3.9.7
python3.9 -m venv .venv

# 3. Активировать окружение
source .venv/bin/activate       # macOS / Linux
# .venv\Scripts\activate        # Windows

# 4. Установить зависимости
pip install -r requirements.txt

# 5. Запустить сервер
cd server
python server.py

После запуска откроется главное окно с таблицей дронов и панелью управления.


2. Структура проекта

TehnicShowServer/
├── server/                    # серверная часть
│   ├── server.py              # точка входа, GUI, логика интерфейса
│   ├── config/                # конфигурационные файлы
│   │   ├── server.ini
│   │   └── spec/configspec_server.ini
│   ├── icons/                 # иконки и splash-картинки
│   └── modules/               # модули сервера
│       ├── server_core.py     # сетевое ядро: Server, Client
│       ├── copter_table.py    # виджет таблицы дронов
│       ├── copter_table_models.py  # модель данных дронов
│       ├── config_editor_models.py # редактор конфигов
│       ├── visual_land_dialog.py   # диалог визуальной посадки
│       └── ui/                # сгенерированные формы PyQt5
│
├── lib/                       # общие библиотеки
│   ├── __init__.py
│   ├── messaging.py           # протокол обмена сообщениями
│   ├── config.py              # работа с конфигурациями
│   └── lib.py                 # функция b_partial
│
└── requirements.txt

3. Общее устройство

Сервер состоит из двух частей:

  • Сетевое ядро — слушает TCP-порт, принимает подключения от дронов, ведёт обмен сообщениями в формате JSON, поддерживает heartbeat и восстановление соединения.
  • Графический интерфейс — окно оператора: таблица дронов, кнопки команд, меню, диалоги.

При запуске сервер:

  1. Читает конфигурацию из config/server.ini
  2. Открывает TCP-порт (25000 по умолчанию) для подключения дронов
  3. Запускает фоновый поток обработки клиентов
  4. Опционально рассылает UDP-broadcast, чтобы дроны нашли сервер автоматически
  5. Показывает главное окно оператора

Каждый дрон — отдельный TCP-клиент. Сервер может работать одновременно с десятками подключённых дронов.


4. Главное окно

Окно делится на три области:

  • Центр — таблица дронов (занимает большую часть экрана)
  • Справа — вертикальная колонка кнопок управления
  • Сверху — строка меню

5. Таблица дронов

Каждая строка — один подключённый дрон. Первый столбец — флажок выбора.

Цвета ячеек

Цвет фона ячейки показывает статус проверки:

Цвет Значение
Зелёный Проверка пройдена
Красный Проверка не пройдена
Жёлтый Данные отсутствуют
Маджента Устаревшая версия прошивки или конфигурации

Столбцы

Столбец Описание
Флажок(галочка) Дрон выбран. Команды применяются только к выбранным дронам
copter ID Имя дрона, например technic-0001
version Версия git-коммита прошивки
configuration Версия конфигурационного файла
animation ID Название текущей анимации и её статус
battery Напряжение и процент заряда
FCU status Состояние полётного контроллера: STANDBY, ACTIVE и др.
sensors Статус калибровки сенсоров
mode Режим полёта
checks Результат самопроверки. Двойной клик открывает подробный отчёт
current x y z yaw frame_id Текущие координаты и ориентация дрона
start x y z yaw action delay Стартовая точка для анимации
last task Последнее выполненное задание
dt Разница времени между дроном и сервером

Работа с таблицей

  • Левый клик по флажку — выбрать или снять выбор дрона
  • Двойной клик по copter ID — открыть диалог редактирования имени
  • Двойной клик по checks — показать детальный отчёт самопроверки
  • Правый клик по заголовку столбца — меню настройки видимых столбцов, их порядка и ширины
  • Правый клик по ячейке configuration — контекстное меню:
    • Edit config — открыть редактор конфигурации дрона
    • Copy config to selected — скопировать конфиг на другие выбранные дроны

Пресеты отображения столбцов (например, «Батарея и позиция», «Полный отчёт») сохраняются в конфиге сервера.


6. Кнопки управления

Все кнопки находятся в правой колонке главного окна и сгруппированы по назначению.

Панель запуска

Элемент Действие
Start after Задержка в секундах перед стартом анимации
Preflight check Запрос телеметрии у выбранных дронов. Обновляет статусы в таблице
Start animation Запуск анимации: дроны взлетают и начинают движение через заданную задержку
Pause Пауза. При повторном нажатии превращается в Resume и продолжает анимацию с текущего места

Панель посадки

Элемент Действие
Land selected Посадка выбранных дронов. Плавное снижение в текущей точке
Land ALL Посадка всех подключённых дронов одновременно
Emergency land Аварийная посадка выбранных дронов. Быстрее обычной, без плавных траекторий

Панель управления двигателями

Элемент Действие
Disarm ALL Отключение моторов у всех дронов. Только после посадки
Disarm selected Отключение моторов у выбранных дронов. Только после посадки
Test leds Тест LED-подсветки. Помогает найти конкретный дрон в воздухе
Takeoff Взлёт выбранных дронов немедленно, без задержки
Z Галочка: взлёт на указанную высоту в метрах. Без галочки — высота по умолчанию
Flip Переворот (сальто) выбранных дронов. Только при активном FCU

Панель обслуживания

Элемент Действие
Reboot FCU Перезагрузка полётного контроллера. Дрон должен стоять неподвижно
Calibrate gyro Калибровка гироскопа. Дрон должен стоять неподвижно
Calibrate level Калибровка горизонта. Дрон должен стоять неподвижно

7. Меню

Меню Server

Пункт Действие
Edit server config Открыть редактор конфигурации сервера config/server.ini
Edit any config Открыть редактор любого .ini файла
Update server git Обновить исходники через git fetch и git pull --rebase
Restart server Перезапустить сервер

Меню Table

Пункт Действие
Toggle select Если выбраны все — снять выделение, иначе — выбрать всех
Select all Поставить галочки у всех дронов
Deselect all Снять галочки у всех дронов
Remove selected drones Убрать выбранных дронов из таблицы
Configure columns Открыть редактор пресетов столбцов

Меню Selected drones

Команды применяются к дронам, у которых стоит галочка.

Подменю Send

Пункт Действие
Animations Выбрать папку с анимациями .csv или .txt. Каждый файл уходит дрону, чей ID есть в имени файла
Camera calibrations Выбрать папку с калибровками камеры .yaml. Аналогичное сопоставление по ID
Aruco map Отправить карту ArUco. После отправки сервис technic на дроне перезапускается
Animation Отправить один файл анимации сразу всем выбранным дронам
Configuration Отправить .ini-файл конфигурации. Режимы Modify или Rewrite
Launch files folder Отправить папку с .launch и .yaml файлами
FCU parameters file Отправить файл параметров PX4 .params и запросить загрузку
File Отправить любой файл на любой путь дрона
Command Отправить произвольную команду дрону

Прочее

Пункт Действие
Retrive file Запросить файл с дрона и сохранить его локально

Подменю Restart service

Пункт Действие
chrony Перезапустить службу синхронизации времени на дроне
technic Перезапустить ROS-сервис technic
technic-show Перезапустить сервис technic-show

Старт и высота

Пункт Действие
Set start X Y to current position Записать текущие координаты как стартовую точку
Reset start position Сбросить стартовую точку к значению по умолчанию
Set Z offset to ground Записать текущее значение Z как смещение земли
Reset Z offset Сбросить смещение земли

Прочее

Пункт Действие
Reboot Перезагрузка операционной системы дрона. Занимает 30–60 секунд

8. Типичные сценарии работы

Подготовка к шоу

  1. Включить дроны, дождаться их подключения. Строки появятся в таблице
  2. Поставить галочки у нужных дронов
  3. Нажать Preflight check. Убедиться, что ключевые столбцы зелёные
  4. Отправить файлы: анимации, конфигурации, карту ArUco
  5. Проверить, что версия прошивки и конфигурации совпадает у всех дронов

Запуск шоу

  1. Установить задержку Start after (например, 10 секунд)
  2. Нажать Start animation
  3. Следить за таблицей. При необходимости — Pause

Аварийные ситуации

  • Один дрон ведёт себя нештатно: перехватить его через ручное управление
  • Полный сбой: Land ALL или Emergency land(ознакомится перед применением)

Обслуживание

  • Перезагрузить полётный контроллер — Reboot FCU
  • Перезапустить ROS-сервис — Selected drones → Restart service → technic

results matching ""

    No results matching ""