Skip to content

SPbUnited/PAcmaCS

Repository files navigation

Version CI smoke (build + up)

Отлаженный релиз с прошлым легким интерфейсом

PAcmaCS - Programmatically Actionable multi-agent Cybernetic Studio

Данный монорепозиторий содержит набор модулей новой структуры системы управления команды SPbUnited:

  • SerViz (VIZualization SERver) - веб-интерфейс визуализации и управления стратегией
  • TransNet (NETwork TRANSformer) - сервис-интерфейс между стратегией и внешним миром (SSL-Vision, SSL-GameController, управление роботами)
  • TelSink (TELemetry SINK) [WIP] - сервис сбора телеметрии и воспроизведения реплеев

Итоговая структура системы выглядит примерно так:

Мотивация

Данный проект создавался с целью упростить структуру системы управления роботами нашей команы для соревнований RoboCup SSL, а также для более простой и легкой настройки окружения разработчика для новых учеников, команд и при проведении мастер-классов по данной дисциплине.

Основная функция данного проекта - это замена существующего ныне решения для связи кода стратегии с системой компьютерного зрения и управления роботами LARCmaCS (читается как лармакс) на простое в развертывании решение с гибким веб-интерфейсом и API для автоматического тестирования.

В перспективе данная программа позволит сохранять логи игр и состояния стратегии, анализировать их вручную и автоматически, а также количественно оценивать качество игры и автоматически тестировать работу стратегии в заданных игровых сценариях (в данный момент инструментов для количественной оценки качества игры у нас нет). Помимо этого планируется использовать возможность программатически управлять запуском стратегии, логгированием и состоянием игры для создания фреймворка для обучения ML алгоритмов стратегии

Реализованные функции

PAcmaCS

  • Связь между модулями через zmq (ipc)
  • Автоматическая установка зависимостей, сборка и запуск сервисов

TRANSNET

  • Чтение состояния игрового поля
  • Отправка команд управления в grsim
  • Связь с кодом стратегии, использущим strategy-bridge через zmq
  • Получение данных Vision Trackers из Autoreferee

SERVIZ

  • Отрисовка игрового поля с объектами на поле в реальном времени. Реализованные объекты:
    • Роботы
    • Мяч
    • Произвольные линии
    • Многоугольники
    • Круги (точки)
  • Поддержка множества слоев с настройкой видимости для каждого слоя и настройкой высоты
  • Возможность управления роботами через клавиатуру

Документация

Зависимости

  • 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 - собирает образы для Docker
  • make up - запускает все внутренние (только необходимые) сервисы в Docker
  • make up-local - запускает все внутренние сервисы локально, может потребовать установки дополнительных пакетов
  • make up-autoreferee - запускает только autoreferee headless (без интерфейса)
  • make up-grsim - запускает только grsim headless (без интерфейса)
  • make up-all - запускает все сервисы (внутренние, а также grsim, autoreferee)
  • make down - останавливает все сервисы
  • make purge - очищает все сервисы и их данные

Использование на системе MacOS

Вся установка производится кодной командой

make init

Запустить PAcmaCS можно командой

make up

Запуск с симмулятором не поддерживается, его необходимо ставить отдельно (за помощью можете обращаться к нам).

Переключение дивизионов

По умолчанию Сервиз запускается с divB. Для смены настройки используемого дивизиона можно указать требуемый дивизион при запуске через make:

make up-all DIV='divB' # Для divB
make up-all DIV='divC' # Для divC

Эта настройка влияет на количество создаваемых роботов в симуляторе и на отображаемое поле в Сервизе.

About

End-to-end strategy development framework for RoboCup SSL

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors