Skip to content
Deltharis edited this page Jun 9, 2014 · 5 revisions

RemoteNAO

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.

  1. 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.

  1. 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.

  1. 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

  1. 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
Clone this wiki locally