Projekt realizowany w ramach przedmiotu Interfejsy człowiek komputer na 1 roku studiów magisterskich Automatyka i Robotyka.
Projekt miał na celu realizacje gry inspirowanej na Mario Kart natomiast zamieniając sterowanie na bazujące na wielomodalnościowym podejściu. Zaproponowane przez nas sterowanie opiera się na wizji, dzwięku oraz dotyku. Takie rozwiązanie może zapewnić nadzwyczajne doświadczenia z gry oraz stanowić bazę pod multimodalne interfejsy użytkownika w przyszłości, które dzięki rozwojowi metod analizy danych i sztucznej inteligencji zyskują popularność.
Projekt składa się z 2 kluczowych folderów
- Unreal_project w którym znajduje się gra stworzona z pomocą silnika Unreal Engine
- Control_scripts zawierający skrypty w pythonie umożliwiające wielomodalnościowe sterowanie
Gra w Unreal Engine została przygotowana w wersji 5.7.4, w celu uruchomienia gry należy zainstalować środowisko w w.w wersji lub uruchomić plik '.exe' na platformę windows znajdujący się w realeases githuba.
Aby przygotować środowisko Python ze wszystkimi zależnościami potrzebnymi do uruchomienia skryptów sterujących (w tym bibliotek do obsługi wizji, dźwięku, komunikacji szeregowej oraz klawiatury), użyj menedżera uv (lub innego, np. pip) i wykonaj poniższe polecenia w katalogu głównym projektu:
# 1. Stworzenie wirtualnego środowiska Python 3.11 (nadpisując istniejące, jeśli potrzeba)
uv venv --python 3.11 --clear
# 2. Instalacja wszystkich zależności z obu plików requirements.txt oraz dodatkowych bibliotek (pyserial, keyboard)
uv pip install -r requirements.txt -r Control_scripts/Audio/requirements.txt pyserial keyboard
# 3. Aktywacja środowiska w terminalu:
# PowerShell:
.venv\Scripts\Activate.ps1
# CMD:
.venv\Scripts\activate.bat
# Linux/macOS:
source .venv/bin/activateKomunikacja z grą odbywa się za pomocą protokołu udp i jest zdefiniowana w pliku connection_settings.json.
Sterowanie grą składa się z poniższych modalności
Uruchamiaj każdą modalność w osobnym terminalu (z katalogu głównego projektu). Najpierw uruchom Unreal Engine, potem skrypty sterujące.
Przykładowa kolejność:
- Unreal Engine (
Unreal_project). - Dotyk (pedal):
python Control_scripts/Pedal/Program/komunikacja/comms.py- Dzwięk:
python Control_scripts/Audio/keyword_detection.py- Wizja (wybierz jedną wersję):
python Control_scripts/steering_DG/steering_w_angles/main_controller.pylub
python Control_scripts/steering_DG/steering_w_centroids/main_controller.py- Wizja 2 (MediaPipe Hands):
python Control_scripts/Camera/camera_module.py- Klawiatura (opcjonalnie, przykład):
python Control_scripts/Examples/player_1.pyWszystkie skrypty korzystają z ustawień sieciowych z connection_settings.json.