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