Отлаженный релиз с прошлым легким интерфейсом
Данный монорепозиторий содержит набор модулей новой структуры системы управления команды SPbUnited:
- SerViz (VIZualization SERver) - веб-интерфейс визуализации и управления стратегией
- TransNet (NETwork TRANSformer) - сервис-интерфейс между стратегией и внешним миром (SSL-Vision, SSL-GameController, управление роботами)
- TelSink (TELemetry SINK) [WIP] - сервис сбора телеметрии и воспроизведения реплеев
Итоговая структура системы выглядит примерно так:
Данный проект создавался с целью упростить структуру системы управления роботами нашей команы для соревнований RoboCup SSL, а также для более простой и легкой настройки окружения разработчика для новых учеников, команд и при проведении мастер-классов по данной дисциплине.
Основная функция данного проекта - это замена существующего ныне решения для связи кода стратегии с системой компьютерного зрения и управления роботами LARCmaCS (читается как лармакс) на простое в развертывании решение с гибким веб-интерфейсом и API для автоматического тестирования.
В перспективе данная программа позволит сохранять логи игр и состояния стратегии, анализировать их вручную и автоматически, а также количественно оценивать качество игры и автоматически тестировать работу стратегии в заданных игровых сценариях (в данный момент инструментов для количественной оценки качества игры у нас нет). Помимо этого планируется использовать возможность программатически управлять запуском стратегии, логгированием и состоянием игры для создания фреймворка для обучения ML алгоритмов стратегии
- Связь между модулями через zmq (ipc)
- Автоматическая установка зависимостей, сборка и запуск сервисов
- Чтение состояния игрового поля
- Отправка команд управления в grsim
- Связь с кодом стратегии, использущим strategy-bridge через zmq
- Получение данных Vision Trackers из Autoreferee
- Отрисовка игрового поля с объектами на поле в реальном времени. Реализованные объекты:
- Роботы
- Мяч
- Произвольные линии
- Многоугольники
- Круги (точки)
- Поддержка множества слоев с настройкой видимости для каждого слоя и настройкой высоты
- Возможность управления роботами через клавиатуру
- Python 3.12+
- Node.js 18
- Docker
- Docker Compose
- jq
Склонируйте репозиторий:
git clone https://github.com/SPbUnited/PAcmaCS.git
cd PAcmaCSУстановите зависимости и соберите проект:
make install
# тут может потребоваться перезапуск при первой установке Docker
make init
make buildЗапустите все сервисы:
make up-allПосле запуска можно подключится к serviz по адресу http://localhost:8000
Подтяните изменения из удаленного репозитория:
git pull
Заного соберите проект:
make init
make build # не нужно на MacOS
make- полная начальная установка (запускinstall,initиbuild)make install- устанавливает необходимые системные пакеты и Docker (также настраивает его, может потребоваться перезапуск)make init- инициализирует виртуальное окружение и зависимостиmake build- собирает образы для Dockermake up- запускает все внутренние (только необходимые) сервисы в Dockermake up-local- запускает все внутренние сервисы локально, может потребовать установки дополнительных пакетовmake up-autoreferee- запускает только autoreferee headless (без интерфейса)make up-grsim- запускает только grsim headless (без интерфейса)make up-all- запускает все сервисы (внутренние, а также grsim, autoreferee)make down- останавливает все сервисыmake purge- очищает все сервисы и их данные
Вся установка производится кодной командой
make initЗапустить PAcmaCS можно командой
make upЗапуск с симмулятором не поддерживается, его необходимо ставить отдельно (за помощью можете обращаться к нам).
По умолчанию Сервиз запускается с divB. Для смены настройки используемого дивизиона можно указать требуемый дивизион при запуске через make:
make up-all DIV='divB' # Для divB
make up-all DIV='divC' # Для divCЭта настройка влияет на количество создаваемых роботов в симуляторе и на отображаемое поле в Сервизе.

