• No se han encontrado resultados

Diseño e implementación de un sistema de control embebido por medio de una interfaz natural de usuario para aplicaciones domóticas

N/A
N/A
Protected

Academic year: 2020

Share "Diseño e implementación de un sistema de control embebido por medio de una interfaz natural de usuario para aplicaciones domóticas"

Copied!
27
0
0

Texto completo

(1)

Presentado a

LA UNIVERSIDAD DE LOS ANDES

FACULTAD DE INGENIERÍA

DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA

Para obtener el título de

INGENIERO ELECTRÓNICO

por

Daniel Felipe Hernández Betancur

DISEÑO E IMPLEMENTACIÓN DE UN SISTEMA DE CONTROL

EMBEBIDO POR MEDIO DE UNA INTERFAZ NATURAL DE

USUARIO PARA APLICACIONES DOMÓTICAS

Sustentado el 11 de Diciembre de 2014 frente al jurado:

Composición del jurado

- Asesor: Fredy Enrique Segura PhD, Profesor Asistente, Universidad de los Andes

(2)

Agradecimientos

Al finalizar mi proceso de formación como profesional quisiera agradecer a quienes me han acompañado durante él y me han brindado su apoyo para terminarlo de manera exitosa.

A mis padres, especialmente quiero agradecerles por bridarme todo lo que ha estado a su alcance para permitirme cumplir mis metas y sueños, por los esfuerzos que han realizado para guiarme a lo largo de mi vida y mi aprendizaje y por todo el afecto que me han demostrado incluso cuando no lo merecía.

A mi familia, amigos y compañeros, por haber compartido conmigo todos esos momentos de alegría, satisfacción y dificultades que me permitieron llegar al final de este proceso.

Por último, a la Universidad de los Andes y mis profesores por haber realizado la tarea de educar de excelente manera y por los pequeños detalles que han desarrollado mi conocimiento y aprendizaje durante este periodo.

(3)

Índice de Contenidos

Agradecimientos ... 2

Índice de Contenidos ... 3

Índice de Figuras ... 4

Índice de Tablas ... 4

1. Introducción ... 5

2. Marco Teórico ... 7

3. Metodología de Diseño ... 11

3.1 Alternativas de diseño de la solución y de sus componentes ... 11

3.1.1 Interfaz Natural de Usuario ... 11

3.1.2 Sistema Embebido ... 12

4. Objetivos ... 13

4.1 Generales ... 13

4.2 Específicos ... 14

5. Definición: ... 14

5.1 Descripción: ... 14

5.2 Diagrama de bloques: ... 14

5.2.1 Diagrama de caja negra ... 15

5.2.2 Diagrama de caja Blanca ... 15

5.2.3 Especificaciones y Restricciones: ... 15

6. Metodología de trabajo ... 16

6.1 Kinect ... 16

6.2 Raspberry PI ... 17

6.3 RPI + Kinect +OpenCV ... 18

6.4 Desarrollo del algoritmo de reconocimiento de gestos ... 18

7. Análisis de Resultados ... 21

8. Discusión ... 24

9. Conclusiones... 25

(4)

Índice de Figuras

Figura 1. Microsoft Kinect Sensor ... 8

Figura 2. Raspberry PI model B ... 9

Figura 3.Diagrama de caja negra ... 15

Figura 4. Diagrama de caja blanca ... 15

Figura 5. Diagrama de flujo del algoritmo de reconocimiento de gestos ... 19

Figura 6. Visualización de los datos del sensor de profundidad por medio de una captura de la imagen. ... 21

Figura 7. Captura de la imagen del sensor de profundidad por medio del programa diseñado. ... 22

Figura 8.Captura de imagen obtenida posterior al tratamiento de los datos capturados del sensor. ... 22

Figura 9 Captura de imagen de los datos de análisis para identificar la imagen captada. ... 23

Índice de Tablas

Tabla 1. Características NUI ... 11

(5)

1.

Introducción

En la actualidad los avances tecnológicos constituyen un fenómeno sin precedentes en el desarrollo de la cultura, de las comunicaciones y de la vida. Ya que la tecnología ha permitido grandes progresos para facilitar la vida y el desarrollo humano. De este modo, la domótica se presenta como una alternativa para mejorar nuestra calidad de vida, e innovar la forma en que nos comunicamos, interactuamos y nos entretenemos culturalmente.

El concepto que se tiene sobre la automatización del hogar puede ser ambiguo, pues muchos asocian el significado de domótica a “un conjunto de dispositivos costosos que hacen a un hogar inteligente pero que no son necesarios”. Esto es una observación que se considera incorrecta ya que los enfoques de la domótica se centran en la integración de los sistemas y tecnologías de un hogar, para crear o modificar beneficios como la seguridad, las comunicaciones, el confort y el ahorro energético; para alcanzar una infraestructura capaz de disponer de servicios avanzados para el desarrollo desde tareas cotidianas hasta tareas más complejas. [5]

A pesar de esto, los nuevos desarrollos tecnológicos han generado también barreras de conocimiento, interacción y uso de los nuevos dispositivos generados por estos avances. En respuesta a esto, surgen las interfaces de usuario que se consideran como una herramienta para mejorar la experiencia creada a partir de las nuevas tecnologías y creando un medio de comunicación humano máquina que permite acceder a estas de forma simple y optimizando las ventajas o beneficios que puede ofrecer dicho desarrollo tecnológico.

Por consiguiente, surgen las primeras interfaces de usuario que hoy por hoy todavía están vigentes y son de uso cotidiano en nuestra vida diaria, estos son, el mouse y el teclado. Claramente, estas interfaces han ido evolucionando a través del tiempo y de la mano con los avances tecnológicos. Del mismo modo, han ido apareciendo más dispositivos que hacen parte de las interfaces tanto que hasta ahora se han llegado a clasificar en 2 tipos de interfaces de usuario: la primera y más antigua se conoce como interfaz gráfica de usuario (GUI), y consiste en interactuar de manera gráfica con el usuario a través de un dispositivo ya sea para controlar y representar información y acciones. La segunda, se considera una evolución de las GUI y esta denominado como interfaz natural de usuario o NUI, esta se puede definir como una interfaz capaz de realizar una comunicación humano-maquina similar o semejante a la comunicación entre los seres humanos. De modo que se promueva una interacción “natural” o que permite al usuario sentir se natural a la hora de comunicarse. [1]

Por otra parte, dentro de los nuevos desarrollos y aplicaciones tecnológicos se presentan los sistemas embebidos que son una herramienta computacional similar a un computador pero que a diferencia de este están diseñados para cumplir una tarea específica y no una de uso general. De este modo consisten en una combinación computacional de hardware-software para efectuar una tarea específica en cualquier lugar y en cualquier momento. [3]

(6)

Actualmente, se puede decir que la domótica, las interfaces naturales de usuario y los sistemas embebidos son 3 elementos que es poco frecuente encontrarlos juntos. Ya que en la mayoría de los casos cuando tan solo se pueden encontrar 2 de estos términos ya sea sistemas domóticos con sistemas de control embebidos o sistemas domóticos haciendo uso de interfaces naturales de usuario.

Así que con el siguiente proyecto se propone diseñar e implementar un sistema de aplicaciones domóticas con una interfaz natural de usuario, específicamente diseñada para la adquisición de gestos corporales traducidos en imágenes y video basado o controlado por una plataforma embebida para el procesamiento y ejecución de tareas del hogar. El sistema diseñado será una alternativa económicamente atractiva con respecto a las aplicaciones similares.

(7)

2.

Marco Teórico

Domótica

La domótica se entiende como el conjunto de procesos y tecnologías usadas para automatizar un espacio, una vivienda o un edificio; en el que se integran las diferentes ciencias como la eléctrica, electrónica, mecánica e informática con una aplicación específica para la gestión de los recursos propios del hogar. La gestión de los recursos se llevara a cabo para generar un beneficio en los siguientes aspectos:[5]

 Ahorro Energético  Seguridad

 Confort

 Comunicaciones

Interfaz natural de usuario

La interfaz natural de usuario (NUI) de sus siglas en inglés (Natural User Interface) es una evolución de la interfaz gráfica de usuario (GUI) y surge como un mecanismo de interacción hombre-máquina que permite establecer una comunicación con sistemas computacionales a través de periféricos que pueden recibir instrucciones e información.[1]

Kinect

El dispositivo escogido para la interfaz natural de usuario fue el Microsoft Kinect. El Kinect es un dispositivo diseñado en principio como controlador de juegos para la consola Microsoft Xbox 360, este está compuesto por una serie de sensores que le permiten realizar tareas de captura de imágenes y audio, detección de movimientos y gestos corporales. Esto lo logra gracias a que tiene integrado diferentes sensores:

 Sensor de color: se encarga de captar imágenes como una cámara fotográfica

 Sensor de profundidad: funciona utilizando un infrarrojo emisor que envía una señal y un sensor infrarrojo receptor que capta la señal reflejada para determinar la profundidad con respecto a la ubicación del sensor.

(8)

Figura 1. Microsoft Kinect Sensor. [6]

El sensor Kinect tiene una salida de video 30fps o 30 Hz (i.e,30 imágenes por segundo). La cámara RGB graba video usando 8-bit con resolución VGA (640x480 pixeles) con un filtro de colores. El sensor monocromático de profundidad graba video también en resolución VGA (640x480pixels) usando 11-bit de profundidad. Por último, el Kinect tiene un límite de rango eficaz de 1.2m-3.5m para el modelo de Xbox 360 y de 0.4m-3.5m para el modelo de Windows. [6]

Sistema Embebido

Un sistema embebido es una combinación computacional de hardware-software que puede tener partes mecánicas u otras y está diseñado para desarrollar una tarea específica. En algunos casos los sistemas embebidos hacen parte de un sistema o producto.[2]

Raspberry PI

La Raspberry PI o RPI es en computador del tamaño de una tarjeta de crédito que tiene la posibilidad de conectarse a un monitor, teclado y mouse. Esta tiene la capacidad de un computador pequeño con lo que puede realizar tareas como navegación en internet, utilizar hojas de cálculos, procesadores de texto, reproducir videos en alta definición, juegos y la mayoría de tareas que haría un pc. [21]

La Raspberry PI (Model B) la que se utilizara en el desarrollo del proyecto, se muestra en la Figura 2 junto con sus componentes.

(9)

Figura 2. Raspberry PI model B. [23]

Las especificaciones de esta tarjeta se presentan a continuación. [23]

 Tamaño: 85.60mm x 53.98mm

 CPU: ARMv6 –compatible processor rev7 v61-(700MHz)  GPU Card: BroadCom BCM2708

 SDRAM: 512 MB

 2 x USB2.0, 10/100MBIT  HDMI output

Raspbian

Raspbian es un Sistema operativo libre basado en Debian optimizado para el hardware de la raspberry PI. Este OS, diseñado especialmente para RPI, cuenta con más de 35,000 paquetes y software pre compilado para proporcionar una fácil instalación.[22]

OpenCV

Open Source Computer Vision Library es una librería software de libre desarrollo de visión artificial. Esta librería cuenta con más de 2500 algoritmos optimizados que presenta un conjunto que incluye tanto algoritmos clásicos como del estado del arte de la visión artificial. Estos algoritmos pueden ser utilizados para la detección y reconocimiento de caras, identificación de objetos, clasificación de acciones humanas en videos, rastreo de movimientos, extracción de modelos 3D de objetos y muchas otras herramientas más. Por último, maneja interfaces como

(10)

C++, C, Python, Java y MATLAB y soporta los sistemas operativos Windows, Linux, Android y Mac. [15]

Python

Python es un lenguaje de programación de alto nivel y de propósito general. Está diseñado con la idea de que el código se comprensible y que la sintaxis sea simple y los conceptos se expresen en pocas líneas comparados con lenguajes como C++ y Java. [20]

(11)

3.

Metodología de Diseño

3.1

Alternativas de diseño de la solución y de sus componentes

3.1.1 Interfaz Natural de Usuario

En primer lugar para definir los componentes que serían necesarios para desarrollar la solución de la problemática propuesta era fundamental escoger la tecnología necesaria y adecuada que asegurara que los objetivos propuestos para el proyecto pudieran cumplirse. De este modo, se realiza una investigación para seleccionar los elementos y componentes que cumplan los requerimientos necesarios para dentro de la solución propuesta. [4]

Por consiguiente, se decide primero escoger el dispositivo o NUI ya que este dispositivo permitiría definir las restricciones y capacidades del sistema embebido y no al contrario ya que la interfaz natural de usuario debe ser capaz de la adquisición de señales y el reconocimiento de gestos. Además, la diversidad de NUI es limitada por lo que no existen demasiadas opciones para escoger. Los dispositivos como interfaz natural de usuario, evaluados fueron los siguientes:

 Microsoft Kinect (Cámara RGB, Sensor IR de profundidad, micrófono, motor)  Asus Xtion Live (Cámara RGB, Sensor IR de profundidad)

 PrimeSense Carmine 1.08 (Cámara RGB, Sensor IR de profundidad)

De estos dispositivos se descartó el uso del PrimeSense ya que fue descontinuado después de la compra de la compañía PrimeSense por parte de Apple. [7]

Tabla 1. Características NUI. [6][8]

Características Microsoft Kinect Asus Xtion Live Cámara RGB 8-bit VGA (640x480 pix) VGA (640x480 pix)

Cámara Profundidad 11-bit VGA (640x480 pix) VGA (640x480 pix)

Rango de operación 0.4m - 3.5m 0.8m - 3.5m

Video 30fps 30fps

Campo de visión 57°H, 43° V 58° H, 45° V, 70° D

Tamaño 12”x 3” x 2.5” 7” x 2” x 1.5”

Peso 3.0 0.5

Alimentación AC& DC(USB) DC(USB)

Como se observa en la Tabla 1 las características de ambos dispositivos presentan especificaciones relativamente similares y las diferencias significativas solo se pueden observar en sus especificaciones físicas como lo son el tamaño, el peso y la fuente de alimentación en las que el Asus Xtion Live cuenta con menores valores. De este modo, dado que estas características no afectarían el rendimiento o la capacidad de realizar un proceso de reconocimiento de gestos y además la solución planteada se presenta como una aplicación en interiores no existe una razón

(12)

decisiva por la cual escoger entre alguno de los dos. Por esto, debido a que el departamento contaba con un dispositivo Microsoft Kinect se optó por utilizar este dispositivo.

3.1.2 Sistema Embebido

Al haber seleccionado el dispositivo o interfaz natural se procede a escoger el sistema embebido de control. Para esto, se debía tener en cuenta que dispositivo tuviera la capacidad de hacer el procesamiento de imágenes requerido, tamaño reducido y bajo costo, entre los parámetros más importantes de selección. A continuación en la Tabla 2 se presenta las características de dos plataformas embebidas de desarrollo para comprar los aspectos y seleccionar un dispositivo.

Tabla 2. Características plataforma de desarrollo. [23][9][16]

Características Raspberry PI BeagleBone Black

CPU ARMv6 –compatible processor rev7 v61-(700MHz)

AM335x 1GHz ARM® Cortex-A8

RAM 512MB @400Mhz 512MB @400Mhz

Video 1 HDMI, 1 Componente 1 Micro-HDMI

Resolutions Extensive from 640×350 up to 1920×1200, this includes 1080p

1280×1024 (5:4), 1024×768 (4:3), 1280×720 (16:9), 1440×900 (16:10) all at 16 bit

Audio Stereo over HDMI, Stereo from 3.5 mm jack

Stereo over HDMI

Storage SD card 4GB 4GB on-board

GPU Broadcom VideoCore IV No/ 3D Graphic Accelerator

OS Raspbian (Recommended), Ubuntu, Android, ArchLinux, FreeBSD, Fedora, RISC OS, others…

Angstrom (Default), Ubuntu, Android, ArchLinux, Gentoo, Minix, RISC OS, others…

Power 150-350 mA @ 5V under varying conditions

210-460 mA @ 5V under varying conditions

GPIO 8 Pins 65 pins

Periféricos 2 USB Hosts, 1 Micro-USB Power, 1 10/100 Mbps Ethernet, RPi camera connector

1 USB Host, 1 Mini-USB Client, 1 10/100 Mbps Ethernet

Precio $35 USD $45 USD

Dimensiones 85.60mm × 53.98mm 86.4mm x 53.3 mm

Comunidad/Soporte

Recursos Grande Pequeña

En la Tabla 2 se presentan los datos y especificaciones de las tarjetas o plataformas de desarrollo, los cuales se utilizaron para seleccionar el dispositivo para la implementación del proyecto.

En primer lugar, se puede decir que con respecto a velocidades y capacidad de procesamiento ambas tarjetas tienen valores muy similares siendo la BeagleBoard Black la de mayor velocidad. En

(13)

cuento al almacenamiento poseen volúmenes similares pero la RPI tiene la opción de cambiar la memoria SD y expandir capacidad según se requiera.

Segundo, la RPI tiene una GPU dedicada para el procesamiento grafico que soporta OpenGL lo que es una gran herramienta a la hora de realizar el tratamiento y reproducción de imágenes. En cambio, la BeagleBoard Black no posee una GPU únicamente cuenta con un acelerador de gráficos 3D que no presenta las mismas ventajas comparadas con las de utilizar la GPU.

Tercero, con respecto al sistema operativo ambas presentan casi las mismas opciones orientadas por Linux, a pesar de esto la RPI presenta un OS único y optimizado para su arquitectura. En cuanto a la alimentación y consumo de potencia no existe mucha diferencia pero la RPI presenta mejores valores en este aspecto. A nivel de periféricos y GPIO, la RPI presenta más periféricos y de mayor accesibilidad, pero la posee más GPIO con muchas más funciones y aplicaciones.

Por último, las 2 tarjetas presentan un tamaño tipo tarjeta de crédito donde la diferencia son unos pocos milímetros. En cuanto, a precios la RPI es 10 dólares más económica que la BeagleBoard Black. Y para finalizar aunque no sea un especificación técnica de la tecnología de la tarjeta la comunidad será determinante ya que representa los recursos o fuentes de soporte técnico del uso aplicaciones y desarrollos que se han realizado hasta ahora con esta plataforma, lo que será de bastante utilidad para el desarrollo del proyecto. Por esto, la comunidad de la RPI presenta una gran cantidad de integrantes y desarrolladores a diferencia de la comunidad de BeagleBoard Black que apenas está en crecimiento.[16]

Después de este análisis, y priorizando los aspectos de procesamiento, en especial gráfico, tamaño, y el precio; se concluye por seleccionar la RPI como herramienta para el desarrollo del proyecto debido a su GPU dedica a procesamiento grafico a pesar de manejar una menor velocidad de procesamiento y una arquitectura de más antigua. Su tamaño es reducido como se espera de un sistema embebido y además su costo es menor en comparación aunque la diferencia no sea muy significativa, pero este aspecto podría ser un ventaja competitiva en el mercado.

4.

Objetivos

4.1

Generales

El objetivo general del proyecto es el diseño e implementación de un sistema de interacción humano máquina haciendo uso una de interfaz natural de usuario por medio de una plataforma embebida para una aplicación de monitoreo y control domótico con la idea de proporcionar confort, bienestar y entretenimiento en las tareas diarias que se realizan en un hogar.

(14)

4.2

Específicos

 Desarrollar una aplicación para un sistema domótico utilizando un dispositivo o herramienta independiente de un pc (sistema embebido) para la ejecución y procesamiento de acciones y datos.

 Utilizar un medio o dispositivo de adquisición de datos o información para la interacción humano maquina con el usuario, como el Kinect.

 Desarrollar el estado de arte de la interfaz natural de usuario, como el Kinect, en aplicaciones embebidas.

 Minimizar costos de implementación frente a las aplicaciones existen actualmente, especialmente con respecto al uso de computadores y sistemas de procesamiento y control.

5.

Definición:

5.1

Descripción:

La solución propuesta del problema planteado se trata de un sistema de interacción humano maquina a través de una interfaz natural de usuario, implementado en una plataforma embebida de bajo costo. El sistema estará compuesto por dos componentes principales: la plataforma embebida y la interfaz natural de usuario (NUI). La plataforma embebida actuara como cerebro y será la encargada de controlar y procesar la información obtenida a través de la NUI para de este modo ejecutar una acción de control. La interfaz natural de usuario o NUI se encargara de la adquisición señales de control externas dadas por el usuario. En este caso las señales se consideren gestos corporales realizados por el usuario.

Más específicamente el sistema deberá:

 Sensar o captar las señales externas o gestos corporales mediante una interfaz natural de usuario con un sensor Kinect.

 Procesar las señales o gestos corporales mediante un tratamiento de imágenes utilizando las librerías de visión artificial.

 Realizar una acción específica correspondiente a un gesto o señal captado por el sensor, en este caso será el control de un reproductor de música.

5.2

Diagrama de bloques:

A continuación se presentan los diagramas de bloques de la solución planteada. Entre ellos se presenta el diagrama de caja negra en la figura 1 y el diagrama de caja blanca en la figura 2:

(15)

5.2.1 Diagrama de caja negra

Figura 3.Diagrama de caja negra

5.2.2 Diagrama de caja Blanca

Figura 4. Diagrama de caja blanca

Como se puede observar en las Figura 3 y Figura 4 las entradas del sistema son gestos obtenidos por medio de la adquisición de imágenes con el Kinect. La siguiente etapa es el sistema de procesamiento de imágenes este será realizado por la plataforma embebida Raspberry PI que cuenta con un procesador gráfico que facilitara el tratamiento de imágenes necesario para esta tarea. La última etapa será la salida del sistema que se presenta como un acción de control para ejecutar una tarea específica; esto se realizara utilizado los periféricos de salida que ya posee la tarjeta de desarrollo Raspberry Pi.

5.2.3 Especificaciones y Restricciones:

Especificaciones:

• Implementación mediante una plataforma embebida • Operación en tiempo real

• Capacidad de adquisición y tratamiento de imágenes • Sensibilidad moderada.

(16)

• Identificación de presencia humana

• Interfaz natural de usuario o natural para el usuario. • Bajo costo en comparación con soluciones similares

Restricciones:

• Ambiente controlado para un espacio interior • Capacidad para controlarlo por 1 persona.

• Límite de capacidad de procesamiento dada por la tarjeta de embebida seleccionada. • Solución económicamente más atractiva frente al desarrollo en PC.

6.

Metodología de trabajo

Después de haber definido las especificaciones y dispositivos hardware del sistema, se procedió a familiarizarse con el funcionamiento y herramientas software de estos. Debido a que anteriormente no se había experimentado el uso de ninguno de los 2 dispositivos en cuestión se consideró trabajar de forma separada con cada uno.

6.1

Kinect

Para la familiarización con el dispositivo Kinect se decide instalar el sensor en el sistema operativo Ubuntu/Linux ya que este tendrá un funcionamiento similar al OS de la plataforma de desarrollo. De este modo, para lograr instalarlo sería necesario utilizar los drivers desarrollados por OpenNI junto con un middleware NITE. Estos drivers fueron desarrollados para el PrimeSense que fue el precursor de la tecnología que usa el Kinect, por lo que se consideran el Open Source oficial para el Kinect. [19]

Las ventajas de utilizar este software era que representa una fuente confiable para el trabajo con el Kinect además de tener librerías y ambientes de trabajo orientados al desarrollo y el análisis con un sensor 3D o de profundidad. Esto permitiría hacer uso de los algoritmos diseñados, implementados y probados con el sensor de profundidad lo que facilitaría realizar las tareas de reconocimiento de gestos. [18]

Después de finalizada la instalación fue posible probar estos algoritmos y funciones ejemplos para probar cual sería la capacidad de información que se podría obtener de los sensores y de las funciones para el análisis de imágenes en 3D o con profundidad. [19]

Por último, en general, las especificaciones de uso del Kinect en el pc tanto para Windows como para Linux tenían como requisitos del sistema tener una velocidad de procesamiento de 2x2.66GHz y 2 GB de RAM por lo que en este punto era difícil estimar si la conexión entre ambos dispositivos funcionaria correctamente.

(17)

6.2

Raspberry PI

Para utilizar la raspberry PI es necesario tener al menos un teclado, mouse y monitor ya que en pocas palabras funciona igual que un pc, pero claramente su capacidad está muy limitada comparada con las últimas prestaciones que tienen los de última tecnología. A pesar de esto no es del totalmente necesario utilizar estos periféricos para poder utilizar la RPI, ya que es posible conectarse con la raspberry PI a través de SSH, que representa una conexión segura desde un computar a la RPI para ejecutar a través de la consola de comandos diferentes programas y acciones. Para esto se necesita que ambos dispositivos estén conectados a una red o una conexión física entre ellos a través de un cable de red. [12]

De este modo, se procedió a instalar los drivers y software del Kinect en la raspberry PI, sabiendo que los requerimientos exigidos podían no ser suficientes para que funcionaran correctamente. El procedimiento de instalación se hizo utilizando diferentes métodos y recurso encontrado a través de la web pero ninguno aseguraba un correcto funcionamiento. Después de varios intentos se logró instalar la mayoría de controladores pero no se logró que ninguno de estos funcionara correctamente y que permitiera reconocer el sensor Kinect.

Por esto fue necesario, buscar nuevas alternativas de software que permitieran realizar una comunicación y transferencia de datos entre el Kinect y la RPI. Para esto se consultaron diferentes fuentes para lograr este objetivo, entre una larga búsqueda fue posible encontrar un driver que permitiera el uso del Kinect como si fuera una cámara web. [13]

Después de varios intentos fue posible instalar el controlador en la raspberry PI, se logró utilizando el repositorio de la web en con un driver diseñado para sistemas embebidos o con recursos limitados y que permitiera otorgara el acceso al uso del sensor de profundidad. [13]

El driver instalado permitía obtener los datos del sensor de profundidad y de la cámara RGB, aunque no de forma simultanea como los controladores oficiales. Teniendo esto, se podía obtener una imagen o video del sensor en la RPI tal cual como su fue una cámara. En este punto, se había logrado uno de los objetivos y era lograr implementar el funcionamiento de estos dos dispositivos. [13]

Por lo tanto, ahora el siguiente procedimiento seria el tratamiento de imágenes. Una dificultad de esto, es que el conocimiento adquirido anteriormente para el manejo del Kinect no sería de gran utilidad, ya que en este caso no se contaría con el ambiente de trabajo ni los algoritmos que proporcionaba OpenNI. Esto se debe a que la imagen adquirida con el sensor no presentaría la información de la misma manera que era presentada con los drivers oficiales ya que en este caso se trataría como información de una cámara común y corriente.

Por lo tanto, era necesario establecer que herramienta y librerías se podrían utilizar para el tratamiento de las imágenes. De este modo, se consulta acerca de las diferentes librerías y herramientas para el tratamiento de imágenes, entre esto se encuentra que OpenCV es una

(18)

librería dedicada al tratamiento de imágenes y a la visión artificial, además de ser una de las librerías con mayor soporte y herramientas en este contexto. Por lo que, se decide utilizar esta como parte del proyecto y se procede a instalarla siguiendo el procedimiento descrito en la web. [15]

6.3

RPI + Kinect +OpenCV

Al finalizar la instalación de las librerías de OpenCV ya se podía proceder a realizar el programa para el reconocimiento de gestos. De este modo, se debía definir el lenguaje de programación que se utilizaría para desarrollar el programa. Entre las opciones disponibles se encuentran: C++, C, Python, Java y MATLAB. [15] [24]

Para seleccionar cual usar se prefería utilizar el que mas rápidamente y de manera sencilla permitiera desarrollar la aplicación deseada, según la tarjeta de desarrollo utilizada y los conocimientos actuales. Por lo tanto, MATLAB, Java y Python necesitan de una plataforma para desarrollar el código y correrlo, en cambio, las aplicaciones con C y C++ solo deberían requerir de un ejecutable para poder funcionar. Además de esto, se conocía de antemano que el sistema operativo Raspbian ya contaba con una plataforma de desarrollo para Python por lo que no sería necesario realizar más instalaciones.

Así que, para decidir entre C, C++ y Python ya que no requerían de alguna instalación y el conocimiento acerca de estos 3 lenguajes era casi el mismo, que en este caso era muy poco. Se procede a escoger por Python ya que está orientado a la simplificación del código y a su facilidad de comprensión, además utiliza scripts lo que permitiría acelerar la curva de aprendizaje de este lenguaje. [20]

6.4

Desarrollo del algoritmo de reconocimiento de gestos

(19)

Figura 5. Diagrama de flujo del algoritmo de reconocimiento de gestos

En la Figura 5 se presenta un diagrama de flujo con el algoritmo propuesto para el reconocimiento de gestos. En primer lugar, se realiza un acondicionamiento de la imagen que es capturada ya que esto facilitara tareas posteriores. Aunque en general, esto es más importante cuando se hace uso de cámaras RGB y no se cuenta con un sensor de profundidad. [25][10][14]

Posteriormente, para reconocer un gesto, se opta por identificar un objeto en este caso por lo que se debe definir una región de interés. Esto con el objetivo de aislar de la imagen los espacios o

(20)

partes que no son útiles para realizar un gesto. En el caso en cuestión se quería aislar la mano de una persona.

Definida la región de interés se quiere reconocer la mano por lo que se esperaba buscar los contornos para definir las figuras u objetos en la imagen. Esto se logra utilizando funciones ya implementadas por parte de las librerías de OpenCV por lo que solo es necesario definir correctamente los parámetros de las funciones. [10][25]

A continuación, se debía asegurar que los contornos definieran la mano y no otras figuras que presentaran contornos en la imagen. Para esto se deben identificar los defectos de convexidad que en este caso se deben a los dedos de la mano. Una vez identificados es posible decir que la región de interés es la mano. [25]

Por último, ahora solo falta reconocer un gesto, para esto lo que se quiere hacer es identificar los movimientos de la región de interés. Esto se realiza utilizando otra función de la librería de OpenCV ya que podremos identificar o rastrear los cambios de una imagen a otra lo que permitirá ver si existe movimiento por parte de nuestra región de interés lo que se podría traducir en un gesto. [25]

Al final cuando se ha logrado reconocer un gesto solo será necesario traducir o parametrizarlo en un acción o tarea. [17]

(21)

7.

Análisis de Resultados

El primer resultado obtenido para la ejecución del proyecto fue lograr implementar el dispositivo Kinect en la raspberry PI. La conexión de estos, permitió obtener los datos del sensor de profundidad que se pueden visualizar como si fuera una cámara común y corriente. En la Figura 6 , se puede observar una imagen de la secuencia de datos o video, en tiempo real, captada por el sensor Kinect. Esto se realizó utilizando una aplicación para el uso de cámaras web.

Figura 6. Visualización de los datos del sensor de profundidad por medio de una captura de la imagen.

La imagen obtenida de la secuencia de imágenes captadas por el sensor de profundidad se traduce en un matriz de pixeles en donde cada pixel representa la profundidad relativa con respecto a la cámara. En el caso de Figura 6, los pixeles más oscuros representan una menor profundidad y los pixeles menos oscuros una menor; para el caso de los pixeles de color blanco se definen como fuera de rango ya sea cercano o lejano, que como se mencionó anteriormente el rango de medida aproximado del Kinect es de 40 cm a 3.5m.

El siguiente resultado obtenido fue la implementación del sistema de reconocimiento de gestos, por medio del rastreo de la mano de una persona. Para este caso fue necesario definir una distancia de operación y que no se logró obtener un resultado adecuado para varias distancias de la mano con respecto al Kinect. En este caso, la distancia ubicación de la persona debe ser alrededor de 1.20m con respecto al dispositivo. En primer lugar, se captura los datos del sensor como se muestra en la Figura 7, para poder ser analizados.

(22)

Figura 7. Captura de la imagen del sensor de profundidad por medio del programa diseñado.

La Figura 7 presenta una captura de la imagen del sensor de profundidad realizada por medio del script de programación diseñado en Python para la implementación del sistema de reconocimiento de gestos.

Posteriormente, se presentan los resultados del tratamiento de la imagen para identificar la región de interés, en este caso la mano. Esto se puede observar en la Figura 8.

(23)

La imagen de la Figura 8 muestra el resultado de los procesos de filtrado, difuminado de los datos obtenidos del sensor para identificar la región de interés.

El siguiente resultado obtenido, corresponde al análisis realizado para identificar si la región obtenida anteriormente, en la Figura 8, es una mano. La Figura 9, presenta los resultados.

Figura 9 Captura de imagen de los datos de análisis para identificar la imagen captada.

Como se puede observar en la Figura 9, se demuestra gráficamente los parámetros que permiten definir si la imagen capta es una mano. El proceso se logró utilizando el método explicado anteriormente en la metodología de trabajo.

Por último, definida la región interés y asegurando que la imagen captada fuera una mano se procede a rastrear el movimiento de este a través del espacio. Esto se logra identificando la posición inicial de la mano para posteriormente identificar, según su ubicación en la matriz de pixeles capturada la nueva ubicación. Así que por medio de comparación con la ubicación inicial y final se obtiene la dirección del movimiento lo que representa un gesto.

(24)

8.

Discusión

Al finalizar el trabajo realizado se logró implementar el dispositivo Kinect en un sistema embebido lo cual requirió de bastante investigación ya que no era algo sencillo de implementar, debido a la falta de software correspondiente para controlar el Kinect y los recursos limitados de la Raspberry PI.

El sistema diseñado tiene la capacidad de ser modificable, escalable y replicable ya que es posible modificar las acciones de control que se deseen ejecutar, las aplicaciones de esto pueden ser utilizadas en muchos otros campos y aspectos diferentes a la domótica y los componentes utilizados permiten replicar fácilmente la solución propuesta.

Durante el proceso de implementación del algoritmo para el reconocimiento de gestos fue necesario llevar a cabo un proceso de depuración por lo que fue necesario ver cuál era el tratamiento de la imagen que se llevaba en tiempo real. Esto fue de gran utilidad ya que hubiera sido difícil establecer los errores de lógica y de la estructura del algoritmo sin la posibilidad de observar que ocurría a cada paso. Sin embargo, esto requiere de un alto uso de la memoria y del procesador por lo que en ocasiones no se logra visualizar el video de la cámara a 30fps, como se esperaría.

La implementación realizada en este proyecto se presenta como una herramienta para seguir trabajando e investigando en el uso de los sistemas embebidos y las interfaces naturales de usuario, ya que el masivo desarrollo de las “cosas inteligentes” requiera de perfeccionar las comunicaciones entre los humanos y estas.

Por último, el uso de los sistemas con visión artificial presenta una cantidad de herramientas que pueden ser aprovechadas en todos los campos y aplicaciones de la ingeniería y la ciencia. Como por ejemplo, en todo proceso que requiera de observación como el desarrollo de experimento, o el análisis de muestras.

(25)

9.

Conclusiones

Al finalizar el proyecto se puede concluir que los sistemas embebidos se presentan como una alternativa de gran capacidad y eficiencia para la ejecución de tareas específicas y diversas aplicaciones, en especial para el diseño e implementación de sistemas autónomos o inteligentes.

Por otra parte, las herramientas para el análisis y tratamiento de imágenes o de visión artificial presentan algoritmos que permiten desarrollar productos junto con los sistemas electrónicos con un sinfín de aplicaciones. La unión de los sistemas electrónicos con los sistemas de visión artificial se presenta como una alternativa de investigación con mucho potencial a desarrollar.

La Raspberry PI se presenta como un sistema embebido con gran capacidad de ejecutar tareas complejas dedicadas a aplicaciones graficas gracias a la unidad de procesamiento gráfico. Además, debido al puerto GPIO es posible integrar los desarrollos de alto nivel de software con las interfaces de bajo nivel y hardware.

Las interfaces naturales de usuario presentan gran diversidad de utilidades disminuyendo las barreras de aprendizaje e interacción entre los humanos y la tecnología. Lo que representa una herramienta de gran utilidad para el área de la domótica y la automatización ya que parte de su objetivo es mejorar y enriquecer la interacción de las personas con los espacios para ofrecer beneficios desde el ámbito del entretenimiento hasta el ámbito laboral.

(26)

10.

Referencias

[1] D.Wigdor & D. Wixon (2011) Designing Natural User Interfaces for Touch and Gesture. Brave NUI World.

[2] Embedded Systems Glossary. Recuperado de la web el 21 de septiembre de 2014 :http://www.barrgroup.com/Embedded-Systems/Glossary-E

[3] Mohamed, A. B., Val, T., Andrieux, L., & Kachouri, A. (2013). Assisting people with disabilities through Kinect sensors into a smart house. Sousse: IEEE.

[4] M. Steinkirch. (2013) An Introduction to Depth Sensors for Gesture Recognition. State University of New York at Stony Brook.

[5] Buhur, A. Z. (2005). An Internet Based Wireless Home Automation System for multifunctional devices. IEEE.

[6] Microsoft Windows. Microsoft Kinect. Recuperado de la web el 22 de septiembre de 2014 : http://msdn.microsoft.com/en-us/library/jj131033.aspx

[7] All Things D. (24 de 11 de 2013). Apple Confirms Acquisition of 3-D Sensor Startup PrimeSense. Recuperado el 2014, de All Things D: http://allthingsd.com/20131124/apple-confirms-acquisition-of-3d-sensor-startup-primesense/

[8] ASUSTeK Computer Inc. (2014). AsusXtionProLive. Recuperado el 9 de 2014, de http://www.asus.com/Multimedia/Xtion_PRO_LIVE/specifications/

[9] BeagleBoard. (2014). BeagleBoard. Recuperado el 10 de 2014, de http://beagleboard.org/black

[10] Bradski, G. a. (2008). Learning OpenCV: Computer Vision with the OpenCV Library. O'Reilly Media.

[11]Donat, W. (2014). Learn Raspberry Pi Programming with Python. Apress.

[12]Garcia, R., & Viñas, C. (2014). Implementation of a low cost video wall using Raspberry Pi devices. Cataluña: EETAC.

[13] GitHuB. (Mayo de 2014). Librekinect. Recuperado el Octubre de 2014, de xxorde: https://github.com/xxorde/librekinect

[14] iftheqhar. (2 de 8 de 2013). Recuperado el Noviembre de 2014, de Opencv python hand gesture recognition: http://creat-tabu.blogspot.com/2013/08/opencv-python-hand-gesture-recognition.html

(27)

[15]Itseez. (2014). OpenCV. Recuperado el 10 de 2014, de About: http://opencv.org/about.html

[16] Leonard, M. H. (2014). Maker Corner. Obtenido de http://www.michaelhleonard.com/raspberry-pi-or-beaglebone-black

[17] Matt. (9 de Junio de 2012). Raspberry Pi Spy. Recuperado el Noviembre de 2014, de Simple Guide to the RPi GPIO Header and Pins: http://www.raspberrypi-spy.co.uk/2012/06/simple-guide-to-the-rpi-gpio-header-and-pins/

[18]Michael. (2 de May de 2012). Ubuntu + Kinect + OpenNI + PrimeSense. Recuperado el Septiembre de 2014, de http://mitchtech.net/ubuntu-kinect-openni-primesense/

[19] Nismrc. (17 de Diciembre de 2010). OpenNI, el driver Open Source oficial de Kinect. Recuperado el 15 de Septiembre de 2014, de http://www.muylinux.com/2010/12/17/openni-el-driver-open-source-oficial-de-kinect

[20]Python Software Foundation. (2014). Python. Recuperado el 10 de 2014, de https://www.python.org/about/

[21] Raspberrypi. (s.f.). Raspeberry PI. Recuperado el 5 de 9 de 2014, de http://www.raspberrypi.org/help/what-is-a-raspberry-pi/

[22]Raspbian. (s.f.). Raspbian. Recuperado el 10 de 2014, de http://www.raspbian.org/

[23]RS Componentes. (3 de 2012). Raspberry PI Getting Started Guide. Recuperado el 2 de 11

de 2014, de

http://d4c027c89b30561298bd-484902fe60e1615dc83faa972a248000.r12.cf3.rackcdn.com/supporting_materials/Raspbe rry%20Pi%20Start%20Guide.pdf

[24] Stemapks. (2014). OpenCV. Recuperado el 2014, de Tutorial 1 Installation opencv on the pi: http://www.stemapks.com/opencv.html

Referencias

Documento similar

In addition to the requirements set out in Chapter VII MDR, also other MDR requirements should apply to ‘legacy devices’, provided that those requirements

The notified body that issued the AIMDD or MDD certificate may confirm in writing (after having reviewed manufacturer’s description of the (proposed) change) that the

En estos últimos años, he tenido el privilegio, durante varias prolongadas visitas al extranjero, de hacer investigaciones sobre el teatro, y muchas veces he tenido la ocasión

que hasta que llegue el tiempo en que su regia planta ; | pise el hispano suelo... que hasta que el

Para ello, trabajaremos con una colección de cartas redactadas desde allí, impresa en Évora en 1598 y otros documentos jesuitas: el Sumario de las cosas de Japón (1583),

E Clamades andaua sienpre sobre el caua- 11o de madera, y en poco tienpo fue tan lexos, que el no sabia en donde estaña; pero el tomo muy gran esfuergo en si, y pensó yendo assi

Habiendo organizado un movimiento revolucionario en Valencia a principios de 1929 y persistido en las reuniones conspirativo-constitucionalistas desde entonces —cierto que a aquellas

En este sentido, puede defenderse que, si la Administración está habilitada normativamente para actuar en una determinada materia mediante actuaciones formales, ejerciendo