-
Notifications
You must be signed in to change notification settings - Fork 0
Home
RemoteNAO to zdalne centrum komend głosowych dla robota NAO. Projekt ten pozwala na tworzenie zdalnych implementacji funkcjonalności dla robota NAO dostępnych z poziomu RESTowego API i możliwych do podmienienia w locie bez potrzeby dostępu do samego robota, rozpoznawanych za pomocą dynamicznie pobieranych z serwera dostępnych komend głosowych.
- Budowanie projektu
Projekt składa się z dwóch części. Pierwszą jest mavenowy projekt Javy 1.7 przeznaczony do deployowania na serwer Apache Tomcat 7.0
Drugim zaś, są dwa pliki .py odpowiadające za obsługę robota. Należy, po skonfigurowaniu IP i portu robota w kodzie client.py odpalić go w środowisku pythona majacym dostęp do biblioteki naoqi.
- Symulowanie robota
Możliwe jest uruchomienie aplikacji na wirtualnym robocie dostępnym w ramach pakietu Choreographe. Nie dysponuje on modułem rozpoznawania tekstu, przez co niezbędna jest zmiana w kodzie sprawiająca że korzystamy z wersji Dummy (przyjmującej input konsolowy) tego modułu dostępnego w ramach pliku speechReco.py.
- Dodawanie nowej funkcjonalności
Aplikacja serwerowa została zaprojektowana z myślą o łatwym dodawaniu i edytowaniu funkcjonalności.
By dodać nową funkcję:
- w pakiecie pl.agh.edu.nao.actionImplementations należy stworzyć klasę o nazwie będącej nazwą funkcji widzianej z poziomu robota - ze względu na ograniczenia techniczne nazwa ta nie może zawierać dużych liter poza pierwszą
- zaimplementować w tej klasie interfejs ActionImplementation korzystając z dostępnych akcji w pakiecie pl.agh.edu.nao.actions
- redeploy aplikacji
Po ponownym uruchomieniu aplikacji robota, bądź wywołaniu w niej funkcji "reload" dodana funkcjonalność będzie dostępna
- Rozszerzanie API
Dodawanie funkcjonalności ograniczone jest przez tekstowe API komunikacji pomiędzy serwerem a klientem. By ją rozszerzyć należy:
- w pakiecie pl.agh.edu.nao.actions dodać nową Akcję dziedziczącą z AbstractAction. Jej implementacja powinna zawierać w postaci pól wszystkie parametry potrzebne docelowej funkcji z API NAOqi, oraz ich gettery i settery. Musi definiować swój unikalny kod akcji z pomocą konstruktora superklasy.
- w pliku client.py dodać funkcję obsługującą taką akcję - parsującą parametry z pomocą jsona, zmieniającą unicode na ascii w przypadku zmiennych tekstowych i wywołującą odpowiednią funkcje API NAOqi
- w client.py w parseAction() dodać wywołanie nowej funkcji warunkowane równością kodu akcji.
- redeploy aplikacji serwera, ponowne uruchomienie aplikacji klienckiej