abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 12:55 | Nová verze

    CiviCRM (Wikipedie) bylo vydáno v nové verzi 6.14.0. Podrobnosti o nových funkcích a opravách najdete na release stránce. CiviCRM je robustní open-source CRM systém navržený speciálně pro neziskové organizace, spolky a občanské iniciativy. Projekt je napsán v jazyce PHP a licencován pod GNU Affero General Public License (AGPLv3). Český překlad má nyní 45 % přeložených řetězců a přibližuje se milníku 50 %. Potřebujeme vaši pomoc, abychom se dostali dál. Pokud máte chuť přispět překladem nebo korekturou, přidejte se na platformu Transifex.

    jardaIT | Komentářů: 2
    včera 12:22 | Bezpečnostní upozornění

    Další lokální zranitelností Linuxu je ssh-keysign-pwn. Uživatel si může přečíst obsah souborů, ke kterým má právo ke čtení pouze root, například soubory s SSH klíči nebo /etc/shadow. V upstreamu již opraveno [oss-security mailing list].

    Ladislav Hagara | Komentářů: 1
    14.5. 17:22 | Komunita

    Singularity (YouTube) je nejnovější otevřený film od Blender Studia. Jedná se o jejich první 4K HDR film.

    Ladislav Hagara | Komentářů: 3
    14.5. 16:55 | Zajímavý software

    Vyšla hra Život Není Krásný: Poslední Exekuce (Steam, ProtonDB). Kreslená point & click adventura ze staré školy plná černého humoru a nekorektního násilí. Vžijte se do role zpustlého exekutora Vladimíra Brehowského a projděte s ním jeho poslední pracovní den. Hra volně navazuje na sérii Život Není Krásný.

    Ladislav Hagara | Komentářů: 23
    14.5. 14:00 | Zajímavý projekt

    Společnost Red Hat představila Fedora Hummingbird, tj. linuxovou distribuci s nativním kontejnerovým designem určenou pro vývojáře využívající AI agenty.

    Pinhead | Komentářů: 6
    14.5. 02:22 | Zajímavý software

    Hru The Legend of Zelda: Twilight Princess od společnosti Nintendo si lze nově díky projektu Dusklight (původně Dusk) a reverznímu inženýrství zahrát i na počítačích a mobilních zařízeních. Vyžadována je kopie původní hry (textury, modely, hudba, zvukové efekty, …). Ukázka na YouTube. Projekt byl zahájen v srpnu 2020.

    Ladislav Hagara | Komentářů: 0
    14.5. 01:11 | Nová verze

    Byla vydána nová major verze 29.0 programovacího jazyka Erlang (Wikipedie) a související platformy OTP (Open Telecom Platform, Wikipedie). Detailní přehled novinek na GitHubu.

    Ladislav Hagara | Komentářů: 0
    13.5. 21:22 | Bezpečnostní upozornění

    Po zranitelnostech Copy Fail a Dirty Frag přichází zranitelnost Fragnesia. Další lokální eskalace práv na Linuxu. Zatím v upstreamu neopravena. Přiřazeno ji bylo CVE-2026-46300.

    Ladislav Hagara | Komentářů: 1
    13.5. 14:00 | Komunita

    Sovereign Tech Agency (Wikipedie) prostřednictvím svého fondu Sovereign Tech Fund podpoří KDE částkou 1 285 200 eur.

    Ladislav Hagara | Komentářů: 13
    13.5. 12:55 | IT novinky

    Google na včerejší akci The Android Show | I/O Edition 2026 (YouTube) představil celou řadu novinek: Gemini Intelligence, notebooky Googlebook, novou generaci Android Auto, …

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (13%)
     (8%)
     (2%)
     (14%)
     (31%)
     (4%)
     (6%)
     (3%)
     (16%)
     (26%)
    Celkem 1634 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    Kinect pro Xbox 360 a GNU/Linux – OpenKinect a libfreenect

    17. 1. 2012 | Ladislav Hagara | Návody | Hardware | 6291×

    Další 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 dnešní části Kinect k počítači s nainstalovaným Linuxem už konečně připojíme. Nejprve jej použijeme jako webovou kameru. Následně se zaměříme na projekt OpenKinect a knihovnu libfreenect. Tu si stáhneme, přeložíme a nainstalujeme. Seznámíme se s programy, jež jsou s knihovnou instalovány.

    Obsah

    Připojení Kinectu k Linuxu

    link

    Máme-li k dispozici Kinect, napájecí kabel a samozřejmě počítač s nainstalovaným Linuxem, tak už nic nebrání jejich propojení. Můžeme přitom monitorovat činnost linuxového jádra, tj. nechat si zobrazovat obsah souborů /var/log/messages nebo /var/log/everything/current pomocí tail nebo multitail. Použít lze také příkaz dmesg.

    Příkazem lsusb si můžeme vypsat připojené USB zařízení. Připojením Kinectu se ve výpisu objeví 4 nové řádky. Uvnitř Kinectu je umístěný USB rozbočovač (Hub), ke kterému jsou připojené 3 zařízení. Motorek, pomocí kterého lze Kinect naklánět (Xbox NUI Motor), k snímaní zvuku sloužící čtyři mikrofony (Xbox NUI Audio) a kamera (Xbox NUI Camera).

    # lsusb > lsusb.no.kinect; lshw -short > lshw.no.kinect
    
    
    Jan 04 03:42:03 [kernel] usb 2-1.2: new high speed USB device number 13 using ehci_hcd
    Jan 04 03:42:03 [kernel] usb 2-1.2: New USB device found, idVendor=0409, idProduct=005a
    Jan 04 03:42:03 [kernel] usb 2-1.2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
    Jan 04 03:42:03 [kernel] hub 2-1.2:1.0: USB hub found
    Jan 04 03:42:03 [kernel] hub 2-1.2:1.0: 3 ports detected
    Jan 04 03:42:04 [kernel] usb 2-1.2.2: new full speed USB device number 14 using ehci_hcd
    Jan 04 03:42:04 [kernel] usb 2-1.2.2: New USB device found, idVendor=045e, idProduct=02b0
    Jan 04 03:42:04 [kernel] usb 2-1.2.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
    Jan 04 03:42:04 [kernel] usb 2-1.2.2: Product: Xbox NUI Motor
    Jan 04 03:42:04 [kernel] usb 2-1.2.2: Manufacturer: Microsoft
    Jan 04 03:42:06 [kernel] usb 2-1.2.1: new high speed USB device number 15 using ehci_hcd
    Jan 04 03:42:06 [kernel] usb 2-1.2.1: New USB device found, idVendor=045e, idProduct=02ad
    Jan 04 03:42:06 [kernel] usb 2-1.2.1: New USB device strings: Mfr=1, Product=2, SerialNumber=4
    Jan 04 03:42:06 [kernel] usb 2-1.2.1: Product: Xbox NUI Audio
    Jan 04 03:42:06 [kernel] usb 2-1.2.1: Manufacturer: Microsoft
    Jan 04 03:42:06 [kernel] usb 2-1.2.1: SerialNumber: A44866C06560038A
    Jan 04 03:42:07 [kernel] usb 2-1.2.3: new high speed USB device number 16 using ehci_hcd
    Jan 04 03:42:07 [kernel] usb 2-1.2.3: New USB device found, idVendor=045e, idProduct=02ae
    Jan 04 03:42:07 [kernel] usb 2-1.2.3: New USB device strings: Mfr=2, Product=1, SerialNumber=3
    Jan 04 03:42:07 [kernel] usb 2-1.2.3: Product: Xbox NUI Camera
    Jan 04 03:42:07 [kernel] usb 2-1.2.3: Manufacturer: Microsoft
    Jan 04 03:42:07 [kernel] usb 2-1.2.3: SerialNumber: A00362902514039A
    
    
    # lsusb > lsusb.yes.kinect; lshw -short > lshw.yes.kinect
    
    # diff lsusb.no.kinect lsusb.yes.kinect 
    9a10,13
    > Bus 002 Device 013: ID 0409:005a NEC Corp. HighSpeed Hub
    > Bus 002 Device 014: ID 045e:02b0 Microsoft Corp. Xbox NUI Motor
    > Bus 002 Device 015: ID 045e:02ad Microsoft Corp. Xbox NUI Audio
    > Bus 002 Device 016: ID 045e:02ae Microsoft Corp. Xbox NUI Camera
    
    # diff lshw.no.kinect lshw.yes.kinect 
    108a109,112
    > /2/100/1d/1/1/2               bus            HighSpeed Hub
    > /2/100/1d/1/1/2/1             generic        Xbox NUI Audio
    > /2/100/1d/1/1/2/2             generic        Xbox NUI Motor
    > /2/100/1d/1/1/2/3             generic        Xbox NUI Camera
    

    Pokud se ve výpisu objeví pouze USB rozbočovač a motorek, máte pravděpodobně problém s napájením. Napájecí kabel není připojen k elektrické síti, nebo elektrický proud právě vypadl.

    Kinect jako webová kamera

    link

    Podpora Kinectu jako webové kamery je obsažena v linuxovém jádru od verze 3.0. Jedná se o modul gspca_kinect.

    Kinect

    # modinfo gspca_kinect
    filename:       /lib/modules/3.1.7/kernel/drivers/media/video/gspca/gspca_kinect.ko
    license:        GPL
    description:    GSPCA/Kinect Sensor Device USB Camera Driver
    author:         Antonio Ospite <ospite@studenti.unina.it>
    srcversion:     E4EA2B198A5655ED6A34252
    alias:          usb:v045Ep02AEd*dc*dsc*dp*ic*isc*ip*
    depends:        gspca_main
    vermagic:       3.1.7 SMP mod_unload modversions CORE2
    

    Po zavedení modulu lze obraz z Kinectu zobrazit ve standardních video aplikacích jako cheese, vlc (vlc v4l2://) nebo mplayer (mplayer tv://).

    Instalace knihovny libfreenect

    link

    Knihovna libfreenect se zatím v běžných linuxových distribucích nenachází. Binární balíčky nenaleznete ani na síti. Pokud ano, budou zcela jistě neaktuální (Ubuntu, Fedora 1, 2).

    Nezůstává tak nic jiného, než knihovnu libfreenect přeložit ze zdrojových kódů. Uživatelům linuxové distribuce Source Mage GNU/Linux k tomu stačí zadat příkaz „cast libfreenect“ a zdrojové kódy knihovny budou automaticky staženy, přeloženy a knihovna nainstalována (v Source Mage terminologii vykouzlena).

    Kinect Kinect

    Uživatelé jiných, ne tak kouzelných distribucí :-) budou muset spustit příkazů mnohem více. Popis instalace je popsán na stránkách projektu OpenKinect (Getting Started). Jedná se o wiki stránky. Naleznete-li na nich nesrovnalosti, nebo budete-li chtít něco doplnit, máte možnost stránky vylepšit.

    Pro stažení aktuálních zdrojových kódu knihovny je potřebný git (yum install git). Spuštěním příkazu:

    $ git clone git://github.com/OpenKinect/libfreenect.git

    jsou zdrojové kódy staženy (zjednodušeně řečeno, ve skutečnosti je vytvořen klon celého repozitáře). Pro překlad zdrojových kódů je potřebný cmake a několik devel balíčků (libusb, freeglut, …).

    Na Fedoře 16 stačí pro jejich instalaci spustit:

    $ yum install git cmake gcc gcc-c++ libXi libXi-devel libXmu libXmu-devel freeglut freeglut-devel libusb1-devel

    Následuje vlastní překlad:

    $ cd libfreenect
    $ mkdir build
    $ cd build
    $ ccmake ..
    

    Pro nastavení stačí v ccmake stisknout klávesu „c“ a případně upravit cesty k potřebným knihovnám.

    Kinect

    Po nastavení je nutné stisknout klávesu „g“ pro vygenerování potřebných souborů. Pak už jenom zadat příkazy cmake a make.

    $ cmake ..
    $ make
    

    Posledním krokem je instalace:

    $ sudo make install

    Knihovnu lze odinstalovat příkazem:

    $ sudo make uninstall

    Ukázkové programy

    link

    S knihovnou jsou instalovány i ukázkové programy.

    $ ls bin
    cppview  glpclview  glview  hiview  record  regtest  regview  tiltdemo
    

    Správnost instalace knihovny lze ověřit příkazem glview (při nedostatečných právech sudo glview). V okně jsou zobrazena dvě videa. Nalevo video zobrazující hloubková data a napravo video z klasické webové kamery. Pomocí kláves w (nahoru), s (na střed) a x (dolu) lze Kinect naklánět. Pomocí kláves „0“ až „6“ lze nastavovat barvu kontrolky a pomocí klávesy „f“ lze měnit formát videa.

    Kinect Kinect Kinect

    Program glpclview využívá hloubková data a v okně vykreslí 3D obraz. Ten lze myší otáčet a pomocí kláves „w“ a „s“ přibližovat a vzdalovat.

    Kinect Kinect Kinect Kinect Kinect Kinect

    Pokud programy neběží pod běžnými uživateli, je potřeba nastavit přístupová práva. V případě použití udev lze využít přiložený soubor 51-kinect.rules a zkopírovat jej do adresáře /etc/udev/rules.d/.

    Podpora audia

    link

    Minulý díl byl věnován rozlousknutí komunikace. Pravděpodobně nejtvrdším oříškem bylo zpracování zvuku. Přenos videa fungoval již v listopadu 2010. Získat zvuk z Kinectu pomocí knihovny libfreenect bylo ale možné až v dubnu 2011.

    Drew Fisher alias zarvox přidal podporu audia do knihovny libfreenect 3. dubna 2011 (audio.c). Problémem je, že do Kinectu je potřeba nahrát audio firmware. Ten lze získat z oficiální aktualizace konzole Xbox 360. Aktualizace je stažena pomocí skriptu fwfetcher.py (aktuální soubor SystemUpdate_14699_USB.zip) z Xbox.com.

    Další podrobnosti například v přednášce Drewa Fishera s názvem “Reverzní inženýrství USB zařízení” (video, pdf) přednesené 28. prosince 2011 na konferenci 28c3 (Chaos Communication Congress).

    Při překladu a instalaci knihovny libfreenect je audio standardně zakázáno. Povolit jej lze pomocí volby BUILD_AUDIO v nástroji ccmake, nebo cmake spustit s volbou -DBUILD_AUDIO=YES.

    $ make
    
    ...
    Downloading SystemUpdate.zip from http://www.xbox.com/system-update-usb
    Reading response...
    done, saved to SystemUpdate.zip
    Extracting $systemupdate/FFFE07DF00000001 from system update file...
    done.
    Handling LIVE/PIRS file.
    Writing information file FFFE07DF00000001.txt
    Creating and filling content directory FFFE07DF00000001.dir
    Moving audios.bin to current folder
    Cleaning up
    Done!
    [100%] Built target firmware
    
    # ls -l /usr/share/libfreenect/audios.bin 
    -rw-r--r-- 1 root root 473600 Nov 15  2002 /usr/share/libfreenect/audios.bin
    
    $ ls bin
    cppview  glpclview  glview  hiview  micview  record  regtest  regview  tiltdemo  wavrecord
    

    Při instalaci se navíc nainstalují programy micview a wavrecord. Při jejich spuštění je prováděna kontrola, zda je v Kinectu firmware audios.bin natažen. Pokud tomu tak není, před zobrazením okna nebo spuštěním nahrávání natažení firmware proběhne. Program micview (OpenGL audio viewer) zobrazuje v okně 4 křivky představující zvuky snímané jednotlivými mikrofony. Mezerníkem lze aktualizaci pozastavit. Klávesou „q“ lze okno uzavřít. Program wavrecord zvuk nahrává. V aktuálním adresáři vytvoří soubory channel1.wav až channel4.wav. Ty lze přehrát například příkazem play (play channel1.wav).

    $ micview
    
    Number of devices found: 1
    Trying to open ./audios.bin as firmware...
    Trying to open /usr/local/share/libfreenect/audios.bin as firmware...
    Trying to open /usr/share/libfreenect/audios.bin as firmware...
    About to send: 09 20 02 06 00 00 00 00 00 40 00 00 03 00 00 00 00 00 08 00 00 00 00 00 
    Reading reply: 00 E0 6F 0A 00 00 00 00 00 00 00 00 
    About to send: 09 20 02 06 01 00 00 00 00 40 00 00 03 00 00 00 00 40 08 00 00 00 00 00 
    Reading reply: 00 E0 6F 0A 01 00 00 00 00 00 00 00 
    About to send: 09 20 02 06 02 00 00 00 00 40 00 00 03 00 00 00 00 80 08 00 00 00 00 00 
    Reading reply: 00 E0 6F 0A 02 00 00 00 00 00 00 00 
    ...
    Firmware successfully uploaded and launched.  Device will disconnect and reenumerate.
    This is the libfreenect microphone waveform viewer.  Press 'q' to quit or spacebar to pause/unpause the view.
    

    Kinect

    Rozšíření pro Python

    link

    Ke knihovně libfreenect naprogramované v jazyce C existují rozšíření (Wrappers) i pro další programovací jazyky. Ke Kinectu tak lze přistupovat z jazyků Python, Actionscript, C++, C#, JAVA JNI i JNA, Javascript, Common Lisp nebo i Haskell.

    Rozšíření pro Python je naprogramováno v jazyce Cython. K instalaci Python rozšíření je tedy nutné doinstalovat samotný Cython a balíčky python-devel a numpy (yum install Cython python-devel numpy).

    V adresáři wrappers/python se nacházejí ukázkové aplikace. Například demo_cv_threshold.py má pouze 54 řádků (z toho 16 prázdných) a umožňuje z videa s hloubkovými daty vybrat pomocí posuvníků pouze oblast definovanou hloubkou a prahem.

    #!/usr/bin/env python
    import freenect
    import cv
    import frame_convert
    import numpy as np
    
    
    threshold = 100
    current_depth = 0
    
    
    def change_threshold(value):
        global threshold
        threshold = value
    
    
    def change_depth(value):
        global current_depth
        current_depth = value
    
    
    def show_depth():
        global threshold
        global current_depth
    
        depth, timestamp = freenect.sync_get_depth()
        depth = 255 * np.logical_and(depth >= current_depth - threshold,
                                     depth <= current_depth + threshold)
        depth = depth.astype(np.uint8)
        image = cv.CreateImageHeader((depth.shape[1], depth.shape[0]),
                                     cv.IPL_DEPTH_8U,
                                     1)
        cv.SetData(image, depth.tostring(),
                   depth.dtype.itemsize * depth.shape[1])
        cv.ShowImage('Depth', image)
    
    
    def show_video():
        cv.ShowImage('Video', frame_convert.video_cv(freenect.sync_get_video()[0]))
    
    
    cv.NamedWindow('Depth')
    cv.NamedWindow('Video')
    cv.CreateTrackbar('threshold', 'Depth', threshold,     500,  change_threshold)
    cv.CreateTrackbar('depth',     'Depth', current_depth, 2048, change_depth)
    
    print('Press ESC in window to stop')
    
    
    while 1:
        show_depth()
        show_video()
        if cv.WaitKey(10) == 27:
            break
    

    Kinect

    Příště

    link

    Příště se blíže podíváme na projekt OpenNI.

           

    Hodnocení: 100 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    17.1.2012 15:10 Ladislav Hagara | skóre: 107 | blog: Ride the Raven
    Rozbalit Rozbalit vše Re: Kinect pro Xbox 360 a GNU/Linux – OpenKinect a libfreenect
    Včera se v Getting Started objevil odkaz na novější Ubuntu balíčky.
    25.3.2012 23:47 petr.nosek | skóre: 2
    Rozbalit Rozbalit vše Re: Kinect pro Xbox 360 a GNU/Linux – OpenKinect a libfreenect

    Přiznám se, že jsem čekal poněkud lepší podporu software pro samotný Linux.

    Googlil jsem několik dní. Narazil jsem na spoustu zajímavých projektů. Překvapilo mě, že většina projektů je buď pro Windows nebo Mac Os X.

    Měl jsem krásnou představu o propojení TV (zobrazovací jednotka) + Raspbery Pi (OS Linux) + Kinect.

    Na Raspberry bude XMBC a ideálně i nějaký grafický režim s prohlížečem. Kinect měl jednoduchými příkazy ovládat XMBC.

    Objevil jsem spoustu šikovného software, problém je s portací na linux.

    Nejprve začnu samotným NITE. Jestli jsem to správně pochopil, tak je NITE pouze binárka a to pro architektury x86 nebo x64. Raspberry je jina architektura. Snad to nebude nepřekonatelný problém a bude i binárka pro ARM architekturu. Zatím se mi nic bližšího nepodařilo zjistit.


    XBMC

    Začněme nejprve ovládáním samotného XBMC. K ovládání je již hotová šikovná aplikace KINEMOTE. Vývoj je bohužel uzavřený a pouze pro Windows. http://www.kinemote.net/ nebo také http://www.makeuseof.com/tag/control-windows-pc-kinect/

    Po dlouhém hledání jsem našel jedinou možnou alternativu pro linux a to KLIRC. http://groups.google.com/group/openni-dev/browse_thread/thread/da57ce22c7c72b6b

    Nevýhodou projektu KLIRC je, že vývoj dále nepokračuje. Projekt je především testován pro MythTV a je k provozu potřeba ještě daemon LIRC. Propojení tedy není tak jednoduché. Když pomineme všechna tato fakta, tak jako největší nevýhodu považuji nekvalitní rozpoznání gest. Ještě budu zkoušet, ale zatím mi to přijde nepoužitelné.


    Ovládání kurzoru myši

    Pokud bych dokázal ovládat kurzor myši, získal bych jinou formu kontroly nad XMBC. Hledal jsem tedy způsob, jak pomocí KINECTu ovládat kurzor myši.

    Tento projekt vypadá nádherně http://kinect.dashhacks.com/mouse-control Umožňuje ovládat desktop. Problém je, že projekt je psán pouze pro Mac OS X.

    Ovládání kurzoru myši pod linuxem umožňuje tento projekt: https://github.com/Ooblik/Kinect-Mouse. Ovládání pod linuxem je nepřesné a nemá jinou funkci, než pohyb kurzoru a jeden klik myši. Na ovládání nepoužitelné - spíše jde o prezentaci možností.


    Ovládání prohlížeče

    Jediný nadějný projekt pro linux, který jsem objevil je ovládání webového prohlížeče pomocí KINECTu formou pluginu.http://www.omgubuntu.co.uk/2010/11/browser-extension-allows-website-control-via-kinect/ Bohužel projekt se mi zatím nepodařilo pro linux zkompilovat. Dokumentace k projektu pro linux je téměř nulová. Máte někdo zkušenosti s projektem?




    Google ve spojení LINUX + kinect také docela mlčí. Přiznám se, že jsem se na KINECT docela těšil a doufal jsem, že pro linux bude větší podpora. Přiznám se, že mě mrzí, že se ovládání KINECTu točí pouze kolem Windows a Mac OS X. Přitom mně přijde KINECT jako zajímavý kousek hardware s krásnými možnostmi.


    Můžete někdo přispět svými zkušenostmi? Víte o funkčních projektech ve spojení s KINECTem pro Linux nebo o portaci projektů z Mac OS X na linux? Nechci se své myšlenky vzdát.

    1.4.2012 23:08 petr.nosek | skóre: 2
    Rozbalit Rozbalit vše Re: Kinect pro Xbox 360 a GNU/Linux – OpenKinect a libfreenect

    Tak zatím se mi podařilo přijít na to, že ovládání prohlížeče přes kinect se pro Linux (DEPTHJS) je spíše v přípravě. https://github.com/doug/depthjs/issues/27 Možná to bude první použitelný projekt, otázkou je, kdy se tak stane. Jiné použitelné projekty jsem bohužel nenašel. Nějaké zkušenosti?

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.