NAVEGACION REACTIVA DIFUSA´ USANDO DATOS DE …computacion/tesis/tesisClaudiaCruzMtz.pdf ·...

140
NAVEGACI ´ ON REACTIVA DIFUSA USANDO DATOS DE PROFUNDIDAD DEL SENSOR KINECT TESIS PARA OBTENER EL T ´ ITULO DE: INGENIERO EN COMPUTACI ´ ON PRESENTA: CLAUDIA CRUZ MART ´ INEZ DIRECTOR DE TESIS: DR. IGNACIO ALGREDO BADILLO SANTO DOMINGO TEHUANTEPEC, OAXACA, M ´ EXICO. MARZO 2014

Transcript of NAVEGACION REACTIVA DIFUSA´ USANDO DATOS DE …computacion/tesis/tesisClaudiaCruzMtz.pdf ·...

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

Dedicado a Dios y a

mi familia

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 )

Apendice C. Codigo fuente 117

25 profundidad = mean(mayores ) ; %PROFUNDIDAD PROMEDIO

26 e l s e

27 profundidad = mean( auxValores ) ; %PROFUNDIDAD PROMEDIO

28 end

29 profundidad = ca s t ( profundidad , ’ double ’ ) ; %CONVERSION A TIPO ’DOUBLE’

30 end