wydawanie komend robotowi nao przy pomocy kontrolera kinect

Transkrypt

wydawanie komend robotowi nao przy pomocy kontrolera kinect
WYDAWANIE KOMEND ROBOTOWI NAO
PRZY POMOCY KONTROLERA KINECT
Projekt z przedmiotu Technologie Obiektowe i Komponentowe
Grzegorz Dziuban
1. Wstęp
Celem projektu jest stworzenie aplikacji umożliwiającej wydawanie komend robotowi NAO za
pomocą gestów dłońmi poprzez kontroler Kinect. Część sprzętowa projektu składa się z
wspomnianego wyżej robota NAO oraz kontrolera Kinect podłączonego do serwera przetwarzającego
zarejestrowane ruchy oraz pośredniczącego w komunikacji. Głównym założeniem od strony
programistycznej projektu jest pobranie danych z kontrolera Kinect, oraz przetworzenie ich przy
pomocy biblioteki OpenCV w celu odczytania gestów wykonywanych dłońmi przez użytkownika. Jeżeli
dane ułożenie zostanie prawidłowo rozpoznane, odpowiadająca mu komenda zostanie przesłana do
robota NAO sterowanego przy pomocy biblioteki NAOqi.
2. Założenia
Główną przeszkodą w realizacji projektu jest prawidłowe rozpoznawanie ruchów
wykonywanych przez użytkownika. Przez ostanie lata pojawiło się sporo rozwiązań oferujących mniej
lub bardziej zaawansowane funkcje rozpoznawania ruchu/otoczenia. Pośród nich warto wymienić
między innymi rozwiązania oparte na pomiarach laserowych(time-of-flight, triangulation), oraz te
wykorzystujące kamery(właściwie każdy rodzaj, także Kinect i PS Eye). Pierwsze podejście oferuje
zadowalające tempo pozyskiwania informacji jedynie w przypadku laserów 3D. Biorąc pod uwagę, że
nawet lasery 2D wymagające mozolnego pozycjonowania są bardzo kosztowne, skupiono się na
podejściu opartym na kamerach.
W celu właściwego odczytania gestów wykonywanych przez użytkownika obraz pobierany z
kontrolera Kinect będzie musiał zostać podzielony ze względu na głębię (odległość od kamery).
Najbliżej znajdujące się obiekty ruchome będą traktowane przez program jako źródło, które należy
analizować w dalszych krokach. Dzięki zgodności kontrolera Kinect ze standardem OpenNI możliwe
jest łatwe pobieranie mapy głębi obrazu.
Po wyizolowaniu obiektów rozpoznanych jako dłonie nastąpi dalsze ich przetwarzanie przy
pomocy biblioteki OpenCV. Przy pomocy klasy Convex Hull oznaczony zostanie zarys dłoni, następnie
określając liczbę, położenie oraz rozmiar wgłębień (convexity defect) w zmierzonym zarysie nastąpi
próba ustalenia położeń poszczególnych palców dłoni. Jeżeli dłoń zostanie utrzymana przez pewien
ustalony czas w poprawnym położeniu aplikacja rozpozna to jako wykonanie gestu przez użytkownika.
Założeniem projektu jest aby pewną określoną sekwencję rozpoznanych gestów przekształcić
na komendę dla robota NAO, która następnie zostanie wykonana poprzez bibliotekę NAOqi. Użytym
językiem, zarówno do przetwarzania sygnału przy pomocy OpenCV jak i do wydawania komend
robotowi NAO jest C++.
3. Wymagania funkcjonalne
Opis
System pozwala
Priorytet
Wysoki
Krytyczność
Wysoka
Iteracja
Pierwsza - do 31.05.14
Wysoki
Wysoka
Pierwsza - do 31.05.14
Wysoki
Wysoka
Pierwsza - do 31.05.14
Niski
Niska
Druga- do 14.06.14
prawidłowo rozpoznać
ruchome obiekty
znajdujące się najbliżej
ekranu
System pozwala na
rozpoznać ułożenie
dłoni
System przekształca
informacje o ułożeniu
dłoni na komendy dla
robota NAO
System umożliwia
zapamiętanie własnych
ułóżeń rąk i
zmapowanie ich na
predefiniowany zestaw
komend
4. Podobne rozwiązania
Spośród dostępnych projektów oferujących pokrewną funkcjonalność warto wymienić:
1. Kinect Dynamic Time Warping – projekt open source implementujący rozpoznawanie gestów.
2. Kinect 3D Hand Tracking – zaawansowane płatne rozwiązanie do śledzenia ruchów rąk.
3. Point Grab Hand Gesture Recognition – komercyjna biblioteka do rozpoznawania ruchu dłoni
z użyciem kamery.
4. HandVu – bezpłatna aplikacja do rozpoznawania gestów dłoni z użyciem kamery.
5. Flutter – j. w.
6. Kinect Skeletal Tracking – dostępny w ramach SDK zestaw bibliotek do rozpoznawania ruchu
ciała.
5. Licencje użytego oprogramowania
W skład oprogramowania użytego przy tworzeniu aplikacji wchodzą biblioteka OpenCV, oraz NAOqi
SDK. Licencje na kórych zostały one wydane to kolejno:
•
OpenCV – BSD licence (bezpłatna zarówno do użytku komercyjnego jak i akademickiego)
•
NAOqi - all parts of the products from Aldebaran Robotics, including program and packaging,
documentation, web pages and other related items are Copyright © 2006-2012 Aldebaran
Robotics, unless specifically noted. All rights reserved.
6. Dokumentacja
Dokumentacja użytych bibliotek:
•
OpenCV - http://docs.opencv.org/
•
NAOqi - https://community.aldebaran-robotics.com/doc/1-14/
7. Skład i kompetencje grupy projektowej
Grzegorz Dziuban – znajomość C++, brak doświadczenia w programowaniu interfejsów naturalnych,
brak znajomości OpenCV oraz NAOqi.
8. Analiza ryzyka
Podstawowymi zagrożeniami dla omawianego projektu są:
Opis
Prawdopodobieństwo
zaistnienia
Wpływ na przebieg prac
Możliwe środki
zapobiegawcze
Przekroczenie czasu
przeznaczonego na
projekt
Duże
Duży
Ograniczenie
implementowanej
funkcjonalności
Niemożność ukończenia
z powodu braku
krytycznej
funkcjonalności w
użytych bibliotekach
B. małe
B. duży
Gruntowna analiza
dokumentacji przed
podjęciem dalszych
prac

Podobne dokumenty