Spisu treści:

Robot Nao naśladuje ruchy za pomocą sensora Kinect: 7 kroków
Robot Nao naśladuje ruchy za pomocą sensora Kinect: 7 kroków

Wideo: Robot Nao naśladuje ruchy za pomocą sensora Kinect: 7 kroków

Wideo: Robot Nao naśladuje ruchy za pomocą sensora Kinect: 7 kroków
Wideo: Мигель Николелис: Обезьяна управляет роботом силой мысли. На самом деле. 2024, Wrzesień
Anonim
Robot Nao naśladuje ruchy za pomocą sensora Kinect
Robot Nao naśladuje ruchy za pomocą sensora Kinect

W tej instrukcji wyjaśnię, w jaki sposób pozwalamy robotowi Nao naśladować nasze ruchy za pomocą czujnika kinect. Właściwym celem projektu jest cel edukacyjny: nauczyciel ma możliwość rejestrowania określonych zestawów ruchów (np. taniec) i może wykorzystać te nagrania, aby umożliwić dzieciom w klasie naśladowanie robota. Przechodząc przez cały ten instruktaż krok po kroku, powinieneś być w stanie w pełni odtworzyć ten projekt.

Jest to projekt związany ze szkołą (NMCT @ Howest, Kortrijk).

Krok 1: Podstawowa wiedza

Aby odtworzyć ten projekt, musisz posiadać podstawową wiedzę:

- Podstawowa znajomość Pythona

- Podstawowa znajomość języka C# (WPF)

- Podstawowa wiedza o trygonometrii

- Wiedza o tym, jak skonfigurować MQTT na malinowym pi

Krok 2: Zdobycie niezbędnych materiałów

Wymagane materiały do tego projektu:

- Malina Pi

- Sensor Kinect v1.8 (Xbox 360)

- Robot Nao lub robot wirtualny (choregraf)

Krok 3: Jak to działa

Image
Image
Jak to działa
Jak to działa

Sensor kinect jest podłączony do komputera z uruchomioną aplikacją WPF. Aplikacja WPF wysyła dane do aplikacji Python (robot) przy użyciu MQTT. Pliki lokalne są zapisywane, jeśli użytkownik tak zdecyduje.

Szczegółowe wyjaśnienie:

Zanim rozpoczniemy nagrywanie, użytkownik musi wprowadzić adres IP brokera MQTT. Poza tym potrzebujemy również tematu, na który chcemy opublikować dane. Po naciśnięciu start aplikacja sprawdzi, czy można nawiązać połączenie z brokerem i przekaże nam informację zwrotną. Sprawdzenie, czy temat istnieje, nie jest możliwe, więc jesteś za niego w pełni odpowiedzialny. Gdy oba dane wejściowe będą prawidłowe, aplikacja rozpocznie wysyłanie danych (współrzędne x, y&z z każdego złącza) ze śledzonego szkieletu do tematu na brokerze MQTT.

Ponieważ robot jest połączony z tym samym brokerem MQTT i zasubskrybowany na ten sam temat (to też trzeba wpisać w aplikacji python) aplikacja python otrzyma teraz dane z aplikacji WPF. Korzystając z trygonometrii i algorytmów napisanych samodzielnie, przekształcamy współrzędne na kąty i radiany, których używamy do obracania silników wewnątrz robota w czasie rzeczywistym.

Gdy użytkownik skończy nagrywanie, naciska przycisk stop. Teraz użytkownik otrzymuje wyskakujące okienko z pytaniem, czy chce zapisać nagranie. Gdy użytkownik kliknie Anuluj, wszystko zostanie zresetowane (dane zostaną utracone) i można rozpocząć nowe nagranie. Jeśli użytkownik chce zapisać nagranie, powinien wpisać tytuł i nacisnąć „zapisz”. Po naciśnięciu 'zapisz' wszystkie zebrane dane są zapisywane w lokalnym pliku, używając tytułu wejściowego jako nazwy pliku. Plik jest również dodawany do widoku listy po prawej stronie ekranu. W ten sposób po dwukrotnym kliknięciu nowego wpisu w liście, plik jest odczytywany i wysyłany do brokera MQTT. W konsekwencji robot odtworzy nagranie.

Krok 4: Konfiguracja brokera MQTT

Konfigurowanie brokera MQTT
Konfigurowanie brokera MQTT

Do komunikacji pomiędzy kinectem (projekt WPF) a robotem (projekt Python) wykorzystaliśmy MQTT. MQTT składa się z brokera (komputer z linuxem, na którym działa oprogramowanie mqtt (np. Mosquitto)) oraz temat, na który klienci mogą się subskrybować (otrzymują wiadomość z tematu) i publikują (wysyłają wiadomość na ten temat).

Aby skonfigurować brokera MQTT, wystarczy pobrać cały obraz Jessie. To jest czysta instalacja dla twojego Raspberry Pi z brokerem MQTT. Temat to "/Sandro".

Krok 5: Instalowanie zestawu SDK Kinect w wersji 1.8

Aby sensor Kinect działał na Twoim komputerze, musisz zainstalować Microsoft Kinect SDK.

Możesz go pobrać tutaj:

www.microsoft.com/en-us/download/details.a…

Krok 6: Instalacja Pythona V2.7

Robot współpracuje z frameworkiem NaoQi, ten framework jest dostępny tylko dla pythona 2.7 (NIE 3.x), więc sprawdź jaką wersję pythona zainstalowałeś.

Możesz pobrać Pythona 2.7 tutaj:

www.python.org/downloads/release/python-27…

Krok 7: Kodowanie

Kodowanie
Kodowanie
Kodowanie
Kodowanie
Kodowanie
Kodowanie

Github:

Uwagi:

- Kodowanie za pomocą kinect: najpierw poszukujesz połączonego kinect. Po zapisaniu tego we właściwości włączyliśmy color- i skeletonstream na kinect. Colorstream to wideo na żywo, podczas gdy skeletonstream oznacza, że zostanie wyświetlony szkielet osoby przed kamerą. Colorstream nie jest tak naprawdę potrzebny, aby ten projekt działał, po prostu go włączyliśmy, ponieważ bitmapping ze szkieletowego strumienia do colorstreamu wygląda zgrabnie!

- W rzeczywistości to szkielet streamu robi robotę. Włączenie skeletonstream oznacza, że szkielet osoby jest śledzony. Z tego szkieletu otrzymujesz wszelkiego rodzaju informacje m.in. orientacje kości, wspólne informacje… Kluczem do naszego projektu była wspólna informacja. Korzystając ze współrzędnych x-y i z każdego ze stawów śledzonego szkieletu, wiedzieliśmy, że możemy wprawić robota w ruch. Tak więc co 0,8 sekundy (za pomocą timera) publikujemy współrzędne x, y&z każdego ze stawów brokerowi mqtt.

- Ponieważ projekt python ma subskrypcję na brokerze mqtt, możemy teraz uzyskać dostęp do danych w tym projekcie. Wewnątrz każdego przegubu robota znajdują się dwa silniki. Te silniki nie mogą być sterowane bezpośrednio za pomocą współrzędnych x, y&z. Używając trygonometrii i zdrowego rozsądku, przekonwertowaliśmy współrzędne x, y&z stawów na kąty niestabilne dla robotów.

Tak więc w zasadzie co 0,8 sekundy projekt WPF publikuje współrzędne x, y & z każdego ze stawów. W konsekwencji w projekcie Pythona współrzędne te są przekształcane na kąty, które są następnie przesyłane do odpowiednich silników robota.

Zalecana: