Está en la página 1de 6

1

Estudio del funcionamiento del sensor Kinect y


aplicaciones para bioingeniería
Ladislao Mathe, Darío Samban, Gabriel Gómez (dariosamban@ gmail.com)

 Se desarrollaron dos aplicaciones necesarias para el


Abstract— El Grupo Robótica y Sistemas Integrados de la proyecto general del brazo de laparoscopía. La primera
Universidad Nacional de Córdoba está llevando adelante un aplicación es un entorno de prueba capaz de confirmar el buen
proyecto financiado por el Ministerio de Ciencia y Tecnología de funcionamiento del sensor y todos sus componentes internos.
la provincia de Córdoba y la SeCyT-UNC de un brazo robótico La segunda aplicación, se entiende como una herramienta
para Laparoscopía
capaz de captar y guardar todas las trayectorias que realice el
Para las operaciones quirúrgicas mínimamente invasivas, es de
gran ayuda disponer de un brazo robótico que sostenga al
cuerpo de una o varias personas, pudiendo reproducirlas luego
endoscopio. Sin embargo, también es de gran importancia que en cualquier momento.
este brazo robótico afecte lo menos posible a las operaciones que Además de este proyecto general, también se prevé la
necesite realizar el cirujano. Por tal motivo, se propuso y se inició utilización del sensor Kinect para dirigir un robot móvil que
el estudio de un sensor óptico que permita ubicar espacialmente a tenga visión tridimensional
los brazos del cirujano y, de esta manera, planificar la trayectoria
del brazo robótico a los efectos de evitar colisiones entre ellos. II. EL SENSOR KINECT Y SU COMPOSICIÓN
El sensor Kinect se presenta como una excelente posibilidad El sensor de Kinect es un equipo alargado conectado a un
dado que permite adquirir las imágenes en el espectro visible y, pivote, diseñado para estar en una posición horizontal. El
con la información del espectro infrarrojo, armar un plano
dispositivo tiene
tridimensional de los objetos. En este caso, se desarrollaron dos
aplicaciones que servirán como punto de inicio para el proyecto una cámara RGB,
del Brazo Robótico. La primera aplicación proporciona un un sensor de profundidad y
entorno de ensayos capaz de evaluar todos los componentes del un micrófono multi-array bidireccional
sensor en tiempo real. La segunda aplicación permite registrar y que, en conjunto, capturan imágenes y movimientos de los
guardar trayectorias del cuerpo de una o varias personas cuerpos en 3D, además de ofrecer reconocimiento facial y
pudiendo reproducirlas luego en cualquier momento. aceptar comandos de voz.
Index Terms— Sensor óptico Kinect – colisiones determinación
3D

I. INTRODUCCIÓN
ESDE el año 2007, se está desarrollando en el GRSI –
D Grupo Robótica y Sistemas Integrados de la Universidad
Nacional de Córdoba, el proyecto “Brazo Robótico para
Laparoscopía” cuyo objetivo es el de asistir al cirujano en las
operaciones laparoscópicas. Este proyecto nace a raíz de un
pedido del Servicio de Cirugía Pediátrica - Hospital de Niños
de la Santísima Trinidad de Córdoba.
Fig. 1 Dimensiones del sensor Kinect
Uno de los sub-proyectos consiste en incorporar al sistema
Robótico un sensor de imágenes que permita utilizar las
mismas para planificar los desplazamientos del brazo robótico El sensor de Kinect adquiere imágenes de video con un
de manera de evitar colisiones entre el brazo robot y los brazos sensor CMOS de colores a una frecuencia de 30 Hz, en colores
del cirujano. A tal efecto, se adquirió un sensor Kinect. RGB de 32-bits y resolución VGA de 640×480 pixeles. El
En el presente trabajo, se detallan las actividades realizadas canal de video monocromo CMOS es de 16-bit, resolución
con el sensor Kinect orientadas a determinar las capacidades QVGA de 320×240 pixeles con hasta 65,536 niveles de
técnicas y de funcionamiento del sensor de manera de poder sensibilidad (Fig. 2.).
diseñar luego aplicaciones para detectar movimientos o Para calcular distancias entre un cuerpo y el sensor, el sensor
superficies tridimensionales con el objetivo de asegurar la emite un haz láser infrarrojo que proyecta un patrón de puntos
correcta planificación de las trayectorias del Brazo Robótico sobre los cuerpos cuya distancia se determina. Una cámara
de modo de no colisionar con los brazos del cirujano. infrarroja capta este patrón y por hardware calcula la
profundidad de cada punto. El rango de profundidad del
sensor de Kinect está entre 0.4 y 4 mts (Fig. 3.) Existen 2
2

modos (Default y Near) para determinar distancias. Se ha En un amplio campo visual con objetos, la cámara Kinect
elegido el modo “Default” ya que permite medir hasta 4 trata de reconocer a qué distancia están los distintos objetos,
metros de distancia con respecto al sensor distinguiendo movimientos en tiempo real.
El ángulo de vista (FOV) es de 58° horizontales y 45° El sensor Kinect puede llegar a distinguir la profundidad de
verticales. Por otro lado el pivote permite orientar en cada objeto con una resolución de 1 centímetro y las
elevación, hacia arriba o hacia abajo incrementando el FOV estimaciones de la altura y anchura con una exactitud de
hasta en 27°. aproximadamente 3 milímetros.
El array del micrófono tiene cuatro cápsulas, y opera con El hardware de Kinect está compuesto por la cámara y el
cada canal procesando en 16-bit de audio con un ratio de proyector de luz infrarroja, añadido al firmware y a un
frecuencia de 16 kHz. procesador que utiliza algoritmos para procesar las imágenes
La cámara de Kinect funciona con hardware y software tridimensionales.
propios para el reconocimiento de imagen.

Fig. 4 Funcionamiento del sensor monocromático

Fig. 2. – Composición interna del sensor Kinect.


El procesador es capaz de interpretar los movimientos que
La cámara tiene dos funciones principales:
se registran de los objetos capturados por la cámara de
 generar un mapa en 3D de la imagen que tiene en su
Kinect en “eventos con significado” que aparecen en pantalla.
campo visual y
Los movimientos buscados por el algoritmo son
 reconocer humanos en movimiento entre los objetos de
contextualizados. Por ejemplo, si se está aplicando el sensor
la imagen a partir de diferentes segmentos de las
Kinect a un juego como Kinect Adventures, donde una balsa
articulaciones del cuerpo y un esquema en escala de
desciende por la corriente del río, dado que este juego requiere
grises.
movimientos tales como agacharse o tumbarse, el algoritmo
buscará la identificación de estos movimientos en tiempo real
para producir eventos en pantalla. Si el usuario navega por el
menú con interface gráfica de Netflix entonces se buscarán
movimientos con las manos horizontales y verticales que serán
registrados en los fenómenos de pantalla. (GetLab)

III. DETECCIÓN DE ARTICULACIONES MEDIANTE EL SENSOR


KINECT
Fig. 3 – Rango de distancias admitidas por el sensor Kinect. Existen 2 Normalmente, el flujo de datos “crudos” que suministra el
modos (Default y Near).
sensor Kinect proporciona la información de 20 puntos de una
persona cuando está dentro del rango visual admisible (Fig. 5).
De esta manera, es posible obtener la información posicional
en tiempo real y en los 3 ejes cartesianos de estos 20 puntos
por persona. Cabe destacar que la información recolectada está
en un formato imagen de 640x480 pixeles tomada a una
velocidad de 30 FPS (Frames per Second o Cuadros por
segundo).

Con el fin de obtener todas las trayectorias que realiza una


persona, es necesario registrar y archivar los 20 puntos que
entrega el dispositivo. Cabe destacar que esta es la
3

funcionalidad más importante que tiene el sensor para la


aplicación buscada, dado que otorga la posibilidad de tener la
posición tridimensional en cada instante de tiempo. Si se toma
una sucesión dinámica de estas entregas, se podrá obtener
todas las trayectorias de todos las partes del cuerpo de una
persona.

IV. ELECCIÓN DEL KIT DE DESARROLLO DE SOFTWARE - SDK


PARA PROGRAMAR EL KINECT
Antes de iniciar el desarrollo de la primera aplicación se
realizó un estudio y análisis de distintos kits de desarrollo con
el objetivo de decidir con que SDK (software development kit)
programar las aplicaciones. Esta instancia es crucial ya que
una vez comenzado el desarrollo de las aplicaciones, hubiese
sido un gran problema tener que dar marcha atrás y cambiar la
SDK si hubiese surgido algún problema de compatibilidad con
los equipos o bien con las aplicaciones a realizar

Fig. 5 – Conjunto de 20 puntos detectado por el sensor Kinect.

Entre las opciones, se encontraron dos posibles librerías:


librerías libres o librerías oficiales (Fig. 6). Dentro de las
primeras, la más conocida y la más utilizada es la llamada
OpenNi que guarda compatibilidad con las librerías de
OpenKinect. Para el desarrollo de la aplicación se seleccionó
la librería OpenNi debido a su mayor difusión en Internet y por
lo tanto, existir más información con distintas aplicaciones.
En cuanto a la oficial, Microsoft lanzó la SDK 1.0 para
Kinect la cual cuenta con una ordenada documentación y Fig. 6. – Comparación entre Microsoft SDK for Kinect 1.0 y el OpenNi
amplia información en la web.
A pesar de que las librerías OpenNi presentaban más
ventajas, al haber mucha más información por parte de la SDK
oficial, se decidió utilizar la librería oficial para desarrollar las
primeras aplicaciones. V. DESARROLLO DE LA APLICACIÓN PARA
ENSAYOS DEL SENSOR “TEST KINECT”
Primero se establecieron los requerimientos funcionales del
proyecto y para esto fue necesario diferenciar todos los
dispositivos que existen dentro del sensor Kinect.
4

 Cámara RGB Se realizó una interface gráfica (Fig. 7.) simple y amistosa
 Cámara Monocromática D con IR para que el usuario tenga la posibilidad de probar que todos
 Motor los componentes del sensor funcionen de manera correcta.
 Acelerómetros
 Micrófono ambiental
VI. DESARROLLO DE LA APLICACIÓN DE GRABADO Y
 LED
REPRODUCCIÓN DE TRAYECTORIAS “IOSKELETON”

Se diseñó un software que captura las señales de un sensor


Kinect conectado a una entrada USB y los exhibe en una La otra aplicación desarrollada consiste en la realización
pantalla simple donde se puede observar el funcionamiento de de una aplicación capaz de identificar los puntos más
todos los dispositivos nombrados anteriormente. De esta importantes del cuerpo humano (clase Skeleton de SDK)
manera se logra asegurar que la conexión está lograda y el grabándolos todo el tiempo que desee el usuario con la opción
equipo está funcionando correctamente. de guardarlos en un archivo TXT. Esto es, grabar y guardar
Las librerías del SDK de Kinect están disponibles para los trayectorias del cuerpo de una persona en un archivo común.
lenguajes C++ y C#. Se eligió el segundo (C#) para desarrollar Posteriormente, en la misma aplicación, se tendrá la opción de
las aplicaciones. cargar el archivo generado y reproducir las trayectorias de
Las imágenes de ambas cámaras del Kinect se obtuvieron manera gráfica.
mediante los componentes WPF KinectColorViewer y Para lograr la generación de un archivo es necesario la
KinectDepthViewer, que ofrece la SDK. creación de un protocolo de archivo. Es decir, una forma de
Para obtener los cuadros por segundo simplemente se guardar los datos para que luego puedan ser reproducidos
calcula en función de las imágenes captadas en cámara respetando la forma. Es importante comprender el
monocromática Depth. Se obtienen los tiempos en cada funcionamiento y la forma de las señales captadas para luego
instante y en función de éstos, se calcula la cantidad de entender el protocolo que se va a crear detallado más adelante
cuadros en un segundo. Por último se presenta el resultado en este documento.
como un dato en el cuadro de visualización. Esta aplicación es de gran importancia para el proyecto
Para cambiar el ángulo utilizando el motor del sensor, se general ya que conforma el “Input / Output” de archivos que
diseñó un simple cuadro de texto en donde el usuario ingresa representan la trayectoria de personas. De esta forma, se podrá
por teclado el ángulo deseado respecto a la horizontal (no alojar en archivos todos los movimientos que se registren para
respecto a la base) y luego presionando en botón SET con el luego reproducirlos y analizarlos permitiendo manipular
mouse, se comanda el movimiento del motor cambiando el sistemas robóticos en función de los puntos de las trayectorias
parámetro ElevationAngle del objeto Sensor. captadas.
En cuanto al grabador y reproductor de audio, cuando el El guardado de datos se realiza mediante la escritura de la
usuario oprime el botón “grabar”, se activa una bandera la cual posición tridimensional de todos los puntos en cada instante en
permite el ingreso a un bucle que toma los datos entregados un archivo TXT. Para lograr este objetivo fue necesaria la
por el Audiosource del objeto Sensor y los guarda en un elaboración de un protocolo de escritura y lectura de datos.
simple array.
Este mismo bucle está dentro de otro bucle que permite Cada imagen será representada por una línea de texto de
determinar de dónde proviene el sonido muestreado por el tipo String con el siguiente formato:
micrófono ambiental determinando el parámetro BeamAngle.
Cuando el usuario presiona el botón “Reproducir”,
simplemente, se abre el archivo de sonido .MP3 guardado
anteriormente.  fps: primero se coloca el número de fps actual del
cuadro escaneado.
 #: indica que comienza a describir los puntos de una
persona (esqueleto)
 Id: id del esqueleto a grabar
 Sucesión de coordenadas x y z de cada punto en el
siguiente orden:

Por ejemplo:

“20 # 0 0,691704 0,4166231 21224 0,6856822 0,3888395 21408 0,6675547


0,2409311 21312 0,6683985 0,1429283 21200 0,6130065 0,2980414 21272
0,5938133 0,4018739 21640 0,5701469 0,4764952 21352 0,5687516
0,503214 21176 0,7293036 0,2940527 21472 0,7549853 0,3960381 21856
0,7716017 0,4639662 20608 0,7719545 0,5019765 19968 0,6706141
0,4530297 21104 0,6450689 0,7161486 21264 0,6435035 0,8764954 21432
0,6385844 0,9064202 20984 0,722645 0,4507132 21264 0,7384559
Fig. 7. – Interface gráfica “TestKinect” diseñado 0,7030128 20848 0,7608178 0,883681 20832 0,766999 0,918592 20512 ff”
5

De esta manera, y siguiendo este protocolo, se logra la datos obtenidos tanto por los sensores Kinect como por las
escritura y lectura de todas las trayectorias que realiza una o celdas de carga de la plataforma de fuerza, se obtienen los
varias personas en frente del sensor Kinect. Por supuesto, la vectores de fuerza que realiza el paciente en cada instante de
aplicación dispone de una interface gráfica simple y amigable la marcha permitiendo al profesional médico realizar algún
(Fig. 8.) para lograr una conexión segura entre el usuario y el tipo de diagnostico en el caso de que el paciente presente
software. alguna patología del marcha.
Como vemos, el sensor Kinect presenta un gran potencial
en cualquier tipo de aplicaciones. Por ello consideramos que
es necesario aplicar este potencia al campo de la medicina
integrando el sensor a dispositivos biomédicos.

VIII. CONCLUSIONES
Con este desarrollo se logró dar un gran paso en el
proyecto general ya que se estableció una forma de “Entrada /
Salida” de archivos que contienen trayectorias, lo cual hace
tiempo se estuvo buscando. Por otro lado, se adquirieron
conocimientos de “nivel avanzado” acerca del funcionamiento
del sensor y la generación de aplicaciones en C# con el mismo
Se adquirieron conocimientos acerca del funcionamiento
general del Sensor Kinect además de las aplicaciones que se
pueden llegar a desarrollar.
Fig. 8 Interfaz grafica de “IOSkeleton” A partir del desarrollo de la aplicación de prueba “Test
Kinect” se comenzó la familiarización con el Sensor Kinect
que permite evaluar el funcionamiento general. Con el
Es de destacar que la aplicación ofrece dos posibilidades
desarrollo de la aplicación “IOSkeleton”, se adquirieron los
de grabado: manual y automático. La primera brinda la
conocimientos acerca del formato de las señales recibidas
posiblidad de iniciar y terminar la grabación oprimiendo un
desde el sensor además de crear un protocolo de entrada y
simple botón. La segunda opción permite que el usuario
salida de los mismos.
configure el tiempo de grabado en segudnos y al oprimir el
Respecto al aspecto técnicos se logró hacer funcionar el
botón de grabado, la aplicación registra las trayectoras
sensor Kinect conectado a una PC obteniendo las señales
captados en ese periodo de tiempo.
captadas por todos los dispositivos que posee el Kinect tales
como la cámara VGA, cámara monocromática de distancia,
VII. APLICACIONES PARA BIOINGENIERÍA micrófono ambiental, motor vertical y acelerómetros.
Mediante el desarrollo del “Test Kinect” se logró una
Actualmente, el sensor Kinect es utilizado en múltiples
excelente aplicación de ensayos que permite verificar el buen
campos tales como la publicidad o el entretenimiento entre
funcionamiento de todos los componentes que integran el
otros. La idea fundamental es incluir mayor participación de
sensor y al mismo tiempo una herramienta muy útil para el
dicho sensor en el campo de la salud mediante la inclusión del
usuario en general. La otra aplicación desarrollada, el
sensor en dispositivos o desarrollos de bioingeniería.
“IOSkeleton” registra los puntos de una o varias personas en el
Como se menciono anteriormente, las aplicaciones
espacio cartesiano tridimensional siendo capaz de grabar las
descriptas anteriormente se encuentran dentro del marco de
trayectorias del mismo, guardarlas y cargarlas en un archivo de
un proyecto mayor el cual consiste en la construcción de un
texto estándar. Esto representa un gran avance dado que
brazo de laparoscopia monitoreado con el sensor Kinect. A
permite usarlo como punto de partida para construir otras
grandes rasgos, el proyecto se basa en controlar el brazo de
aplicaciones.
laparoscopia utilizando el sensor Kinect, quien controla todas
los movimientos alrededor del brazo moviéndolo si es
necesario. Evitando así, cualquier tipo de colisión que pueda
AGRADECIMIENTOS
causar algún daño en el paciente.
Sin embargo, el proyecto anterior es solo uno de miles que El ámbito profesional y de investigación reinante en el
se pueden realizar. La idea principal es ir incluyendo Grupo Robótica y Sistemas Integrados de la Facultad de
paulatinamente el sensor Kinect a dispositivos biomédicos. Ciencias Exactas, Físicas y Naturales de la Universidad
Otro proyecto en marcha actualmente en el cual se utilizan las Nacional de Córdoba facilitaron de gran modo el trabajo
aplicaciones descriptas anteriormente, es un estudio de desarrollado, destacándose por el muy buen ambiente de
“fuerzas de la marcha”. En el mismo, se hace caminar al trabajo basado en el respeto y la confianza. Este punto es de
paciente por una plataforma de fuerza obteniendo el peso que gran importancia para formar experiencia y realizar prácticas
se ejerce en cada instante de la marcha. Al mismo tiempo, se profesionales supervisadas para la capacitación laboral y
escanea el paciente con dos sensores Kinect escaneando cada profesional, ámbito en el que nos vamos a mover en un futuro
trayectoria que realiza el paciente. Luego sincronizando los no muy lejano. Por otra parte, se tuvo permanentemente en
6

cuenta la futura aplicación de este sensor. Esto es, en


Quirófano del Hospital de Niños de la Provincia de Córdoba.
Para finalizar reconocemos que el tiempo de trabajo en el
Grupo Robótica y Sistemas Integrados de la Facultad de
Ciencias Exactas, Físicas y Naturales de la Universidad
Nacional de Córdoba fue justificado con creces y dejó una
enseñanza muy rica en todos los sentidos. Es realmente
importante contar con laboratorios de este tipo dentro de una
facultad de ingeniería ya que se brindan herramientas y
espacios ideales para que los alumnos de la institución puedan
desarrollar sus trabajos e investigaciones de la manera
correcta. Finalizando, se agradece a toda la gente que hizo
posible la realización de este proyecto, especialmente a los
integrantes del Grupo de Robótica y Sistemas Integrados
(GRSI). A su director Ing. Ladislao Mathe, al Ing. Gabriel
Gómez, al Ing. Oscar Cáceres y al Ing. Juan Pedroni como así
también a los otros alumnos ayudantes de investigación
quienes colaboraron con gran entusiasmo

REFERENCIAS
[1] (SlideShare) Juan Pablo Arbeláez (2011, March). Kinect, Como
Funciona. Available: http://www.slideshare.net/ArbelaezGroup/kinect-
como-funciona-7228721
[2] (Visual Studio Developer Center) Microsoft. Get started with Visual
Studio. Available: http://msdn.microsoft.com/en-us/vstudio/ff431702
[3] (Kinect for Windows) Microsoft. Kinect SDK. Available:
http://www.microsoft.com/en-us/kinectforwindows/develop/
[4] (Coding4Fun) Microsoft. Project Gallery. Available:
http://channel9.msdn.com/coding4fun/kinect/

Sambán Darío (M’11–M’12) 1989, nacido en, Argentina


donde cumplió con todos sus estudios. En el año 2006
completo los estudios secundarios en el instituto San José de
su ciudad natal. En el año siguiente, comenzó la carrera de
Ingeniería en Computación en la Universidad Nacional de
Córdoba. En el año 2012 comenzó su proyecto final de carrera
además de insertarse en el mercado laboral en QAustral S.A.
como analista funcional de Software. (email: dariosamban@
gmail.com)

También podría gustarte