Diferencia entre revisiones de «Paleta kinect»
(→Instalacion para Ubuntu) |
(→Introducción) |
||
(No se muestran 44 ediciones intermedias de 2 usuarios) | |||
Línea 1: | Línea 1: | ||
+ | [[Archivo:PaletaKinectToolbar.jpg]] | ||
+ | |||
='''Introducción'''= | ='''Introducción'''= | ||
− | |||
− | + | La actividad [http://wiki.sugarlabs.org/go/Activities/Turtle_Art/Plugins TurtleArt] le permite al usuario aprender conceptos de programación mediante el desarrollo de pequeños programas con los bloques pre-diseñados. El programa permite no sólo una interacción del usuario mediante teclado y ratón, pero también posibilita el trabajo con sensores como la cámara o el micrófono mediante la paleta de sensores [http://wiki.sugarlabs.org/go/Activities/Turtle_Art/Uso_de_Tortuga_Arte_Sensores Paleta de Sensores] o sensores de luz, distancia, etc. mediante el robot butiá [http://www.fing.edu.uy/inco/proyectos/butia/ Butiá]. El objetivo del proyecto fue ampliar la paleta de [http://wiki.sugarlabs.org/go/Activities/Turtle_Art/Plugins TurtleArt]con la paleta "Kinect" que le permite al usuario incorporar al programa valores devueltos por el sensor. Se definió las librerías necesarias para el correcto funcionamiento del sensor e investigó el modo de recuperación de los datos para incorporarlos al código de la aplicación [http://wiki.sugarlabs.org/go/Activities/Turtle_Art/Plugins TurtleArt]. | |
− | + | ='''Ambiente de desarrollo para Ubuntu'''= | |
+ | |||
+ | Para acceder a los datos del sensor Kinect fue necesario instalar el framework OpenNI, el driver del sensor kinect y el binding de python para OpenNI. Tambein se insatalo el middleware NITE para explorar las funciones del tracking del esqueleto entero. Para la instalacion se siguio los pasos del siguiente tutorial: http://blog.jorgeivanmeza.com/2011/12/instalacion-openni-sensor-kinect-y-nite-en-gnulinux-ubuntu-11-10-desde-fuentes/ | ||
==Paso cero== | ==Paso cero== | ||
− | + | Fue necesario remover el kernel module gspca_kinect: | |
+ | |||
+ | $ rmmod gspca_kinect | ||
+ | |||
+ | e instalar los siguientes paquetes | ||
+ | $ sudo apt-get install cmake build-essential git-core python python-dev libboost-python-dev libusb-1.0-0-dev freeglut3-dev openjdk-7-jdk doxygen graphviz mono-complete | ||
==OpenNI== | ==OpenNI== | ||
Línea 27: | Línea 35: | ||
$ sudo ./install.sh | $ sudo ./install.sh | ||
− | |||
==Sensor Kinect== | ==Sensor Kinect== | ||
Línea 46: | Línea 53: | ||
==NITE== | ==NITE== | ||
− | Descargar la distribución binaria para GNU/Linux mas reciente desde la siguiente ubicación. | + | Descargar la distribución binaria para GNU/Linux(OpenNI Compliant Middleware Binaries) mas reciente desde la siguiente ubicación. |
http://www.openni.org/Downloads/OpenNIModules.aspx | http://www.openni.org/Downloads/OpenNIModules.aspx | ||
Línea 66: | Línea 73: | ||
$ sudo ./install.sh | $ sudo ./install.sh | ||
− | |||
==PyOpenNI== | ==PyOpenNI== | ||
Línea 84: | Línea 90: | ||
='''Ejemplos'''= | ='''Ejemplos'''= | ||
− | |||
− | |||
− | |||
==OpenNI== | ==OpenNI== | ||
Línea 107: | Línea 110: | ||
$ python depth.py | $ python depth.py | ||
+ | |||
+ | |||
+ | ='''Instalacion de TurtleArt para Ubuntu'''= | ||
+ | |||
+ | NO esta recomendada la instalacion mediante el comando | ||
+ | |||
+ | $ sudo apt-get install sugar-turtleart-activity | ||
+ | |||
+ | La version del TurtleArt no fue actualizada hace tiempo. Se instala la version 98-1. Para acceder al codigo mas reciente (actualmente v160) se descarga la actividad .xo desde | ||
+ | http://activities.sugarlabs.org/en-US/sugar/downloads/latest/4027/addon-4027-latest.xo?src=addondetail | ||
+ | |||
+ | y se la descomprime mediante el comando unzip. | ||
+ | |||
+ | Para arrancar el TurtleArt en la carpeta TurtleArt.activity se ejecuta el comando | ||
+ | |||
+ | $ python TurtleArtActivity.py | ||
+ | |||
+ | ='''Desarrollo'''= | ||
+ | |||
+ | Se desarrollo 3 bloques de la paleta cuales permiten acceder a las coordinadas x ,y y z del punto central de la palma. Para obtener las coordenadas en necesario el reconocimiento previo de una mano por el sensor. Para indicarle a usuario que la mano fue reconocida los bloques de la paleta se pintan de color verde. En la ausencia de la mano, se pintan de gris. | ||
+ | |||
+ | ==Clase Kinect== | ||
+ | |||
+ | Se implemento la clase Kinect que extiende la clase Plugin. Fue necesario implementar la paleta nueva de la kinect y tres bloques xKinect, yKinect y zKinect. Los rangos de valores, por falta de información publicada, se estimó de la manera empirica. La coordenada x tomó valores entre -2333 y 1711, la coordenada y entre -588 y 1181, la coordenada z entre 420 y 5002. Con el usuario sentado a un metro del sensor los valores obtenidos fueron: entre -540 y 540 para x, entre -400 y 400 para y, entre 420 y 1200 para z. Estos valores fueron elegidos como valores sugeridos para el usuario para los valores de los bloques de la actividad TurtleArt. | ||
+ | |||
+ | ==Clases del OpenNI== | ||
+ | |||
+ | Las clases del openni usadas en el plugin fueron: | ||
+ | |||
+ | Context | ||
+ | |||
+ | DepthGenerator | ||
+ | |||
+ | GestureGenerator | ||
+ | |||
+ | HandsGenerator | ||
+ | |||
+ | Con las funciones de las clases se genero un tracker de la mano, la cual después de haber encontrado una, devolvía sus coordenadas x, y, z. | ||
+ | |||
+ | ==Threading== | ||
+ | |||
+ | Para monitoreo de los valores cambiantes de las coordenadas fue necesario crear un thread al lado del thread principal. También se creo un thread para las actualizaciones de la paleta - cambio del color de los bloques al verde con la mano detectada y cambio al gris en la ausencia de la mano. | ||
+ | |||
+ | ='''Como armar un plugin para TurtleArt'''= | ||
+ | |||
+ | Para la correcta union entre la actividad y el plugin se siguio los pasos del | ||
+ | [http://wiki.sugarlabs.org/go/Activities/Turtle_Art#How_to_write_a_plugin Sugarlabs Manual] | ||
+ | |||
+ | ='''Screenshots'''= | ||
+ | |||
+ | Los bloques de la paleta Kinect en la ausencia de la mano a trackear se vuelven grises. En esta situación es necesario volver a calibrar la mano. | ||
+ | |||
+ | [[Archivo:PaletaKinectGris.jpg]] | ||
+ | |||
+ | |||
+ | Con la mano presente los bloques se vuelven verde y devuelven las coordenadas x, y, z de la palma. | ||
+ | |||
+ | [[Archivo:PaletaKinectVerde.jpg]] | ||
+ | |||
+ | ='''Referencias'''= | ||
+ | |||
+ | [Kinect] http://www.xbox.com/es-ES/Kinect | ||
+ | |||
+ | [TurtleArt] http://wiki.sugarlabs.org/go/Activities/Turtle_Art/Plugins | ||
+ | |||
+ | [Paleta de Sensores] http://wiki.sugarlabs.org/go/Activities/Turtle_Art/Uso_de_Tortuga_Arte_Sensores | ||
+ | |||
+ | [Butiá] http://www.fing.edu.uy/inco/proyectos/butia/ | ||
+ | |||
+ | [OpenNi] http://openni.org/ | ||
+ | |||
+ | [PrimeSense] http://www.primesense.com/ | ||
+ | |||
+ | [Python] http://www.python.org/ | ||
+ | |||
+ | [Ubuntu 12.04] http://releases.ubuntu.com/12.04/ | ||
+ | |||
+ | [GitHub] https://github.com/ | ||
+ | |||
+ | [Plugin TurtleArt] http://revista.python.org.ar/3/es/html/turtle_art.html |
Revisión actual del 16:55 11 nov 2012
Contenido
Introducción
La actividad TurtleArt le permite al usuario aprender conceptos de programación mediante el desarrollo de pequeños programas con los bloques pre-diseñados. El programa permite no sólo una interacción del usuario mediante teclado y ratón, pero también posibilita el trabajo con sensores como la cámara o el micrófono mediante la paleta de sensores Paleta de Sensores o sensores de luz, distancia, etc. mediante el robot butiá Butiá. El objetivo del proyecto fue ampliar la paleta de TurtleArtcon la paleta "Kinect" que le permite al usuario incorporar al programa valores devueltos por el sensor. Se definió las librerías necesarias para el correcto funcionamiento del sensor e investigó el modo de recuperación de los datos para incorporarlos al código de la aplicación TurtleArt.
Ambiente de desarrollo para Ubuntu
Para acceder a los datos del sensor Kinect fue necesario instalar el framework OpenNI, el driver del sensor kinect y el binding de python para OpenNI. Tambein se insatalo el middleware NITE para explorar las funciones del tracking del esqueleto entero. Para la instalacion se siguio los pasos del siguiente tutorial: http://blog.jorgeivanmeza.com/2011/12/instalacion-openni-sensor-kinect-y-nite-en-gnulinux-ubuntu-11-10-desde-fuentes/
Paso cero
Fue necesario remover el kernel module gspca_kinect:
$ rmmod gspca_kinect
e instalar los siguientes paquetes
$ sudo apt-get install cmake build-essential git-core python python-dev libboost-python-dev libusb-1.0-0-dev freeglut3-dev openjdk-7-jdk doxygen graphviz mono-complete
OpenNI
$ mkdir ~/kinect ; cd ~/kinect
$ git clone https://github.com/OpenNI/OpenNI.git -b unstable
si! unstable!
$ cd OpenNI/Platform/Linux/CreateRedist
$ bash RedistMaker
$ cd ../Redist/OpenNI-Bin-Dev-Linux-x86*/
$ sudo ./install.sh
Sensor Kinect
$ cd ~/kinect
$ git clone https://github.com/avin2/SensorKinect
$ cd SensorKinect/Platform/Linux/CreateRedist
$ bash RedistMaker
$ cd ../Redist/Sensor-Bin-Linux-x86*
$ sudo sh install.sh
NITE
Descargar la distribución binaria para GNU/Linux(OpenNI Compliant Middleware Binaries) mas reciente desde la siguiente ubicación. http://www.openni.org/Downloads/OpenNIModules.aspx
$ cd ~/kinect
$ tar jxvf nite-bin-linux-x86-v1.5.2.21.tar.bz2
$ cd NITE-Bin-Dev-Linux-x86*/Data
$ chmod a+w *
$ vi *.xml
<License vendor="PrimeSense" key="insert key here"/> … reemplazar por … <License vendor="PrimeSense" key="0KOIk2JeIBYClPWVnMoRKn5cdY4="/>
$ cd ..
$ sudo ./install.sh
PyOpenNI
$ git clone https://github.com/jmendeth/PyOpenNI.git
$ mkdir PyOpenNI-build
$ cd PyOpenNI-build
$ cmake ../PyOpenNI
$ make
$ sudo cp lib/openni.so /usr/lib/pymodules/python2.7/
Ejemplos
OpenNI
$ cd ~/kinect/OpenNI/Platform/Linux/Bin/x86-Release
$ ./Sample-NiSimpleViewer
se termina apretando Esc
NITE
$ cd ~/kinect/NITE-Bin-Dev-Linux-x86*/Samples/Bin/x86-Debug
$ ./Sample-PointViewer
PyOpenNI
$ cd ~/kinect/PyOpenNI/examples
$ python depth.py
Instalacion de TurtleArt para Ubuntu
NO esta recomendada la instalacion mediante el comando
$ sudo apt-get install sugar-turtleart-activity
La version del TurtleArt no fue actualizada hace tiempo. Se instala la version 98-1. Para acceder al codigo mas reciente (actualmente v160) se descarga la actividad .xo desde http://activities.sugarlabs.org/en-US/sugar/downloads/latest/4027/addon-4027-latest.xo?src=addondetail
y se la descomprime mediante el comando unzip.
Para arrancar el TurtleArt en la carpeta TurtleArt.activity se ejecuta el comando
$ python TurtleArtActivity.py
Desarrollo
Se desarrollo 3 bloques de la paleta cuales permiten acceder a las coordinadas x ,y y z del punto central de la palma. Para obtener las coordenadas en necesario el reconocimiento previo de una mano por el sensor. Para indicarle a usuario que la mano fue reconocida los bloques de la paleta se pintan de color verde. En la ausencia de la mano, se pintan de gris.
Clase Kinect
Se implemento la clase Kinect que extiende la clase Plugin. Fue necesario implementar la paleta nueva de la kinect y tres bloques xKinect, yKinect y zKinect. Los rangos de valores, por falta de información publicada, se estimó de la manera empirica. La coordenada x tomó valores entre -2333 y 1711, la coordenada y entre -588 y 1181, la coordenada z entre 420 y 5002. Con el usuario sentado a un metro del sensor los valores obtenidos fueron: entre -540 y 540 para x, entre -400 y 400 para y, entre 420 y 1200 para z. Estos valores fueron elegidos como valores sugeridos para el usuario para los valores de los bloques de la actividad TurtleArt.
Clases del OpenNI
Las clases del openni usadas en el plugin fueron:
Context
DepthGenerator
GestureGenerator
HandsGenerator
Con las funciones de las clases se genero un tracker de la mano, la cual después de haber encontrado una, devolvía sus coordenadas x, y, z.
Threading
Para monitoreo de los valores cambiantes de las coordenadas fue necesario crear un thread al lado del thread principal. También se creo un thread para las actualizaciones de la paleta - cambio del color de los bloques al verde con la mano detectada y cambio al gris en la ausencia de la mano.
Como armar un plugin para TurtleArt
Para la correcta union entre la actividad y el plugin se siguio los pasos del Sugarlabs Manual
Screenshots
Los bloques de la paleta Kinect en la ausencia de la mano a trackear se vuelven grises. En esta situación es necesario volver a calibrar la mano.
Con la mano presente los bloques se vuelven verde y devuelven las coordenadas x, y, z de la palma.
Referencias
[Kinect] http://www.xbox.com/es-ES/Kinect
[TurtleArt] http://wiki.sugarlabs.org/go/Activities/Turtle_Art/Plugins
[Paleta de Sensores] http://wiki.sugarlabs.org/go/Activities/Turtle_Art/Uso_de_Tortuga_Arte_Sensores
[Butiá] http://www.fing.edu.uy/inco/proyectos/butia/
[OpenNi] http://openni.org/
[PrimeSense] http://www.primesense.com/
[Python] http://www.python.org/
[Ubuntu 12.04] http://releases.ubuntu.com/12.04/
[GitHub] https://github.com/
[Plugin TurtleArt] http://revista.python.org.ar/3/es/html/turtle_art.html