NAVEGACION REACTIVA DIFUSA
USANDO DATOS DE PROFUNDIDAD
DEL SENSOR KINECT
TESIS
PARA OBTENER EL TITULO DE:
INGENIERO EN COMPUTACION
PRESENTA:
CLAUDIA CRUZ MARTINEZ
DIRECTOR DE TESIS:
DR. IGNACIO ALGREDO BADILLO
SANTO DOMINGO TEHUANTEPEC, OAXACA, MEXICO. MARZO 2014
Agradecimientos
Agradezco a Dios por la fortaleza y conviccion de seguir adelante, por los momentos buenos y
malos que he tenido en mi carrera universitaria y que me han ayudado a crecer y madurar como
persona.
Infinitas gracias a mis padres, Carlos Cruz Lopez y Silvia Martınez Rosas, por todo el es-
fuerzo hecho para que me fuera posible terminar mis estudios, por los momentos que estuvieron
junto a mı, por darme un ejemplo de vida de lo que quiero seguir siendo en el futuro y por ese
ambiente de hogar que me ha cuidado y apoyado incondicionalmente todos estos anos.
Gracias a mi hermana, Elvira I. Cruz Martınez por ser parte de mi familia, por su apoyo, su
cuidado y los momentos que ha compartido conmigo, y muy en especial, le agradezco por mis
dos sobrinos, Estefania Lopez Cruz y Carlos Manuel Lopez Cruz, quienes me han acompanado
en estos ultimos anos, haciendo crecer en mı la capacidad de tolerancia y respeto brindandome
su inocencia y alegrıa.
Agradezco a mi director de tesis Dr. Ignacio Algredo Badillo por las aportaciones en este
proyecto. Gracias al profesor M.C. Ernesto Cortes Perez por encaminar en un inicio este pro-
yecto de tesis y al profesor M.C. J. Jesus Arellano Pimentel, no solo por su funcion de sinodal,
sino por el apoyo, sus consejos y ensenanzas en estos anos de mi carrera. Tambien agradezco a
mis sinodales, M.C. Sergio Juarez Vazquez, M.R. Yara Perez Maldonado y M.C. Vıctor Hugo
Garcıa Rodrıguez por sus valiosos comentarios y correcciones realizados en la revision de este
documento.
Un agradecimiento especial al Dr. Enrique Sucar Succar por su apoyo en el desarrollo de
mi proyecto de estancia profesional, ası como tambien le agradezco a Juan Irving, Shender,
Kika, Israel, Sol, Angel y Eduardo, por sus conocimientos, companıa y amistad en mi tiempo
I
AGRADECIMIENTOS II
de estancia profesional.
Quiero agradecer a todos mis demas amigos, Leydi, Claudia y Rommel, a quienes siempre
tengo presentes y que han compartido conmigo buenos y malos momentos y que han enriquecido
mi vida con sus consejos, companıa, crıticas, conocimientos y apoyo.
Le agradezco al Programa de Mejoramiento de Profesorado (PROMEP) y al Cuerpo Academi-
co de Ingenierıa en Computacion por el apoyo economico para la realizacion de esta tesis.
Gracias Universidad del Istmo por brindarme la oportunidad de estudiar una carrera profe-
sional, por hacerme crecer no solo como profesionista sino tambien como persona.
Resumen
En general, el desempeno en las actividades diarias de las personas con capacidades disminuidas
que utilizan silla de ruedas desciende porque estas actividades implican un mayor esfuerzo, lo
cual puede ocasionarles lesiones o representar un peligro para su salud. Los sistemas roboticos de
navegacion automatica orientados al apoyo de personas con capacidades disminuidas, permiten
el desplazamiento a traves de diferentes ambientes. De este modo, el sistema robotico es una
base para la ejecucion de las actividades de personas con capacidades disminuidas y se requiere
que dicho sistema presente caracterısticas tales como seguridad y estabilidad para prevenir
lesiones del usuario. El principal objetivo de esta tesis es el diseno y desarrollo de una aplicacion
software para la navegacion automatica de manera reactiva, que permite una tolerancia en el
procesamiento de informacion imprecisa o datos que puedan ser alterados por distintos factores,
todo esto aplicando la logica difusa. Adicionalmente, esta aplicacion adquiere la informacion del
exterior a traves del sensor Kinect y su implementacion futura esta orientada a la navegacion
de una silla de ruedas. La informacion de profundidad del sensor Kinect es procesada mediante
el algoritmo de logica difusa para detectar la direccion con la menor probabilidad de colision.
Esta direccion es expresada en grados sexagesimales que permitan la ejecucion de movimientos
suaves y la reaccion ante obstaculos imprevistos. La evaluacion del sistema de navegacion se
realizo en dos ambientes: un ambiente domestico y en un laboratorio de computo. Las pruebas
son ejecutadas en un equipo de computo con el sensor Kinect sobre una plataforma movil, la
cual es controlada manualmente por un operador humano despues de recibir las instrucciones
que retorna la aplicacion. El sistema de navegacion propuesto acierta en un 85.7% con un
tiempo promedio de ejecucion de 38.9 milisegundos por cada captura. En esta tesis se presenta el
desarrollo de cada modulo de la aplicacion software, ası como de una interfaz grafica que permite
observar la imagen de profundidad adquirida mediante el sensor Kinect y la visualizacion de la
direccion de rotacion de la plataforma movil para evitar colisiones.
V
Abstract
In general, the performance of the daily tasks for the people with diminished capacities that
use a wheelchair decreases because these tasks imply a greater effort, which can cause lesions
or health problems. The robotic systems of autonomous navigation that are aimed to the sup-
port of people with diminished capacities allow the movement through different environments.
In this way the robotic system is the base for the execution of the activities of people with
diminished capacities and it is necesary that the robotic system presents characteristics such
security and stability to prevent lesions for the user. The main goal of this thesis is the design
and development of a software application for the reactive autonomous navigation that admit
a tolerance on processing of imprecise information or data that can be disturbed by different
factors and generate gradual movements all of this by applying the fuzzy logic. Additionally,
this application acquires the data of enviroment through Kinect sensor and its future implemen-
tation is oriented to the navegation of a wheelchair. The depth information from a Kinect sensor
is processed through fuzzy logic algorithm to detect the direction with less collision probability.
The direction is expressed by sexagesimal angles that allow the execution of soft movements
and the reactions when unexpected obstacles appear. The evaluation of the navigation system
is made in two different environments: a domestic environment and a computer laboratory. The
tests are executed in a computer with the Kinect on top of a mobile platform, which is manually
controlled by a human operator after he receives the instructions that the application returns.
The proposed navigation system hits in a 85.7% and its average proccessing time is 38.9 milli-
seconds for each capture. This thesis presents the development of each module of the software
application as well as a graphic interface that allow the display of the depth image acquired
by Kinect sensor and the visualization of the direction of rotation of platform mobile to avoid
collisions.
VII
Indice general
Agradecimientos I
Resumen V
Abstract VII
Indice de figuras XIII
Indice de tablas XVII
Indice de pseudocodigos XIX
1. Introduccion 1
1.1. Planteamiento del Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Hipotesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3.1. General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3.2. Especıficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4. Justificacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5. Alcances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.6. Limitaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.7. Metodologıa general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2. Marco Teorico 11
2.1. Navegacion robotica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2. Inteligencia Artificial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.3. Vision Artificial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4. Sensores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
IX
Indice general X
2.5. Sensor Kinect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.6. Logica Difusa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.6.1. Definiciones basicas y terminologıa . . . . . . . . . . . . . . . . . . . . . 24
2.6.2. Funciones de membresıa . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.6.3. Sistemas de inferencia difusos . . . . . . . . . . . . . . . . . . . . . . . . 28
3. Estado de Arte 31
3.1. Sistemas de navegacion reactiva difusa con sensores de proximidad . . . . . . . . 32
3.2. Sistemas de navegacion reactiva difusa con fusion sensorial . . . . . . . . . . . . 34
3.3. Sistemas de navegacion reactiva difusa con sensor Kinect . . . . . . . . . . . . . 35
3.4. Discusion de los trabajos relacionados . . . . . . . . . . . . . . . . . . . . . . . . 37
4. Sistema propuesto 39
4.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.2. Adquisicion de datos de profundidad . . . . . . . . . . . . . . . . . . . . . . . . 41
4.3. Transformacion de los datos de profundidad . . . . . . . . . . . . . . . . . . . . 43
4.4. Eliminacion de regiones desconocidas pequenas . . . . . . . . . . . . . . . . . . . 45
4.5. Extraccion de profundidad promedio . . . . . . . . . . . . . . . . . . . . . . . . 49
4.6. Sistema de control difuso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.6.1. Definicion de variables de entrada, variables de salida y del sistema de
inferencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.6.2. Definicion de valores linguısticos y funciones de membresıa . . . . . . . . 56
4.6.3. Conjunto de reglas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5. Resultados y Comparaciones 69
5.1. Resultados generales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.2. Resultados por capturas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.3. Resultados por objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.4. Resultados por alcances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.5. Comparaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6. Conclusiones y trabajo a futuro 95
6.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.2. Trabajo a futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Referencias 99
Indice general XI
A. Interfaz grafica 105
B. Ejecucion del programa 109
C. Codigo fuente 113
C.1. Archivo principal: Grafico.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
C.2. Transformacion de los datos de profundidad: apariencia.m . . . . . . . . . . . . 115
C.3. Dividir imagen de profundidad por regiones: obtenerRegiones.m . . . . . . . . . 115
C.4. Obtener profundidad promedio por region: obtenerProfundidad.m . . . . . . . . 116
Indice de figuras
1.1. Metodologıa del desarrollo del proyecto de tesis. . . . . . . . . . . . . . . . . . . 8
2.1. Esquema de arquitectura estrategica. . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2. Esquema de arquitectura reactiva. . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3. Esquema de arquitectura por comportamientos. . . . . . . . . . . . . . . . . . . 12
2.4. Esquema de arquitectura hıbrida. . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.5. Logica difusa aplicado en la navegacion reactiva propuesta. . . . . . . . . . . . . 13
2.6. Diagrama de bloques de las etapas de un sistema de vision artificial. . . . . . . . 18
2.7. Sensor Kinect. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.8. Campo de vision del sensor Kinect. . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.9. Nube de puntos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.10. Imagen de profundidad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.11. Elementos de los conjuntos difusos. . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.12. Funcion triangular. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.13. Funcion trapezoidal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.14. Funcion Gaussiana. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.15. Funcion campana (bell). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.16. Estructura general de un sistema de inferencia difusa tipo Mamdani. . . . . . . . 29
2.17. Estructura general de un sistema de inferencia difusa tipo Sugeno. . . . . . . . . 30
4.1. Diagrama a bloques de las etapas del sistema de navegacion reactiva difusa. . . . 40
4.2. Estructura de los bits de profundidad. . . . . . . . . . . . . . . . . . . . . . . . 42
4.3. Rango en metros de la imagen de profundidad. . . . . . . . . . . . . . . . . . . . 42
4.4. Imagenes obtenidas del sensor Kinect. . . . . . . . . . . . . . . . . . . . . . . . . 43
4.5. Imagen de profundidad original. . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.6. Imagen de profundidad principal ImagenProf a escala de grises de 8 bits. . . . 45
4.7. Ejemplo de erosion geodesica de senales. . . . . . . . . . . . . . . . . . . . . . . 47
XIII
Indice de figuras XIV
4.8. Imagen con agujeros rellenados. . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.9. Division de imagen de profundidad ImagenProfundidad. . . . . . . . . . . . . . 50
4.10. Imagenes de profundidad con areas grandes desconocidas. . . . . . . . . . . . . . 51
4.11. Sistema de control difuso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.12. Ejemplo de fusificacion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.13. Funciones de membresıa para variables de entrada. . . . . . . . . . . . . . . . . 58
4.14. Diagrama del sistema de inferencia Sugeno del control difuso. . . . . . . . . . . . 63
4.15. Diagrama de bloques del sistema de navegacion reactiva difusa. . . . . . . . . . 64
4.16. Diagrama general del sistema de control difuso. . . . . . . . . . . . . . . . . . . 65
5.1. Imagenes obtenidas del sensor Kinect en un ambiente domestico: habitacion con
poca luminosidad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.2. Imagenes obtenidas del sensor Kinect en un ambiente domestico: habitacion con
luminosidad artificial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.3. Imagenes obtenidas del sensor Kinect en un ambiente domestico: pared y otros
objetos lejanos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.4. Imagenes obtenidas del sensor Kinect en un ambiente domestico: espacio con
luminosidad natural menor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
5.5. Imagenes obtenidas del sensor Kinect en un ambiente domestico: espacio con
luminosidad natural moderada. . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.6. Imagenes obtenidas del sensor Kinect en un ambiente domestico: espacio con
ligeros movimientos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.7. Imagenes obtenidas del sensor Kinect en un laboratorio de computo: tratamiento
de objetos cercanos y lejanos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.8. Imagenes obtenidas del sensor Kinect en un laboratorio de computo: ejecucion
con una pared cercana. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
5.9. Imagenes obtenidas del sensor Kinect en un laboratorio de computo: ejecucion
con una pared muy cercana. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.10. Imagenes obtenidas del sensor Kinect en un laboratorio de computo: caso del
pasillo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.11. Imagenes obtenidas del sensor Kinect en un laboratorio de computo: vista del
laboratorio de computo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
A.1. Interfaz de usuario del sistema. . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
A.2. Seccion de imagen de profundidad. . . . . . . . . . . . . . . . . . . . . . . . . . 106
Indice de figuras XV
A.3. Seccion del angulo de giro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
A.4. Seccion grafica de giro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
A.5. Seccion de seleccion de datos de entrada. . . . . . . . . . . . . . . . . . . . . . . 107
A.6. Seccion del porcentaje a omitir de datos desconocidos. . . . . . . . . . . . . . . . 108
A.7. Seccion de botones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
B.1. Proceso de compilacion: seleccion de archivos. . . . . . . . . . . . . . . . . . . . 111
B.2. Proceso de compilacion: inicializacion. . . . . . . . . . . . . . . . . . . . . . . . 111
B.3. Proceso de compilacion: seleccion de compilador. . . . . . . . . . . . . . . . . . . 111
B.4. Proceso de compilacion: verificacion de datos. . . . . . . . . . . . . . . . . . . . 112
Indice de tablas
2.1. Algunas definiciones de Inteligencia Artificial, organizadas en 4 categorıas. . . . 15
4.1. Resultados de medicion distancia/profundidad. . . . . . . . . . . . . . . . . . . . 57
4.2. Rangos y funciones de membresıa correspondientes a cada valor linguıstico. . . . 59
4.3. Tabla de verdad de la operacion logica AND. . . . . . . . . . . . . . . . . . . . 62
4.4. Tabla de verdad de la operacion logica OR. . . . . . . . . . . . . . . . . . . . . 62
4.5. Conjunto de reglas del sistema de control difuso: giros pronunciados. . . . . . . . 66
4.6. Conjunto de reglas del sistema de control difuso: reglas predictivas. . . . . . . . 66
4.7. Conjunto de reglas del sistema de control difuso: movimiento en linea recta. . . . 67
4.8. Conjunto de reglas del sistema de control difuso: giros basicos. . . . . . . . . . . 67
5.1. Caracterısticas de los equipos de computo. . . . . . . . . . . . . . . . . . . . . . 70
5.2. Tiempos de ejecucion promedio en milisegundos (ms). . . . . . . . . . . . . . . . 70
5.3. Comparacion entre los trabajos relacionados. . . . . . . . . . . . . . . . . . . . . 91
XVII
Indice de pseudocodigos
1. Conversion de imagen de profundidad . . . . . . . . . . . . . . . . . . . . . . . . 44
2. Relleno de partıculas oscuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3. Reconstruccion morfologica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4. Extraccion de profundidad promedio . . . . . . . . . . . . . . . . . . . . . . . . 52
5. Sistema de control difuso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6. Sistema completo de navegacion reactiva difusa . . . . . . . . . . . . . . . . . . 65
XIX
Capıtulo 1
Introduccion
La robotica movil ha sido empleada en diferentes propositos, desde proyectos academicos, proce-
sos industriales, aplicaciones de investigacion y en el sector salud, entre otros [1]. Para un robot
movil, la navegacion es la habilidad que requiere para desplazarse de un lugar a otro dentro
de un entorno, evitando los obstaculos que se le presenten. La navegacion se puede ejecutar ya
sea a) por un operador humano, que toma las decisiones de movimiento y envıa una senal al
dispositivo movil para que este ejecute el desplazamiento o b) de manera automatica, es decir,
sin la intervencion directa de un operador [2].
Un sistema de navegacion automatica busca explorar un ambiente evitando colisionar con los
objetos que se encuentren dentro de dicho ambiente, tratando de simular el raciocinio humano
mediante la inteligencia artificial. Para conocer que existe en la escena y, en base a esta infor-
macion ejecutar el movimiento adecuado, el sistema robotico requiere la captura de informacion
externa utilizando diferentes tipos de sensores, ya sea aquellos que toman una imagen de la
escena, la informacion de proximidad de los objetos con respecto al sensor o una fusion entre
diferentes tipos de sensores. En los ultimos anos la fusion sensorial ha sido aplicada mediante el
sensor Kinect, el cual permite una extraccion de informacion del ambiente empleando: sensores
de proximidad (laser y camara infrarrojos), imagenes digitales (camara RGB), comandos de voz
(arreglo de microfonos) y sensor propioceptivo (acelerometro).
Una vez que se obtienen los datos del ambiente, el sistema debe ejecutar una serie de pro-
cesos, basados en inteligencia artificial, para extraer informacion util, que le permita conocer
hacia donde debe moverse lo mas rapido e instantaneamente posible aun reaccionando a casos
imprevistos, sin la intervencion directa de un operador. La logica difusa, siendo un sub-campo de
1
Capıtulo 1. Introduccion 2
la inteligencia artificial trata de representar el sentido comun del humano y puede ser aplicada
en sistemas de navegacion para evitar colisiones, tratar datos que pueden estar sujetos a per-
turbaciones y tener una reaccion en tiempo real. Ademas permite la generacion de movimientos
no tan bruscos, ya que estos pueden ocasionar lesiones a los usuarios del sistema.
Considerando los aspectos previamente mencionados, se propone un sistema de navegacion
reactiva difusa implementado en software, que se contempla desde el procesamiento de datos
de profundidad hasta la aplicacion de la logica difusa como algoritmo de navegacion. Se espera
una posterior implementacion en hardware (sistema empotrado) principalmente sobre una silla
de ruedas para personas discapacitadas, aunque se tiene en cuenta que dicho sistema puede ser
implementado en alguna otra plataforma movil. Por lo tanto, no se consideran caracterısticas
especıficas de algun robot movil ya que la presente aplicacion se enfoca en calcular la direccion
de giro hacia el espacio con la menor probabilidad de choque, evaluando los valores de profun-
didad de los objetos en el ambiente, sin adquirir formas ni tamanos de los obstaculos. Al mismo
tiempo, se busca la reduccion de costos economicos, recursos de espacio en circuiterıa y consumo
de energıa.
Cabe mencionar que este trabajo forma parte del proyecto Desarrollo de una silla de
ruedas autonoma con brazo robotico para asistir a personas con capacidades dis-
minuidas, desarrollado por el Cuerpo Academico de Ingenierıa en Computacion de la
Universidad del Istmo, Campus Tehuantepec y financiado por el Programa de Mejo-
ramiento del Profesorado, PROMEP.
A continuacion se tratan los temas introductorios del proyecto correspondientes a la defini-
cion del problema, justificacion, hipotesis y objetivos generales y especıficos. En el Capıtulo 2 se
exponen los conceptos teoricos para el conocimiento de los temas a tratar en capıtulos siguientes.
En el Capıtulo 3 se presentan los trabajos actuales relacionados con el sistema de navegacion
reactiva difusa. Posteriormente en el Capıtulo 4 se describe de forma detallada el desarrollo del
sistema propuesto, desde la captura de los datos de profundidad hasta la descripcion del sistema
de control difuso. Los resultados que se obtienen en base a experimentacion son presentados en
el Capıtulo 5 dividiendose en resultados generales, por capturas de la escena y por objetivos
y alcances propuestos en el Capıtulo 1, para concluir en dicho capıtulo con las comparaciones
con los trabajos expuestos en el Estado de Arte. Finalmente en el Capıtulo 6 se plantean las
conclusiones obtenidas y el trabajo que se propone para su implementacion futura.
Capıtulo 1. Introduccion 3
1.1. Planteamiento del Problema
Existe una problematica para las personas con discapacidades motrices que utilizan silla de
ruedas al momento del desplazamiento de un lugar a otro, ejecucion de actividades cotidianas
y evasion de los obstaculos que se les presentan, ya que son diversas acciones para un mismo
momento. En algunas sillas de ruedas, el desplazamiento depende de la fuerza que pueda gene-
rar el operador, ya sea la misma persona discapacitada o alguien independiente que le ayude a
moverse; sin embargo, esto aumenta la dificultad en la ejecucion de otras tareas.
Por un lado, existen diversas sillas de ruedas que utilizan componentes electricos que pue-
den ser manejados ya sea mediante un control o joystick, pero aun significa un impedimento
para realizar otras actividades, ademas de que algunas personas discapacitadas no pueden o se
les dificulta manejar dichos controles. Por otro lado, se han probado sistemas de navegacion
automatica con diferentes tipos de sensores y algoritmos que tratan de obtener la mayor can-
tidad de informacion util del ambiente y ası tomar las mejores decisiones en la ejecucion del giro.
El presente trabajo de tesis plantea una aplicacion software para la navegacion reactiva te-
niendo en cuenta que se deben evitar giros bruscos para no ocasionar lesiones al operador, por
lo tanto se busca responder a la siguiente cuestion: ¿La logica difusa puede implementarse para
la evasion de obstaculos de manera reactiva, permitiendo movimientos suaves y previniendo la
ejecucion de giros bruscos? Esta cuestion conlleva a: a) identificar el formato de los datos que se
extraen del ambiente, b) adquirir la direccion de giro de la plataforma movil hacia el espacio con
la menor probabilidad de colision, c) ejecutar una navegacion casi de forma inmediata evitando
extraccion de formas y caracterısticas mas especıficas de los obstaculos, salvo su proximidad
con respecto al sensor y, ademas, d) evitar generar movimientos bruscos, adaptandose lo mejor
posible a cualquier tipo de ambiente. Todo esto tratando de obtener un sistema cuya implemen-
tacion futura pueda generar la menor cantidad de recursos (espacio, circuiterıa, potencia, entre
otros) y sin considerar caracterısticas y dimensiones de algun dispositivo movil en especıfico.
1.2. Hipotesis
Un sistema de navegacion reactiva difusa en conjunto con el sensor Kinect permitira la evasion
de obstaculos de una plataforma movil sin contemplar sus dimensiones, generando movimientos
suaves y orientado a una posterior implementacion en una silla de ruedas para personas con
discapacidades motrices o de la tercera edad.
Capıtulo 1. Introduccion 4
1.3. Objetivos
En esta seccion se presentan los objetivos del trabajo de tesis considerando desde un enfoque
general hasta un desglose especıfico.
1.3.1. General
Disenar y desarrollar una aplicacion software para un sistema de navegacion reactiva a traves
del procesamiento de datos de profundidad del sensor Kinect y el control difuso sobre las direc-
ciones de giro, orientado a una implementacion hardware en una silla de ruedas sin considerar
sus dimensiones.
1.3.2. Especıficos
Examinar los datos de profundidad que adquieren mediante el sensor Kinect.
Identificar los formatos de las imagenes de rango del sensor Kinect.
Determinar el formato de las imagenes de rango del sensor Kinect que servira como datos
de entrada del programa, en base a tiempo y recursos de procesamiento.
Definir el conjunto de reglas del control difuso.
Establecer los rangos difusos para las variables de entrada y de salida mediante la expe-
rimentacion con el sensor Kinect.
Investigar y contrastar el comportamiento de los sistemas de inferencia Mamdani y Sugeno.
Elegir un sistema de inferencia basandose en trabajos relacionados a los estudios compa-
rativos, libros y manuales.
Disenar la interfaz grafica de usuario para simular el sistema de navegacion reactiva y la
visualizacion de resultados.
Desarrollar el sistema mediante la herramienta de programacion de Matlab 2012a R© uti-
lizando Fuzzy Logic ToolboxTM e Image Processing ToolboxTM.
Realizar pruebas del sistema de navegacion utilizando grabaciones previas del sensor Ki-
nect para visualizar el comportamiento de la aplicacion.
Capıtulo 1. Introduccion 5
Ejecutar pruebas del sistema de navegacion en conexion directa con el sensor Kinect sobre
una plataforma movil, controlada manualmente por un operador humano siguiendo las
instrucciones que retorna la aplicacion.
Analizar cada una de las versiones del sistema mediante los resultados obtenidos.
Seleccionar la version final del programa.
1.4. Justificacion
Un sistema de navegacion automatico utilizando la vision artificial es conveniente, ya que permi-
te un avance tecnologico para diferentes sectores en la realizacion de tareas peligrosas, repetitivas
o imposibles de ejecutar por un ser humano.
En este trabajo se desarrolla un sistema de navegacion automatico aplicando una arquitec-
tura reactiva. La navegacion reactiva calcula las direcciones o movimientos un menor tiempo en
comparacion con otro tipo de arquitecturas de navegacion, y es conveniente su implementacion
en un sistema empotrado debido al menor consumo de recursos; ademas, la navegacion reactiva
permite no solo la aplicacion de un solo modulo, sino que tambien deja la posibilidad de com-
binar con otros tipos de arquitecturas para la ejecucion de tareas mas complejas [3].
Para la adquisicion de la informacion del exterior, se emplea el sensor Kinect, el cual es
uno de los sensores mas actuales que fomenta la fusion de sensores con un bajo costo para:
extraccion de proximidad (laser y camara infrarrojos), captura de imagenes digitales (camara
RGB), adquisicion de comandos de voz (arreglo de microfonos) y obtencion de posicion del
sensor(acelerometro). En seguida se mencionan los campos de investigacion donde se ha imple-
mentado el uso del Kinect [4].
Reconstruccion 3D.
Realidad aumentada.
Procesamiento de imagenes.
Herramienta de interaccion.
Reconocimiento de objetos.
Capıtulo 1. Introduccion 6
Navegacion robotica.
En este trabajo de tesis se utiliza la extraccion de datos de profundidad mediante el sensor
Kinect y esta orientado al procesamiento de imagenes y navegacion robotica, misma que se
controla mediante la logica difusa. Se selecciona el uso de la logica difusa para la navegacion de
robots moviles debido a que ofrece tolerancia a la incertidumbre, el ruido o perturbaciones en
las medidas que se obtienen de los sensores [5]. La logica difusa tambien permite lidiar con los
errores presentes en el sensor Kinect, ademas, a comparacion con los algoritmos probabilısticos
de navegacion, la navegacion difusa requiere menos consumo de tiempo para procesamiento y
determinacion de movimientos [6].
La navegacion difusa supera las dificultades que se presentan en los ambientes no estructu-
rados y dinamicamente cambiantes que son mas complicados de expresar mediante ecuaciones
matematicas; por ejemplo, aquellos ambientes inicialmente desconocidos que tengan obstaculos
dispersos, con pendientes, entre otros. El control difuso tambien es utilizado para las aplicacio-
nes donde la velocidad de decision sea un factor importante, ademas de la reduccion de area
o consumo de recursos al implementarlo en sistemas electronicos digitales o algun dispositivo
reprogramable [7].
Este trabajo de tesis forma parte del proyecto Desarrollo de una silla de ruedas autono-
ma con brazo robotico para asistir a personas con capacidades disminuidas por lo
cual se enfoca en su aplicacion en el sector salud orientado a su implementacion futura en una
silla de ruedas. Los principales beneficiados con la realizacion de este trabajo son las personas
con discapacidades motrices o de la tercera edad, ya que permite la prueba y evaluacion de un
sistema de navegacion orientado a una silla de ruedas.
Se tiene en consideracion que este sistema puede ser implementado en otro tipo de plata-
formas moviles, como las que se mencionan en [8, 9], donde una de las tareas a ejecutar por
dicho dispositivo sea la evasion de obstaculos de manera casi instantanea y con la generacion de
movimientos suaves. Por esta razon, en este trabajo no se detallan las caracterısticas especıficas
de un dispositivo movil en especial, y se plantean valores de salida que puedan ser evaluados
por diferentes plataformas moviles, pasando previamente dichos valores por algun decodificador
o librerıa.
Capıtulo 1. Introduccion 7
1.5. Alcances
Los alcances que se presentan en este trabajo de tesis se describen a continuacion.
Desarrollar una aplicacion software de navegacion que utiliza una arquitectura reactiva.
Aplicar un sistema de control difuso que resuelve las direcciones de giro, generando infor-
macion al simular el sentido comun humano.
Utilizar el sensor Kinect para la obtencion de datos de profundidad, considerando el tiempo
de procesamiento del sensor.
Plantear la ejecucion del sistema en tiempo real aplicando informacion previamente ad-
quirida o en conexion directa del sensor Kinect.
Disenar y desarrollar una interfaz grafica que permite la visualizacion de la captura y la
direccion de giro.
Ejecutar pruebas con conexion directa al sensor Kinect sobre una plataforma movil, misma
que sera controlada por un operador humano siguiendo las instrucciones que retorna la
aplicacion software.
1.6. Limitaciones
Las limitaciones del sistema de navegacion se mencionan a continuacion.
Los resultados y conclusiones se obtienen de las pruebas ejecutadas ubicando el sensor
Kinect a 1 metro sobre el nivel del suelo y con un angulo de inclinacion vertical de 0◦, por
lo que solo se considera la evasion de obstaculos observables con dicha configuracion.
El sistema de navegacion, al utilizar una arquitectura reactiva, evita la extraccion de
formas, color, textura y caracterısticas mas especıficas de los objetos en la escena con-
centrandose solo en el conocimiento de la existencia de los mismos.
El sistema se ejecuta en un ambiente con un suelo plano; es decir, sin rampas, escalones
o demas protuberancias como piedras, basura, objetos pequenos, agujeros, entre otros.
El sistema es evaluado en tiempo real y con el sensor Kinect, pretendiendose generar una
salida que pueda adaptarse a las caracterısticas de los motores de una plataforma movil,
sin embargo la implementacion y ejecucion sobre un robot movil no se plantea en este
trabajo.
Capıtulo 1. Introduccion 8
1.7. Metodologıa general
El proceso a seguir en el desarrollo de este proyecto se muestra en la Figura 1.1. El primer paso
es la recopilacion de informacion relacionada con el trabajo de tesis. Se realiza la revision del
estado de arte para sustentar el sistema que se esta desarrollando e identificar que se puede
implementar para obtener diferentes y, en su caso, mejores resultados. Tambien se revisa infor-
macion basica para definir conceptos que se utilizaran durante el desarrollo de la tesis, misma
que se plasmara en el marco teorico.
Definición de los parámetrosdel sistema difuso
Pruebas y experimentacióndel sistema de navegación
Desarrollo delsistema de control
difuso
Identificación de versiónfinal del sistema
Pruebasy resultados
Recopilación deinformación
Tratamiento de losdatos de profundidad
del sensor Kinect
Figura 1.1. Metodologıa del desarrollo del proyecto de tesis.
Una vez que se tiene la informacion necesaria se procede con el desarrollo del sistema de
navegacion reactiva difusa. Inicialmente se procesan los parametros de entrada que son los datos
de profundidad del sensor Kinect, con estos datos se ejecutan una serie de transformaciones que
permiten obtener las caracterısticas que son utiles para el controlador difuso. Al finalizar esta
Capıtulo 1. Introduccion 9
etapa se obtiene la informacion pertinente que sirve como parametros de entrada del sistema
de control difuso.
En la siguiente etapa se definen los parametros del sistema de control difuso. Se definen for-
malmente los parametros de entrada y salida, ası como el sistema de inferencia difusa y demas
caracterısticas propias de los sistemas difusos. Posteriormente se desarrolla el sistema de control
difuso utilizando la herramienta de programacion Matlab 2012a R© y las cajas de herramientas:
Image Processing ToolboxTM y Fuzzy Logic ToolboxTM.
Con la primera version del sistema de navegacion, se procede a realizar pruebas y experimen-
tos, adquiriendo informacion del ambiente mediante el sensor Kinect, procesando las imagenes
o datos de profundidad y obteniendo del control difuso la direccion con menor probabilidad de
colision. En los resultados de todas estas pruebas, pueden surgir detalles que implican modificar
o mejorar el sistema, por lo cual se recurre a regresar a dos etapas antes para la obtencion de
mejores resultados que cumplan con los objetivos del trabajo. En el momento que se tenga un
sistema estable que brinde los resultados esperados, se seleccionara como version final del siste-
ma y se ejecutaran pruebas y experimentos, para ser documentados y generar las conclusiones
del trabajo de tesis.
Capıtulo 2
Marco Teorico
2.1. Navegacion robotica
La navegacion es una metodologıa que permite guiar a un robot movil de manera segura y es-
table, a traves de un entorno con obstaculos con el fin de ejecutar alguna tarea en especıfico [3].
Desde el punto de vista de la planificacion, existen diferentes arquitecturas que son disenadas
teniendo en cuenta especificaciones como eficiencia, tiempo de respuesta ante cambios repenti-
nos del ambiente y la disponibilidad de la informacion del entorno [10]. Entre las principales
arquitecturas estan:
Arquitectura estrategica. Utiliza un modelo del entorno y supone una situacion en la
que se ejecuta un plan sin tener en cuenta la posibilidad de generalizar el comportamiento.
Este tipo de arquitectura se basa en un planificador que verifica la informacion suminis-
trada por los sensores y genera una secuencia de acciones o plan, ver Figura 2.1.
Sensado Planificar Actuar
Figura 2.1. Esquema de arquitectura estrategica.
Arquitectura reactiva. Esta orientada principalmente a suministrar flexibilidad, adap-
tabilidad y capacidad de respuesta ante situaciones no esperadas. Implementa una estra-
tegia de control como un conjunto de reglas reactivas en forma de pares condicion-accion
sin tener un modelo previo del entorno. No ejecuta busquedas exhaustivas en cada camino,
11
Capıtulo 2. Marco Teorico 12
simplemente busca y ordena la accion apropiada que corresponde a cada lectura de los
sensores, ver Figura 2.2.
Sensado
Conjuntode
reglasreactivas
Actuar
Figura 2.2. Esquema de arquitectura reactiva.
Arquitectura basada en comportamientos. Es considerada como una evolucion de
la arquitectura reactiva. Se basa en un conjunto de comportamientos que describen la
manera en que reacciona el robot movil ante algun estado determinado de los sensores,
utilizando un concepto mas elaborado que la consulta a una tabla de correspondencias.
Cada comportamiento realiza calculos internos pudiendose representar como una maquina
de estados finitos que tiene como entrada la informacion de los sensores y produce senales
hacia los actuadores, ver Figura 2.3.
Sensado
Conjuntode
comportamientos
Actuar
Figura 2.3. Esquema de arquitectura por comportamientos.
Arquitectura hıbrida. Ofrece una combinacion entre arquitectura estrategica y reactiva.
Se emplea el sistema reactivo para el control de bajo nivel (funciones de seguridad ante
colisiones imprevistas) y el sistema estrategico para el control de alto nivel (modelo del
entorno y planificacion de acciones), ver Figura 2.4.
Capıtulo 2. Marco Teorico 13
Sensado ActuarComportamiento
reactivoPlan
Control bajo nivel Control alto nivel
Figura 2.4. Esquema de arquitectura hıbrida.
La navegacion es una de las actividades mas complejas para un robot movil, ya que implica
un gran numero de conceptos relacionados con la inteligencia artificial debido a que para el
control de robots moviles se incorporan funciones basicas (control de motores, articulaciones
y generacion de trayectorias de forma automatica o con la intervencion de un operador) con
funciones inteligentes (realizacion parcial o total autonoma de operaciones como planificacion
de tareas y de movimientos, percepcion sensorial y reaccion ante obstaculos) [3]. La logica difusa
se aplica como un modulo dentro del sistema de navegacion propuesto y se encarga de procesar
los datos de entrada y decidir que direccion es la que tenga menor probabilidad de colision.
Cada una de las reglas del control difuso propuesto, hacen referencia al modulo dentro de la
arquitectura reactiva definido como conjunto de reglas reactivas ; sin embargo, este ultimo difiere
al modulo propuesto ya que se tiene un conjunto de reglas que interpretan las entradas y salidas
convertidas de valores numericos a valores difusos, generando un conjunto de reglas reactivas
difusas, ver Figura 2.5.
Datos de entrada
Procesamientode los datos de
entrada
Algoritmo denavegación
Dirección de giro
Lógica difusa
SENSADO
CONJUNTO DEREGLAS
REACTIVAS
ACTUAR
Figura 2.5. Logica difusa aplicado en la navegacion reactiva propuesta.
Capıtulo 2. Marco Teorico 14
Existen otras propiedades que motivan al uso de la logica difusa para el control de la nave-
gacion, las cuales se definen a detalle en las secciones siguientes, donde ademas, se abordan los
conceptos de inteligencia artificial, vision artificial y descripcion del sensor Kinect en referencia
a la percepcion sensorial.
2.2. Inteligencia Artificial
La inteligencia es la capacidad que tienen las personas de conocer, analizar, comprender y resol-
ver diferentes situaciones ası como tambien un conjunto de destrezas, habilidades y experiencias
en cierto dominio [11, 12].
Los humanos hacen uso de la inteligencia en cada una de las actividades que desempenan
en la vida diaria; sin embargo, existen ciertas actividades que representan un peligro para una
persona, o que requieren un menor tiempo de ejecucion, o que necesitan exactitud y mejores re-
sultados, por lo tanto, se precisa de un equipo o maquina autonoma o que pueda ser controlada
parcial o totalmente por un operador humano.
En algunas ocasiones, las mencionadas actividades necesitan del raciocinio humano aun cuan-
do la persona no pueda estar presente o se le dificulte ejecutar dicha actividad (por cuestiones
de salud, seguridad, falta de conocimientos, poca experiencia, etcetera), entonces se requiere un
sistema que ejecute algoritmos que permitan de cierta forma simular el pensamiento humano,
en otras palabras, se requiere Inteligencia Artificial (IA).
La inteligencia artificial se define como la disciplina cientıfica que se ocupa de crear pro-
gramas informaticos que ejecutan operaciones comparables a las que realiza la mente humana,
como el aprendizaje o el razonamiento logico [12]. En la Tabla 2.1 se muestran mas definiciones
las cuales estan organizadas en distintas categorıas [13].
En las ultimas decadas se ha hecho enfasis en el desarrollo de esta disciplina para la au-
tomatizacion de actividades en distintas areas como control de sistemas, medicina, economıa,
finanzas, ingenierıa, industria, milicia, videojuegos, entre otras.
Capıtulo 2. Marco Teorico 15
Tabla 2.1. Algunas definiciones de Inteligencia Artificial, organizadas en 4 categorıas.
Sistemas que piensan como humanos
Sistemas que piensan racionalmente
"El nuevo y excitante esfuerzo de hacer que loscomputadores piensen...máquinas con mentes, enel más amplio sentido literal". (Haugeland, 1985)
"[La automatización de] actividades que vincu-lamos con procesos de pensamiento humano, ac-tividades como la toma de decisiones, resoluciónde problemas, aprendizaje...". (Bellman, 1978)
" El estudio de las facultades mentales median-te el uso de modelos computacionales". (Char-
niak y McDermott, 1985)
"El estudio de los cálculos que hacen posiblepercibir, razonar y actuar". (Winston, 1992)
Sistemas que actúan como humanos
Sistemas que actúan racionalmente
"El arte de desarrollar máquinas con capacidadpara realizar funciones que cuando son realizadaspor personas requieren de inteligencia". (Kurzweil,
1990)
"El estudio de cómo lograr que los computadoresrealicen tareas que, por el momento, los humanos
hacen mejor". (Rich y Knight, 1991)
"La Inteligencia Computacional es el estudio del diseño de agentes inteligentes".
(Poole et al., 1998)
"IA... está relacionada con conductas inteli-gentes en artefactos". (Nilsson, 1998)
La inteligencia artificial ha sido estudiada desde los anos 50s, con la llamada Prueba de Tu-
ring propuesta por Alan Turing, la cual consiste en saber si un evaluador humano, dependiendo
de una serie de preguntas realizadas a una persona y a una maquina, podıa diferenciar entre
la respuesta de la maquina y la persona [13]. Para que una computadora logre pasar la prueba
debe tener la siguientes caracterısticas:
Procesar el lenguaje natural
Representar el conocimiento
Razonar automaticamente
Aprender de manera automatica
Ademas, se extendio dicha prueba a la llamada Prueba Global de Turing, que da la oportuni-
dad del evaluador de manejar objetos para su analisis. Para superar esta prueba la computadora
debe tener:
Vision artificial (VA)
Robotica
Cada una de las 7 caracterısticas antes mencionadas son disciplinas que estan contempladas
dentro de la inteligencia artificial. Para este trabajo se propone un sistema basado en la adqui-
sicion y procesamiento de informacion de profundidad del entorno a traves del sensor Kinect
Capıtulo 2. Marco Teorico 16
y algoritmos de procesamiento de imagenes, ademas de generar angulos de direccion de giro
mediante logica difusa. Por lo tanto, se requieren conceptos basicos de: a) vision artificial, por
la percepcion y adquisicion de datos del medio externo mediante el sensor Kinect, b) la repre-
sentacion del conocimiento, para almacenar la informacion que se obtiene mediante matrices
de profundidad, y c) el razonamiento automatico, para utilizar la informacion almacenada y
obtener conclusiones empleando logica difusa. Estos tres temas seran descritos, en relacion con
el sistema propuesto, en las subsecciones siguientes.
2.3. Vision Artificial
El principio de la VA proviene de la importancia que tiene el sentido de la vista para los seres
humanos, ya que estudios cifran su importancia en un 75% de la informacion proveniente de los
sentidos que procesa el cerebro [14]. La vision es la interaccion de los organismos con el mundo,
la cual tiene como funciones principales reconocer y localizar objetos en un ambiente utilizando
el procesamiento de los datos de entrada (imagenes), por lo tanto, la VA es el estudio de dichas
funciones, para ası entenderlas y realizar la construccion de maquinas que tengan capacidades
similares [15].
La vision artificial esta muy ligada al procesamiento de imagenes, aunque difieren en el obje-
tivo final. El procesamiento de imagenes tiene como objetivo mejorar la calidad de las imagenes
para su posterior utilizacion o interpretacion. La vision artificial busca extraer caracterısticas
de una imagen para su descripcion e interpretacion mediante una computadora [15].
La vision artificial se basa en diferentes tipos de tecnologıas, de las cuales destacan [14]:
Procesamiento de imagenes. Adquisicion de informacion (forma, color, textura o areas
de los objetos, entre otros) o transformacion de una imagen, considerandose a la imagen
como la materia prima dentro de la vision artificial.
Generacion de graficos por computadora. Transformacion de una descripcion de los
objetos de una imagen.
Reconocimiento de patrones. Clasificacion de un objeto a partir de la obtencion de
caracterısticas entre un conjunto de candidatos.
A continuacion se muestra un resumen de las diferentes areas donde se aplican algoritmos
Capıtulo 2. Marco Teorico 17
de VA [14]:
Militar
• Deteccion y seguimiento de objetivos
• Analisis del terreno
• Armas inteligentes
Robotica
• Guiado de robots industriales
• Navegacion de robots moviles
Agricultura
• Analisis de las plantaciones: crecimiento, enfermedades
• Analisis de imagenes tomadas por satelites
Identificacion
• Identificacion automatica de huellas dactilares
• Reconocimiento de rostros
Control de trafico
• Identificacion de matrıculas de vehıculos
• Control del trafico vial
Control de calidad
• Verificacion de etiquetas
• Inspeccion de contenedores
• Inspeccion de motores
• Inspeccion de cristales
• Control de calidad de comida
• Inspeccion de soldaduras
Capıtulo 2. Marco Teorico 18
• Inspeccion de circuitos impresos
• Inspeccion de madera, tela, fundiciones, papel
Biomedicina
• Analisis de imagenes tomadas por rayos X
• Analisis de imagenes tomadas por ultrasonidos
• Analisis de sangre
• Analisis de ADN
Seguridad
• Vigilancia de edificios
• Deteccion de explosivos por rayos X
Un sistema de vision artificial lleva consigo una serie de conceptos hardware, software y al-
goritmos de procesamiento de la informacion. Generalmente, el proceso de un sistema de vision
artificial consta de 5 etapas principales (ver Figura 2.6) [16].
Escena Real
EtapaSensorial
Etapa de Preprocesamiento
Etapa deSegmentación
Etapa deParametrización
Etapa deClasificación
Actuación segúnResultados
Entrada
Etapas
Salida
Figura 2.6. Diagrama de bloques de las etapas de un sistema de vision artificial.
Capıtulo 2. Marco Teorico 19
La primera etapa se le denomina etapa sensorial ya que consiste en la adquisicion de image-
nes digitales utilizando algun tipo de sensor y la capacidad de interpretar las senales de dicho
sensor. Una vez que se tiene la imagen en forma digital, la siguiente etapa consta del prepro-
cesamiento de dicha imagen (etapa de preprocesamiento), ya sea aplicando transformaciones
geometricas o filtros sobre las imagenes, todo con la finalidad de obtener una imagen de mejor
calidad que beneficiara a las siguientes etapas. La etapa de segmentacion radica en la division
de la imagen en partes que aportan mas informacion de la escena para cumplir con el objetivo
(region de interes); esta etapa es una de las mas importantes ya que una correcta segmenta-
cion facilitara la solucion de problema mientras que una erronea dirigira al fallo. La etapa de
parametrizacion se refiere a la seleccion de caracterısticas que brindan informacion cuantitati-
va o rasgos basicos que permitan diferenciar una clase de objetos de otra. Posteriormente se
ejecuta la etapa de clasificacion donde se asigna una etiqueta a cada objeto segmentado, para
ası reconocer dicho objeto dentro de un conjunto de objetos identificados previamente y que se
encuentran almacenados en la memoria del dispositivo que realiza el procesamiento.
Despues de las cinco etapas, el sistema ejecuta la accion correspondiente, por ejemplo, la
navegacion reactiva. A pesar de que en la Figura 2.6 se muestra un sistema de VA como un
conjunto de procesos que se ejecutan uno despues de otro, en numerosas ocasiones esto no es ası,
y se requiere de la retroalimentacion en algunas etapas; por ejemplo, es comun regresar a la etapa
de segmentacion si el reconocimiento falla, o incluso al preprocesamiento [16]. La descripcion
detallada de cada etapa en relacion con cada modulo del sistema propuesto se especifica en el
Capıtulo 4.
2.4. Sensores
Para realizar la navegacion, se necesitan obtener datos del ambiente donde se requiere desplazar
al robot movil. Estos datos pueden presentarse en diferentes formatos, siempre y cuando sean
entendibles para la computadora que ejecutara el algoritmo de navegacion.
Existen diferentes tipos de sensores que obtienen informacion del ambiente. En primera
instancia estan los sensores que obtienen informacion basica para la deteccion de obstaculos y
el conocimiento aproximado de posicion del robot movil [3]. Estos dispositivos se mencionan a
continuacion:
Sensores propioceptivos. Son dispositivos que retornan informacion que el mismo robot
Capıtulo 2. Marco Teorico 20
movil origina en base a sus caracterısticas como son: tamano de ruedas, velocidad de
rotacion de las ruedas, GPS (Global Positioning System), entre otros.
Sensores de proximidad. Miden la distancia relativa entre el sensor y los objetos en
el entorno. Los principales dispositivos de proximidad son: sensores ultrasonicos, sensores
infrarrojo y bumpers.
Por otro lado, se tienen los sensores que buscan aproximarse a la percepcion humana a base
de imagenes mediante camaras de video, las cuales utilizan ya sea tecnologıa CCD (Charged
Couple Device) o CMOS (Complementary Metal Oxide Semiconductor) para la deteccion de luz
visible. Este tipo de dispositivos retornan imagenes en diferente representacion de color:
Escala de grises. Cada pixel tiene un valor de 8 bits, representandose en un rango desde
0 (color negro) hasta el 255 (color blanco).
RGB. Representa la suma de tres caracterısticas de color: rojo (Red), verde (Green) y
azul (Blue). Esta suma integra un cubo de dimensiones de 256× 256× 256.
HSI o HSV. Representacion de color mediante: a) matiz (Hue) que representa la longitud
de onda predominante la cual es invariante a la posicion del robot u objeto, b) saturacion
(Saturation) que indica la falta de blancura en el color, por ejemplo, el rojo esta saturado
mientras que el rosa esta menos saturado, y c) valor o intensidad (Value/Intensity) que
es la cantidad de luz recibida por el sensor.
Binaria. Imagen que solo representa 2 valores: 0 (color negro) y 1 (color blanco).
Uno de los inconvenientes con las imagenes de camaras de video es la falta de informacion
de profundidad en la imagen, por lo que no se tiene conocimiento de que tan cerca o lejos se
encuentra un objeto. Uno de los objetivos de la vision computacional es en cierta forma simular
el proceso de vision humana, donde tambien se extrae informacion de profundidad.
Para la extraccion de profundidad se utiliza el escaner de rango, que realiza el sensado de
puntos en 3D de una escena y retorna un arreglo de tamano m × n (imagen de rango), que
contiene la distancia relativa (rango) desde el centro del sensor hasta un punto en la escena [17].
Entre los principales sensores de rango, se mencionan los siguientes:
Camaras estereo. Se utilizan dos camaras, suponiendo dos ojos, donde cada una trata
de encontrar el mismo punto en la imagen convirtiendolo en el centro de la imagen y
ası obtener un angulo relativo.
Capıtulo 2. Marco Teorico 21
Trazadores de luz. Proyectan una lınea de color (o trazo), red, o patron de puntos sobre
el ambiente, para que despues una camara observe como el patron es distorsionado en la
imagen.
Laser. Un haz de laser es emitido y se calcula el tiempo en que la senal tarda en regresar;
es decir, la medida de reflectancia. Este dispositivo puede cubrir una gran area y retorna
una imagen donde cada valor representa profundidad.
Kinect. Es un dispositivo que contiene una camara RGB, un arreglo de microfonos, un
acelerometro y un emisor y camara infrarroja. Este dispositivo es capaz de capturar imagen
a color y la profundidad en la escena representado en cada pixel de una imagen.
Uno de los dispositivos de rango ultimamente utilizado es el sensor Kinect, ya que combina:
la adquisicion de imagenes mediante una camara RGB (informacion 2D), la obtencion de matri-
ces de profundidad (informacion 21
2) y la adquisicion de nube de puntos (informacion en 3D), a
un bajo costo en comparacion con los sensores tradicionales. Otra ventaja, es que no se necesita
de controladores extras para la compatibilidad entre sensores, por lo que la manipulacion del
sensor y la informacion que adquiere resulta ser mas simple [18, 19].
2.5. Sensor Kinect
El sensor Kinect es un dispositivo que aparecio el 4 de noviembre del 2010 como un accesorio
de la consola de juego Xbox 360 y que originalmente fue desarrollado por PrimeSense Company
para su posterior colaboracion con Microsoft [4]. El sensor Kinect consiste de un sistema de
sensado de profundidad, un acelerometro, un motor, un arreglo de microfonos y una camara
RGB, ver Figura 2.7.
Láser y cámara infrarrojo
Cámara RGB
Arreglo de
micrófonos
Inclinación motorizada
Figura 2.7. Sensor Kinect.
Capıtulo 2. Marco Teorico 22
El sistema de sensado de profundidad consta de una camara infrarroja y un laser emisor
infrarrojo. La camara infrarroja opera a 30 Hz, el campo de vision (ver Figura 2.8) es de 57◦
horizontal, 43◦ vertical y el rango de operacion se encuentra entre 0.8 metros (2.7ft) y 3.2 me-
tros (10.6ft). La camara RGB soporta una resolucion maxima de 1280 × 960, y la camara de
profundidad soporta una resolucion maxima de 640 × 480 [20]. Las imagenes de rango proce-
dentes del Kinect pueden ser representadas de dos formas distintas [21]:
57° Horizontal
43° Vertical
0.8 m
3.2 m
4.0 m
Figura 2.8. Campo de vision del sensor Kinect.
Nube de puntos. Una lista sin orden ni especificaciones compuesta de coordenadas 3D
(x,y,z) dentro de un espacio, ver Figura 2.9.
Figura 2.9. Nube de puntos.
Imagenes de profundidad. Matriz de m × n en la cual cada uno de sus elementos
representan un valor de profundidad en coordenadas 2D (x,y), ver Figura 2.10.
Capıtulo 2. Marco Teorico 23
Figura 2.10. Imagen de profundidad.
En este proyecto de tesis, se utiliza el sensor Kinect orientado al area de navegacion roboti-
ca y procesamiento de imagenes de profundidad, con lo que se requiere de un algoritmo que
pueda lidiar con una gran cantidad de datos que en ciertas ocasiones puedan ser alterados por
perturbaciones en el ambiente y que, al mismo tiempo, generen una accion casi inmediata o en
tiempo real (idea principal de la navegacion reactiva). Una de las formas para el procesamiento
de dichas imagenes es utilizando una de las ramas de la inteligencia artificial: la logica difusa.
En la siguiente seccion se define el concepto de logica difusa y de cada componente.
2.6. Logica Difusa
Para la adquisicion de la direccion de giro de manera reactiva se puede implementar un con-
trolador difuso, por lo que en primer lugar se procede a definir el concepto de logica difusa. En
la vida cotidiana es comun utilizar expresiones tales como un poco, mucho, no tanto, regular,
etcetera, por ejemplo, decir llegare un poco tarde a decir llegare 10 minutos tarde. Este tipo de
expresiones no representan una cantidad exacta, sin embargo, el cerebro humano logra interpre-
tarlas para ejecutar alguna accion; es precisamente este tipo de pensamiento el cual la logica
difusa busca simular en sistemas artificiales. Logica difusa se define como la ciencia que admite
una cierta incertidumbre entre la verdad o falsedad de sus proposiciones, con una semejanza del
raciocinio humano [12].
La teorıa de conjuntos difusos fue formulada por Lofti A. Zadeh en 1965, quien entonces
era profesor de Ingenierıa Electrica y de Ciencias de la Computacion en la Universidad de
California, Berkeley [22]. Segun Zadeh, la logica difusa es determinada como un conjunto de
Capıtulo 2. Marco Teorico 24
principios matematicos para la representacion del conocimiento basado en grados de pertenencia
en lugar de una pertenencia nıtida de la logica binaria clasica [11]. Es decir, mientras que la
logica binaria clasica solo permite el valor de 0 (completamente falso) o 1 (completamente
verdadero), la logica difusa admite multiples valores.
2.6.1. Definiciones basicas y terminologıa
Los conjuntos difusos son fundamentales dentro de la logica difusa. Sea X un espacio de objetos
y sea x un elemento generico de X . Un conjunto clasico A, A ⊆ X , es definido como una
coleccion de elementos u objetos x ∈ X , tal que cada x puede pertenecer o no al conjunto A.
En un conjunto difuso, un elemento tiene un grado de pertenencia a un conjunto y puede tener
un grado de no pertenencia o de pertenencia a otros conjuntos. Definiendo una funcion de
membresıa para cada elemento x de X , se puede representar un conjunto clasico A por un set
de pares ordenados (x,0) o (x,1), lo cual indica que x /∈ A o x ∈ A, respectivamente. La funcion
de membresıa de un conjunto difuso puede tener valores entre 0 y 1, lo cual indica el grado de
pertenencia de un elemento dentro de un conjunto dado. Ahora bien, si X es una coleccion de
objetos x, entonces un conjunto difuso A dentro de X se define como en la Ecuacion 2.1 [23]:
A = {(x, µA(x)) | x ∈ X} (2.1)
donde:
µA(x), es denominado funcion de membresıa (MF por sus siglas en ingles) para el conjunto
difuso A.
X , se refiere al universo de discurso, o solo universo, que consiste en objetos discretos
(ordenados o no ordenados) o en un espacio continuo.
Una notacion conveniente para un conjunto difuso A donde el universo de discurso X es
discreto y finito es la que se muestra en la Ecuacion 2.2; mientras que cuando X es continuo e
infinito, A es denotado por la Ecuacion 2.3 [22].
A = {µA(x1)
x1
+µA(x2)
x2
+ . . .} = {∑
i
µA(xi)
xi
} (2.2)
A = {∫
µA(x)
x} (2.3)
En la practica, cuando X es un espacio continuo, X se divide en diversos conjuntos difusos,
donde se define una MF en cada uno o de manera general. Estos conjuntos son nombrados
Capıtulo 2. Marco Teorico 25
conforme adjetivos que se utilizan en la vida cotidiana, por ejemplo: “mucho”, “mediano”,
“poco”, etc., y son denominados valores linguisticos. Ası que el universo de discurso X
tambien es llamado variable linguistica [23]. En la Figura 2.11 se identifican los elementos de
los conjuntos difusos, se observa que cada grafica representa un valor linguıstico, definidos en
diferentes rangos dentro del universo de discurso, y que al mismo tiempo pertenece a un cierto
grado de membresıa.
0 x1 x2 . . xi
0
0.2
0.4
0.6
0.8
1
Universo de discurso
Gra
dos
de m
embr
esía
Valor lingüístico 1 Valor lingüístico 2 Valor lingüístico 3
Figura 2.11. Elementos de los conjuntos difusos.
2.6.2. Funciones de membresıa
Una funcion de membresıa es una grafica que define como cada punto componente del universo
de discurso corresponde a un valor de pertenencia (grado de membresıa) entre el 0 y 1 [24]. A
continuacion se definen diferentes tipos de funciones de membresıa, ası como los parametros que
requieren. X es el universo de discurso que representa el conjunto de los valores de entrada, por
lo que al ser el universo, se pueden tener variables y parametros que permitan definir cada una
de las funciones de membresıa para la conversion a valores difusos.
Funcion triangular. Es una funcion definida por una variable de entrada x y de tres
parametros {a,b,c}, lo cuales pertenecen al universo de discurso y determinan las coor-
denadas en x de las tres esquinas de la funcion triangular. La Ecuacion 2.4 especifica la
funcion triangular, dado el universo de discurso X y los tres parametros {a,b,c}.
Capıtulo 2. Marco Teorico 26
f(x; a, b, c) =
0, x ≤ ax−ab−a
, a ≤ x ≤ bc−xc−b
, b ≤ x ≤ c
0, c ≤ x
(2.4)
Un ejemplo se muestra en la Figura 2.12 con a = 3, b = 6, c = 8 y el universo de discurso
X = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.
0 1 2 3 4 5 6 7 8 9 100
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Universo de discurso X
Gra
dos
de m
embr
esía
Figura 2.12. Funcion triangular.
Funcion trapezoidal. La funcion trapezoidal depende de la variable x y de cuatro
parametros {a,b,c,d}, pertenecientes al universo de discurso y que determinan en la coor-
denada x las tres esquinas de la funcion trapezoidal, como se muestra en la Ecuacion 2.5.
f(x; a, b, c, d) =
0, x ≤ ax−ab−a
, a ≤ x ≤ b
1, b ≤ x ≤ cd−xd−c
, c ≤ x ≤ d
0, d ≤ x
(2.5)
La Figura 2.13 se muestra un ejemplo con a = 1, b = 5, c = 7, d = 8 y el universo de
discurso definido por X = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.
Capıtulo 2. Marco Teorico 27
0 1 2 3 4 5 6 7 8 9 100
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Universo de discurso XG
rado
s de
mem
bres
ía
Figura 2.13. Funcion trapezoidal.
Funcion Gaussiana. Esta funcion depende de dos parametros σ (dentro del universo
de discurso representa la amplitud de la funcion) y c (dentro del universo de discurso
representa el centro de la funcion) como se representa en la Ecuacıon 2.6.
f(x; σ, c) = exp{−(x− c)2
2σ2} (2.6)
Un ejemplo de esta funcion se observa en la Figura 2.14 con σ = 2, c = 5 y el universo de
discurso X = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.
0 2 4 6 8 100
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Universo de discurso X
Gra
dos
de m
embr
esía
Figura 2.14. Funcion Gaussiana.
Funcion campana (bell) generalizada. La funcion bell (campana) generalizada esta de-
finida mediante la Ecuacion 2.7, donde se observa que necesita de tres parametros a, b
y c que pertenecen al universo de discurso X . El parametro b normalmente es positivo
Capıtulo 2. Marco Teorico 28
(en caso de ser negativo la forma llega a ser una campana inversa), a es la anchura de la
funcion y c representa el centro de la funcion.
f(x; a, b, c) =1
1+ | x−ca|2b
(2.7)
Un ejemplo de esta funcion se expone en la Figura 2.15 con a = 2, b = 4, c = 6 y el
universo de discurso se define con X = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.
0 2 4 6 8 100
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Universo de discurso X
Gra
dos
de m
embr
esía
Figura 2.15. Funcion campana (bell).
En este trabajo se utilizan las funciones trapezoidales y triangulares debido a que se ajustan
mas a los valores de entrada y salida esperados, ademas de ser las mas utilizadas por aquellos
trabajos relacionados que se mencionan en el estado de arte. Igualmente se hace enfasis en que
en varios ejemplos practicos el tipo de funcion no es lo mas importante, sino la ubicacion de las
curvas dentro del universo de discurso, el numero de particiones y el solapamiento de las curvas
[22]; estos parametros son definidos en los siguientes capıtulos.
2.6.3. Sistemas de inferencia difusos
La inferencia difusa es el proceso de formular la asignacion desde un determinado valor de
entrada a un valor de salida utilizando logica difusa, con esta asignacion se tiene una base
desde la cual se pueden tomar decisiones [11]. Existen dos principales sistemas de inferencia
[11, 23], los cuales solo difieren en la determinacion de las salidas, estos sistemas se definen a
continuacion:
Capıtulo 2. Marco Teorico 29
Modelo difuso Mamdani. Este sistema es uno de los mas utilizados en las aplicaciones
difusas. En 1974, Ebrahim Mamdani construyo uno de los primeros sistemas difusos para
controlar la combinacion de una caldera y una maquina de vapor aplicando un conjunto
de reglas difusas con la ayuda de operadores humanos experimentados. El sistema de tipo
Mamdani es intuitivo y se adapta a la intervencion humana ya que sus salidas se expresan
en el lenguaje humano; es decir, las salidas se expresan de manera difusa. En la Figura
2.16 se muestra la estructura general del sistema Mamdani.
FusificaciónMecanismo de
inferenciadifusa
Defusificación
Conjunto de Reglastipo
IF ’x’ es ’A’ OR ’y’ es ’B’THEN ’z’ es ’C’
Datosde entrada
X
Datosde salida
Y
Figura 2.16. Estructura general de un sistema de inferencia difusa tipo Mamdani.
El sistema consta inicialmente de los valores de entrada los cuales pasan por el proceso de
fusificacion. Posteriormente se obtienen resultados difusos mediante el uso de un conjunto
de reglas del tipo que se describe en la Ecuacion 2.8.
si x es A and y es B entonces z = C (2.8)
Donde x, y, z son variables linguısticas y A,B,C son conjuntos difusos en el universo de
discurso X y Y . En ocasiones se requiere utilizar el sistema como un controlador, por lo
tanto las salidas pasan por el proceso de defusificacion para convertirlos a datos no difusos
ya sea enteros, flotantes, u otros.
Modelo difuso Sugeno. Este metodo se introdujo por primera vez en 1985 por Michio
Sugeno. Basicamente, este metodo es similar al metodo de inferencia de tipo Mamdani
con la diferencia en la salida de las funciones de membresıa, las cuales no pasan por
el proceso de defusificacion ya que se expresan utilizando una funcion matematica. El
esquema general del sistema de inferencia Sugeno se muestra en la Figura 2.17.
Capıtulo 2. Marco Teorico 30
FusificaciónMecanismo de
inferenciadifusa
Conjunto de Reglastipo
IF ’x’ es ’A’ AND ’y’ es ’B’THEN ’z’ es f(x,y)
Datosde entrada
X
Datosde salida
Y
Figura 2.17. Estructura general de un sistema de inferencia difusa tipo Sugeno.
Una regla tıpica en el modelo Sugeno se expresa en la Ecuacion 2.9. Usualmente f(x, y)
se representa por ax+ by+ c, en este caso, al ser un polinomio de primer orden el sistema
es llamado modelo difuso Sugeno de primer orden.
si x es A and y es B entonces z = f(x,y) (2.9)
Existen la posibilidad de modelos difusos Sugeno de orden superior, sin embargo, estos
introducen una complejidad significativa con poco cambio de resultados. Otra variante es
cuando la salida z es constante; es decir a = 0, b = 0, en este caso el sistema es llamado
modelo difuso Sugeno de orden cero.
El sistema de inferencia es una parte muy importante dentro del control difuso ya que es este
modulo el que se encarga de procesar las variables de entrada y ejecutar los calculos necesarios
para retornar los valores finales del sistema difuso. Ambos sistemas de inferencia, tanto tipo
Mamdani como Sugeno, tienen algunos elementos y modulos similares, diferenciando en el tipo
de salida que presentan. En el sistema tipo Mamdani, las variables que retorna son expresadas
en terminos difusos, es decir, utilizan expresiones cotidianas o de mejor entendimiento para el
usuario; por lo tanto, son defusificadas de tal forma que puedan expresarse numericamente. Por
otro lado, el sistema tipo Sugeno evita la defusificacion al retornar datos numericos. El estudio
detallado de cada una de las partes del sistema de inferencia que se utiliza en este trabajo y las
ventajas del mismo se describe en el Capıtulo 4.
Capıtulo 3
Estado de Arte
Los sistemas de navegacion reactiva basados en control difuso han sido explorados en diferentes
trabajos durante los ultimos anos [5, 6, 25–33], difiriendo uno de otro en los algoritmos de proce-
samiento de la informacion, tipo de sistema de inferencia, el conjunto de reglas, las funciones de
membresıa, variables de entrada y salida, o en el tipo de sensor que se utiliza para la adquisicion
de informacion del ambiente.
En algunos sistemas de navegacion difusa, el sensor que se plantea utilizar es una camara
de video para ası obtener la informacion del exterior como imagenes digitales en 2D; es decir,
arreglos matriciales bidimensionales que poseen solo informacion de ubicacion en la coordenada
x y en la coordenada y pero omiten la informacion de profundidad.
Uno de los sistemas que maneja informacion en 2D se presenta en “A labview-based autono-
mous vehicle navigation system using robot vision and fuzzy control”[25], donde se utiliza una
mini-camara JMK, una tarjeta de adquisicion de imagenes NI USB-6009 y una tarjeta de cap-
tura de video Dazzle USB. Este sistema es desarrollado bajo la plataforma LabVIEW y emplea
un sistema de inferencia de tipo Mamdani, manejando funciones de membresıa tipo triangular
y trapezoidal con 2 variables de entrada (desplazamiento lateral y angulo de la curva entrante)
y 2 variables de salida (velocidad y angulo de giro). Las variables de entrada tienen en cuenta
el procesamiento de la imagen en 2D del camino a seguir (la imagen en RGB se convierte a
escala de grises y posteriormente es binarizada) de donde se extrae la curvatura de las lıneas
del camino (para conocer si es una lınea recta o giro a la derecha o giro a la izquierda) y la
anchura del camino, tratandose como un sistema seguidor de lıneas [25]. El sistema de control es
desarrollado como una maquina de estados, en donde cada estado espera el resultado del analisis
31
Capıtulo 3. Estado de Arte 32
de la imagen de entrada y la decision de giro del sistema de control difuso, para ası continuar
con el movimiento adecuado dentro de la maquina de estados.
Aun cuando gracias a la captura de imagenes mediante una camara digital se tiene un pano-
rama de la escena, se omite la informacion de proximidad de los objetos en la escena. Basandose
en el estudio de los sensores de proximidad descritos en la Seccion 2.4, existen trabajos que
utilizan sensores de este tipo capturando la distancia de los objetos en la escena con respecto al
sensor, como los que se describen en la Seccion 3.1. Los sensores de proximidad tienen ciertos
inconvenientes al tener un reducido campo de vision y omitiendo informacion del exterior por
lo cual algunos trabajos buscan la fusion de sensores de adquisicion de imagenes en 2D con sen-
sores de proximidad y se describen en la Seccion 3.2. Finalmente, y hacia donde va dirigido este
trabajo, se describen los trabajos que buscan disminuir el costo en la fusion sensorial utilizando
el sensor Kinect [4], ver Seccion 3.3.
3.1. Sistemas de navegacion reactiva difusa con sensores
de proximidad
Uno de los inconvenientes de la informacion en 2D es que no se sabe que tan cerca o que tan
lejos se encuentra un obstaculo con respecto al robot movil, por lo cual algunos trabajos como
[5, 26–28], utilizan otro tipo de sensores que permitan obtener informacion de proximidad.
El trabajo “Intelligent mobile robot motion control in unstructured environments”[26] im-
plementa un sistema de control para la navegacion en ambientes no estructurados sobre un
robot Khepera utilizando un controlador difuso y sensores ultrasonicos para la deteccion de
objetos proximos. Las entradas del controlador difuso son: distancia del obstaculo, orientacion
del obstaculo, distancia del objetivo y orientacion del objetivo; mientras que las salidas son:
la velocidad angular entre la rueda izquierda y derecha, y la velocidad del vehıculo. Se emplea
un sistema de inferencia tipo Mamdani con funciones de membresıa tipo Gaussiana y triangular.
En “Implementacion de comportamientos para navegacion inteligente de robots moviles”[27],
se utiliza un anillo de 8 sensores ultrasonicos los cuales son divididos en 4 grupos para la faci-
lidad de procesamiento de datos ya que se obtienen las partes en direccion izquierda, frontal,
derecha y parte trasera. Con estos grupos, se evita generar una mayor cantidad de pasos para el
Capıtulo 3. Estado de Arte 33
procesamiento de datos de entrada del sistema de control difuso, ademas se tiene en cuenta que
no todos los grupos son necesarios para la descripcion de cada comportamiento, lo cual significa
ahorro de energıa para el robot movil. Este sistema de navegacion difuso basado en comporta-
mientos sobre una arquitectura Saphira se compone de 4 comportamientos difusos: navegar por
pasillos, seguir paredes, alcanzar objetivos y evitar obstaculos; manejando un sistema de inferen-
cia tipo Mamdani, cada uno con su respectivo conjunto de reglas ademas de utilizar funciones
de membresıa de tipo triangular. Los valores de entrada al sistema son las lecturas de distancias
que proporcionan los sensores, y los valores de salida de cada comportamiento es la velocidad
y angulo de giro. Las pruebas se realizan en la plataforma movil P-METIN. El funcionamiento
del sistema en general es la ejecucion de cada comportamiento por separado o individualmente,
ademas de permitir combinaciones de comportamientos para tareas mas complejas, por ejemplo,
un comportamiento complejo de navegar evitando obstaculos hasta alcanzar a un objetivo.
En “Desarrollo de un sistema de navegacion para robots moviles mediante diferentes patrones
de comportamientos”[5], se aplica un sistema de navegacion difusa por comportamientos sobre
un robot movil con un microcontrolador PIC18F452 programado en lenguaje C. La informacion
correspondiente a la distancia en la que se encuentran los objetos con respecto al robot se ob-
tiene mediante 2 sensores ultrasonicos. Este sistema define 3 comportamientos: aproximacion a
la pared mas cercana, seguir el pasillo y evitar obstaculos. El sistema de inferencia es de tipo
Mamdani, utilizando funciones de membresıa trapezoidal y triangular, con un valor de entrada
correspondiente a la distancia del obstaculo con respecto al sensor y con un valor de salida que
indica el angulo en que se movera el motor de cada rueda.
Otro trabajo que utiliza un sistema de navegacion mediante logica difusa basada en compor-
tamientos y sensores ultrasonicos es “Navegacion de robots moviles mediante comportamientos
utilizando logica difusa”[28]. Los comportamientos son 2: seguir pared y seguir pasillo. Los sen-
sores ultrasonicos son 8, los cuales de dividen en 3 grupos para un facil manejo de la informacion
al tener menor cantidad de datos para los valores de entrada de cada modulo difuso. El controla-
dor difuso obtiene como valores de entrada a las distancias a las que se encuentran los obstaculos
y como salida a la velocidad de cada rueda; utiliza un sistema de inferencia tipo Mamdani y
funciones de membresıa de tipo trapezoidal y triangular. Para las pruebas del sistema emplea
Fuzzy Logic ToolboxTM de Matlab R© sobre una plataforma P-METIN del grupo GIROPS.
Al utilizar datos de proximidad, los sistemas de navegacion difusa son convenientes ya que
retornan informacion de distancia entre el sensor y los objetos en la escena ademas de ser
Capıtulo 3. Estado de Arte 34
tolerantes a fallos que pueda tener el sensor; sin embargo, omiten caracterısticas especıficas de
los objetos. A continuacion se presentan trabajos que buscan adquirir mayor informacion util
del ambiente al introducir la fusion entre sensores.
3.2. Sistemas de navegacion reactiva difusa con fusion
sensorial
Aun cuando se obtiene una informacion de proximidad, existen trabajos que buscan obtener
mas informacion de la escena, por ejemplo la forma de los objetos, su ubicacion y dimensiones;
por lo tanto, implementan sistemas que fusionan tanto sensores de proximidad como una cama-
ra de video que captura informacion externa mediante imagenes digitales. Uno de este tipo de
trabajos es “Un sistema multi-agente que emplea vision activa y ultrasonidos aplicado a nave-
gacion con comportamientos difusos”[29], el cual utiliza sensores ultrasonicos y una camara de
video SONY EVI-401 y se implementa sobre un robot movil NORMAD 200. En este trabajo se
entiende como agente un proceso software dirigido a alcanzar o mantener un objetivo; el agente
de Navegacion utiliza un controlador difuso mediante funciones triangular y trapezoidal basado
en navegacion por comportamientos. Cada comportamiento se define como: orientar la torre-
ta, orientar las ruedas, evitar obstaculo en una habitacion, seguir la pared de una habitacion,
atravesar puerta, orientar las ruedas y la torreta en el pasillo, y mover el robot por el pasillo.
La razon por la que fusiona dos sensores es por la tarea que busca ejecutar, la cual consiste en
navegar y atravesar puertas entre habitaciones basandose en un mapa del entorno donde cada
puerta posee una marca especial.
En “Fuzzy control of a mobile robot”[30] se presenta un sistema de navegacion reactiva di-
fusa sobre un Khepera Mobile Robot y una fusion entre 8 sensores de proximidad (en este caso
aplica sensores infrarrojos), y una WebCam. Define 3 controladores difusos: a) busqueda del
objetivo que ejecuta una busqueda del objetivo ignorando los obstaculos en el camino, b) evadir
obstaculos que utiliza los sensores infrarrojos y garantiza la seguridad al prevenir colisiones, y c)
explorar el ambiente que esta basado en una memoria local de todo el camino recorrido. Dichos
controladores son manejados por un modulo denominado sistema supervisor difuso cuya funcion
es determinar la prioridad de ejecucion de cada comportamiento. Si hay obstaculos cerca, le da
prioridad a evadir obstaculos, por otro lado si el area no es explorada, solo ejecuta la busqueda
del objetivo.
Capıtulo 3. Estado de Arte 35
En el trabajo “Sistema de navegacion para robots moviles utilizando fusion sensorial”[31] se
describe un sistema de navegacion difuso desarrollado en lenguaje C y se prueba en un robot
KheperaII. Este sistema utiliza sensores infrarrojos agrupados en 3 partes cuyas senales son
amplificadas, y una camara con procesador integrado CMUCam2 de donde se adquieren image-
nes en el espacio de color YCbCr. Las senales de entrada provienen de cada grupo: izquierdo,
frontal y derecho, y al mismo tiempo del valor de la centroide del objeto. El valor de salida es
el angulo de giro del robot. Ambos casos utilizan la funcion de membresıa tipo triangular. El
sistema fusiona la informacion que obtiene del procesamiento de la imagen capturada por la
camara (centroide del objeto con respecto al eje x) y la informacion que proviene de los sensores
infrarrojos (proximidad izquierda, frontal y derecha); es decir, se tiene el conocimiento de ubi-
cacion de donde se encuentra el objeto y que tan cerca se encuentra con respecto al sensor. Con
estos datos, el sistema de navegacion decide el angulo de giro del robot movil, por ejemplo, si
encuentra un objeto a la derecha que esta muy proximo, entonces gira al lado izquierdo evitando
ası el obstaculo; si por otro lado, el robot encuentra un objeto de frente pero lo localiza muy
lejano entonces continua con la navegacion frontal.
Los trabajos descritos en esta seccion buscan definir las caracterısticas de los objetos que
se encuentran en la escena, a fin de llegar a un punto en especıfico o utilizar dichas carac-
terısticas para conocer el movimiento a ejecutar, aun cuando represente un mayor costo y una
implementacion extra para la adquisicion, instalacion y compatibilidad de cada sensor. En la
siguiente seccion se describen trabajos de navegacion difusa utilizando el sensor Kinect, una
reciente tecnologıa de fusion sensorial que busca resolver los inconvenientes antes mencionados.
3.3. Sistemas de navegacion reactiva difusa con sensor
Kinect
Buscando fusionar metricas, obtener una mayor cantidad de informacion y reducir el costo de
los sensores, una reciente tecnologıa es el sensor Kinect, el cual permite obtener datos de pro-
fundidad a base de sensores infrarrojos e imagenes digitales mediante una camara RGB. Este
sensor ha sido utilizado sobre aplicaciones que se describen en los trabajos de [6, 32, 33].
En “Navegacion de robot movil usando Kinect, OpenCV y Arduino”[32] se presenta un sis-
tema de navegacion reactiva utilizando el sensor Kinect como dispositivo de captura de escena,
el driver Libfreenect que permite la comunicacion entre sensor y computadora, la biblioteca de
Capıtulo 3. Estado de Arte 36
vision artificial OpenCV y la placa Arduino para el control de los motores. Este trabajo aplica
un procesamiento a la imagen de profundidad mediante un filtro Gaussiano de 9×9 para la
eliminacion de ruido. Posteriormente se procede a localizar el centroide de un objeto proximo
basandose en las coordenadas x, y y el valor de profundidad que proporciona la imagen de
profundidad. A partir de dicho objeto, obtiene una distancia promedio para evadir el obstaculo
girando al lado contrario a la posicion del objeto, deteniendo motores o avanzando hacia ade-
lante.
Aplicando la navegacion reactiva difusa utilizando datos de profundidad del sensor Kinect,
el trabajo “Fuzzy based obstacle avoidance for mobil robots with Kinect sensor”[6] implementa
algoritmos para planificar ruta y evadir obstaculos. Emplea un sistema de inferencia Mamda-
ni de 16 reglas, funciones de membresıa tipo trapezoidal y triangular, 3 variables de entrada
(profundidad del objeto mas cercano del lado derecho, del lado izquierdo y del centro), y una
variable difusa de salida (angulo de giro del robot movil). Este trabajo se desarrolla, simula e
implementa utilizando la herramienta Fuzzy Logic ToolboxTM de Matlab R©. Este trabajo mues-
tra resultados de navegacion frente a distintas situaciones, desde la deteccion de obstaculos en
diferentes direcciones, en diagonal y repentinos, deteccion de paredes, navegacion por pasillos y
navegacion libre cuando no existen obstaculos cercanos omitiendo los casos cuando da prioridad
a los giros.
El sensor Kinect tambien puede trabajar en conjunto con otros sensores, por ejemplo en
“Mobile robot navigation and target tracking system”[33] se utilizan las imagenes de profundi-
dad del sensor Kinect junto con sensores odometricos para ası obtener los valores de entrada del
controlador difuso: velocidad traslacional y angular del robot, centroide y tamano del obstacu-
lo. Los valores de salida son: velocidad traslacional y angular. El control difuso se desempena
utilizando funciones de membresıa de tipo triangular para cada variable. Las imagenes de pro-
fundidad pasan por un pre-procesamiento mediante la aplicacion del filtro Gradiente-Log para
identificar areas transversales (suelos). Este sistema esta implementado basandose en el modelo
de un robot diferencial. Al mismo tiempo, utiliza los datos para la deteccion no solo de obstacu-
los sino para identificar el objetivo final, ası como el reconocimiento de formas y los tipos de
caminos por donde navega, por ejemplo, rampas, planos, entre otros, y busca la combinacion
entre la planificacion de ruta y la navegacion de manera reactiva, todo esto mediante logica
difusa y redes neuronales.
Capıtulo 3. Estado de Arte 37
3.4. Discusion de los trabajos relacionados
Todos los trabajos mencionados tienen en comun el aplicar la logica difusa para determinar el
movimiento a ejecutar. Aun cuando utilizan sensores diferentes la idea es basicamente la mis-
ma, es decir, utilizar informacion de profundidad o proximidad para detectar los obstaculos mas
cercanos para posteriormente evadirlos y en algunos casos extraer las dimensiones, formas y el
centroide de cada objeto. Ademas, estos trabajos estan orientados hacia la navegacion reactiva,
recordando que la navegacion basada en comportamientos es considerada un tipo de navegacion
reactiva.
La mayorıa de los trabajos buscan responder a la pregunta ¿Existe algun obstaculo? En
algunos trabajos se utilizan camaras de video para la adquisicion de imagenes en 2D para
el reconocimiento de formas. Posteriormente, con el avance tecnologico y aparicion de nuevos
algoritmos, otros trabajos se concentraron en la adquisicion de informacion de profundidad,
mientras que en algunos mas buscan la fusion entre camaras de video y sensores de proximidad
para obtener mas informacion y no solo responder a ¿Existe algun obstaculo? sino que ademas
responder a Si existe un obstaculo, ¿que tan cerca se encuentra del sensor?, ¿dicho obstaculo
permite continuar con la navegacion?, ¿cual es su forma, dimensiones, o textura? ; es decir, se
busca la extraccion de datos que brinden un mejor conocimiento del ambiente donde se navega.
En la siguiente seccion se describe el desarrollo del sistema propuesto, basandose en los trabajos
relacionados al utilizar navegacion reactiva, la adquisicion de datos mediante el sensor Kinect
y la aplicacion de un controlador difuso para la toma de decisiones de giro.
Capıtulo 4
Sistema propuesto
4.1. Introduccion
En este capıtulo se describe el desarrollo del sistema, el cual permite la navegacion automatica
y evasion de obstaculos basandose en una arquitectura reactiva mediante control difuso y datos
de profundidad, con el fin de una posterior implementacion en una silla de ruedas.
Un sistema se define como un conjunto de entidades relacionadas entre sı que contribuyen a
un determinado objetivo. En general, un sistema se compone de entradas, procesos y salidas. En
este trabajo se describe un sistema en el cual cada uno de los modulos representan las entidades
que estan relacionadas unas con otras con el fin de cumplir el objetivo de navegar de forma au-
tomatica, evadiendo los obstaculos que se presenten. Las entradas del sistema de navegacion son
los datos de profundidad que se obtienen mediante el sensor Kinect, estos datos son procesados
por cada modulo hasta obtener la salida que indica la direccion que esta libre de obstaculos. Los
modulos que componen el sistema inician desde la etapa de intercambio de informacion con el
ambiente, siguiendo con las etapas que se encargan de transformar la informacion para adquirir
algunas caracterısticas especıficas de la escena para que finalmente se determine la direccion
de giro. Basandose en el diagrama de bloques de las etapas de un sistema de vision artificial
del Capıtulo 2, en la Figura 4.1 se muestran las etapas que componen el sistema de navegacion
propuesto.
39
Capıtulo 4. Sistema propuesto 40
Etapa sensorial
Etapa de
preprocesamiento
Actuación según
resultados
Etapa de
parametrización
Escena real
Transformación de
datos de profundidad
Eliminación de
regiones
desconocidas
pequeñas
Sistema de
control difuso
Extracción de
profundidad
promedio
Adquisición
de datos de
profundidad
Figura 4.1. Diagrama a bloques de las etapas del sistema de navegacion reactiva difusa.
El sistema propuesto obtiene informacion del ambiente mediante los datos de profundidad
del sensor Kinect, el cual se encuentra ubicado sobre una plataforma movil, elevado a 1 metro
y con un angulo de inclinacion vertical de 0◦. Los datos de profundidad son procesados para
conocer que obstaculos existen y decidir como actuar controlando la direccion del giro de la
plataforma movil.
Se inicia con la adquisicion de los datos de profundidad, manteniendose la comunicacion entre
el sistema y el ambiente exterior, ademas de transformar dichos datos a un formato electronico.
La transformacion de los datos de profundidad describe la transformacion de las metricas de
profundidad a imagenes en escala de grises. Posteriormente se procede a la eliminacion de las
partıculas oscuras de menor area dentro de la imagen, las cuales indican informacion descono-
Capıtulo 4. Sistema propuesto 41
cida. La extraccion de profundidad promedio es el proceso donde se obtienen las profundidades
por cada seccion, esto con el fin de detectar la proximidad de obstaculos con respecto del sen-
sor. Se finaliza con el procesamiento del control difuso para navegar hacia una trayectoria que
indique una menor cantidad de obstaculos cercanos.
A continuacion, en las siguientes secciones, se presenta la descripcion detallada de cada etapa
presentada en el diagrama a bloques, Figura 4.1, ası como los resultados generados por cada
modulo.
4.2. Adquisicion de datos de profundidad
La fase de adqusicion de datos de profundidad, consta de la obtencion de la informacion de
entrada que provienen del mundo real, para que sean transformados a un formato que pueda
ser procesado por la computadora. El sistema trabaja con datos de profundidad, los cuales se
obtienen mediante el sensor Kinect en conjunto con librerıas OpenNI [34].
Para la informacion adquirida del exterior en una imagen digital bidimensional, el color de
un pixel1 se representa mediante una cadena de dıgitos binarios (bits), lo que se denomina in-
tensidad de color. Si se tiene una intensidad de color de n, implica que cada pixel que conforma
la imagen puede representar hasta 2n colores distintos [35].
En el caso de las imagenes de profundidad, la informacion que se adquiere, cuando el sensor
proyecta un patron de puntos infrarrojos en una escena, es examinada por la camara para obte-
ner una referencia entre los puntos de la escena y el Kinect, por lo tanto se generan datos en 21
2,
es decir, una matriz de m×n donde cada elemento indica un valor de proximidad o profundidad;
a diferencia de la informacion en 3D que representa una matriz de 3 × n donde cada columna
retorna informacion del ambiente en coordenadas (x, y, z). El resultado de la comunicacion entre
sensor Kinect y computadora es un arreglo matricial de 640 × 480, el cual puede interpretarse
como una imagen y operarse como tal, pero sin perder el enfoque de que cada pixel es un dato
de profundidad y que ademas, representa unidades fısicas en milımetros. La matriz adquirida
del sensor se define en un marco de profundidad de 16 bits (n = 16), representando un rango
de 216 = 65,536 colores (ver Figura 4.2).
1Unidad mas pequena homogenea de color que forma parte de una imagen digital
Capıtulo 4. Sistema propuesto 42
15 12 11 8 7 4 3 0
0000 0101 1111 0011
Figura 4.2. Estructura de los bits de profundidad.
La Figura 4.3 muestra una clasificacion dependiendo de la distancia de los objetos en la
escena con la ubicacion del Kinect [36]; esta clasificacion consta de cuatro rangos: desconocido,
muy cercano, valores normales y muy lejano.
Desconocido
Muy cercano
Valores normales
Muy lejano
0 0.4 0.8 3 4 8
Distancia desde el Sensor (metros)
Figura 4.3. Rango en metros de la imagen de profundidad.
Al utilizar OpenNI, el tipo de dato al que pertenece cada pixel de la imagen de profundidad
que se adquiere con el sensor es un entero sin signo de 16 bits, y la imagen puede ser represen-
tada de manera visual mediante la funcion imagesc de Matlab R©.
Las imagenes que se obtienen con las dos camaras del sensor Kinect se muestran en la Fi-
gura 4.4, donde la imagen que se obtiene de la camara RGB del Kinect se observa en la Figura
4.4a, mientras que la imagen de profundidad que se obtiene con el sistema infrarrojo, se observa
en la Figura 4.4b, ambas imagenes no coinciden exactamente ya que cada una tiene diferente
punto focal. Se aclara de antemano, que este sistema solo trabaja con la imagen de profundi-
dad, debido a que la imagen en RGB no proporciona la informacion de proximidad; la imagen
en RGB se utiliza para una mejor visualizacion de los ambientes donde se experimenta el sistema.
Capıtulo 4. Sistema propuesto 43
100 200 300 400 500 600
50
100
150
200
250
300
350
400
450
(a) Imagen RGB
100 200 300 400 500 600
50
100
150
200
250
300
350
400
450
0
1000
2000
3000
4000
5000
6000
7000
(b) Imagen de profundidad en escala de grises
Figura 4.4. Imagenes obtenidas del sensor Kinect.
Enfocandose en la imagen de profundidad, hasta este punto se tiene una imagen con valores
de pixel de tamano de 16 bits. En la siguiente seccion se realiza una transformacion de la imagen
de profundidad para pasar de valores de 16 bits a 8 bits, con la finalidad de que el procesamiento
de la imagen, la extraccion de datos de profundidad y de la cantidad de datos desconocidos
dentro de la imagen de profundidad consuma la menor cantidad de recursos hardware posibles.
4.3. Transformacion de los datos de profundidad
Los datos de profundidad que se obtienen de la escena mediante el sensor Kinect, conforman
un arreglo matricial representado como una imagen de profundidad. El color de cada pixel de
la imagen se basa en el valor de profundidad y su valor puede determinarse en una escala de 0
hasta 65,535; esto es porque la imagen es de tipo uint16 (numero entero sin signo de 16 bits).
Para la representacion de la imagen, el 0 se muestra con el color negro mientras que el color
blanco corresponde al valor 65,535.
En la Figura 4.5 se muestra la imagen de profundidad utilizando el comando imshow de
Matlab R©. Al mismo tiempo, se observa la escala de la imagen que va de 0 a 65,535. Notese que
la mayorıa de los pixeles caen dentro del espectro mas oscuro ya que el valor maximo de 65,535
milımetros (65.535 metros) supera el campo de vision del sensor Kinect que no es mayor a los
10,000 milımetros (10 metros), lo cual provoca dificultad para diferenciar los objetos dentro de
la imagen.
Capıtulo 4. Sistema propuesto 44
0
1
2
3
4
5
6
x 104
Figura 4.5. Imagen de profundidad original.
Para crear una imagen en escala de grises con cada elemento de tamano de 8 bits a partir
de una imagen de profundidad con datos de 16 bits, se ejecuta el algoritmo especificado por el
Pseudocodigo 1.
Pseudocodigo 1 Conversion de imagen de profundidad
Entrada: ImagenProf16 {Datos de profundidad de 16 bits}Salida: ImagenProf {Imagen de profundidad de 8 bits}1: maximaProf = profundidad maxima de ImagenProf162: para i = 0 hasta 480 hacer3: para j = 0 hasta 640 hacer4: Convertir ImagenProf16(i, j) a tipo double5: profundidad = 255 ∗ ImagenProf16(i, j)/maximaProf6: Redondear profundidad hacia el entero mas cercano7: ImagenProf(i, j) = profundidad8: fin para9: fin para
Con este procesamiento se obtiene un rango de 0 (que representa el color negro) a 255 (re-
presentando el color blanco). En la imagen de profundidad, el 0 puede significar objetos muy
cercanos, objetos muy lejanos u objetos que no fueron identificados; bajo esta situacion, el sis-
tema de navegacion se mantendra lo mas seguro posible dirigiendose solo a lugares conocidos
y que posean la suficiente informacion de profundidad para la toma de decisiones, es decir, los
Capıtulo 4. Sistema propuesto 45
valores de profundidad iguales a 0 se tendran en cuenta como obstaculos muy cercanos. En este
contexto, se aplica la normalizacion de los datos datos de profundidad para obtener profundi-
dades en intervalos del 0 al 1 las cuales son resultado de dividir entre la intensidad maxima de
la imagen de profundidad de 16 bits, y despues se multiplica por 255, para el ajuste a profun-
didades de 8 bits en rangos de 0 a 255, ver Lınea 5 [20].
La Figura 4.6 muestra el resultado de implementar y aplicar el Pseudocodigo 1, el cual es
una imagen de profundidad de tamano 640× 480 con valores de profundidad de 8 bits.
100 200 300 400 500 600
50
100
150
200
250
300
350
400
450
0
50
100
150
200
250
Figura 4.6. Imagen de profundidad principal ImagenProf a escala de grises de 8 bits.
Ademas de la visualizacion, la conversion se ejecuta debido a que para una arquitectura
hardware procesar datos de 8 bits requiere menos consumo de recursos (memoria, espacio, buses
de comunicacion, potencia, entre otros) que si trabajara con datos de 16 bits, en especial si se
trata de dispositivos reprogramables. Este sistema tiene como trabajo futuro implementarse en
una plataforma hardware, donde se tiene una limitada cantidad de recursos y se requiere la
ejecucion de algoritmos en tiempo real.
4.4. Eliminacion de regiones desconocidas pequenas
En la imagen de profundidad que se obtuvo del proceso de adquisicion y conversion, se obser-
van algunos componentes con valor igual a 0 que indican informacion desconocida; es decir,
Capıtulo 4. Sistema propuesto 46
los rayos infrarrojos emitidos por el sensor no retornan informacion del ambiente en ese punto.
Dichas variaciones pueden ser causadas por una incorrecta ubicacion del sensor, ruido, gran
cantidad de luz en la escena, movimientos bruscos de la camara, oclusiones, objetos fuera del
campo de vision, reflexiones por el tipo de material de los objetos, entre otros. Para remover
los componentes desconocidos se ejecuta un algoritmo de reconstruccion morfologica que rellena
las protuberancias oscuras en base al nivel de profundidad de los pixeles vecinos.
La morfologıa matematica es una herramienta muy utilizada en el procesamiento de image-
nes ya que permite simplificar los datos de una imagen, conservar las caracterısticas esenciales,
eliminar los aspectos que sean irrelevantes y ası dan una idea de la forma y estructura de los
objetos que conforman la imagen [16, 37].
En la imagen de profundidad se busca conservar las caracterısticas de profundidad, ya que
es la base del sistema de control difuso, no se necesita la definicion de formas ni estructuras de
los objetos, debido a que se implementa una navegacion reactiva, y los datos irrelevantes que se
buscan eliminar son aquellas zonas desconocidas con areas muy pequenas y que ademas estan
rodeadas de zonas conocidas.
Mientras que las transformaciones morfologicas requieren combinaciones de una imagen de
entrada con un elemento estructural generando ası imagenes con cambios bruscos dependiendo
del tamano del elemento estructural, las transformaciones geodesicas consideran 2 imagenes de
entrada relacionadas entre sı para conservar uniformidad en la imagen reconstruida.
La erosion geodesica implica dos imagenes: una imagen marcador y una imagen mascara.
Ambas imagenes deben estar definidas en el mismo dominio y la imagen mascara debe ser mas
pequena o igual a la imagen marcador. La imagen marcador es primeramente erosionada para
posteriormente calcular la union entre la imagen mascara e imagen marcador erosionada; este
proceso se aplica de forma iterativa obteniendo un tipo de reconstruccion morfologica. Se consi-
dera un ejemplo donde se define la senal mascara f y la senal marcador g donde se cumple que
f ≤ g, ver Figura 4.7a. Notese que la mascara f actua como delimitador de contraccion de la
senal g. Aplicando erosion geodesica de g con respecto de f de manera iterativa hasta encontrar
la estabilidad, se obtiene una senal reconstruida definida como R, ver Figura 4.7b, donde los
mınimos son realzados [38].
Capıtulo 4. Sistema propuesto 47
g
(a) Mascara f y marcador g
originales
(b) Resultado de reconstruc-
cion morfologica R
Figura 4.7. Ejemplo de erosion geodesica de senales.
Aplicando erosion geodesica en las imagenes de profundidad, los pixeles con intensidades
mınimas (puntos oscuros o zonas desconocidas) seran realzados siempre y cuando los pixeles
vecinos sean intensidades mayores, lo cual da como resultado una imagen de profundidad con
un menor numero de partıculas oscuras, evitando ası, generar objetos que presentan una pro-
fundidad 0 los cuales influyen en el calculo de la direccion de giro. Otro punto es que solo se
busca eliminar aquellas zonas oscuras pequenas, tratando de generar lo menos posible profundi-
dades falsas en zonas desconocidas, ver Figura 4.8. El algoritmo de reconstruccion morfologica
se presenta en el Pseudocodigo 2.
Pseudocodigo 2 Relleno de partıculas oscuras
Entrada: ImagenProfundidad {Imagen de profundidad de 8 bits}Salida: ImagenProfRellena {Imagen de profundidad de 8 bits con espacios desconocidos
rellenos}1: mascara = complemento de ImagenProfundidad {Definicion de la imagen mascara}2: marcador = mascara{Definicion de la imagen marcador}3: ImagenProfRellena = ReconstruccionMorfologica(marcador,mascara) (ver Pseu-
docodigo 3 [39])4: ImagenProfRellena = complemento de ImagenProfRellena
Capıtulo 4. Sistema propuesto 48
100 200 300 400 500 600
50
100
150
200
250
300
350
400
450
0
50
100
150
200
250
Figura 4.8. Imagen con agujeros rellenados.
Pseudocodigo 3 Reconstruccion morfologica
Entrada: mascara,marcadorSalida: marcador1: Recorrer la imagen en orden de la trama2: Sea p el pixel actual, marcador(p)← (max{marcador(q), q ∈ N+
G (p) ∪ {p}})∧mascara(p)3: Recorrer la imagen en orden contra la trama4: Sea p el pixel actual, marcador(p)← (max{marcador(q), q ∈ N−
G (p) ∪ {p}})∧mascara(p)5: si Existe q ∈ N−
G (p) tal que marcador(q) < marcador(p) y marcador(q) < mascara(q)entonces
6: fifo add(p) {Agregar el pixel p en la cola}7: fin si8: mientras La cola no este vacıa hacer9: p← fifo first(){Retorna el pixel que esta al inicio de la cola y procede a eliminarlo}10: para todo Pixel q ∈ NG(p) hacer11: si marcador(q) < marcador(q) y mascara(q) 6= marcador(q) entonces12: marcador(q)← min{marcador(p), mascara(q)}13: fifo add(q)14: fin si15: fin para16: fin mientras
Capıtulo 4. Sistema propuesto 49
Al aplicar la reconstruccion morfologica, las areas desconocidas de menor tamano dentro
de la imagen de profundidad adquieren el valor de sus pixeles vecinos, brindando ası objetos
y sus correspondientes profundidades con mayor definicion. Una vez adquirida esta imagen de
profundidad, el sistema continua con la extraccion de las caracterısticas de profundidad por
region que se describe en la siguiente seccion.
4.5. Extraccion de profundidad promedio
El proceso de extraccion de profundidad promedio tiene como finalidad obtener informacion
cuantitativa o rasgos que permitan identificar el espacio con la menor cantidad de objetos cer-
canos, permitiendo ejecutar un apropiado movimiento evitando colisiones.
Al utilizar navegacion reactiva, los objetos u obstaculos no necesitan ser detallados ni tener
el conocimiento de sus formas, solo se requiere conocer en que direccion se tiene menos probabi-
lidades de colision. Para conocer la direccion en donde se tiene una menor cantidad de objetos
cercanos, basandose en los trabajos [6, 40], se considera que a partir de una imagen de profun-
didad definida como ImagenProfundidad se obtengan 3 nuevas imagenes de profundidad de
tamano 211 × 480 cada una, las cuales representan las 3 direcciones en las que la plataforma
movil puede moverse: girar a la derecha, seguir de frente y girar a la izquierda. Estas represen-
taciones describen de manera general las regiones por donde se desea continuar navegando y el
espacio libre u ocupado que se encuentren en ellas. Se tiene en cuenta que se puede dividir la
imagen en mas partes, pero dicha operacion no conviene dentro de la aplicacion propuesta ya
que la division en 3 partes genera los suficientes datos para la navegacion reactiva donde, como
se menciona anteriormente, no se necesita a detalle las formas de los obstaculos. De igual forma
se omite la division en dos partes, ya que se pretende especificar las tres direcciones generales
que son el giro a la izquierda, giro a la derecha y el caso en el que el ambiente este libre de
obstaculos, donde la plataforma movil tenga la posibilidad de seguir en lınea recta. La imagen
ImagenProfundidad dividida en 3 partes y sus divisiones que hacen referencia a la parte iz-
quierda, ImagenIzq, la parte central, ImagenCen y la parte derecha ImagenDer se muestran
en la Figura 4.9.
Capıtulo 4. Sistema propuesto 50
100 200 300 400 500 600
50
100
150
200
250
300
350
400
450
Figura 4.9. Division de imagen de profundidad ImagenProfundidad.
Al conocer previamente que region se esta procesando, se identifica hacia donde se ejecu-
tara el giro de la navegacion ya sea en la izquierda, el centro o la derecha. Despues de haber
ejecutado el algoritmo de reconstruccion morfologica, las partes oscuras pequenas han sido re-
movidas y adquieren la profundidad de los pixeles vecinos; sin embargo, las areas mayores de
datos desconocidos permanecen dentro de la imagen de profundidad.
En general, cuando existen areas grandes de profundidades desconocidas se tienen en cuenta
dos casos en base al campo de vision del sensor Kinect, ver Figura 4.10:
Objetos muy lejanos.
Objetos muy cercanos.
En el caso de los objetos muy lejanos, las areas tienen un comportamiento disperso y los
datos no abarcan un area extensa, ver Figura 4.10a. Por parte de los objetos muy cercanos,
las areas desconocidas presentan un comportamiento casi uniforme abarcando un area extensa
por region, ver Figura 4.10b. Lo que procede es que para cada sub-imagen de profundidad se
omitan los datos desconocidos con areas menores a un dos terceras partes de la region, es decir
un 67%. Cuando el area abarque mas de 2
3de la region, se concluye que se presenta un obstaculo
muy cercano y por consecuencia se calcula el giro para evadirlo.
Capıtulo 4. Sistema propuesto 51
(a) Imagen de profundidad con objetos muy lejanos. (b) Imagen de profundidad con objetos muy cercanos.
Figura 4.10. Imagenes de profundidad con areas grandes desconocidas.
El proceso siguiente es conocer que parte de ImagenProfundidad tiene menos cantidad de
objetos cercanos al sensor, para lo cual se ejecuta el algoritmo que indica el Pseudocodigo 4
para la extraccion de caracterısticas para cada region.
En primer lugar, se sabe que el tamano de cada sub-imagen es de 211 × 480 2 lo que indica
una imagen de profundidad con un area de 101,280 pixeles, y es en base a esta area que se
calcula el porcentaje de region ocupada en 2
3partes, mismo que puede ser modificado por el
usuario dependiendo del entorno donde se encuentre. Por ejemplo, se considera que existe una
superficie muy cercana al sensor y que es por esa razon que va ocupando un gran espacio en la
imagen. Si los espacios son mas pequenos, se consideran resultados del ruido en el sensado.
La imagen de profundidad se encuentra en escala de grises con rangos de 0 a 255; sin embargo
se necesita diferenciar las profundidades mayores y las profundidades menores. Para efectuar el
calculo del umbral que se presenta en la Lınea 3 del Pseudocodigo 4 se utiliza el metodo de Otsu.
Existen diferentes metodos para el calculo del umbral, aunque la mayorıa no genera buenos
resultados con imagenes del mundo real debido a la presencia de ruido, iluminacion inadecuada,
entre otros. Por el contrario, el metodo de Otsu [41] es uno de los mejores para el calculo del
umbral sobre imagenes del mundo real, ya que efectua una busqueda exhaustiva para evaluar
el criterio de minimizacion de varianza entre clases.
2La imagen tiene un tamano de 640 × 480, pero el sensor retorna valores desconocidos en las primeras 7columnas y estas son omitidas.
Capıtulo 4. Sistema propuesto 52
Pseudocodigo 4 Extraccion de profundidad promedio
Entrada: RegionProfundidadSalida: profundidad1: porcentaje = un porcentaje de la imagen, por default se define un 67%2: ceros = cantidad de ceros en RegionProfundidad3: umbral = un umbral que separa los valores mayores de los menores utilizando algoritmo de
Otsu [41].4: menores = arreglo que contiene los valores menores a umbral dentro de
RegionProfundidad5: mayores = arreglo que contiene los valores mayores e igual a umbral dentro de
RegionProfundidad6: si ceros < porcentaje entonces7: valores = arreglo que contiene todos los valores diferentes a cero de menores8: si no9: valores = menores10: fin si11: si valores esta vacıo entonces12: profundidad = calculo de la media de mayores13: si no14: profundidad = calculo de la media de valores15: fin si
Para describir el metodo de Otsu de manera general se define en primer termino que una
imagen de profundidad representada en escala de grises, siendo una funcion bidimensional, con-
tiene N numero de pixeles cuyos niveles de grises se encuentran entre 1 y L. El numero de
pixeles con un determinado nivel de gris i se denota como fi, y la probabilidad de ocurrencia
del nivel gris i se define por la Ecuacion 4.1.
pi =fiN
(4.1)
Posteriormente los pixeles son divididos en dos clases:
C1, con niveles de gris 1, ...., t.
C2, con niveles de gris t+ 1, ...., L.
Se define la distribucion de probabilidad de los niveles de gris para cada clase mediante la
Ecuacion 4.2, para la clase C1, y la Ecuacion 4.3, correspondiente a la clase C2.
p1ω1(t)
, ....,pt
ω1(t)(4.2)
Capıtulo 4. Sistema propuesto 53
pt+1
ω2(t),pt+2
ω2(t), ....,
pLω2(t)
(4.3)
donde:
ω1(t) =t
∑
i=1
pi
ω2(t) =L∑
i=t+1
pi
Posteriormente se define la media para la clase C1, ver Ecuacion 4.4, y para la clase C2, ver
Ecuacion 4.5.
µ1 =t
∑
i=1
i ∗ piω1(t)
(4.4)
µ2 =L∑
i=t+1
i ∗ piω2(t)
(4.5)
Otsu en [41] define la varianza entre clases de una imagen umbralizada mediante la Ecuacion
4.6.
σ2 = ω1 ∗ (µ1 − µT )2 + ω2 ∗ (µ2 − µT )
2 (4.6)
donde:
µT = ω1 ∗ µ1 + ω2 ∗ µ2
Obteniendo el umbral optimo top = t cuando t defina la varianza maxima.
Una vez que se calcula el umbral optimo se multiplica por 255 para obtener la profundidad
que permite dividir los valores mayores y menores, esto con el fin de realizar el calculo solamen-
te sobre los valores de las profundidades mas cercanas y evitar compensaciones con los valores
mayores, sin embargo, si en la escena no existen profundidades cercanas, entonces se consideran
los valores de profundidad lejanos. Los valores principales de donde se extrae la informacion son
los valores menores ya que estos indican los obstaculos mas cercanos al sensor, ver Lınea 7 del
Pseudocodigo 4, este calculo se realiza guardando en el arreglo valores todas las profundidades
del arreglo menores diferentes a cero. Si se tiene una cantidad mayor de datos desconocidos a
un determinado porcentaje, entonces los datos desconocidos indicaran obstaculos muy cercanos
Capıtulo 4. Sistema propuesto 54
y junto con las profundidades menores se procede a calcular la profundidad promedio en cada
una de las sub-imagenes. En caso contrario, se calcula la profundidad promedio sin tomar en
cuenta los datos desconocidos. Si no existen datos menores, el arreglo valores estara vacıo, por
lo que se calcula el promedio con las profundidades mayores.
Para cada sub-imagen (ImagenIzq, ImagenCen, ImagenDer) que se obtiene de la imagen
de profundidad principal (ImagenProfundidad) se calcula el promedio de profundidad por
region, es decir, se conoce que region ofrece una menor probabilidad de colision. A partir de esta
informacion, el sistema de navegacion reactiva debe calcular la direccion de giro; sin embargo,
los datos de profundidad no tienden a ser muy exactos, ya que son alterados por diferentes
factores como el ruido, el movimiento brusco del sensor, luminosidad, etcetera. Tambien se debe
tomar en cuenta que al utilizar un paradigma reactivo, el proceso de decision debe ser lo mas
instantaneo posible. Otro punto es que dependiendo de que tan despejado se encuentre una
region, el sistema debe ser capaz de navegar evitando movimientos bruscos; es decir, si una
region tiene objetos muy lejanos, el giro no sera tan pronunciado a diferencia de cuando la
profundidad esta mas cercana. Por lo tanto se plantea el uso de un control difuso, el cual es
capaz de tratar con los datos de profundidad imprecisos, utiliza un tiempo de inferencia casi
instantaneo y genera salidas proporcionales a las entradas evitando lo mas posible los giros
bruscos al momento de navegar. En la siguiente seccion se describe el desarrollo del controlador
difuso.
4.6. Sistema de control difuso
La logica difusa permite superar la dificultad de tener un modelo matematico de un ambiente
que cambia constantemente y que contiene obstaculos dispersos de forma aleatoria y variaciones
en la superficie. La logica difusa tambien permite trabajar con datos imprecisos, como es el caso
de los datos de profundidad que se obtienen mediante el sensor Kinect, ya que dichos datos se
ven afectados por diferentes factores. En esta seccion se describe el desarrollo del sistema de
control difuso que permite la navegacion reactiva de una plataforma movil.
El la Figura 4.11 se muestra la estructura general de un sistema difuso. El sistema cons-
ta de las variables de entrada y de salida, el mecanismo de inferencia, el conjunto de reglas
y los modulos de fusificacion y defusificacion [22, 23]. En las siguientes subsecciones se descri-
be el desarrollo de cada componente del sistema, utilizando Fuzzy Logic ToolboxTM de Matlab R©.
Capıtulo 4. Sistema propuesto 55
Fusificación
Mecanismo deinferencia
Base dereglas
Defusificación
Variablede entrada
Variable de salida
Figura 4.11. Sistema de control difuso.
4.6.1. Definicion de variables de entrada, variables de salida y del
sistema de inferencia
Cada una de las regiones de la imagen de profundidad es procesada ya que se busca obtener la
proximidad de los objetos mas cercanos y con esto, la probabilidad de colision en cada direccion.
Se definen como variables de entrada los valores de profundidad de los objetos mas cercanos
que genera la etapa de extraccion de la profundidad promedio de cada region. Cada una de las
variables de entrada es de tipo numerico, las cuales se representan en un rango de 0 a 255 y son
identificadas de la siguiente forma:
Frontal, representa la profundidad promedio en la parte central de la imagen.
Izquierdo, representa la profundidad promedio en la parte izquierda de la imagen.
Derecho, representa la profundidad promedio en la parte derecha de la imagen.
Cuando el sistema termina de procesar los datos de entrada, presenta los resultados en las
variables de salida. Se define una variable de salida que representa la direccion en grados
sexagesimales en que se debe mover la plataforma movil para evitar colisiones. Se expone este
tipo de salida ya que posteriormente se pretende implementar el sistema sobre un robot movil
y de cierta forma se pretende estandarizar una salida que pueda ser aplicada para distintos
sistemas de control. La variable de salida es de tipo numerico en un rango de -90◦ a 90◦ y se
etiqueta como Grados.
El sistema de inferencia tipo Mamdani facilita la comunicacion entre computadora y ope-
rador humano, pero al hacer esto, el sistema representa una carga computacional considerable.
Capıtulo 4. Sistema propuesto 56
La finalidad del sistema no es generar una salida apropiada para el entendimiento de un opera-
dor humano, sino que pase directamente a algun controlador implementado sobre una placa o
circuito, por ejemplo control de motores, y continue con la navegacion del robot movil, que en
este caso es representado por una silla de ruedas. Por lo tanto, se propone el uso del sistema de
inferencia difusa Sugeno, el cual es computacionalmente efectivo debido a que no busca calcular
una salida entendible para el operador humano (no realiza la operacion de defusificacion) al
generar salidas numericas y que al mismo tiempo, al implementar un sistema en hardware, re-
presenta un menor consumo de recursos. De igual forma, trabaja correctamente con las tecnicas
adaptativas y de optimizacion [11, 23]; ademas de que su uso en sistemas de navegacion, por
utilizar tecnicas lineales, garantiza la continuidad de la superficie de salida [42].
4.6.2. Definicion de valores linguısticos y funciones de membresıa
Para cada una de las variables de entrada se deben definir valores linguısticos ya que corres-
ponden (cada uno) a un conjunto difuso del sistema y definen en cierta forma como van a ser
tratados los datos y el comportamiento del sistema; en este caso, con la finalidad de obtener un
entorno general y evitar operaciones de division exhaustivas, y teniendo en cuenta la capacidad
del campo de vision del sensor, se definen 3 valores linguısticos para cada variable: Cerca, que
representa todas las profundidades de los objetos cercanos al sensor y en donde el sistema con-
sidera un peligro de colision alto y ejecuta giros pronunciados, Medio, aquellas profundidades
de los objetos que no estan ni muy cerca ni muy lejanos al sensor en donde el sistema considera
un peligro de colision medio y ejecuta giros suaves, y Lejos, para indicar las profundidades
de aquellos objetos que se encuentran lejos del sensor y en donde el sistema considera un en-
torno libre de colisiones y puede ejecutar giros muy leves o continuar la navegacion en lınea
recta. Estos valores linguısticos proporcionan un conocimiento mas entendible para el operador
o supervisor humano al representarse con terminos cotidianos, por ejemplo, que los objetos del
lado izquierdo estan a una distancia Cerca o Medio o Lejos, dejando las medidas exactas al
computador el cual procesara la informacion para el calculo de la direccion de giro. Para las
tres variables de entrada se consideran rangos iguales, ya que se busca obtener el promedio de
proximidad por region de manera equitativa.
Utilizando las librerıas de OpenNI se tiene que cada pixel de la imagen de profundidad,
cuyos elementos son de 16 bits, representa unidades fısicas de milımetros. En la Tabla 4.1 se
presenta la relacion entre la distancia representada en metros, el valor de profundidad de 8 bits
Capıtulo 4. Sistema propuesto 57
y el valor de profundidad de 16 bits; estos valores se utilizan para obtener una relacion entre
cualquier valor de profundidad de 8 bits (teniendo en cuenta que depende del valor maximo de
profundidad de cada imagen) y su correspondiente distancia en metros mediante la conversion
desde datos de 16 bits.
Tabla 4.1. Resultados de medicion distancia/profundidad.
Distancia en metros Profundidad 8 bits Profundidad 16 bits
0.8 54 865
1.2 80 1287
1.7 113 1814
2.1 137 2194
2.6 180 2893
3 212 3406
3.4 245 3952
Otro aspecto a considerar para la definicion de los rangos es el tipo de funcion de membresıa
que se utiliza. En este sistema de navegacion difusa, para cada variable de entrada, los valores
extremos cercanos a 0 y cercanos a 255 se definen de tal forma que la funcion no deje que el valor
de pertenencia disminuya, dando como resultado giros pronunciados o navegacion en lınea recta
(en el caso de que los objetos en las 3 direcciones esten muy lejanos). Para estos valores externos
se emplea la funcion de membresıa de tipo Trapezoidal. Para los valores intermedios se utiliza la
funcion Triangular, ya que los giros no deben ser tan pronunciados y se debe tener un punto me-
dio donde permita una salida constante. Las funciones trapezoidal y triangular, como se definen
en el Capıtulo 2, no presentan operaciones complejas como es el caso de la funcion Gaussiana y
la funcion campana generalizada, la cuales se expresan utilizando operaciones de exponenciacion
y potenciacion y que permiten generar movimientos mas suaves mediante salidas fluidas o fun-
ciones no lineales [23]. Dichas funciones aumentan los recursos para la posterior implementacion
a la cual se orienta este trabajo, de igual forma se pretende seguir una arquitectura reactiva
por lo cual se busca omitir la menor cantidad calculos y conservar la suficiente informacion pa-
ra la toma de decisiones, lo cual se obtiene empleando las funciones triangulares y trapezoidales.
El grado de membresıa para cada valor x, es decir, el grado en que el valor x pertenece a un
Capıtulo 4. Sistema propuesto 58
conjunto A, se define evaluando x sobre su correspondiente funcion de membresıa, este paso se
conoce como fusificacion. En la Figura 4.12 se muestra un ejemplo de fusificacion donde x =1.6
se evalua en una funcion de membresıa (en este caso de tipo triangular) obteniendo ası un grado
de pertenencia µ =0.4.
0 0.4 0.8 1.2 1.6 2 2.4 2.8 3.2 3.6 4 4.4 4.8 50
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Universo de discurso X
Gra
do d
e m
ebre
sía
(1.6 , 0.4)
Figura 4.12. Ejemplo de fusificacion.
La Figura 4.13 muestra la grafica de las funciones de membresıa para las variables de entrada
Izquierdo, Frontal y Derecho. En la Tabla 4.2 se presentan los rangos de cada valor linguıstico.
0 50 100 150 200 250
0
0.2
0.4
0.6
0.8
1
Frontal
Gra
do d
e m
embr
esía
Cerca Medio Lejos
Figura 4.13. Funciones de membresıa para variables de entrada.
Capıtulo 4. Sistema propuesto 59
Tabla 4.2. Rangos y funciones de membresıa correspondientes a cada valor linguıstico.
Valor linguıstico Funcion de membresıa Rangos de profundidad
Cerca Trapezoidal [0,0,25,120]
Medio Triangular [40,120,200]
Lejos Trapezoidal [120,215,255,255]
Los rangos se definen separando las profundidades en cercanas, distancias medias y lejanas,
al mismo tiempo se considera un grado de solapamiento entre las funciones. En un sistema de
control difuso, la obtencion de los rangos requiere una base de conocimientos adquiridos me-
diante los conocimientos de un experto en el sistema de control. En esta aplicacion, los rangos
se definen al efectuar una serie de experimentos generando una base de conocimientos, donde
se van adquiriendo las distancias de separacion de profundidades y el solapamiento entre fun-
ciones. Una vez que se obtiene la base de conocimientos, los rangos se van ajustando conforme
a los resultados que permitan la ejecucion de giros suaves, evitar obstaculos imprevistos, una
tolerancia a ruido y al mismo tiempo tener una diferencia entre las profundidades cercanas,
intermedias y lejanas. Cada uno de los rangos son los parametros de una funcion determinada,
ya sea triangular o trapezoidal, y se definen dentro del universo de discurso de las profundidades
de la imagen que va desde la profundidad 0 a 255.
Al tener definidos los rangos y funciones de membresıa para las variables de entrada, se pro-
cede a indicar los rangos para la variable de salida. Como se describe en la subseccion anterior,
el tipo de sistema de inferencia a utilizar es Sugeno, en el cual las variables de salida no pasan
por el proceso de defusificacion, por lo tanto las funciones de membresıa se definen ya sea como
funcion lineal o como una constante.
La variable de salida se divide en 7 variables linguısticas para interpretar que tan pronuncia-
do es el giro para navegar: MuyPositivo, Positivo, PocoPositivo, Cero, PocoNegativo, Negativo,
MuyNegativo. Por ejemplo, si se tiene una profundidad que indica que los objetos estan muy cer-
canos, el giro debe de ser mas pronunciado ya sea MuyPositivo o MuyNegativo. Si los objetos
estan a una distancia media, el giro es mas suave girando hacia Positivo o Negativo. Si se tiene
la region frontal con pocas probabilidades de colision y alguna de las regiones laterales tambien
se encuentra segura, entonces se plantea ejecutar un pequeno giro mediante PocoPositivo o
PocoNegativo, para ası tratar de mantener la vista de las regiones mas seguras. Para seguir
Capıtulo 4. Sistema propuesto 60
una lınea recta, la salida deseada es no ejecutar giro, es decir, angulo Cero. La funcion para
cada variable linguıstica se define mediante la Ecuacion 4.7.
Si = Ai ∗ x+Bi ∗ y + Ci ∗ z +Di (4.7)
Donde:
Si es la variable de salida para cada valor linguıstico i.
Ai, Bi, Ci, Di son valores constantes para cada valor linguıstico i.
x, y, z son las variables de entrada respectivamente.
Para evitar un comportamiento complejo y utilizar una notacion mas compacta y aun efi-
ciente se utiliza un sistema Sugeno de orden cero [23], donde Ai = Bi = Ci = 0, por lo tanto,
solamente se define un valor para la constante Di. Para cada valor linguıstico, basandose en
[6, 40], se define una constante de la siguiente forma:
D1 = 90, para el valor linguıstico MuyPositivo.
D2 = 60, para el valor linguıstico Positivo.
D3 = 30, para el valor linguıstico PocoPositivo.
D4 = 0, para el valor linguıstico Cero.
D5 = −30, para el valor linguıstico PocoNegativo.
D6 = −60, para el valor linguıstico Negativo.
D7 = −90, para el valor linguıstico MuyNegativo.
El sistema Sugeno de orden cero puede ser visto como un caso especial del sistema Mamdani
con funciones singleton o un consecuente pre-defusificado [23], sin embargo, la aplicacion de
la herramienta Matlab R© definida previamente por el proyecto, facilita la implementacion del
sistema de inferencia Sugeno.
Teniendo en cuenta las definiciones de las variables de entrada ası como sus valores linguısti-
cos, el proceso siguiente, es utilizar estos valores y evaluar una serie de reglas para obtener
el valor de salida. En la siguiente subseccion se define el conjunto de reglas del sistema de
navegacion difusa.
Capıtulo 4. Sistema propuesto 61
4.6.3. Conjunto de reglas
Un conjunto de reglas en logica difusa, permite formular sentencias condicionales para evaluar
cada valor y variable linguıstica y ası obtener un valor de salida. Para definir el numero de re-
glas, se tiene en cuenta el numero de permutaciones de los valores linguısticos ( Cerca, Medio y
Lejos) con respecto al orden dado por las variables de entrada (Izquierda, Centro y Derecha)
dando un total de 27 reglas.
Cada una de las reglas tiene la forma descrita en la Ecuacion 4.8.
si x es A entonces y es B (4.8)
Donde:
A y B son los valores linguısticos definidos por los conjuntos difusos del universo de
discurso X y Y , respectivamente.
La parte de si x es A es llamada antecedente o premisa, mientras que y es B es llamada con-
secuente o conclusion [23]. Si se tienen reglas con multiples antecedentes, se utiliza un operador
difuso para obtener un solo numero que represente el resultado de la evaluacion del antecedente.
Por ejemplo, la Ecuacion 4.9 muestra 2 reglas, la primera es una regla donde los antece-
dentes se evaluan mediante el operador difuso AND y la segunda utiliza un operador OR. En
terminos de evaluacion de conjuntos difusos, el resultado de aplicar el operador AND equivale
a la operacion de interseccion y el aplicar el operador difuso OR corresponde a la union.
si x es Ai AND y es Bi entonces z es Ci
si x es Ai OR y es Bi entonces z es Ci
(4.9)
Las tablas de verdad de las operaciones AND y OR se muestran en la Tabla 4.3 y 4.4,
respectivamente.
Capıtulo 4. Sistema propuesto 62
Tabla 4.3. Tabla de verdad de la operacion logica AND.
x y x AND y
0 0 0
0 1 0
1 0 0
1 1 1
Tabla 4.4. Tabla de verdad de la operacion logica OR.
x y x OR y
0 0 0
0 1 1
1 0 1
1 1 1
En operaciones difusas, la representacion del operador AND es mediante el calculo del mıni-
mo (min) y el producto (prod), mientras que para el operador OR se utiliza la obtencion del
maximo (max ) y del producto probabilıstico (probor), este ultimo se define mediante la Ecua-
cion 4.10.
probor(x, y) = x+ y − x× y (4.10)
Por ejemplo, se suponen dos grados de membresıa µ1 =0.7 y µ2 =0.9. Aplicando el operador
AND se tienen dos formas para obtener el resultado:
min(µ1,µ2) = min(0.7,0.9)=0.7
prod(µ1,µ2) = 0.7 × 0.9 = 0.63
Aplicando el operador OR, se tienen dos opciones:
max(µ1,µ2) = max(0.7,0.9)=0.9
probor(µ1,µ2) = 0.7 + 0.9 − 0.7 × 0.9 = 0.97
Capıtulo 4. Sistema propuesto 63
Para la evaluacion de los antecedentes se aplica el operador difuso AND mediante el calculo
del producto ya que genera una salida mas especıfica, ademas, dicho operador retorna valores
mınimos, es decir, las profundidades de los objetos mas cercanos. Otro punto es que, conforme
a las tablas de verdad de cada operador, la evaluacion de cada senal de entrada debe considerar
que valores se desea tener, por ejemplo, si se tiene que en Izquierda hay un valor Cerca entonces
se establece que pueden existir diferentes profundidades con las otras direcciones (Derecha y
Frontal) pero para conocer exactamente que salida debe generar el sistema entonces se con-
sideran cada una de dichas profundidades evaluandose con el operador AND; es decir, con
este operador se asegurara cada salida con una diferente combinacion entre cada senal y sus
respectivos valores de profundidad. Para un trabajo a futuro, las reglas que se presentan pueden
ser modificadas para simplificacion y utilizar combinaciones entre operadores AND y OR, sin
embargo, en este trabajo se plantean todos los posibles valores de las 3 senales sin que represente
un cambio drastico en el tiempo de ejecucion (recordando que la evaluacion de cada regla se
realiza al mismo tiempo).
En los sistemas difusos tipo Sugeno, los valores que se obtienen del consecuente de cada una
de las reglas ya son valores numericos, por lo que no se necesita de una etapa de defusificacion.
Cada regla en el sistema Sugeno opera de la forma que se muestra en la Figura 4.14, donde cada
nivel de salida Vi de cada regla es ponderado por un peso Wi de la misma regla; dicho peso Wi
es el resultado de aplicar un operador difuso, en este caso AND, ver Pseudocodigo 5.
Izquierdo (x)
Frontal (y)
Fusificación de x
Fusificación de y AND
Vi =Ax+By+Cz+Di
Valores de entrada
Nivel de salida Peso de regla
F1(x)
F2(y)
Wi
Vi
Derecho (z) Fusificación de zF3(z)
Figura 4.14. Diagrama del sistema de inferencia Sugeno del control difuso.
La salida final del sistema es el promedio ponderado de todas las salidas de las reglas, el
cual se calcula mediante la Ecuacion 4.11.
Capıtulo 4. Sistema propuesto 64
Pseudocodigo 5 Sistema de control difuso
Entrada: Izquierda, Frontal, Derecha {Profundidad en cada lado}Salida: Giro {Angulo de giro en grados sexagesimales}1: F1(x), F2(y), F3(z) = Fusificacion para cada variable: Izquierda, Frontal y Derecha2: para todo Miembro i del conjunto de reglas hacer3: Wi = Operacion difusa AND segun lo indique la regla4: V i = Di5: fin para6: Giro = Ecuacion 4.11 {Promedio ponderado de todas las evaluaciones de cada regla}
Salida F inal =
N∑
i=1
Wi ∗ Vi
N∑
i=1
Wi
(4.11)
El diagrama a bloques del sistema de control difuso se muestra en la Figura 4.15, donde se
observa en primer lugar las variables de entrada Frontal, Izquierdo y Derecho, para despues
pasar al proceso de fusificacion utilizando el modulo base de conocimientos en donde se incluyen
todos los terminos de las particiones difusas tanto para variables de entrada como de salida. Las
variables de entrada fusificadas pasan al proceso de inferencia (sistema tipo Sugeno) basandose
en un conjunto de reglas difusas, retornando los valores de Grados que corresponden al angulo
de giro.
Frontal
Izquierdo
Derecho
Variables de entrada
Ángulo de giro
Variable de salida
Fusificación
Base de conocimiento
Inferencia tipo Sugeno
Base de reglas
(27 reglas)
Figura 4.15. Diagrama de bloques del sistema de navegacion reactiva difusa.
El sistema de navegacion reactiva difusa ejecuta el algoritmo que se especifica en el Pseu-
docodigo 6, al mismo tiempo, en la Figura 4.16 se presenta el diagrama general del sistema de
Capıtulo 4. Sistema propuesto 65
navegacion difusa, el cual comprende desde la obtencion de datos mediante el sensor Kinect,
pasando por el procesamiento dentro de un computador para finalmente generar un angulo de
giro. Este sistema esta orientado a una posterior implementacion en un robot movil, por ejem-
plo, una silla de ruedas para el apoyo al desplazamiento de personas discapacitadas.
Pseudocodigo 6 Sistema completo de navegacion reactiva difusa
Entrada: ImagenProfundidad {Datos de profundidad en 16 bits}Salida: Giro {Angulo de giro en grados sexagesimales}1: ImagenProfundidad8 = Transformacion de los datos de profundidad2: Ejecucion del algoritmo de reconstruccion morfologica para la eliminacion de partıculas
oscuras3: Frontal, Izquierda, Derecha = Extraccion de profundidad promedio4: Giro = Ejecucion del algoritmo que se presenta en el Pseudocodigo 5
Datos deprofundidad
Dirección de
giro
Implementación software del sistema
de navegación reactiva difusaSistemas externos a la
aplicación
Figura 4.16. Diagrama general del sistema de control difuso.
A continuacion se presentan las 27 reglas a utilizar para el control difuso. Las reglas difusas
son divididas en cuatro grupos dependiendo del objetivo en comun que busca cada conjunto: a)
reglas para la ejecucion giros pronunciados, b) reglas para la prediccion de colisiones, c) reglas
para el movimiento en lınea recta y d) reglas para giros basicos.
La Tabla 4.5, muestra las primeras 9 reglas del sistema en donde se considera la ejecucion
de giros pronunciados evitando colisionar con los obstaculos que surjan de manera imprevista
Capıtulo 4. Sistema propuesto 66
o que se encuentren a una distancia muy cercana con respecto al sensor, lo cual se interpreta
como un alto peligro de colision. Aun cuando se plantea evitar giros pronunciados, siguen sien-
do considerados para evitar colisiones con objetos con una aparicion repentina o en movimiento.
Tabla 4.5. Conjunto de reglas del sistema de control difuso: giros pronunciados.
SI ENTONCES
Regla Izquierda Frontal Derecha Angulo
1 Cerca Cerca Cerca MuyNegativo
2 Cerca Cerca Medio MuyPositivo
3 Cerca Cerca Lejos MuyPositivo
4 Medio Cerca Cerca MuyNegativo
5 Medio Cerca Medio MuyNegativo
6 Medio Cerca Lejos MuyPositivo
7 Lejos Cerca Cerca MuyNegativo
8 Lejos Cerca Medio MuyNegativo
9 Lejos Cerca Lejos MuyNegativo
Las reglas de la Tabla 4.6 le indican al sistema que debe ejecutar un leve giro hacia la di-
reccion con la menor cantidad de objetos cercanos, para ası, evitar una posible colision o para
reducir los giros pronunciados que puedan afectar al usuario.
Tabla 4.6. Conjunto de reglas del sistema de control difuso: reglas predictivas.
SI ENTONCES
Regla Izquierda Frontal Derecha Angulo
10 Cerca Medio Medio PocoPositivo
11 Medio Medio Cerca PocoNegativo
12 Medio Medio Lejos PocoPositivo
13 Lejos Medio Medio PocoNegativo
14 Lejos Medio Lejos PocoNegativo
15 Cerca Lejos Lejos PocoPositivo
16 Medio Lejos Lejos PocoPositivo
17 Lejos Lejos Cerca PocoNegativo
18 Lejos Lejos Medio PocoNegativo
Capıtulo 4. Sistema propuesto 67
En la Tabla 4.7 se presentan las reglas que retornan un angulo cero (no ejecutar giro), lo
cual significa que no existe un peligro de colision frontal y que las profundidades laterales no
permiten los giros por la cercanıa de los objetos en ellas.
Tabla 4.7. Conjunto de reglas del sistema de control difuso: movimiento en linea recta.
SI ENTONCES
Regla Izquierda Frontal Derecha Angulo
19 Cerca Medio Cerca Cero
20 Medio Medio Medio Cero
21 Cerca Lejos Cerca Cero
22 Cerca Lejos Medio Cero
23 Medio Lejos Cerca Cero
24 Medio Lejos Medio Cero
25 Lejos Lejos Lejos Cero
Las reglas que se presentan en la Tabla 4.8 consideran los casos donde se tiene un alto peligro
de colision en uno de los lados, ya sea izquierdo o derecho, y se tiene un espacio libre del lado
contrario.
Tabla 4.8. Conjunto de reglas del sistema de control difuso: giros basicos.
SI ENTONCES
Regla Izquierda Frontal Derecha Angulo
26 Cerca Medio Lejos Positivo
27 Lejos Medio Cerca Negativo
El numero de reglas que se presentan permiten simular la reaccion humana para la navega-
cion, lo que genera reacciones graduales desde no ejecutar giro hasta los movimientos bruscos
ante colisiones imprevistas o en movimiento. La disminucion del numero de reglas difusas impli-
carıa un aumento en el numero de casos con movimientos o giros bruscos, y una menor tolerancia
a las consideraciones de entrada del sensor. El conjunto de reglas presenta cada permutacion
entre cada senal de entrada, y se genera una salida para cada caso que se presente para tener un
sistema mas estable, al mismo tiempo, de generar giros mas suaves que conserve la seguridad del
Capıtulo 4. Sistema propuesto 68
operador. Sin embargo, se tiene en cuenta que para aplicaciones futuras y basandose en las 27
reglas propuestas, se puede realizar la simplificacion del conjunto de reglas difusas al combinar
operadores AND y OR.
Capıtulo 5
Resultados y Comparaciones
En este capıtulo se presentan los resultados de las pruebas realizadas con el sistema de navega-
cion reactiva difusa utilizando un conjunto de imagenes adquiridas mediante el sensor Kinect
para posteriormente mostrar las comparaciones con los trabajos descritos en el Estado de Arte.
Las pruebas del sistema se ejecutaron en dos diferentes entornos: domestico y en un labora-
torio de computo. El entorno domestico se compone de sillas, mesas, camas, roperos, personas,
cambios bruscos de luminosidad, objetos decorativos, cortinas, vidrios, espejos, y demas objetos
considerados obstaculos. El segundo entorno, un laboratorio de computo, se compone de sillas,
mesas, computadoras, luminosidad casi constante, ventiladores de techo, cortinas y paredes con
colores uniformes. En ambos casos, el sensor Kinect se encuentra a un angulo de inclinacion de
0◦ elevado a 1 metro.
Se aclara que el sistema de control difuso solo trabaja con las imagenes de profundidad,
utilizando las imagenes RGB para la visualizacion mas clara del ambiente. Se finaliza con la
descripcion de los resultados que se alcanzan con respecto a los objetivos especıficos y a los
alcances del proyecto.
5.1. Resultados generales
La aplicacion software del sistema de navegacion reactiva difusa se ejecuto en dos equipos de
computo diferentes, cuyas caracterısticas se presentan en la Tabla 5.1.
69
Capıtulo 5. Resultados y Comparaciones 70
Tabla 5.1. Caracterısticas de los equipos de computo.
Tipo equipo Marca Sistema operativo Procesador Velocidad procesador Memoria RAMLaptop Toshiba Satellite L855 Windows 7 Intel Core i7 2.30 GHz 8 GBPC DELL Vostro 420 Windows XP Intel Core 2 Duo 3.16 GHz 3 GB
En ambos equipos de computo se experimento con 1000 capturas hechas con el sensor Kinect
dentro de un laboratorio de computo. En la Tabla 5.2, en base a las 1000 muestras, se presentan
los tiempos de ejecucion promedio por cada proceso: a) captura o adquisicion de la imagen de
profundidad, b) transformacion de la imagen de profundidad, c) reconstruccion morfologica,
d) extraccion de profundidad promedio, e) control difuso y f) el tiempo total de ejecucion del
sistema de navegacion reactiva.
Tabla 5.2. Tiempos de ejecucion promedio en milisegundos (ms).
Equipo Captura Transformacion Reconstruccion Extraccion Logica difusa TotalLaptop 10.4 ms 3.4 ms 4.1 ms 5.4 ms 15.6 ms 38.9 msPC 6.4 ms 6.7 ms 4.8 ms 6.7 ms 18.9 ms 43.5 ms
Se considera que la frecuencia de operacion por procesamiento del hardware del sensor Kinect
por cada captura es de 30 Hz [4, 18, 20], lo cual significa un aproximado a 33.33 ms1. El sistema
de navegacion reactiva difusa ejecuta sus operaciones en un rango de entre 38.9 ms y 43.5 ms,
considerando los siguientes puntos por proceso:
El calculo de las salidas del sistema de control difuso, ademas de ser el proceso principal
ya que obtiene los angulos de giro, genera un tiempo entre los 15.6 ms y 18.9 ms superando
el tiempo de los demas procesos indicando su mayor consumo de recursos.
Considerando los tiempos de ejecucion promedio por cada proceso, se identifican los pro-
cesos con el menor tiempo promedio para cada equipo de computo. En el caso del equipo
Laptop, el proceso de transformacion de datos de profundidad consume el menor tiempo
dentro de la ejecucion total con un tiempo promedio de 3.4 ms. En el equipo de escritorio,
1Aplicando la formula 1
Hz× 1000
Capıtulo 5. Resultados y Comparaciones 71
el proceso de reconstruccion morfologica genera el menor tiempo en comparacion con los
demas procesos, con un tiempo promedio de 4.8 ms.
El proceso de transformacion genera 3.3 ms mas en la maquina de escritorio (casi el
doble del tiempo de ejecucion) muy similar al comportamiento del proceso de captura
(diferencia de 4 ms), mientras que la reconstruccion morfologica difiere a solo 0.7 ms entre
cada equipo.
Considerando las caracterısticas del equipo laptop, se genera un menor tiempo de ejecucion
en comparacion con el equipo de escritorio; no obstante, la velocidad del procesador mayor por
parte de la maquina de escritorio evita la generacion de diferencias mayores entre los tiempos
de procesamiento, oscilando una diferencia de 4.6 ms. Dentro de dichas capturas, el sistema
acerto en las decisiones de direccion de giro evitando obstaculos en un 85.7%.
En la siguiente seccion se presentan pruebas realizadas con diferentes capturas, tanto en un
ambiente domestico como en un laboratorio de computo. En cada prueba se presenta, mediante
la interfaz de usuario, la decision del sistema en cuanto a la direccion de giro, el comportamiento
del sistema difuso y la imagen de profundidad del ambiente.
Para la realizacion de las pruebas, el sensor Kinect fue montado en una plataforma movil
a un metro de elevacion del suelo con un angulo de inclinacion vertical de 0 grados. Dicha
plataforma fue manipulada por un operador humano quien seguıa las instrucciones dadas por
las salidas del sistema de navegacion reactiva difusa. La aplicacion software se ejecuta en el
equipo Laptop Toshiba, cuyos resultados son visualizados mediante la interfaz grafica que se
describe en el Apendice A, siguiendo las instrucciones que se presentan en el Apendice B e
implementando el codigo fuente descrito en el Apendice C.
5.2. Resultados por capturas
A continuacion se presentan los resultados de las pruebas del programa ante diversas situaciones
en el ambiente, donde se tiene en consideracion que tanto afecta al sistema la luminosidad,
ya sea artificial o natural, que tipo de salidas genera cuando se presentan distintos tipos de
profundidades y cual es la reaccion ante movimientos, por lo que se resumen en 8 casos:
El comportamiento del sistema con poca o mucha luminosidad artificial.
El comportamiento del sistema con poca o mucha luminosidad natural.
Capıtulo 5. Resultados y Comparaciones 72
El comportamiento del sistema con profundidades lejanas.
El comportamiento del sistema con profundidades medias.
El comportamiento del sistema con profundidades cercanas.
El comportamiento del sistema con profundidades tan cercanas que generan datos desco-
nocidos.
El comportamiento del sistema con profundidades combinadas.
El comportamiento del sistema con objetos con leve movimientos.
En cada una de las imagenes se muestran la imagen RGB y de profundidad que se obtiene
del entorno, la salida del sistema (los grados sexagesimales de giro) y el comportamiento del
conjunto de reglas del sistema difuso. Se presentan 6 resultados para el ambiente domestico y 5
resultados para un laboratorio de computo.
El primer resultado se observa en la Figura 5.1, se tiene una habitacion con poca lumino-
sidad, sin embargo, esto no representa un problema para el sensor, ya que aun ası identifica
las profundidades en el ambiente. La Figura 5.1a muestra la imagen en RGB de la habitacion,
notese que se dificulta la visibilidad y deteccion de objetos, caso contrario en la Figura 5.1b
donde se observan los objetos por profundidades sin importar cuanta luz exista en el ambiente.
El sistema ejecuta un giro hacia la derecha de 21.53◦ (ver Figura 5.1c) ya que el comportamiento
del sistema difuso (ver Figura 5.1d) indica que del lado izquierdo se tienen profundidades mas
cercanas en comparacion con las profundidades del lado derecho y frontal.
La Figura 5.2 presenta una habitacion con una mayor cantidad de luminosidad (en este caso
es luz artificial). La Figura 5.2a muestra la imagen en RGB, donde gracias a la mayor cantidad
de luminosidad, es posible diferir entre cada objeto de la habitacion, sin embargo, la Figura 5.2b
presenta la imagen de profundidad en la cual aun con luz artificial, los objetos pueden ser defini-
dos. El comportamiento de las reglas (ver Figura 5.2d) indica que las distancias en los tres lados
no caen totalmente dentro del rango de distancias cercanas, por lo cual son medianamente segu-
ros; sin embargo, la profundidad promedio del lado derecho es la menor en comparacion con las
partes izquierda y frontal, por lo cual el giro se torna hacia la izquierda a -2.17◦ (ver Figura 5.2c).
Capıtulo 5. Resultados y Comparaciones 73
(a) Imagen RGB. (b) Imagen de profundidad.
(c) Grafica de la direccion de giro.
(d) Grafica de reglas del control difuso.
Figura 5.1. Imagenes obtenidas del sensor Kinect en un ambiente domestico: habitacion conpoca luminosidad.
Capıtulo 5. Resultados y Comparaciones 74
(a) Imagen RGB. (b) Imagen de profundidad.
(c) Grafica de la direccion de giro.
(d) Grafica de reglas del control difuso.
Figura 5.2. Imagenes obtenidas del sensor Kinect en un ambiente domestico: habitacion conluminosidad artificial.
Capıtulo 5. Resultados y Comparaciones 75
En la Figura 5.3 se presenta el caso donde se tienen profundidades lejanas. La Figura 5.3a
muestra la imagen en RGB de este caso, donde se observa una pared con algunos objetos y
un pequeno ropero. La Figura 5.3b presenta la imagen de profundidad donde se observa cierta
claridad en la imagen, esto es, porque las distancias son consideradas lejanas y tienden al valor
de 255 (color blanco).
En la Figura 5.3d se observa que el sistema difuso tiene valores en su mayorıa lejanos, por lo
cual supone que el espacio esta libre de obstaculos. Se entiende que para estos casos, el sistema
no ejecutara giros violentos o medianamente ligeros, sino que procura seguir una lınea recta,
porque considera un entorno seguro.
Hasta este momento, el sistema no considera peligro de colision, sin embargo, en la par-
te derecha se detectan profundidades menores a las demas partes (Derecho = 189 <Izquierda
= 211 <Frontal = 219), es por eso que para evitar alguna futura colision, el sistema ejecuta un
giro leve giro de -4.79◦ (ver Figura 5.3c). Este giro comenzara a ser mas pronunciado conforme
los obstaculos sean mas cercanos.
En la Figura 5.4 se observa un espacio donde existe iluminacion natural moderada. En la
Figura 5.4a se observa que la luz natural no perturba la distincion de los objetos en el entorno.
En la Figura 5.4b se identifica un objeto a una profundidad media entre la parte izquierda
y derecha; sin embargo, en lugares con luminosidad mayor y en su mayorıa muy lejanos (debi-
do a las dimensiones del ambiente) se observan pixeles con profundidad 0 es decir, desconocidos.
El comportamiento del sistema es girar hacia la izquierda (recordando que los espacios desco-
nocidos no son tomados en cuenta por ocupar un espacio menor a un determinado porcentaje)
a un angulo de -24◦ (ver Figura 5.4c). El angulo sigue sin ser muy pronunciado, ya que las
profundidades oscilan entre medias y cercanas; es decir, los obstaculos no se encuentran muy
cercanos, como se puede apreciar en el comportamiento de las reglas difusas en la Figura 5.4d.
Capıtulo 5. Resultados y Comparaciones 76
(a) Imagen RGB. (b) Imagen de profundidad.
(c) Grafica de la direccion de giro.
(d) Grafica de reglas del control difuso.
Figura 5.3. Imagenes obtenidas del sensor Kinect en un ambiente domestico: pared y otrosobjetos lejanos.
Capıtulo 5. Resultados y Comparaciones 77
(a) Imagen RGB. (b) Imagen de profundidad.
(c) Grafica de la direccion de giro.
(d) Grafica de reglas del control difuso.
Figura 5.4. Imagenes obtenidas del sensor Kinect en un ambiente domestico: espacio con lumi-nosidad natural menor.
Capıtulo 5. Resultados y Comparaciones 78
La Figura 5.5 presenta el comportamiento del sistema en un ambiente con obstaculos en
rangos de profundidades entre medias y lejanas. En este caso, la iluminacion natural es mayor
que la figura anterior, sin embargo, el sensor aun puede identificar los obstaculos en el espacio.
La imagen en RGB de la Figura 5.5a sigue presentando los objetos aun con luz natural mas
intensa, sin embargo, no retorna la informacion de profundidad. En el caso de la imagen de
profundidad de la Figura 5.5b, se distinguen las profundidades del objeto con ciertas partes
desconocidas, esto a causa de los materiales del piso, dimensiones o por la misma iluminacion.
El sistema ejecuta un giro a la derecha de 25.37◦ (ver Figura 5.5c) debido a que en el lado
izquierdo y central se encuentran profundidades promedios de 116 y 159 respectivamente, y
en la parte derecha se tiene una profundidad promedio mayor de 187, como se observa en el
comportamiento de las reglas difusas de la Figura 5.5d.
La Figura 5.6 muestra un caso donde las profundidades van desde los rangos cercanos a
los lejanos en un ambiente en donde un objeto se va acercando poco a poco al sensor (leves
movimientos). La Figura 5.6a presenta la imagen 2D del entorno mientras que la Figura 5.6b
muestra la imagen de profundidad donde se observa que por las dimensiones del cuarto, algunos
pixeles retornan valores desconocidos. El sensor adquiere la imagen de profundidad para que
ası el sistema procese la informacion y reaccione casi al instante para evadir a la persona. Es
importante recalcar que las partes desconocidas no son tomadas en cuenta, ya que, a pesar de
abarcar un area casi uniforme, no representa un objeto de peligro por no abarcar una mayor
area dentro de la region. El sistema retorna un giro hacia la izquierda de -47.3◦ (ver Figura 5.6c)
ya que se observa una profundidad promedio mayor en la parte izquierda de 193 (ver Figura
5.6d).
En la Figura 5.7 se presentan los resultados de los experimentos realizados en un laboratorio
de computo. La imagen RGB de la Figura 5.7a se observa con mayor detalle los objetos dentro
del laboratorio sin importar la distancia a la que se encuentren. Sin embargo, en la Figura 5.7b,
la imagen de profundidad retorna con mas claridad los valores de las profundidades cercanas.
Notese que algunos materiales dentro del laboratorio no permiten el rebote de los rayos del
sensor lo cual produce profundidad cero identificandose como datos desconocidos. El sistema
omitira estos datos al momento de capturar la profundidad promedio por seccion. El resultado
segun el comportamiento del sistema difuso (ver Figura 5.7c), son profundidades en su mayorıa
cercanas y que derivan un peligro de colision, por lo cual se ejecuta un giro hacia la izquierda
de -90◦ (ver Figura 5.7d).
Capıtulo 5. Resultados y Comparaciones 79
(a) Imagen RGB. (b) Imagen de profundidad.
(c) Grafica de la direccion de giro.
(d) Grafica de reglas del control difuso.
Figura 5.5. Imagenes obtenidas del sensor Kinect en un ambiente domestico: espacio con lumi-nosidad natural moderada.
Capıtulo 5. Resultados y Comparaciones 80
(a) Imagen RGB. (b) Imagen de profundidad.
(c) Grafica de la direccion de giro.
(d) Grafica de reglas del control difuso.
Figura 5.6. Imagenes obtenidas del sensor Kinect en un ambiente domestico: espacio con ligerosmovimientos.
Capıtulo 5. Resultados y Comparaciones 81
(a) Imagen RGB. (b) Imagen de profundidad.
(c) Grafica de la direccion de giro.
(d) Grafica de reglas del control difuso.
Figura 5.7. Imagenes obtenidas del sensor Kinect en un laboratorio de computo: tratamiento deobjetos cercanos y lejanos.
Capıtulo 5. Resultados y Comparaciones 82
Hasta este momento, la mayorıa de los datos de profundidad que se han tratado pertenecen
a los rangos de profundidades medias y lejanas, sin embargo en la reciente Figura 5.7 se presenta
la manera en que se tratan los datos de profundidad cercanos.
En las siguientes figuras, se muestran los casos con profundidades tan cercanas que llegan a
retornar datos desconocidos, por lo que el sistema, al abarcar estos datos un gran area (mayor
a 2
3por region), decide tenerlos en cuenta para el calculo de la profundidad promedio.
En la Figura 5.8 se muestra el comportamiento del sistema al tratar con datos de profun-
didad cercanos, dando como resultado la ejecucion de giros mas pronunciados. La Figura 5.8a
muestra con mas claridad la situacion de prueba, donde se observa un objeto muy cercano. La
imagen de profundidad de la Figura 5.8b no muestra una clara percepcion del ambiente, ya que
se observa una gran superficie en tono gris oscuro (profundidades cercanas) y al mismo tiempo,
datos desconocidos por tratarse de distancias muy lejanas.
Las reglas difusas del sistema (ver Figura 5.8d) encuentran un objeto con profundidades
cercanas del lado derecho y que cuyas dimensiones tambien obstaculizan con profundidades
cercanas la parte frontal, por lo cual, ejecuta un giro pronunciado de -90◦ a la izquierda, ver
Figura 5.8c.
En la Figura 5.9 se observa el caso donde el sistema de navegacion se encuentra con profundi-
dades desconocidos en la imagen de profundidad. El sistema no omite estos datos desconocidos
porque pueden ser datos significativos ya que estan abarcando una gran parte del espacio por
region y dadas las propiedades del mismo sensor, el cual retorna datos desconocidos ante objetos
muy cercanos, se sugiere el caso de que el sistema se encuentre ante un peligro de colision.
Si bien en la imagen de profundidad (ver Figura 5.9b) la gran cantidad de datos desconocidos
(pixeles en color negro) no dejan en claro que es lo que se observa en el entorno, la imagen RGB
(ver Figura 5.9a) permite una clara visualizacion de los objetos que el sensor esta observando,
en este caso, una pared muy cercana.
El resultado del comportamiento difuso (ver Figura 5.9d) son profundidades cercanas a 0
en la parte frontal y derecha y profundidades medias del lado izquierdo, ejecutando un giro
pronunciado de -90◦ (ver Figura 5.9c).
Capıtulo 5. Resultados y Comparaciones 83
(a) Imagen RGB. (b) Imagen de profundidad.
(c) Grafica de la direccion de giro.
(d) Grafica de reglas del control difuso.
Figura 5.8. Imagenes obtenidas del sensor Kinect en un laboratorio de computo: ejecucion conuna pared cercana.
Capıtulo 5. Resultados y Comparaciones 84
(a) Imagen RGB. (b) Imagen de profundidad.
(c) Grafica de la direccion de giro.
(d) Grafica de reglas del control difuso.
Figura 5.9. Imagenes obtenidas del sensor Kinect en un laboratorio de computo: ejecucion conuna pared muy cercana.
Capıtulo 5. Resultados y Comparaciones 85
La Figura 5.10 muestra la situacion de navegar en un pasillo, es decir, donde hay objetos
tanto a la derecha como a la izquierda, mientras que la parte frontal se mantiene libre de objetos.
El sistema, para este tipo de casos, procura seguir en lınea recta dando leves giros para evitar
futuras colisiones.Las Figuras 5.10a y 5.10b presentan las imagenes en RGB y de profundidad
respectivamente.
En este ejemplo, las profundidades no son cercanas, por lo que el giro no es tan pronunciado;
sin embargo, en las reglas difusas (ver Figura 5.10d) se observa que en la parte izquierda existe
una profundidad igual a 97.7 que es menor a 123, la profundidad lado derecho. Esto ultimo da
como resultado la ejecucion de un leve giro hacia la derecha de 1.88◦, ver Figura 5.10c. Este
giro no es pronunciado debido a que la parte frontal permanece libre de obstaculos.
En la Figura 5.11 se muestra una vista frontal del laboratorio de computo, donde por las
dimensiones del mismo, existen datos de profundidad desconocidos o con valor igual a 0. Exis-
ten diferentes puntos desconocidos (dimensiones fuera del campo de vision del sensor) que son
omitidos por el sistema ya que se suponen no formar parte de una superficie por no tener un
area mayor a 2
3partes de la imagen de profundidad.
La Figura 5.11a presenta la imagen RGB donde se distinguen las computadores y demas
objetos dentro del laboratorio. Sin embargo, en la Figura 5.11b se muestra una imagen de pro-
fundidad donde no se distinguen claramente las formas de los objetos dentro de la escena, ya
que una gran cantidad esta fuera del campo de vision.
El sistema solo ejecuta un giro hacia la izquierda a -20.08◦ (ver Figura 5.11c) ya que las
profundidades de la imagen estan entre los rangos de distancias medias y cercanas. De igual
manera, en el comportamiento de las reglas (ver Figura 5.11d) se aprecia la prioridad de giro a
la izquierda tratando de generar la media vuelta de la superficie movil.
Capıtulo 5. Resultados y Comparaciones 86
(a) Imagen RGB. (b) Imagen de profundidad.
(c) Grafica de la direccion de giro.
(d) Grafica de reglas del control difuso.
Figura 5.10. Imagenes obtenidas del sensor Kinect en un laboratorio de computo: caso del pasillo.
Capıtulo 5. Resultados y Comparaciones 87
(a) Imagen RGB. (b) Imagen de profundidad.
(c) Grafica de la direccion de giro.
(d) Grafica de reglas del control difuso.
Figura 5.11. Imagenes obtenidas del sensor Kinect en un laboratorio de computo: vista dellaboratorio de computo.
Capıtulo 5. Resultados y Comparaciones 88
5.3. Resultados por objetivos
A partir de los objetivos especıficos descritos en la Seccion 1.3.2, se describen los resultados de
como se consigue cumplir con cada objetivo.
Se realizaron diferentes capturas con el sensor, para identificar que datos generaba. Cada
captura, se realizo en superficies planas, para buscar la uniformidad y entonces para cada
caso, se identifico el pixel de menor y mayor tamano, donde cada pixel representa unidades
fısicas expresadas en milımetros.
Se revisaron los trabajos que utilizan el sensor Kinect, y se identifican 2 formatos para
las imagenes de rango del sensor Kinect: nube de puntos e imagenes de profundidad. Se
identificaron las librerıas y herramientas mas utilizadas para ambos formatos para conocer
su comportamiento. Se ejecutan pruebas tanto con imagenes de profundidad como con
nubes de puntos para conocer su comportamiento y el tipo de informacion que brindan,
mediante las librerıas PCL: Point Cloud [43] y OpenNI [34]. En base a las pruebas, se
generan nubes de puntos en archivos con extension .PCD que abarcan un espacio en disco
mayor a las imagenes de profundidad (en promedio, alrededor de 1MB por captura). El
tiempo de procesamiento entre ambos formatos puede diferir dependiendo del hardware y
software que se tiene; sin embargo, las nubes de puntos sugieren un promedio de tiempo
de procesamiento de 30 segundos por captura o basandose en datos experimentales de [44]
oscilan entre los 13.6 segundos y 41.1 segundos. En comparacion con consumo de recursos
referente al espacio y los algoritmos que en su mayorıa utilizan, las nubes de puntos no
van acorde a la arquitectura reactiva, a diferencia de las imagenes de profundidad, es por
esto que se decide trabajar con el formato de imagenes de profundidad sin olvidar que se
pueden realizar determinadas transformaciones para pasar de un formato a otro.
Despues de una revision al estado de arte, se comienza con la definicion del conjunto de
reglas para el control difuso. Cada trabajo, a pesar de trabajar con diferentes sensores de
proximidad, tienen en comun la busqueda de los espacios seguros o con menor probabilidad
de colision. Cada regla esta definida conforme a experimentos con los datos de profundidad
y la logica de evadir obstaculos en la escena. Los rangos que se utilizan para cada variable
de entrada y de salida se establecen conforme a los resultados que se obtienen en las
diferentes pruebas ejecutadas en ambientes tanto domesticos como en el laboratorio de
computo.
Capıtulo 5. Resultados y Comparaciones 89
Se realizan pruebas de escritorio con datos de ejemplo para cada sistema de inferencia,
tanto Mamdani como Sugeno, con el fin de conocer el comportamiento de cada sistema y
sus componentes. Se realiza una version del sistema de navegacion utilizando el sistema
de inferencia Mamdani, con diferentes combinaciones de metodos de agregacion y defusi-
ficacion para tener un conocimiento comparativo entre ambos sistemas de inferencia. Sin
embargo, la finalidad del sistema es generar un modulo que pueda utilizarse en alguna
plataforma movil (implementacion hardware) y, en base a la revision de trabajos de com-
paracion entre ambos sistemas, libros y manuales, se decide implementar el sistema de
inferencia Sugeno.
Se desarrolla un sistema de navegacion reactiva difusa mediante la herramienta de pro-
gramacion de Matlab 2012a utilizando Image Processing Toolbox, para el procesamiento
de imagenes de profundidad, y Fuzzy Logic Toolbox, para el modulo de control difuso.
Se ejecutan pruebas del sistema de navegacion reactiva difusa, en ambientes domesticos
y de laboratorio de computo, adquiriendo datos de profundidad de grabaciones previas y
en conexion directa con el sensor Kinect. En base a resultados, se realizan modificaciones
principalmente en el modulo difuso y finalmente se selecciona la version final, que cumple
con los objetivos de navegacion reactiva difusa en ambos ambientes.
5.4. Resultados por alcances
En base a los alcances mencionados en la Seccion 1.5, se describe conforme a resultados, lo que
se obtiene del sistema de navegacion para conocer los alcances cumplidos por el mismo.
Se tiene un sistema de navegacion que ejecuta las decisiones de direccion de giro de manera
reactiva en base a los datos de profundidad que se obtienen del sensor Kinect, ademas,
dichas decisiones son resultados del sistema de control difuso que contiene: a) un sistema
de inferencia tipo Sugeno, b) 3 variables de entrada y 1 variable de salida, c) un total
de 27 reglas, d) utiliza el operador difuso AND para evaluacion de antecedentes y el
promedio ponderado para la obtencion del resultado numerico.
Se tiene una interfaz grafica para la ejecucion en tiempo real que permite visualizar la
imagen de profundidad adquirida por el sensor Kinect y la direccion del giro hacia donde se
considera una region con menos probabilidad de colision. Esta interfaz permite especificar
el porcentaje para diferenciar la cantidad de datos de profundidad desconocidos permitidos
Capıtulo 5. Resultados y Comparaciones 90
u omitidos en el procesamiento, de igual forma, tiene una parte de la seleccion para la
adquisicion de los datos de entrada entre: a) dos grabaciones adquiridas con el sensor
Kinect y b) la adquisicion de datos de profundidad directamente del sensor Kinect. La
descripcion mas detallada de dicha interfaz se especifica en el Apendice A, ademas, en el
Apendice B se describe el proceso a seguir para la ejecucion del programa.
Se presentan los resultados de un sistema de control aplicando la logica difusa. La imple-
mentacion de otro tipo de sistemas de control, por ejemplo: control PID (proporcional,
integral y derivativo) y control adaptativo, estan fuera de los alcances planteados original-
mente en el proyecto; sin embargo, se hace mencion de las principales ventajas del control
difuso entre las cuales se encuentran: menores tiempos de respuesta, salidas que admiten
variaciones en el ambiente, implementa lenguaje comun al diseno de sistema de control,
no se requiere un modelo especıfico del robot movil por lo que se facilita el proceso de
diseno del controlador, y ademas, no requiere diferentes calculos complejos como multipli-
caciones, sumas, restas, integraciones y derivaciones, que en implementaciones hardware
requiere de gran cantidad de recursos tantos temporales como espaciales [45–48].
5.5. Comparaciones
La Tabla 5.3 presenta las comparaciones entre los trabajos relacionados con el proyecto. Se
observa que el trabajo de [25] considera un sistema de control difuso cuyos rangos de membresıa
permiten giros suaves del robot; sin embargo, las decisiones de direccion de giro estan basadas
en la informacion que se extrae del procesamiento de una imagen en 2D, que permite adquirir el
angulo de las lıneas del camino que se capturo con la camara, y omiten los datos de proximidad
de los objetos en la escena, caso contrario del sistema de este trabajo el cual contempla imagenes
de profundidad.
En los trabajos de [5, 27–29] se considera la implementacion de una arquitectura reactiva
a base de comportamientos, lo cual permite la ejecucion de mas tareas indicadas como com-
portamientos; sin embargo, omiten cierta informacion del ambiente al agrupar la informacion
por sensores y obtienen un reducido campo de vision ya que generan un vector numerico en 2D
mientras que con el sensor Kinect se retorna una matriz de m× n donde cada elemento indica
la proximidad de un objeto con respecto al sensor (informacion 21
2).
Capıtulo 5. Resultados y Comparaciones 91
Tabla 5.3. Comparacion entre los trabajos relacionados.TRABAJOS VENTAJAS DESVENTAJAS SENSOR ROBOT/PLATAFORMA
[25] Comunicacion inalambrica Procesamiento en 2D Mini camara JMK Robot movil a escala
[26]
Comunicacion inalambrica Reducido campo de vision
Sensores ultrasonicos KheperaSistema en ambientes externos No deteccion de formas ni areas
Control de orientacion y velocidad
[27] Arquitectura basada en comportamientosReducido campo de vision
Sensores ultrasonicos P-METINOmision de informacion de la escena
[5]
Arquitectura basada en comportamientos Reducido campo de vision
Sensores ultrasonicos PIC18F452Interfaz grafica de usuario Omision de informacion de la escena
Control de velocidades
[28]
Arquitectura basada en comportamientos Casos no considerados
Sensores ultrasonicos P-METINInterfaz grafica de usuario Reducido campo de vision
Control de velocidades Omision de informacion de la escena
[29]
Arquitectura basada en comportamientos
Fusion sensorial de alto costo
Sensores ultrasonicos
Nomad 200
Aplicacion de fusion sensorial Camara SONY EVI-401
Sistema de inferencia Sugeno
Implementacion multi-agente
Algoritmos de planificacion
[30]
Arquitectura hibrida
Fusion sensorial de alto costo
Sensores infrarrojos
KheperaAplicacion de fusion sensorial WebCam
Control de orientacion y velocidad
[31] Fusion sensorial
Fusion sensorial de alto costo Sensores infrarrojos
KheperaOmision de informacion de la escena CMUCam2
Casos no considerados
[32]
Fusion sensorial de bajo costo Casos no considerados
Sensor Kinect Placa ArduinoHerramientas de programacion libres No aplica el control difuso
Preprocesamiento de la imagen
[6]
Fusion sensorial de bajo costo Ciertas reglas omitidas
Sensor KinectInterfaz grafica de usuario Giros pronunciados en casos no necesarios —
Considera varios casos de colision Reducido campo de vision
[33]
Fusion sensorial Fusion sensorial de alto costo Sensor Kinect
Algoritmo de discriminacion del suelo Ciertas reglas omitidas Sensores odometricos —
Arquitectura hıbrida Omision de informacion de la escena
En la presente Tesis
Sistema de inferencia Sugeno Omite caracterısticas de robot movil
Sensor Kinect
Interfaz grafica de usuario Evita procesamiento del suelo
Reduccion de longitud de bits Omision de informacion de la escena —
Preprocesamiento de datos de profundidad No hay planificacion ruta
Considera varios casos de colision
Prevencion de giros bruscos
El sensor Kinect permite aplicar fusion sensorial un bajo costo, a diferencia del trabajo de
[29], el cual realiza la fusion sensorial entre una camara de video y sensores de proximidad aun
cuando significa un alto costo en recursos de la misma forma que el trabajo de [30] el cual
propone una arquitectura de navegacion hıbrida.
Los trabajos de [6, 32, 33] proponen sistemas de navegacion utilizando el sensor Kinect,
donde buscan evadir obstaculos en un determinado rango de profundidades y no tienen en con-
sideracion lo pronunciado de los giros ni colisiones futuras. El sistema propuesto contiene un
Capıtulo 5. Resultados y Comparaciones 92
conjunto de reglas predictivas que tratan de evitar los giros pronunciados para evitar lesiones
en el usuario discapacitado aun cuando el mismo sistema puede reaccionar ante obstaculos ines-
perados, ademas, se tienen en cuenta todas las profundidades en la escena. Otra observacion es
la aplicacion del sistema de inferencia Mamdani con el fin de mostrar los resultados al usuario
u operador del sistema en rangos difusos y por la cantidad de variables que utilizan, excepto el
trabajo [29] que aplica el sistema tipo Sugeno para facilitar la comunicacion entre los modulos
retornando valores numericos. El trabajo [32] no aplica directamente la logica difusa, pero sı a
un conjunto de condiciones del mismo tipo que las reglas difusas, un SI valor ENTONCES
C (motivando a la programacion del sistema propuesto sin utilizar la caja de herramientas de
Matlab R©) basandose no solo en los datos de profundidad sino tambien en el calculo de la cen-
troide de los objetos mas cercanos para su evasion; sin embargo, presenta salidas estaticas sin
considerar la ejecucion de giros difusos.
Los trabajos que utilizan el sensor Kinect como [33] y [32] aplican un preprocesamiento de
las imagenes de profundidad, tratando de dividir el suelo de la escena o suavizar la imagen para
reducir ruido, mientras que en este trabajo se aplica una reconstruccion de la imagen tratando
de obtener superficies uniformes y sin partıculas que puedan alterar los calculos de profundidad
promedio.
El sistema que se propone en este trabajo enfatiza los cambios en:
Sensor Kinect, para la adquisicion de un mapa de profundidad que tiene facilidad de uso,
deja la posibilidad de implementar la fusion sensorial a bajo costo evitando los problemas
de alineacion y sincronizacion de dos camaras independientes, y permite una aplicacion
software multiplataforma.
Preprocesamiento de la imagen de profundidad, los algoritmos de navegacion ne-
cesitan que los datos de entrada sean ajustados y transformados porque dichos datos
pueden ser alterados ya sea por las caracterısticas del entorno, del material de los objetos,
entre otros. Se aplica un algoritmo de reconstruccion morfologica para la disminucion de
partıculas oscuras rellenandolas con profundidades vecinas para una imagen mas uniforme
y objetos mejor definidos.
Sistema de inferencia tipo Sugeno, se propone la utilizacion de este tipo de sistema
de inferencia ya que es mas compatible con la posterior aplicacion de un controlador difuso
(sistema digital o empotrado).
Capıtulo 5. Resultados y Comparaciones 93
Reglas predictivas, que tratan de evitar colisiones futuras con profundidades mayores,
evitar colisiones con objetos que se pueden estar acercando y evitar colisiones con objetos
muy cercanos u obstaculos imprevistos.
Control en los giros, al utilizar un conjunto de reglas predictivas se supone evitar giros
pronunciados que puedan lesionar al operador o provocar algun accidente por la reaccion
de los motores de la silla de ruedas, recordando que este sistema esta orientado a su
aplicacion para el desplazamiento de personas con discapacidad motriz o de tercera edad.
Capıtulo 6
Conclusiones y trabajo a futuro
En este capıtulo se exponen las conclusiones del presente trabajo de tesis en base al desarrollo
y experimentacion del sistema de navegacion reactiva difusa, para posteriormente, presentar los
trabajos propuestos para su posterior implementacion.
6.1. Conclusiones
En este trabajo se presento un sistema de navegacion automatica orientado a su implementacion
posterior en una silla de ruedas que ayudara a personas con discapacidad motriz a desplazarse
evitando colisiones. Este sistema adquiere informacion del exterior mediante el sensor Kinect, ya
que permite trabajar con datos de profundidad de 16 bits que denotan proximidad en milımetros
que, en la practica, llegan a alcanzar hasta los 10 metros de vision.
El sistema desarrollado tiene la opcion de operar ya sea con grabaciones del entorno o di-
rectamente con el sensor Kinect, lo que permite la prueba de variables y conocimiento del com-
portamiento del sistema en distintos ambientes sin poner en peligro a los equipos de computo
o roboticos. Los experimentos realizados en dos tipos de ambientes, permiten identificar que
los cambios de iluminacion en menores grados no afectan el funcionamiento del sensor Kinect,
sin embargo, para ambientes externos la generacion de ruido en las imagenes de profundidad
es mayor. Ademas, se identifica que ciertos materiales no permiten el reflejo de los rayos del
sensor retornando datos desconocidos, por ejemplo materiales como: vidrio, espejos, tubular de
las sillas, plastico oscuro (material de las mesas del laboratorio de computo), entre otros.
En este trabajo, con base a la experimentacion, se recomienda colocar al sensor con un angulo
95
Capıtulo 6. Conclusiones y trabajo a futuro 96
de inclinacion vertical de 0◦ a la altura de 1 metro de elevacion, con una posicion inicial libre de
obstaculos, sobre una superficie plana ya que, para la aplicacion en silla de ruedas, se tendra un
campo de vision general del ambiente. Al mismo tiempo, se omite la captura y deteccion del
suelo y los objetos de menor tamano debido a que no se aplican tecnicas de segmentacion ni
de deteccion de objetos que pudieran disminuir el tiempo de procesamiento reactivo. Se com-
probo que en una captura mas baja el sensor, al estar mas cercano al suelo, retorna datos de
profundidad muy cercanos considerando al suelo como una superficie muy cercana u obstaculo
mayor junto con los objetos que se encuentren a esa distancia. Por lo tanto, se deben considerar
algoritmos para diferenciar el suelo de los objetos que se encuentren en el mismo y que en verdad
sean obstaculos para el sistema.
En esta implementacion software, se considera convertir los datos de entrada de tamano de
16 bits a datos de 8 bits aun cuando no signifique un cambio significativo con respecto a las
caracterısticas de la computadora; sin embargo, ya que se plantea una posterior implementa-
cion en hardware, los datos de 8 bits generan menos espacio en sistemas digitales, tamano de
buses de comunicacion, memorias, consumo de potencia, entre otros. La salida del sistema de
navegacion se presenta en grados sexagesimales para tener un estandar entre los robots moviles
sin importar la cantidad de motores o grados de libertad que posean ya que solo basta con la
implementacion de un modulo que permita la conversion para cada tipo de robot.
El sistema de navegacion difusa permitio el calculo de la direccion de movimiento en tiempo
real ademas de generar salidas que permiten giros adecuados para la silla de ruedas evitando po-
sibles lesiones en el usuario, de igual forma, se propone el uso del sistema de inferencia Sugeno
porque se ajusta a la implementacion hardware posterior. La interfaz grafica de usuario que
facilito la visualizacion de la imagen de captura del ambiente donde se encuentra, y al mismo
tiempo, presento una flecha que se dirige hacia el espacio libre o con menor grado de colision.
El programa continua la ejecucion de la navegacion reactiva y considera que siempre debe de
prevenir colisiones y no tiene planificado detenerse hasta que el mismo usuario lo especifique.
Se concluye que este sistema de navegacion permite determinar la direccion de giro de forma
reactiva aplicando la logica difusa, ya que esta realiza calculos sencillos sobre pixeles de 8 bits
basados en una tabla de decisiones siguiendo la arquitectura reactiva y ademas retorna angulos
de giros no tan pronunciados para la seguridad del usuario. Por lo tanto, este sistema de nave-
gacion reactiva difusa es conveniente para a) el control de motores, por los valores difusos que
se retornan y la tolerancia a ruido, y b) las funciones de seguridad ante colisiones imprevistas,
Capıtulo 6. Conclusiones y trabajo a futuro 97
por la toma de decisiones que en base a pruebas se pueden ejecutar en tiempo real.
6.2. Trabajo a futuro
Los experimentos con el sistema de navegacion fueron realizados en dos ambientes: uno domesti-
co y en un laboratorio de computo. Se observo que los ambientes externos generan mas ruido
en las imagenes de profundidad por lo que no es recomendable su uso para este tipo de am-
bientes; sin embargo, se propone una combinacion entre sensores Kinect y un procesamiento
entre imagenes de profundidad e imagenes en RGB como se describe en el trabajo [49], para
adquirir informacion de formas que la imagen RGB pueda brindar en combinacion con los datos
de profundidad, en menor o mayor cantidad, que el sensor Kinect retorne. De igual forma, se
puede combinar el sensor Kinect con otro tipo de sensores, por ejemplo con un sistema GPS
que permita la ubicacion en un determinado ambiente como se propone en [50].
Para omitir la captura del suelo dependiendo de la ubicacion del sensor, se pueden conside-
rar algoritmos que sirvan para la deteccion de objetos discriminando el suelo, ya sea utilizando
nube de puntos a color y sus correspondientes algoritmos de procesamiento como se especifican
en [51], aplicando filtros de gradiente o logarıtmicos sobre la imagen de profundidad descritos
en [33] o mediante la deteccion de lıneas horizontales como lo especifica [52].
Tambien, como trabajo a futuro se pueden implementar los algoritmos de procesamiento de
imagenes que se sugieren en este trabajo utilizando otro tipo de herramientas de programacion
(por ejemplo, la librerıa Open Source Computer Vision, OPENCV [53]) ya que no son la parte
principal del sistema, el cual se concentra en el controlador difuso, sin embargo, en este trabajo
se tienen en cuenta debido a los resultados que se obtienen en la navegacion. Al mismo tiempo
se tiene un sistema construido por modulos, lo cual indica que, conservando los formatos y
tamanos de imagenes y datos, pueden ser modificados para obtener diferentes resultados.
Como se ha mencionado con anterioridad, este trabajo puede ser implementado en una ar-
quitectura de navegacion hıbrida sobre un controlador, ya sea un sistema digital o un dispositivo
reprogramable, que decodifique la informacion de grados sexagesimales a codigo binario para el
movimiento del robot. Otra opcion es mediante librerıas o interfaces que permiten el control de
robots moviles, desde la velocidad, el giro y otros parametros de movimiento del robot a traves
Capıtulo 6. Conclusiones y trabajo a futuro 98
de comandos de alto y bajo nivel, por ejemplo: The Player Project [54], The Robot Operating
System (ROS) [9], MobileRobots: Advanced Robot Interface for Applications (ARIA) [8], entre
otros.
Ya que se concluye que este sistema de navegacion reactiva difusa conviene para el control de
bajo nivel (control de motores y funciones de seguridad ante colisiones imprevistas), se propone
utilizar los mismos datos del sensor Kinect (puede ser nube de puntos) y desarrollar el controla-
dor de alto nivel mediante la construccion de mapas del ambiente y planificacion de trayectorias,
generando sistemas mas completos con mayor numero de tareas en uno mismo, aprovechando en
su mayorıa de las caracterısticas del sensor y explorando otras areas dentro de la robotica movil.
Referencias
[1] Zoran Gacovski, editor. Mobile Robots – Current Trends. InTech, Rijeka, Croatia, Sep-
tiembre 2011.
[2] Janusz Bedkowski, editor. Mobile Robot – Control Architectures, Bio-interfacing, naviga-
tion, multi robot motion planning and operator training. InTech, Rijeka, Croatia, Noviembre
2011.
[3] Robin Murphy. An introduction to AI robotics. The MIT Press, 2000.
[4] Leandro Cruz, Djalma Lucio, y Luiz Velho. Kinect and RGBD images: challenges and
applications. En Graphics, Patterns and Images Tutorials (SIBGRAPI-T), 2012 25th SIB-
GRAPI Conference, pags 36–49. IEEE, 2012.
[5] Ubaldo Geovanni Villasenor Carrillo, Marco Antonio Gonzalez Aguirre, Artemio Sotomayor
Olmedo, Efren Gorrostieta Hurtado, Jesus Carlos Pedraza Ortega, Jose Emilio Vargas Soto,
y Saul Tovar Arriaga. Desarrollo de un sistema de navegacion para robots moviles mediante
diferentes patrones de comportamientos. En 8o. Congreso Internacional sobre Innovacion
y Desarrollo Tecnologico (CIINDET), Cuernavaca, Morelos, Mexico, 2010.
[6] Gyorgy Csaba y Zoltan Vamossy. Fuzzy based obstacle avoidance for mobil robots with Ki-
nect sensor. En Logistics and Industrial Informatics (LINDI), 2012 4th IEEE International
Symposium, pags 135–144. IEEE, 2012.
[7] Alejandro Cabrera, Santiago Sanchez-Solano, Iluminada Baturone, Angel Barriga, Fran
Moreno-Velo, y Piedad Brox. Control difuso de navegacion de un robot mediante disposi-
tivos programables. En XI Congreso Latinoamericano de Control Automatico, La Habana,
Mayo 2004.
[8] ARIA. MobileRobots Research y Academic Customer Support. http://robots.
mobilerobots.com/, Diciembre 2013.
99
Referencias 100
[9] ROS.org. Powering the world’s robots. http://www.ros.org/, Diciembre 2013.
[10] Anıbal Ollero Baturone. Robotica: manipuladores y robots moviles. Marcombo Alfaomega,
Espana, 2001.
[11] Michael Negnevitsky. Artificial Intelligence: A Guide to Intelligent Systems. Addison-
Wesley Longman, England, Segunda edicion, 2005.
[12] Real Academia Espanola (RAE)-Asociacion de Academias de la Lengua Espanola. http:
//www.rae.es/, Mayo 2013.
[13] Stuart J. Russell y Peter Norvig. Inteligencia Artificial. Un enfoque moderno. Pearson
Educacion, S.A., Madrid, Segunda edicion, 2004.
[14] Arturo de la Escalera. Vision por Computador. Fundamentos y metodos. Pearson Educa-
cion, S.A., Madrid, 2001.
[15] Luis Enrique Sucar y Giovanni Gomez. Vision computacional. Reporte tecnico, Departa-
mento de Computacion ITESM Cuernavaca, 2011.
[16] Ana Gonzalez Marcos, Francisco Javier Martınez de Pison Ascacıbar, Fernando Alba Elıas,
Alpha Veronica Pernıa Espinoza, Manuel Castejon Limas, Joaquın Bienvenido Ordie-
res Mere, y Eliseo Pablo Vergara Gonzalez. Tecnicas y algoritmos basicos de vision artifi-
cial. Universidad de La Rioja, 2006.
[17] Joseph Banta, Y. Zhien, Xue Wang, G. Zhang, MT Smith, y Mongi A. Abidi. Best-next-
view algorithm for three-dimensional scene reconstruction using range images. En Photonics
East’95, pags 418–429. International Society for Optics and Photonics, 1995.
[18] Michael Riis Andersen, Thomas Jensen, Pavel Lisouski, Anders Krogh Mortensen, Mik-
kel Kragh Hansen, Torben Gregersen, y Peter Ahrendt. Kinect depth sensor evaluation for
computer vision applications. Reporte tecnico, Arhus Universitet, 2012.
[19] Ayrton Oliver, Steven Kang, Burkhard C Wunsche, y Bruce MacDonald. Using the Kinect
as a navigation sensor for mobile robotics. En Proceedings of the 27th Conference on Image
and Vision Computing New Zealand, pags 509–514. ACM, 2012.
[20] Jarrett Webb y James Ashley. Beginning Kinect Programming with the Microsoft Kinect
SDK. Apress, 2012.
Referencias 101
[21] Jose Velez, Angel Sanchez, Ana Belen Moreno, y Jose Luis Esteban. Vision por computador.
Dykinson, Madrid, 2003.
[22] Ross Timothy J. Fuzzy Logic with Engineering Applications. John Wiley, Tercera edicion,
2010.
[23] Jang Jyh-Shing Roger, Sun Chuen-Tsai, y Mizutani Eiji. Neuro-Fuzzy and Soft Computing:
A Computational Approach to Learning and Machine Intelligence. Prentice Hall, 1997.
[24] Fuzzy Logic ToolboxTM: User’s Guide R2012a Matlab R©. Massachusetts, USA, 2012.
[25] Juan Manuel Ramırez-Cortes, Pilar Gomez-Gil, Jorge Martınez-Carballido, y Filiberto
Lopez-Larios. A LabVIEW-based autonomous vehicle navigation system using robot vision
and fuzzy control. Ingenierıa Investigacion y Tecnologıa, 12(2):129–136, 2011.
[26] Gyula Mester. Intelligent mobile robot motion control in unstructured environments. Acta
Polytechnica Hungarica, 7(4):153–165, 2010.
[27] Maximiliano Bueno Lopez y Luis Hernando Rios Gonzalez. Implementacion de compor-
tamientos para navegacion inteligente de robots moviles. Revista Tecnura, 11(22):40–52,
2008.
[28] Hernando Parra, Luis Hernando Rıos, y Maximiliano Bueno. Navegacion de robots moviles
mediante comportamientos utilizando logica difusa. Scientia Et Technica, ISBN, pags 0122–
1701, 2007.
[29] Eugenio Aguirre, Moises Gomez, Rafael Munoz, y Carmen Ruiz. Un sistema multi-agente
que emplea vision activa y ultrasonidos aplicado a navegacion con comportamientos difusos.
En Actas del IV Workshop en Agentes Fısicos, pags 63–74, 2003.
[30] Francesco Cupertino, Vincenzo Giordano, David Naso, y Luigi Delfine. Fuzzy control of a
mobile robot. Robotics & Automation Magazine, IEEE, 13(4):74–81, 2006.
[31] Marıa Chica, Mario Esmeral, y Antonio Pineda. Sistema de navegacion para robots moviles
utilizando fusion sensorial. Tecnura, 13(25):128–135, 2009.
[32] Cesar Augusto Dıaz Celis y Cesar Augusto Romero Molano. Navegacion de robot movil
usando Kinect, OpenCV y Arduino. Prospectiva, 10(1):71–78, 2012.
Referencias 102
[33] Patrick Benavidez y Mo Jamshidi. Mobile robot navigation and target tracking system. En
System of Systems Engineering (SoSE), 2011 6th International Conference, pags 299–304.
IEEE, 2011.
[34] Open source SDK for 3D sensors OpenNI. http://www.openni.org/, 2013.
[35] Antonio Valero Munoz. Principios de color y holopintura. Editorial Club Universitario,
2011.
[36] The Microsoft Developer Network MSDN. http://msdn.microsoft.com/en-us/, Agosto
2013.
[37] Jim R Parker. Algorithms for image processing and computer vision. Wiley Publishing,
Inc., Segunda edicion, 2010.
[38] Pierre Soille. Morphological image analysis: principles and applications. Springer-Verlag,
Germany, Segunda edicion, 2004.
[39] Luc Vincent. Morphological grayscale reconstruction in image analysis: Applications and
efficient algorithms. Image Processing, IEEE Transactions, 2(2):176–201, 1993.
[40] Gyorgy Csaba. Improvement of an adaptive fuzzy-based obstacle avoidance algorithm using
virtual and real Kinect sensors. En Computational Cybernetics (ICCC), 2013 IEEE 9th
International Conference on, pags 113–120. IEEE, 2013.
[41] Nobuyuki Otsu. A threshold selection method from gray-level histograms. Automatica,
11(285-296):23–27, 1975.
[42] Cristian Kornuta y Marcelo Marinelli. Estudio comparativo de la eficiencia entre controla-
dores difusos del tipo Mandani y Sugeno. En XV Workshop de Investigadores en Ciencias
de la Computacion, 2013.
[43] Point Cloud Library PCL. http://pointclouds.org/, 2013.
[44] Kok-Lim Low. View Planning for Range Acquisition of Indoor Environments. Tesis Doc-
toral, University of North Carolina, 2006.
[45] Andres Ferreyra y Ramon Fuentes. Estudio comparativo entre control PID y difuso. En
SOMI XIII-Congreso de Instrumentacion, Ensenda, Mex, 1999.
Referencias 103
[46] Samir Kouro y Rodrigo Musalem. Control mediante logica difusa. Tecnicas modernas
automaticas,(1-7)-7, 2002.
[47] Agustın Garzon Carbonell, Modesto Agunlo Aguilera, y Ariel Domıngues Cardosa. Control
difuso de un motor de induccion. Ingenierıa Energetica, 26(1):32–36, 2005.
[48] Victor Hugo Grisales, JE Bonilla, y Miguel Melgarejo. Diseno e implementacion de un
controlador difuso basado en FPGA. VII Workshop IBERCHIP, pags 71–81, 2001.
[49] Christopher Rasmussen. Kinects for low-and no-sunlight outdoor trail-following. RGB-D:
Advanced Reasoning with Depth Cameras in conjunction with RSS 2012, Sydney Australia,
2012.
[50] Gerardo Flores, Shuting Zhou, Rogelio Lozano, y Pedro Castillo. A vision and GPS-Based
Real-Time trajectory planning for a MAV in unknown and low-sunlight environments.
Journal of Intelligent & Robotic Systems, pags 1–9, 2013.
[51] Paul Malmsten. Object discovery with a Microsoft Kinect. Tesis Doctoral, Worcester Poly-
technic Institute, 2012.
[52] Yinxiao Li y Stanley T Birchfield. Image-based segmentation of indoor corridor floors for
a mobile robot. En Intelligent Robots and Systems (IROS), 2010 IEEE/RSJ International
Conference on, pags 837–843. IEEE, 2010.
[53] OpenCV. http://opencv.org/, Diciembre 2013.
[54] The Player Project. http://playerstage.sourceforge.net/, Noviembre 2010.
Apendice A
Interfaz grafica
A continuacion se presenta la interfaz grafica de la aplicacion del sistema de navegacion reactiva
difusa implementado en Matlab 2012a R©, esto con el fin de tener el conocimiento de los compo-
nentes y la accion que corresponde a cada uno, ademas de cumplirse con uno de los objetivos
y alcances de la tesis presentandose de forma explıcita que se espera observar como resultado
final del proyecto. En la Figura A.1 se presenta la ventana principal de la aplicacion.
Figura A.1. Interfaz de usuario del sistema.
105
Apendice A. Interfaz grafica 106
La Figura A.2 muestra la seccion, dentro de la ventana principal, donde se visualiza la imagen
de profundidad adquirida previamente mediante el sensor Kinect y que, ademas, ha pasado por
el proceso de normalizacion y reconstruccion morfologica.
Figura A.2. Seccion de imagen de profundidad.
Para identificar la region con la menor probabilidad de colision se debe conocer la salida del
controlador difuso que le indica a la plataforma movil que debe dirigirse hacia el espacio que
se considera mas seguro. La representacion de la salida del controlador difuso es la direccion de
giro y se presenta de dos formas:
Valor numerico, que se imprime dentro de un cuadro de texto y representa el valor de giro
en grados sexagesimales, ver Figura A.3.
Figura A.3. Seccion del angulo de giro.
Flecha de giro, se presenta el giro del sistema de manera grafica utilizando una flecha de
color azul que indica la direccion hacia donde se debe de mover la plataforma movil y que
se interpreta como una zona con poca probabilidad de colision, ver Figura A.4.
Apendice A. Interfaz grafica 107
Figura A.4. Seccion grafica de giro.
En este sistema de navegacion reactiva difusa, los valores de entrada son los datos de pro-
fundidad que se obtienen del sensor Kinect mediante librerıas OpenNI. Dentro de la ventana
principal, se identifica una seccion llamada Seleccion, en donde se tienen tres opciones de captura
de los datos de profundidad de la cual solo se puede elegir una opcion, ver Figura A.5:
Grabaciones, las dos primeras opciones se refieren a grabaciones realizadas previamente
con el sensor Kinect y se ejecuta la adquisicion de los datos a partir de las mismas.
Conexion directa, se posee la caracterıstica de adquirir la informacion en tiempo real
directamente del sensor Kinect.
Figura A.5. Seccion de seleccion de datos de entrada.
Una vez que se selecciona la forma de adquisicion de datos de entrada, la interfaz de nave-
gacion le permite al usuario seleccionar el porcentaje del area total que indicara la cantidad de
datos de profundidad desconocidos por region que seran omitidos. Por defecto tiene la cantidad
de 67% (23partes de la imagen de profundidad), cuando inicie la ejecucion, el cuadro de texto
Apendice A. Interfaz grafica 108
queda inhabilitado hasta que la ejecucion se detenga y es entonces cuando permitira modificar
el campo, ver Figura A.6.
Figura A.6. Seccion del porcentaje a omitir de datos desconocidos.
Finalmente, la interfaz de usuario consta de dos botones que se utilizan para la operacion
del comportamiento grafico. El boton Captura inicia la ejecucion del sistema mostrando el re-
corrido (imagenes de profundidad), grados sexagesimales y el giro grafico que se propone para
evitar colisiones. Para detener la ejecucion del programa y permitir cambios en los parametros
graficos del sistema, la ventana principal contiene un boton denominado Parar, ver Figura A.7.
Figura A.7. Seccion de botones.
La interfaz grafica de la aplicacion software del sistema de navegacion reactiva permite al
operador o usuario conocer el comportamiento del sistema ante diferentes capturas del sensor
Kinect. El proceso de la generacion y actualizacion de la interfaz y sus componentes, no es
considerado dentro del tiempo de ejecucion del sistema ya que no se plantea la visualizacion de
resultados en una aplicacion software, sino implementar el sistema en una aplicacion hardware.
Mediante esta interfaz grafica se visualizan los resultados que se obtienen de las pruebas efec-
tuadas en dos diferentes ambientes: domestico y laboratorio de computo, los cuales se describen,
en conjunto con las salidas de la interfaz, en el Capıtulo 5.
Apendice B
Ejecucion del programa
En este Apendice se especifican los pasos a seguir para ejecutar la aplicacion software de navega-
cion reactiva difusa, planteandose para una posterior ejecucion en diversos equipos de computo
con otro tipo de caracterısticas que permitan mejores resultados o para la implementacion sobre
un robot movil.
Antes de comenzar con la ejecucion del programa, se requiere la instalacion previa de los
siguientes paquetes:
Instalacion de la herramienta de programacion Matlab R© version 2012a.
Instalacion de la herramienta de programacion Microsoft Visual Studio, MVS 2010.
Instalacion de las librerıas OpenNI version 1.3.2 y controladores PrimeSense.
En este proyecto se recomienda ademas la instalacion de las librerıas PCL: Point Cloud en
conjunto con OpenNI y PrimeSense accediendo al enlace de descarga1 donde se tienen diferentes
opciones dependiendo de las caracterısticas del sistema operativo.
Una vez que se completa la instalacion, se procede a abrir el programa de Matlab 2012a y
se dirige el path o ruta a donde se encuentran los archivos del programa principal. Dentro de la
carpeta Programa se encuentran los siguientes elementos:
Carpeta Config. Archivos de configuracion para la deteccion del sensor.
Carpeta Mex. Archivos en C + + que permiten la adquisicion de informacion del sensor
Kinect en conexion con Matlab R©.
1http://pointclouds.org/downloads/windows.html
109
Apendice B. Ejecucion del programa 110
Carpeta NiGrabar. Contiene los archivos de video grabados previamente con el sensor Ki-
nect y que se utilizan como entrada a la adquisicion de informacion, seleccionada mediante
la interfaz grafica.
Grafico.fig. Archivo de la interfaz grafica de la ventana principal de la aplicacion.
SugenoSystemRangos.fis. Archivo que contiene el sistema de control difuso.
Grafico.m. Archivo .m del programa principal que trabaja en conjunto con el archivo
Grafico.fig y que contiene las funciones de cada modulo del sistema.
apariencia.m. Archivo de Matlab que ejecuta la normalizacion de una imagen de profun-
didad, ver Apendice C.
obtenerProfundidad.m. Archivo de Matlab que ejecuta el calculo de la profundidad pro-
medio, ver Apendice C.
obtenerRegiones.m. Archivo de Matlab que ejecuta la division en tres partes de la imagen
de profundidad de 8 bits, ver Apendice C.
imagen inversa.m. Archivo de Matlab que ejecuta el reflejo sobre una imagen, ver Apendice
C.
flechas.m. Archivo de Matlab que dibuja la flecha de direccion dentro de la interfaz grafica,
ver Apendice C.
compile cpp files.m. Archivo de Matlab que permite la compilacion de los archivos ubicados
en la carpeta Mex para la conexion entre Kinect, OpenNI y Matlab.
El paso siguiente es la compilacion de los archivos fuente escritos en C ++ para la conexion
entre Kinect, OpenNI y Matlab:
En la ventana de comando de Matlab se escribe compile cpp files(’C:\Archivos de progra-
ma\OpenNI\’);, ver Figura B.1.
Se presiona la tecla “Y”que permite iniciar con la compilacion, ver Figura B.2.
Posteriormente, la aplicacion nos permite seleccionar el compilador entre el local de
Matlab, opcion 1, y el de Microsoft Visual Studio, opcion 2; sin embargo se selecciona
el compilador MVS presionando la tecla 2, ver Figura B.3.
Apendice B. Ejecucion del programa 111
Figura B.1. Proceso de compilacion: seleccion de archivos.
Figura B.2. Proceso de compilacion: inicializacion.
Figura B.3. Proceso de compilacion: seleccion de compilador.
Apendice B. Ejecucion del programa 112
Se verifica que la informacion dada sea correcta, y se presiona “Y”. Desde ese punto, se
identifica el tipo de sistema y se ejecuta la compilacion, ver Figura B.4.
Figura B.4. Proceso de compilacion: verificacion de datos.
Al terminar la compilacion, se busca el archivo principal del sistema llamado Grafico.m y se
presiona F5 para su ejecucion.
Apendice C
Codigo fuente
En este Apendice se presenta el codigo fuente empleado en esta aplicacion software, en donde se
describe cada funcion utilizada representando modulos del sistema y los parametros de entrada
y salida.
C.1. Archivo principal: Grafico.m
El archivo principal de la aplicacion es Grafico.m de donde se ejecuta cada modulo del sistema de
navegacion en conjunto con su interfaz grafica Grafico.fig. Este archivo no requiere parametros
de entrada, solo necesita la conexion con el sensor Kinect en el caso de elegir la opcion de
ejecucion con sensor Kinect, si se elige la opcion de adquirir datos de videos, la conexion con el
sensor no sera requerida.
1 func t i on pushbutton1 Cal lback ( hObject , eventdata , handles )
2 addpath ( ’Mex ’ )
3 SAMPLE XML PATH=’ Config/SamplesConfig . xml ’ ;
4 % REFERENCIA A VIDEOS
5 i f g e t ( handles . radiobutton1 , ’ Value ’ )
6 f i l ename=’NiGrabar/Prueba1 . on i ’ ;
7 e l s e i f get ( handles . radiobutton4 , ’ Value ’ )
8 f i l ename=’NiGrabar/Prueba2 . on i ’ ;
9 e l s e
10 f i l ename=’ ’ ;
11 end
12 % INICIALIZACION
13 i f g e t ( handles . radiobutton5 , ’ Value ’ )
14 % INICIALIZACION DE CONEXON DIRECTA CON SENSOR KINECT
15 KinectHandles=mxNiCreateContext (SAMPLE XML PATH) ;
113
Apendice C. Codigo fuente 114
16 e l s e
17 % INICIALIZACION DE VIDEOS
18 KinectHandles=mxNiCreateContext (SAMPLEXML PATH, f i l ename ) ;
19 end
20 g l o ba l g
21 g=0;
22 porcenta jeS = get ( handles . ed i t2 , ’ S t r ing ’ ) ;
23 po r centa j e = s t r 2doub l e ( porcenta jeS ) / 100 ;
24 t=tcp ip ( ’ l o c a l h o s t ’ , 30000 , ’ NetworkRole ’ , ’ c l i e n t ’ ) ;
25 fopen ( t ) ;
26 whi le ( g==0)
27 s e t ( handles . ed i t2 , ’ Enable ’ , ’ o f f ’ ) ;
28 c l a ( handles . axes5 ) ;
29 %CAPTURA DE IMAGEN RGB Y DE PROFUNDIDAD
30 mxNiUpdateContext ( KinectHandles ) ;
31 I=mxNiPhoto ( KinectHandles ) ; I=permute ( I , [ 3 2 1 ] ) ;
32 D=mxNiDepth( KinectHandles ) ; D=permute (D, [ 2 1 ] ) ;
33 %TRANSFORMAR DATOS DE PROFUNDIDAD
34 Di=apa r i e n c i a (D) ;
35 %REFLEJO DE IMAGEN DE PROFUNDIDAD
36 Di=imagen inver sa (Di ) ;
37 %RECONSTRUCCION MORFOLOGICA
38 D2=im f i l l (Di ) ;
39 %DIVISION POR REGIONES
40 [ regionC , r eg i on I , regionD ] = obtenerReg iones (D2) ;
41 %IDENTIFICAR Y EXTRAER PROFUNDIDAD PROMEDIO POR REGION
42 [ input1 ] = obtenerProfundidad ( regionC , po r c enta j e ) ;
43 [ input2 ] = obtenerProfundidad ( r eg i on I , po r c enta j e ) ;
44 [ input3 ] = obtenerProfundidad ( regionD , po r c enta j e ) ;
45 %APLICAR LOGICA DIFUSA
46 f=r e a d f i s ( ’ SugenoSystemRangos . f i s ’ ) ;
47 g i r o=e v a l f i s ( [ input1 , input2 , input3 ] , f ) ;
48 fw r i t e ( t , g i r o ) ;
49 %VISUALIZACION DE LA IMAGEN DE PROFUNDIDAD
50 colormap ( ’ gray ’ ) ;
51 imagesc (D2 , ’ Parent ’ , handles . axes4 ) ;
52 %VISUALIZACION DE GRADOS SEXAGESIMALES
53 giroT = s p r i n t f ( ’ % 10 .2 f ◦ ’ , g i r o ) ;
54 s e t ( handles . anguloT , ’ S t r ing ’ , giroT ) ;
Apendice C. Codigo fuente 115
C.2. Transformacion de los datos de profundidad: apa-
riencia.m
Este archivo aplica la transformacion y normalizacion de la imagen de profundidad de rangos
de 0 a 65,535 a una imagen con elementos que van de 0 a 255. El parametro de entrada de
esta funcion es la imagen de profundidad con elementos de longitud de 16 bits, retornando una
imagen de 8 bits por elemento. Se observa que los datos son previamente convertidos a tipo
double para realizar los calculos de normalizacion para posteriormente ejecutar la conversion a
uint8, un entero sin signo de 8 bits.
1 func t i on [ deep out ] = apa r i e n c i a ( deep in )
2 %APLICA LA NORMALIZACION SOBRE UNA IMAGEN DE PROFUNDIDAD
3 % deep in : IMAGEN DE PROFUNDIDAD DE 16 BITS .
4 % deep out : IMAGEN DE PROFUNDIDAD DE 8 BITS .
5 c o l o r=deep in ;
6 maximo=cas t (max(max( deep in ) ) , ’ double ’ ) ; %PROFUNDIDAD MAXIMA
7 c o l o r=round (255∗ ( ca s t ( co l o r , ’ double ’ ) /maximo) ) ; %NORMALIZACION
8 c o l o r = ca s t ( co l o r , ’ u int8 ’ ) ;
9 deep out = co l o r ( : , 8 : 6 4 0 ) ;
10 end
C.3. Dividir imagen de profundidad por regiones: obte-
nerRegiones.m
En este archivo se ejecuta la division en 3 partes de la imagen de profundidad ya normalizada.
Cada una de las partes se nombran de acuerdo a su direccion: izquierda, central y derecha.
1 func t i on [ c en t r a l i z qu i e r da derecha ] = obtenerReg iones ( imagen )
2 % DIVIDE LA IMAGEN EN 3 PARTES
3 % imagen : MATRIZ DE PROFUNDIDAD CON LONGITUD DE 8 BITS .
4 % cen t r a l : MATRIZ QUE REPRESENTA LA PARTE CENTRAL DE imagen .
5 % izqu i e r da : MATRIZ QUE REPRESENTA LA PARTE IZQUIERDA DE imagen .
6 % derecha : MATRIZ QUE REPRESENTA LA PARTE DERECHA DE imagen .
7
8 tam = s i z e ( imagen ) ;
9 parteX = round (tam(2 ) /3) ;
10 parteX2=parteX ∗2 ;
11 i z qu i e r da = imagen ( : , 1 : parteX ) ;
Apendice C. Codigo fuente 116
12 c en t r a l = imagen ( : , parteX+1:parteX2 ) ;
13 derecha = imagen ( : , parteX2+1:tam(2 ) ) ;
14 end
C.4. Obtener profundidad promedio por region: obte-
nerProfundidad.m
En este codigo se ejecuta la obtencion de la profundidad promedio de una matriz de profundi-
dad de entrada de tamano 211*480. El primer paso es la adquisicion del porcentaje de datos
desconocidos que, en el caso de ocupar un espacio mayor a dicho porcentaje, seran omitidos. La
imagen es dividida en profundidades mayores y profundidades menores empleando el algoritmo
de Otsu. Se retorna la profundidad promedio, ya sea adquiriendo de las profundidades meno-
res para considerar los objetos mas cercanos, o en caso de no tener profundidades cercanas, se
promedian las profundidades mayores.
1 func t i on [ profundidad ] = obtenerProfundidad ( imagen , po r c enta j e )
2 %EJECUTA EL CALCULO DE LA PROFUNDIDAD PROMEDIO
3 % imagen : IMAGEN DE PROFUNDIDAD DE 211 ∗ 480 CON DATOS DE 8 BITS .
4 % porcenta j e : UNIDAD NUMERICA QUE INDICA EL PORCENTAJE PARA OMITIR DATOS
5 % DESCONOCIDOS, POR DEFAULT ES . 6 4 , PERO PUEDE SER MODIFICADO
6 % POR USUARIO MIENTRAS EL PROGRAMA NO ESTE EN EJECUCION.
7 % profundidad : PROFUNDIDAD PROMEDIO.
8 po r centa j e = 101280 ∗ po r centa j e ;
9 c e r o s = length ( imagen ( imagen==0)) ;
10 %DIVISION DE VALORES MAYORES Y MENORES MEDIANTE EL CALCULO DEL UMBRAL DE
11 %OTSU.
12 umbral = graythresh ( imagen ) ∗255 ;
13 va l o r e s=imagen ( imagen<umbral ) ;
14 mayores = imagen ( imagen>=umbral ) ;
15 % SI OCUPAN UN ESPACIO MENOR A UN DETERMINADO PORCENTAJE ENTONCES NO SE
16 %TOMAN EN CUENTA
17 i f c e r o s < po r centa j e
18 auxValores=va l o r e s ( v a l o r e s ˜=0) ;
19 e l s e
20 auxValores=va l o r e s ;
21 end
22 %LA DIVISION DE VALORES TIENEN EN CONSIDERACION QUE PARA EL PROMEDIO SE
23 %OMITEN LOS VALORES MENORES Y MAYORES.
24 i f isempty ( auxValores )