Portál AbcLinuxu, 30. dubna 2025 11:33

Kinect pro Xbox 360 a GNU/Linux – OpenNI

21. 8. 2012 | Ladislav Hagara
Články - Kinect pro Xbox 360 a GNU/Linux – OpenNI  

Čtvrtý díl seriálu věnovanému snímacímu zařízení Kinect pro Xbox 360 a jeho využití v operačním systému GNU/Linux. V minulém dílu byl představen projekt OpenKinect a  knihovna libfreenect. V dnešním dílu to bude organizace OpenNI a knihovna stejného jména.

Z minulého dílu víme, že pomocí knihovny libfreenect lze z Kinectu získat hloubková data. Ta lze zpracovat a získat trojrozměrný obraz prostoru nacházejícího se před Kinectem. Tím ale možnosti této knihovny končí. Dalo by se říct, že pomocí knihovny libfreenect lze vidět, ale už nelze zjistit, co se vlastně vidí. Rozhraní pro detekci přítomnosti osob ve snímaném prostoru, sledování jejich pohybů, rozpoznávání poloh jejich těl nebo dokonce jejich rukou je zatím otázkou daleké budoucnosti.

Obsah

Organizace OpenNI

link

Jak již bylo zmíněno v prvním dílu, jádrem Kinectu je čip od společnosti PrimeSense (PrimeSense PS1080-A2 SoC (System on a Chip)).

Kinect a Linux Kinect a Linux

Tato společnost se těsně po vzniku knihovny libfreenect rozhodla uvolnit knihovnu vlastní. Založila neziskovou organizaci OpenNI (Open Natural Interaction) jejíž cílem je rozvíjet možnosti komunikace mezi uživatelem a počítačem pomocí přirozeného uživatelského rozhraní (Natural User Interface – NUI). Dalšími členy OpenNI jsou Willow Garage, Side-Kick, ASUS a AppSide.

Kinect a Linux

OpenNI definuje jak rozhraní pro vývoj NUI aplikací, tak rozhraní k NUI snímacím zařízením. Definováno je rovněž rozhraní k možným binárním blobům, tj. k částem, ke kterým nejsou k dispozici zdrojové kódy. OpenNI jim říká middleware.

Kinect a Linux Kinect a Linux

Tyto binární bloby obvykle nestačí pouze nainstalovat. Potřebné mohou být licenční klíče. Klíč k základnímu blobu NITE je veřejně známý 0KOIk2JeIBYClPWVnMoRKn5cdY4=.

Licence lze vypsat příkazem niLicense.

Kinect a Linux Kinect a Linux

Knihovna OpenNI

link

Knihovna OpenNI (společně s NITE) na rozdíl od knihovny libfreenect obsahuje algoritmy pro rozpoznávání polohy těla. Pomocí funkcí v knihovně obsažených lze zjistit, kde se osoba v prostoru před snímačem nachází, lze sledovat její pohyb, lze zjistit, zda osoba předpažila nebo upažila. Ke knihovně je k dispozici dokumentace a diskusní fórum.

Kde knihovnu OpenNI získat a jak ji nainstalovat? Nejjednodušší samozřejmě je, pokud vaše linuxová distribuce balíčky s OpenNI přímo podporuje. Příkladem může být Fedora 16 s devíti balíčky souvisejících s OpenNI.

Kinect a Linux Kinect a Linux Kinect a Linux Kinect a Linux Kinect a Linux Kinect a Linux Kinect a Linux Kinect a Linux Kinect a Linux

Nesvobodné balíčky openni-nite, openni-nite-devel a openni-nite-examples jsou k dispozici na RPM Fusion.

Kinect a Linux Kinect a Linux Kinect a Linux

Uživatelé Ubuntu mohou balíčky získat na stránkách OpenNI. Nejsou-li k dispozici balíčky pro vaši oblíbenou distribuci, budete muset sáhnout po zdrojových kódech. Zdrojové kódy knihovny OpenNI (samozřejmě kromě NITE) jsou k dispozici na serveru GitHub (OpenNI, PrimeSense Sensor Module for OpenNI, OpenNI Ogre Integration Sample). Kinect není oficiálním PrimeSense modulem podporován. PrimeSense prosazuje ASUS Xtion. Na oficiální zdrojové kódy je nutné aplikovat záplaty, nebo použít již upravený modul od avin2. V případě problémů s překladem lze nahlédnou k Fedoře (Fedora Project Packages GIT repositories), zda nepomůže některá z jejích záplat. Jak to už u binárních blobů bývá, verze NITE, která je k dispozici na stránkách OpenNI nemusí být kompatibilní s aktuálními zdrojovými kódy na serveru GitHub. Také v případě použití binárních balíčků je nutné, aby byly verze základní knihovny, verze modulu a verze NITE vzájemně kompatibilní.

Kinect a Linux Kinect a Linux Kinect a Linux

Ukázkové programy

link

S knihovnou OpenNI jsou dodávány i ukázkové programy. Správnost instalace knihovny lze ověřit pomocí NiViewer. NiViewer, podobně jako glview z knihovny libfreenect, zobrazuje hloubková data získaná z Kinectu. Klávesou „f“ lze přepínat mezi celoobrazovkovým zobrazením a zobrazením v okně. Klávesou „?“ lze zobrazit nápovědu.

Kinect a Linux Kinect a Linux Kinect a Linux Kinect a Linux Kinect a Linux

Mezi nabízenými pohledy lze procházet pomocí stisku kláves nebo myší výběrem z menu (dokumentace).

Kinect a Linux Kinect a Linux

Po instalaci blobu NITE lze vyzkoušet rozpoznávání obrazu. Začít lze aplikací Sample-Players (NitePlayers). Objeví-li se v prostoru před Kinectem osoba (někdy stačí i židle :-)), bude detekována a sledována. První osoba bude zobrazena modře, druhá zeleně, třetí žlutě. Aplikace rozezná také polohu těla. Na detekované postavě je zobrazen její zjednodušený model (skeleton, kostra). Má-li aplikace s detekcí problém, je nutné zaujmout postoj PSI (upažení pokrčmo, předloktí vzhůru).

Kinect a Linux Kinect a Linux Kinect a Linux Kinect a Linux

Ukázková aplikace Sample-PointViewer sleduje vaši ruku a kreslí trajektorii jejího pohybu. Standardně sleduje pouze jednu ruku. Po úpravě souboru Nite.ini, tj. po odstranění středníků u AllowMultipleHands=1 a TrackAdditionalHands=1 bude sledovat obě ruce. Aplikace Sample-Boxes a Sample-TrackPad demonstrují ovládání programů (výběr z voleb) pomocí pohybu ruky.

Kinect a Linux Kinect a Linux Kinect a Linux Kinect a Linux

Při testování OpenNI ve Fedoře 16 jsem narazil na následující problém. Ukázkové aplikace nefungovaly. Například po spuštění NiteBoxes jsem dostal pouze „InitFromXml failed: File not found!“. Pomohl příkaz strace. NiteBoxes na Fedoře 16 přistupuje k souboru „../../../Data/Sample-Tracking.xml“. Stačilo tedy soubor /etc/openni/Sample-Tracking.xml zkopírovat do /Data. NitePlayers potřebuje v adresáři /Data soubor Sample-User.xml. NiteSceneAnalysis soubor Sample-Scene.xml.

Příště

link

Příště budou představeny některé z aplikací postavených nad knihovnami libfreenect a OpenNI.

Seriál Kinect pro Xbox 360 a GNU/Linux (dílů: 5)

První díl: Kinect pro Xbox 360 a GNU/Linux – Úvod, poslední díl: Kinect pro Xbox 360 a GNU/Linux – Processing a SimpleOpenNI.
Předchozí díl: Kinect pro Xbox 360 a GNU/Linux – OpenKinect a libfreenect
Následující díl: Kinect pro Xbox 360 a GNU/Linux – Processing a SimpleOpenNI

Další články z této rubriky

HW novinky: podzimní přehled #2
HW novinky: podzimní přehled #1
HW novinky: návrat skleněných ploten v HDD
HW novinky: PCI Express 4.0 prý ještě letos
HW novinky: i Skylake-X s 12 jádry používá levnou teplovodivou pastu

Diskuse k tomuto článku

little.owl avatar 21.8.2012 22:40 little.owl | skóre: 22 | blog: Messy_Nest | Brighton/Praha
Rozbalit Rozbalit vše Re: Kinect pro Xbox 360 a GNU/Linux – OpenNI
Odpovědět | Sbalit | Link | Blokovat | Admin
Diky za zajimavy clanek, opet propadam pokuseni si s Kinectem trochu pohrat.
A former Red Hat freeloader.
22.8.2012 11:36 asdf
Rozbalit Rozbalit vše Re: Kinect pro Xbox 360 a GNU/Linux – OpenNI
Odpovědět | Sbalit | Link | Blokovat | Admin
Pěkný článek. Bude nějaký díl věnovaný 3D skenování?
28.8.2012 01:25 Ladislav Hagara | skóre: 105 | blog: Ride the Raven
Rozbalit Rozbalit vše Re: Kinect pro Xbox 360 a GNU/Linux – OpenNI
Děkuji. 3D skenování je v plánu.
Bedňa avatar 22.8.2012 18:56 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Kinect pro Xbox 360 a GNU/Linux – OpenNI
Odpovědět | Sbalit | Link | Blokovat | Admin
Dá sa detekcia postáv použiť aj pre bežnú webkameru?
KERNEL ULTRAS video channel >>>
22.8.2012 23:48 Kvakor
Rozbalit Rozbalit vše Re: Kinect pro Xbox 360 a GNU/Linux – OpenNI
Nejspíš ne, pokud využívá hloubková data co Kinect posílá.
Bedňa avatar 22.8.2012 23:50 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Kinect pro Xbox 360 a GNU/Linux – OpenNI
Aha, myslel si že tam bude niečo naviac, dík.
KERNEL ULTRAS video channel >>>

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.