22 stycznia 2013

Kinect - wprowadzenie

Dziś  o programowaniu będzie niewiele. Za to będziemy skakać, biegać, machać rękami i robić masę różnych, nieprzyjemnych rzeczy. Będziemy zatem gadać o Kinect'cie. 
Microsoft przedstawił swój kontroler w 2010 roku, na targach E3. Początkowo miał on służyć tylko do grania i sterowania konsolą Xbox 360, jednak zorganizowana grupa ciekawskich internautów dobrała się do intymnych części urządzenia. Niedługo później światło dzienne ujrzały filmiki prezentujące lepiej lub gorzej zrealizowane aplikacje, wykorzystujące ukryty potencjał owej zabawki. Microsoft jednak nie reagował zbytnio na te rewelacje. Być może dlatego, że urządzenie do końca nie jest to ich wynalazkiem tylko izraelskiej firmy PrimeSense, o której będę wspominał pewnie nie raz. Koniec końców mały/miękki wypuścił SDK pracujące z systemem Windows, drugą wersję kontrolera, przeznaczoną tylko dla PC, oraz niezwykle poruszającą reklamówkę.
Co na to PrimeSense? Nie próżnowali i wypuścili swoją wersję SDK. Nazwali ją OpenNI (NI - natural interaction), zbudowali aktywną społeczność i sprawili, że Kinect zaczął rozmawiać z Linuxem i Mac OS'em. Dodatkowo OpenNI działa nie tylko z urządzeniem Microsoftu. Jeśli nie lubimy monopolistów możemy zaopatrzyć się w odpowiedni sensor bezpośrednio u PrimeSense lub u Asusa (XTion).
Czymże zatem jest Kinect? Prawdę mówiąc jest to skaner 3D, wyposażony w dodatkową logikę i SDK. W zastawie znajdziemy również kamerkę RGB, kilka mikrofonów, akcelerometr (!) oraz silniczek krokowy. Wszystko po to, by móc poskakać na wirtualnym pontonie.
Trójwymiarowe widzenie zapewnia Kinectowi promiennik podczerwieni, który rzuca siatkę punktów na obiekty znajdujące się w zasięgu jego widzenia. Dodatkowa kamera, widząca tylko w wąskim zakresie podczerwieni, analizuje ich pozycje i na tej podstawie określany jest przybliżony model 3D środowiska. Dlaczego przybliżony? Głównie przez rozdzielczość głębi - tylko 320x200. Ostatecznie jest to reskalowane do 640x480 (w takiej rozdzielczości widzi kamera RGB), jednak ciągle musimy walczyć z masą szumów, które zostają w końcowym sygnale. Spora część magii wykonuje się po stronie sterownika i samego OpenNI. Niesamowite algorytmy, których tajników pewnie nigdy nie poznam, dokonują takich operacji jak wykrywanie ludzi,  gestów czy tworzenie wirtualnych szkieletów. W naszej gestii zostaje tylko wykorzystanie tego potencjału. Nie ma jednak nic za darmo. Operowanie na chmurze punktów jest dość kosztowne obliczeniowo. Oczywiście bardzo wiele zależy od aplikacji, ale absolutnym minimum jest procesor dwurdzeniowy - cztery rdzenie mile widziane.
Zastosowanie podczerwieni ma też wady. Pierwszą z nich, jest ślepota sensora głębi w jasno oświetlonych pomieszczeniach. Wyprowadzanie Kinecta na spacer w słoneczne dni, nic nie da - nie zobaczy zbyt dużo. Urządzenie ma także problem z widzeniem czarnych rzeczy lub ciemnoskórych osób, choć to zależy także od panujących wokoło warunków oświetleniowych.
Najbardziej interesującą zaletą Kinecta jest jego sprawne działanie w całkowitej ciemności. Co prawda, w tym przypadku kamera RGB zda się na niewiele, jednak widzenie możemy przełączyć na podczerwień, która jest pięknie oświetlona przez promiennik. Sprawność pozostałych możliwości związanych z wykrywaniem ludzi i gestów zostaje zachowana.
Rzeczą która niezwykle ułatwia testowanie aplikacji, jest możliwość wykorzystania nagrań imitujących sygnał z sensorów kontrolera. Wstawanie od biurka i gimnastykowanie się przed urządzeniem z logiem Microsoftu, dla wielu programistów może być mało komfortowe. Możemy zatem uniknąć dziwnych spojrzeń kolegów z pracy, nagrywając wcześniej kilka sekund, za pomocą wcześniej przygotowanej aplikacji.
No cóż, to w zasadzie tyle. Dokładniejszą specyfikację techniczną Kinecta znajdą Państwo w internecie. Następnym razem może coś pokodujemy, choć nie obiecuję - sama instalacja sterowników, to niezły temat na notkę. Serio.

Brak komentarzy:

Prześlij komentarz