Está en la página 1de 78

ASISTENTE DE NAVEGACIÓN PARA PERSONAS CON LIMITACIONES

VISUALES SOBRE PLATAFORMAS GPU EN ESPACIOS CERRADOS


CONTROLADOS

MARIO ALEJANDRO REYES MEDINA


GABRIEL FELIPE SILVA ESPEJO

UNIVERSIDAD PEDAGÓGICA Y TECNOLÓGICA DE COLOMBIA


FACULTAD DE INGENIERIA
ESCUELA DE INGENIERÍA ELECTRÓNICA
2021
ASISTENTE DE NAVEGACIÓN PARA PERSONAS CON LIMITACIONES
VISUALES SOBRE PLATAFORMAS GPU EN ESPACIOS CERRADOS
CONTROLADOS

MARIO ALEJANDRO REYES MEDINA


GABRIEL FELIPE SILVA ESPEJO

Trabajo de grado en la modalidad de participación activa en Grupo de Investigación


para optar al título de Ingeniero Electrónico

Director (a)
ING.ROBERT ALEXANDER LIMAS SIERRA

Codirector(a)
ING. WILSON JAVIER PÉREZ HOLGUÍN, PHD.

UNIVERSIDAD PEDAGÓGICA Y TECNOLÓGICA DE COLOMBIA


FACULTAD DE INGENIERIA
ESCUELA DE INGENIERÍA ELECTRÓNICA
2021
La autoridad científica de la Universidad reside en ella misma, por lo tanto, no responde por las
opiniones expresadas en este trabajo de grado.

Se autoriza su uso y reproducción indicando el origen.


Nota de aceptación:

Aprobado por el Comité de Currículo en cumplimiento de los requisitos exigidos por la


Universidad Pedagógica y Tecnológica de Colombia para optar al título de Ingeniero
Electrónico, actuando como jurados:

NOMBRES Y APELLIDOS DEL JURADO 1 (EN MAYÚSCULA)


Título Académico de mayor nivel

NOMBRES Y APELLIDOS DEL JURADO 2 (EN MAYÚSCULA)


Título Académico de mayor nivel

Tunja, fecha (día, mes, año)

4
DEDICATORIA

Esto es opcional y corresponde a una redacción donde el autor o autores dedican su trabajo.

5
AGRADECIMIENTOS

Esto es opcional y corresponde a la mención que los autores realizan de las personas o
entidades que contribuyeron en la realización del trabajo. No se debe confundir con la
dedicatoria.

6
CONTENIDO

pág.

1. INTRODUCCIÓN......................................................................................................12
2. CAPÍTULO QUE CONTIENE EL MARCO DE REFERENCIA.................................14
2.1. MARCO CONCEPTUAL....................................................................................14
2.1.1. LIMITACIÓN VISUAL...........................................................................................14
2.1.2. GPU..................................................................................................................... 14
2.1.3. CUDA................................................................................................................... 16
2.1.4. IMAGEN DIGITAL................................................................................................18
2.1.5. Espacios de color.................................................................................................19
2.1.6. CONVOLUCIÓN...................................................................................................23
2.1.7. FILTROS.............................................................................................................. 25
2.1.8. OPERACIONES MORFOLIGICAS EN IMÁGENES BINARIAS............................28
2.1.9. MAPA DE PROFUNDIDAD DE CAMPO..............................................................30
2.1.10 ALGORITMOS DE INTELIGENCIA ARTIFICIAL IA.................................................31
2.1.11 PWM........................................................................................................................ 32
2.1.12 RPI GPIO............................................................................................................. 33
2.1.13 Análisis del marco conceptual.................................................................................33
2.2. MARCO METODOLÓGICO...............................................................................34
2.3. ESTADO DEL ARTE..........................................................................................35
2.3.1 Dispositivos no basados en cámaras...................................................................36
2.3.2 Dispositivos basados en cámaras........................................................................37
2.3.3 Dispositivos híbridos.............................................................................................38
3. METODOLOGÍA EMPLEADA...................................................................................43
3.1. MATERIALES Y TECNICAS..............................................................................43
3.1.1 HARDWARE.............................................................................................................. 43
3.1.2 FIRMWARE Y SOFTWARE.......................................................................................46
3.1.3 TECNICAS................................................................................................................ 46
3.2. METODOLOGÍA.................................................................................................52
3.2.1 DETERMINACIÓN DE LAS CARACTAERISTICAS MINIAS DE DISEÑO...........52
4. DESARROLLO..........................................................................................................68

7
5. CONCLUCIONES.....................................................................................................71
6. RECOMENDACIONES.............................................................................................72
7. BIBLIOGRAFÍA.........................................................................................................73

8
LISTA DE TABLAS

pág.

Tabla 1Estado del arte.....................................................................................................40


Tabla.2 variación de señales PWM respecto a la distancia de detección………............47

9
LISTA DE FIGURAS

pág.

Figura 1 Arquitectura GPU..............................................................................................15


Figura 2 Organización de hilos y bloques.......................................................................17
Figura 3 Imagen digital con 256 niveles de intensidad y representación numérica de un
fragmento de 8x8.............................................................................................................18
Figura 4 Organización de hilos y bloques.......................................................................19
Figura 5 Espacio de color RGB.......................................................................................20
Figura 6 Representación del modelo HSV......................................................................20
Figura 7 Representación del modelo HSI ......................................................................21
Figura 8 Convolución Bidimensional...............................................................................24
Figura 9 Mecanismo de filtro espacial lineal...................................................................25
Figura 10 Máscaras del operador de Prewitt..................................................................28
Figura 11 Ejemplo de erosión en una imagen binaria.....................................................28
Figura 12 Ejemplo de dilatación en una imagen binaria.................................................29
Figura 13 Ejemplo de apertura en una imagen binaria...................................................29
Figura 14 Ejemplo de clausura en una imagen binaria...................................................30
Figura 15 Mapa de profundidad generado por visión estéreo........................................31
Figura 16 Mapa de profundidad generado por cámara con sensor de profundidad.......31
Figura 17 Grafica general PWM.....................................................................................32
Figura 18 Sensor Kinect de Microsoft.............................................................................44
Figura 19 Proyección y recepción del haz de luz infrarrojo............................................44
Figura 20 pruebas de escaliuzación................................................................................47
Figura 21 Imagen umbralizada y procesada...................................................................48
Figura 22 Seccionamiento de la imagen y matriz resultante de la detección de objetos
.........................................................................................................................................49
Figura 23 matriz de sintesis para la detección de obstáculos........................................50
Figura 24 Calculo de distancia de discriminación..........................................................50
Figura 25 vector de alertas..............................................................................................51
Figura 26 Esquema general de la arquitectura interna del dispositivo de guía para
invidentes.........................................................................................................................53

10
LISTA DE ANEXOS

pág.

11
1. INTRODUCCIÓN

Cerca del 70% de información que obtiene el ser humano del entorno que lo rodea proviene
del sentido de la vista. Esto, demostrademuestrando la su importancia de este sentido, con el
cual es posibleya que permite que las personas puedan realizar actividades importantes para
su vida diaria y primordiales en el desarrollo de la persona, tales como la capacidad de
movilizarse de manera independiente y llevar a caborealizar diferentes tareas que aporten a su
desarrollo físico, mental y social (Novoa Arancibia & Rojas Vega, 2019). En Colombia para el
año 2019, un 7,2% de la población presentaba algún tipo de discapacidad, de la cual, el 43,2%
contaba con una limitación visual; eEl 48,1% de la población con discapacidad visual considera
importante que las actividades mencionadas al inicio del párrafola capacidad de desplazarse de
manera autónoma son las más importantes, mientras que y el otro el 35,6% de dicha población
les dan mayor importancia a actividades de aprendizaje. Por esta razónDe estos datos es claro
que el aspecto con de mayor más relevancia para las personas con alguna discapacidad visual
es la movilidad (Romero, Rodríguez, Miguel, & Pereira, 2018). Ojo porque la suma da 126.9% ..
!!

En la última década, la comunidad científica ha desarrollado diferentes dispositivos


electrónicos, basados en distintas tecnologías para dar solución a la necesidad de movilizarse
de manera autónoma por parte de problemática que enfrentan las personas con algún grado de
discapacidad visual al momento de movilizarse, los cuales han ofrecido soluciones que han
logrado tener una aceptación del 86,7% de aceptación por parte de los usuarios (Zhang & Ye,
2016). Sin embargo, estos dispositivos se han enfrentado a diversos inconvenientes, como lo
es el tiempo de procesamiento de la información debido a las limitaciones de las plataformas
en las que losse soportan, como se evidencia plasma en los trabajos realizados por (ARIZA,
NIÑO, & HOLGUIN, 2010; Plikynas, Žvironas, Budrionis, & Gudauskis, 2020; SEGURA
MEDRANA, 2019) donde se muestra que este problema afecta directamente la movilidad del
usuario y dificulta la reacción del mismo ante las variaciones del entorno que lo rodea. Además,
de la limitación del tiempo de procesamiento, también se han presentando inconvenientes al
detectar de forma errónea objetos u obstáculos debido a la selección inadecuada de algoritmos
(Idrees, Iqbal, & Ishfaq, 2015; Romero et al., 2018), lo que ocasiona colisiones del usuario con
objetos que no son detectados o entorpecen el tránsito de la ruta al detectar erróneamente
objetos donde elen caminos sin obstáculos estaba libre. Otro de los inconvenientes es la
fuente de donde se recibe lan información del entorno, entre las que se destacan los , ya sea
por medio de sensores infrarrojos, sensores ultrasoniultrasónicosdo y las o cámaras de video,
para realizar la captura de imagen o video del ambiente en el cual se encuentra la persona
debido a que en ocasiones, éstosestos sensores no logran sortear con se ven seriamente
afectados ciertaspor condiciones como luminosidad, irregularidades den el terreno, elementos
reflectivos, entre otras (OBANDO, 2015).

Para solventar de forma parcial o total algunos de los problemas de dichos dispositivos,
actualmente se dispone de diferentes plataformas como las Unidades de Procesamiento
Gráfico (Graphics Processing Units - GPU) con las que es posible brindar un menor tiempo de
procesamiento de la información (Owens et al., 2008). También se han usado dado uso a los
microcontroladores como fuente principal de procesamiento en los asistentes de navegación.
Sin embargo, estos últimos los microcontroladores generan una barrera que es ocasionada por

12
sula limitada velocidad de procesamiento que estos presentan y la baja complejidad de datos
que estos pueden analizar (Miño, 2020). Otra plataforma en la cual se han implementado este
tipo de asistentes son los Smartphone que a pesar de su gran variedad de sensores, fácil
asequibilidad y manejo por parte del usuario, tienen el problema de no contar con la precisión y
capacidad de cómputo requerida para adquirir y procesar la información que suministra el
ambiente, lo cualde requerir demanda un alto consumo energético para su funcionamiento en
operaciones de alto volumen de procesamiento de datos como en éste caso (Murata et al.,
2018).

En este proyecto Por esta razón se presentaplantea el desarrollo de un prototipo de un


asistente de navegación para personas con limitaciones visuales sobre plataformas GPU
operando en espacios cerrados controlados. , Se inicia iniciando desde la investigación de
herramientas necesarias de la programación de GPU para realizar el procesamiento de las
imágenes capturadas y el control de los diferentes periféricos, hasta la prueba de
funcionamiento del asistente desarrollado y para la validación de su funcionamiento con un
grupo de voluntarios participantes.

Este trabajo se divide en 6 capítulos. En el primer capítulo se presenta la introducción, en como


el segundo capítulo se encuentra la revisión bibliográfica en la que resaltan donde se muestran
los diferentes aportes desarrollados en este campo por la comunidad académica, además de
los conceptos básicos para desarrollar el proyecto, en el la tercer capítulo a parte se encuentra
la metodología empelada para el desarrollo del proyecto y su desarrollo, además de los
materiales que conforman el asistente de navegación, en el capítulo la cuarta parte se
presentaencuentra el desarrollo del proyecto en esta parte se muestray los resultados
obtenidos en el proceso de implementación del proyecto, en el quinto capítulo se muestran las
conclusiones obtenidas en el proceso de evaluación del prototipo, mientras que en el la sexto
capituloa parte se muestra las recomendaciones para el uso del asistente de navegación y
otras consideraciones.

13
2. CAPÍTULO QUE CONTIENE EL MARCO DE REFERENCIA

2.1. MARCO CONCEPTUAL

2.1.1. LIMITACIÓN VISUAL

El termino de limitación visual hace referencia a cualquier daño ocasionado a la agudeza visual
del ojo y el campo visual del mismo. Este término también se usa para referirse a los diferentes
grados de perdida visual hasta la pérdida total de la visión (Giesteira, Zattera, & V. Godall,
2013). Se considera que existe una limitación visual cuando hay una reducción severa de la
agudeza visual o del campo visual del ojo aúun con el uso de lentes correctivas. Este daño
puede ser causado por diferentes factores dentro de las que se destacan el mal desarrollo de
los órganos visuales (se puede dar en la gestación o en la niñez), los accidentes o
procedimientos quirúrgicos que afectan los ojos, vías visuales o hasta el cerebro y las
enfermedades como Cataratas, Glaucoma, Diabetes, Tracoma o Ausencia de vitamina A
(Organization World Health, 2010).

Según la Clasificación Internacional de Enfermedades CIE, la visión se divide en cuatro grupos:

 Visión normal
 Discapacidad visual moderada
 Discapacidad visual grave
 Ceguera
Se considera visión normal cuando la persona puede realizar tareas o actividades que
dependan totalmente o en su mayoría del sentido de la vista sin ningún tipo de asistencia al
momento de ejecutarlas y la facultad de percibir imágenes claras del entorno que lo rodea. Por
otro lado, la discapacidad visual moderada hace referencia a la dificultad de percibir los objetos
de manera clara lo que causa que se realicen tareas de manera casi normal con algún tipo de
asistencia visual como lo son los lentes correctivos. A diferencia de las dos definiciones
anteriores la discapacidad visual grave se refiere a aquella limitación para realizar tareas que
requieren de una gran agudeza visual para controlar detalles. Por último, la ceguera es la
perdida de la facultad de percibir imágenes del ambiente lo que dificulta realizar tareas básicas
de orientación la cual no se puede corregir con gafas o lentes de contacto(SEGURA
MEDRANA, 2019).

Según estudios (¿cuáles?) entre los años de 1990 y 2020 los adultos mayores de 50 años
presentaron una diminución de pérdida total de visión en un 28,5%. Sin embargo, el número de
personas que perdieron la vista aumentóo en un 50,6% (¿cuándo o debido a qué?) y para el
año 2020 se estimó que 43.3 millones de personas sufrían de pérdida total de la visión a nivel
mundial, con lo cual se estima que para el año 2050 el número total de personas que perderán
la visión será de 61 millones. Esto , con lo cual se demuestra la creciente tendencia a que las
personas son propensas apuedan sufrir de discapacidad visual debido al envejecimiento
y otros factores (Bourne et al., 2021).

2.1.2. GPU

14
La GPU (Graphics Processing Unit) es un acelerador multihilo que permite realizar múltiples
cálculos a través de flujo de datos de forma paralela de las aplicaciones a implementadasr.
Para mejorar su eficiencia este organiza los hilos en grupos en los cuales se comparte el
mismo contador de programa. D, de esta manera ejecuta una sola instrucción en múltiples hilos
y cada uno de estos hilos cuenta con registros de propósito general los cuales pueden acceder
a las diferentes memorias con las que cuenta el acelerador (Villa, Stephenson, Nellans, &
Keckler, 2019).

Muchas de estas unidades usan una arquitectura constituida por varios cientos de grupos de
SM (Streaming MultiProcessors) y a su vez cada uno de los SM están compuestos por SP
(Stream Procesors). U, un ejemplo de este tipo de arquitecturas es la arquitectura Fermi de la
compañía NVIDIA (Hernández et al., 2013).

Figura 1 Arquitectura GPU

Fuente Tomada de (Hernández et al., 2013)

En los últimos años se han identificado diversas aplicaciones con requisitos computacionales
complejos las cuales han sido implementadas en una GPU siendo ejecutadas con gran éxito.
Una de estas aplicaciones es la renderización de imágenes en las que para la cual, es

15
necesario procesar miles de millones de pixeles por segundo. P, para esto las GPUs deben
ofrecer una gran capacidad de procesamiento para satisfacer aplicaciones complejas en tiempo
real. Adicionalmente, , también cuentan con un proceso de pipeline para realizar el paralelismo
que a su vez este es aplicable a muchos otros campos computacionales(Owens et al., 2008).

2.1.3. CUDA
Son las siglas para Compute Unified Device Architecture. CUDA, esta es una plataforma de
computación paralela e interface de programación de aplicaciones (API) API o modelo de
programación que permite tener acceso a las GPU diseñadas por NVIDIA mediante una
extensión del lenguaje C estándar. Incluye un compilador junto con un paquete de herramientas
de desarrollo proporcionadas por NVIDIA para realizar la codificación de algoritmos a ser
ejecutados por las GPUs (Mainzer & Zachmann, 2015). Para noviembre de 2006 la compañía
NVIDA presentó una plataforma de cómputo paralela de propósito general que aprovecha el
motor de cómputo en las GPU para dar solución a muchos problemas computacionales
complejos de una manera más eficiente que en una CPU (NVIDIA, 2015).

En cuanto al procesamiento de datos, CUDA tiene la noción de kernel. Un kernel o núcleo hace
referencia a funciones realizadas por el programador que serán ejecutadas la cantidad de
veces necesarias de manera paralela. Esta ejecución se realiza por una cantidad determinada
de hilos o Tthreads, según se requiera, en lugar de solo ejecutarse una sola vez como una
función normal de alto nivel (NVIDIA, 2015).

Los hilos se pueden organizar en grupos dado que estos pueden sobrepasar el numero
permitido para un bloque según lo defina la arquitectura de la GPU. El termino bloque (Bblock)
hace referencia a un conjunto de hilos (Tthreads) los cuales también tienen un límite de
instancias para ser lanzadas durante la ejecución, cuyo valor está dado por la arquitectura de
cada dispositivo en particular. Dichos Los bloques de hilos están organizados de manera
conceptual en matrices de 1, 2 y 3 dimensiones denominadas cuadriculas (Ggrids) según sea
la necesidad de la aplicación. Estas grids son útiles cuando se necesitan procesar grandes
cantidades de datos en paralelo (NVIDIA, 2015).

Figura 2 Organización de hilos y bloques

16
Fuente Tomada de (Nvidia, 2011.)

Para obtener una alta eficiencia en la ejecución de los kernels se cuenta con el modelo SIMT
(Single Instruction-Multi Thread) este que permite el manejo de cientos o miles de hilos que a
ser se ejecutadosn en paralelo. Su jerarquía en memoria por lo general se divide en dos
espacios direccionables:, una memoria local que es pequeña y rápida, visible por un
subconjunto de procesos o hilos en ejecución, y una memoria global la cual es más grande
perogrande pero más lenta y con mayor latencia, que es visible por todos los hiloslos hilos en
ejecución. La desventaja del modelo SIMT es que éste no es eficiente cuando hay la necesidad
de sincronizar la cantidad de hilos para garantizar una exclusión mutua en una sección critica
(Villegas, Asenjo, & Plata, 2015).

CUDA ofrece las siguientes formas de acceder a los datos mediante múltiples espacios de
memoria durante la ejecución: 1) unala memoria global que puede acceder a todos los hilos
ejecutados dentro del kernel; 2) unala memoria compartida , que posee una velocidad de
acceso intermedia y que permite acceder a todos los hilos en un bloque; y; 3) unala memoria
local , siendo está la forma con que tiene el menor tiempo de respuesta y permite acceder a un
hilo de los a los cualesque fue asignada esta memoria (NVIDIA, 2015).

Para administrar los modelos de memoria, NVIDIA proporciona diferentes etiquetas que le
permiten para que eal compilador distinguira entre las funciones que se pueden ejecutar en la
CPU o( host), o en la GPU (o device). Estas etiquetas se muestran en la Tabla 1.

17
Tabla 1 Etiquetas de identificación de funciones.

ETIQUETAS LLAMADA DESDE EJECUTADA EN

__host__ Host Host

__global__ Host Device

__device__ Device Device

Fuente. Elaborada a partir de

2.1.4. IMAGEN DIGITAL


Una imagen digital se define como una función bidimensional f (x , y ) donde x e y son las
coordenadas del plano que contiene un numero finito de puntos o elementos conocidos como
pixeles que componen la imagen, y la función f (x , y ) es la amplitud en el punto con
coordenadas ¿, y ¿ la cual también es conocida como la intensidad o nivel de gris que la imagen
tiene en ese pixelpíxel. Se habla de una imagen digital si en la función de la imagen hay valores
de intensidad finitos y discretos. (Dobernak, 2015).

Figura 3 Imagen digital con 256 niveles de intensidad y representación numérica de un fragmento de 8x8

Fuente Tomada de(Dobernak, 2015)

Una de las características más importantes de una imagen es su resolución espacial, esta la
cual hace referencia a la cantidad de pixeles que la conforman. Es, es común expresar la
resolución de una imagen por medio de dos valores numéricos: el primero de ellos hace
referencia al número de columnas de pixeles o ancho de la imagen y el segundo a las filas
totales de pixeles o alto de la imagen (Dobernak, 2015).

Dentro de las imágenes digitales existe un tipo de imagen conocida como imagen en escala de
grises. Las imágenes de este tipo son arreglos bidimensionales los cuales contienen

18
información acerca de la intensidad de luz o luminancia que presenta cada píxel de la imagen.
Normalmente, los valores de cada pixel se encuentran codificados en 8 bits, es decir, cada
pixel puede tomar un valor entre 0 y 255, siendo 0 el valor numérico correspondiente al color
negro y 255 al color blanco.

Figura 4 Organización de hilos y bloques

Fuente Tomada de(MatLab, 2022)

Existen varios métodos por los cuales es posible realizar la transformación de una imagen ena
color a una imagen en escala de grises. La mayoría de estos métodos utilizan el espacio RGB
para pasar una imagen ena color a su equivalente en la escala de grises debido a su
simplicidad de manejo. Un, siendo unaa de las formas más usadas es el promedio de las tres
componentes del espacio RGB (ver Ecuación 1) como se muestra a continuación (Cortes
Osorio, Urueña, & Mendoza Vargas, 2011):.

 R ( x , y ) canal rojo de la imagen a color


 G ( x , y ) canal verde de la imagen a color
 B (x, y) canal azul de la imagen a color
 ImGris( x , y) imagen en escala de grises resultante del promedio de los canales de la
imagen RGB

R ( x , y ) +G ( x , y ) , B( x , y)
ImGris(x , y)= (1)
3
Ecuación 1 Conversión de una imagen a escala de grises método del promedio.

2.1.5. Espacios de color

Los espacios de color hacen referencia a los distintos planos espaciales con los cuales se
puede trabajar una imagen digital a color. E, existen varias representaciones espaciales entre
ellas están el RGB, HSV, HSI y el modelo YCbCr.

El espacio RGB es uno de los modelos más utilizados por los sistemas informáticos para crear
y realizar la reproducción de colores en los monitores. La representación gráfica del modelo

19
establece los ejes R, G, B. C, y caada componente de color depende de una coordenada
especifica como se muestra en la imagen Figura 5.

Figura 5 Espacio de color RGB

Fuente Tomada de(Dobernak, 2015)

Esto convierte a este espacio de color como uno de los modelos de mayor importancia para el
procesamiento de imágenes.

Las siglas HSV (Hue, Saturation, Value) hacen referencia a elal tono, saturación y valor
respectivamente. E, el sistema coordenado para este espacio es cilíndrico. La, y la pirámide
hexagonal presentada en la Figura 6 corresponde al sub conjuntosubconjunto en donde la
distribución de colores varía dependiendo a la ubicación dentro del plano espacial. E, en este
modelo los colores más brillantes están contenidos en el área hexagonal donde el valor de la
componente V=1. Para medir el tono dentro deen este plano se usa el ángulo de apertura
tomando como referencia el eje S. E, el color rojo se sitúa a 0º, el verde a los 120º y el azul a
los 240º, mientras que los colores complementarios se encuentran a 180° de su color primario.
El vértice en donde las componentes S y V tienen un valor igual a 0 corresponde al color negro,
el color blanco corresponde a las coordenadas donde S=0 y V=1.

Figura 6 Representación del modelo HSV

Fuente Tomada de: (Dobernak, 2015)

20
Este espacio puede ser obtenido a partir de una transformación no lineal del espacio RGB,
usando las siguientes expresiones (ver Ecuaciones 2 a 4):

 R canal rojo de la imagen RGB


 G canal verde de la imagen RGB
 B canal azul de la imagen RGB
 H componente H (tono) de la imagen HSV
 S componente S (saturación) de la imagen HSV
 V componente V(valor) de la imagen HSV

1
( ( R−G )+( R−B))
2 (2)
H=cos−1 ¿
√(( R−G)¿ ¿ 2+(R−B)(G−B))
min ⁡( R , G, B)
S=1−3 (3)
R+G+ B
1
V = ( R+ B+G) (4)
3
Ecuación 2 Transformaciones no lineales del espacio RGB a HSV.

Este espacio tiene una la gran ventaja de ser y es que es invariante a las condiciones de luz.
Sin embargo, la alta complejidad computacional que requiere para ser implementada sobre
todo en plataformas como FPGA dificulta su uso (Dobernak, 2015).

El espacio HSI (Hue,Saturation,Intensity) tono, Saturación, Intensidad, es también una


transformación no lineal del espacio RGB el cual modifica el sub espacio del cubo
transformándolo en dos conos unidos por la base. G, geométricamente, este está compuesto
por las componentes S, H e I, que corresponden a una componente de saturación (componente
S) que esque corresponde a la distancia radial del cono, y que proporciona una medida del
grado del color que se mezcla con la luz blanca, la componente del tono (componente H) que
escorresponde a el ángulo respecto al eje rojo yque da una magnitud de la longitud de onda
dominante, esta componente varíia en 360° con separaciones angulares de 120° entre cada
color primario con igual y la misma separación se mantiene para los colores secundarios, la
componente de intensidad (componente I) que escorresponde a la distancia a lo largo del eje
perpendicular al plano de color e, este indica el valor del brillo y la información acromática, los
valores bajos en este eje componente corresponden a los colores oscuros y los superiores
están asociados a los colores claros hasta llegar al blanco (ver Ecuaciones 5 a 8.
Transformaciones no lineales del espacio RGB a HSI) finalmente (Dobernak, 2015).

21
Figura 7 Representación del modelo HSI

Fuente tomado de :(Dobernak, 2015)

 R canal rojo de la imagen RGB


 G canal verde de la imagen RGB
 B canal azul de la imagen RGB
 H componente H (tono) de la imagen HSI
 S componente S (saturación) de la imagen HSI
 I componente I(intensidad) de la imagen HSI

H= {360−θ
θ si B ≤G
si B> G
(5)

{ }
−1 ( R−G ) +(R−B)
θ=cos 1 (6)
2
2 [ ( RG ) +( R−B)(G−B)] 2

3 min ⁡[R ,G ; B ]
S=1− (7)
(R+G+ B)
1
I = (R +G+ B) (8)
3
Ecuación 3 Transformaciones no lineales del espacio RGB a HSI

22
A pesar de las ventajas que este espacio ofrece, tiene la misma limitante que el modelo HSV
debido a que tiene una alta complejidad computacional para ser implementada debido a sus
transformaciones no lineales lo que lo y hace que este espacio sea poco práctico.

El modelo YCbCr es una codificación no lineal del espacio RGB, usada comúnmente por los
estudios de televisión europeos y en la compresión de imágenes. E, en este modelo el color se
representa por tres componentes o parámetros, uno de ellos es la luminancia (Y) y dos valores
diferentes de color (Cb y Cr) que son características del color. L, en cuanto a la luminancia es
la cantidad lineal de luz que es directamente proporcional a sula intensidad física. P esta puede
ser calculada como una suma ponderada de los componentes del espacio RGB.

Las características que tiene este modelo en cuanto a la separación de luminancia e


información cromática hacen que este modelo tenga una mayor ventaja en cuanto a
compresión y transferencia de información de la imagen. Esto se debe debido a que la mayor
parte de información está contenida en la componente de luminancia y se transmite con mayor
precisión, lo cual causa que los valores de las componentes Cb y Cr disminuyan, contribuyendo
a con lo cual se disminuir ye la perdida de información.

En el caso de los sistemas digitales, la ventaja que tiene este modelo es que ahorra recursos
computacionales, y ancho de banda para su transmisión. Sin embargo, , pero el trabajar en
este espacio no ofrece buenos resultados con los algoritmos de visión por computadora como
por ejemplo laejemplo en la segmentación de objetos por color (ver Ecuaciones 9 a 10.
Transformaciones no lineales del espacio RGB a YCrCb). (Dobernak, 2015).

 R canal rojo de la imagen RGB


 G canal verde de la imagen RGB
 B canal azul de la imagen RGB
 Y componente Y (luminancia) de la imagen YCbCr
 Cb componente Cb de la imagen YCbCr
 Cr componente Cr de la imagen YCbCr

Y =0.299 R+ 0.587 G+ 0.114 (9)
Cr=R−Y (10)
Cb=B−Y (11)

Ecuación 4 Transformaciones no lineales del espacio RGB a YCrCb

2.1.6. CONVOLUCIÓN

La convolución se define como un operador matemático el cual se encarga de transformar dos


funciones dando como resultado una tercera. Esta operación se puede realizar en tiempo
continuo o en tiempo discreto según las necesidades a solventar y se define en el tiempo
continuo como (ver ecuación 12):

23

f(t)*h(t)¿ ∫ f ( τ ) h(t−τ )dτ (12)
−∞

Ecuación 5 Convolución en tiempo continuo.

Para realizar esta misma operación en tiempo discreto y con sistemas digitales se tiene la
siguiente expresión (Ver Ecuación 13).

y [ n]= ∑ h [ k ] x [ n−k ] (13)
k=−∞

Ecuación 6 Convolución aplicada en tiempo discreto.

En cuanto al uso de esta operación en el procesamiento digital de imágenes se realiza una


extensión de la convolución a dos dimensiones con lo cual esta operación se define como (ver
Ecuación 14):

a b
w ( x , y )∗f ( x , y )= ∑ ∑ w ( s , t ) f ( x−s , y−t ) (14)
s=−a t=−b

Ecuación 7 Convolución aplicada a un espacio bidimensional.

En el procesamiento de imágenes típicamente se usan matrices con dimensiones impares las


cuales se operan con la matriz correspondiente a la imagen digital. Para realizar la convolución
entre una imagen y la máscara espacial o ventana, la ventana comienza examinar,
sucesivamente, cada píxel de la imagen.(Gonzalez, Woods, & Masters, 2009).

Figura 8 Convolución Bidimensional

Fuente tomado de :(gimp org, 2021)

24
Como se muestra enEn la Figura 8 se muestra a la izquierda se ubica la matriz
correspondiente a la imagen en la que: cada píxel está representado marcado conpor su valor
numérico. El píxel para el que vamos a realizar la operación de convolución se presenta con
inicial tiene un borde rojo. El área de acción de la ventana tiene se presenta con un borde
verde. En el medio se muestra , la ventana de convolución , y a la derecha se presenta , el
resultado de convoluciónobtenido. Para realizar esta operación la ventana se sitúa de manera
que esta quede contenida en la imagen, se toma el pixel inicial se multiplica el valor de este
píxel de la imagen con el valor del pixel de la ventana que coincide con y de el mismo modo
los pixeles circundantes y se suman los resultadosse realiza la multiplicación entre cada
elemento de la ventana de la imagen y la ventana de convolución. en el caso particularPara el
ejemplo de la Figura 8 seria de la siguiente manerase obtiene:

Pixel resultado =( 40∗0 ) + ( 42∗1 ) + ( 46∗0 )+ ( 46∗0 ) + ( 50∗0 ) + ( 55∗0 ) + ( 52∗0 )+ ( 56∗0 )+ ( 58∗0 )=42 (15)

Ecuación 8 Aplicación de operación de convolución

El resultado de esta operación se ubica en la misma posición un píxel desplazado en vertical


deen la posición en la quecual se encuentra el pixel inicial original, dando lugar a la imagen
procesada al repetir este proceso para toda la imagen.

2.1.7. FILTROS

Los filtros son una de las principales herramientas en el procesamiento digital de imágenes y
son usados en este campo para el desarrollo de un gran número de aplicaciones. El concepto
de filtro se ha tomado prestado del procesamiento de señales para ser usado en el campo del
procesamiento de imágenes debido a que este concepto está asociado con permitir o rechazar
componentes frecuenciales. El, el efecto producido por un filtro pasa bajas es realizar el
difuminado de la imagen. Es es posible lograr, este mismo difuminado es posible lograrlo
usando filtros espaciales los cuales son llamados mascaras espaciales o ventanas (Gonzalez
et al., 2009).

Figura 9 Mecanismo de filtro espacial lineal

25
Fuente tomado de:(Gonzalez et al., 2009)

Estos filtros consisten en un arreglo matricial, el cualen el que se modifican los pixeles de la
imagen que están envueltos dentro del arreglo o filtro y mediante el proceso de filtrado se crea
un nuevo pixel en las mismas coordenadas del elemento central de la ventanala ventana o
matriz, cuyo valor es el resultado de la convolución entre el filtro y la imagen de entrada. Esto,
esto sucede cuando el pixel ubicado en el centro de la venta se opera con cada uno de los
pixeles de la imagen. En, en algunos casos, la operación que ese se realiza entre el filtro y la
imagen a procesar es lineal por lo cual algunos de estos arreglos son llamados filtros lineales,
ademáslineales. Además de estos, también existen los filtros no lineales los cualesque se
emplean en otro tipo de aplicaciones, las cuales están dadas en el dominio frecuencial. Los, los
filtros no lineales funcionan dando un orden a los valores de la vecindad en cada uno de los
puntos, este orden se da de menor a mayor, con lo cual se obtiene un valor para los pixeles a
través de una lista ordenada. Los, estos filtros no lineales son usados también si el objetivo a
lograr es la reducción de ruido en la imagen y no el difuminado de la imagen. En el caso de una
imagen en escala de grises, dependiendo del valor del pixel en dicha escala, el valor del pixel
de la imagen original y se reemplaza por un valor ya sea mínimo, máximo o un valor de
mediana según las necesidades de la aplicación a desarrollar. De esta manera , con lo cual se
tiene un procesamiento particularmente efectivo dado a que si el patrón de ruido coincide en las
componentes frecuenciales más fuertes y tiene forma de pico puede ayudar a resaltar los
bordes en la imagen(González et al., 2009).
Dentro de los filtros más comunes o usados en el procesamiento digital de imágenes se
destacan el filtro laplacianoLaplaciano, el filtro de gaussGauss, el filtro de Roberts y el filtro de
Prewitt.

2.1.7.1. FILTRO LAPLACIANO


Este filtro se usa para destacar los bordes de una imagen. este filtro usaUsa el laplaciano de
una imagen por lo cual recibe este nombre. este noNo es más que un operador isotrópico (es
decir, es independiente a la dirección de la discontinuidad en la imagen) el cual es definido por
la siguiente expresión:

26
2
∂ f
 2 calculo del gradiente en sentido de las columnas.
∂x
∂2 f
 cálculo del gradiente en sentido de las filas.
∂ y2
 ∇ 2 f vector gradiente.
2 2
2 ∂ f ∂ f
∇ f= 2
+ 2
∂x ∂y
Ecuación 9 Definición del laplaciano en 2 dimensiones.

En el caso de realizar la formulación del laplaciano este puede ser implementado de forma
digital de varias maneras la manera más frecuente de aplicar este filtro es la siguiente

 f ( x , y ) función de la imagen digital.


 ∇ 2 f ( x , y ) vector gradiente.

∇ f ( x , y )=[ f ( x +1 , y )+ f ( x−1 , y )+ f ( x , y +1 ) +f ( x , y −1 ) ]−4 f (x , y)


2

Ecuación 10 discretización del laplaciano en 2 dimensiones.

Cabe resaltar que este filtro no se suele usar directamente en la práctica por ser muy sensible
al ruido que presente la imagen por lo que se suele usar después de usar una máscara para
realzar los contornos (González et al., 2009).

2.1.7.2. FILTRO DE GAUSS


El filtro de gauss es usado para difuminar imágenes y eliminar ruido, este es similar al filtro de
media, pero se usa una máscara diferente este filtro está dado por la siguiente ecuación

 x coordenada de la columna del filtro


 y coordenada de la fila del filtro
 δ factor de difuminado
 g ( x , y ) imagen filtrada
2 2
−x + y
1 2δ
2

g ( x , y )= 2
е
2 лδ
Ecuación 11 Filtro de gauss.

Las ventajas que tiene este filtro es que es separable lo que quiere decir que en vez de realizar
una operación bidimensional es posible realizar 2 operaciones unidimensionales en donde una
de ellas se realiza en sentido horizontal y la operación restante en sentido vertical además de
que con este filtro se logra un difuminado mucho más uniforme(González et al., 2009).

2.1.7.3. FILTRO DE ROBERTS


Este se define como como uno de los operadores para la detección de bordes, el filtro de
Roberts realiza la detección de bordes mediante el cálculo de la primera y segunda derivada
las cuales permiten identificar los puntos de interés en la imagen esto operadores son
representados mediante la siguiente expresión:

27
 gx coordenada del pixel en sentido de las columnas
 gy coordenada del pixel en sentido de las filas
 ∇ f vector gradiente

[]
∂f
∇ f =grad =
[ ]
gx
gy
=
∂x
∂f
∂y

Ecuación 12 Definición vector gradiente para detección de bordes.

El operador de Roberts es el más simple de todos, este utiliza la dirección diagonal para
calcular el vector gradiente usado en su respectiva mascara o matriz(González et al., 2009).

2.1.7.4. FILTRO DE PREWITT


Este filtro u operador al igual que el de Roberts sirve para realizar la detección de bordes, este
operador expande la definición del gradiente a una máscara de 3x3 con lo cual hace que sea
más inmune al ruido este utiliza las ecuaciones de Sobel, a diferencia del operador de Sobel
este no le da importancia a los pixeles de la imagen que estén cercanos al centro de la
mascara
Donde la variable A hace referencia a las posiciones de los elementos en la máscara o matriz.
(González et al., 2009)
Figura 10 Máscaras del operador de Prewitt

Fuente tomado de:(González et al., 2009)

2.1.8. OPERACIONES MORFOLIGICAS EN IMÁGENES BINARIAS.

Las operaciones morfológicas son una herramienta muy utilizada en el procesamiento de


imágenes, estas operaciones pueden simplificar la información que contiene la imagen,
comúnmente estas se usan para preservar aspectos relevantes de la imagen y eliminar los
elementos que no sea de interés con lo cual se puede realizar selección de objetos, extracción
de rasgos, detección de fallos entre otras aplicaciones que se encuentran ligadas con los
contornos y formas del objeto de interés, por esta razón se hace obvio el papel que desempeña
la morfología matemática al momento de realizar las aplicaciones anteriormente mencionadas
(Fernández, 2020).

También estas operaciones se pueden usar para realizar la supresión de ruido o la


simplificación de formas, destacar la estructura de objetos y una descripción cualitativa de
objetos (área, perímetro, diámetro, etc.) (Fernández, 2020) .

28
Las operaciones básicas en cuanto a morfología se refieren son dos erosión y dilatación, con
las cuales se pueden hacer operaciones denominadas como apertura y cierre.
2.1.8.1. EROSIÓN
Esta consiste en eliminar todos los pixeles del objeto en donde al menos uno de sus pixeles en
su vecindad pertenezca al fondo, este tiene como objeto reducir el objeto o eliminar objetos que
sean muy pequeños (Fernández, 2020).

Figura 11 Ejemplo de erosión en una imagen binaria

Fuente tomado de:(Rafa Docencia,2021.)

2.1.8.2. DILATACIÓN:
En esta operación todos los pixeles que pertenezcan al fondo se convierten en pixeles del
objeto si al menos uno de los pixeles que este en su vecindad pertenece a dicho objeto, esta
operación se usa para aumentar el tamaño de los objetos o rellena agujeros que puedan estar
dentro del objeto a destacar (Fernández, 2020).

Figura 12 Ejemplo de dilatación en una imagen binaria

Fuente tomado de:(Rafa Docencia,2021.)

2.1.8.3. APERTURA:

29
Consiste en aplicar primeramente la erosión a la imagen y el resultado obtenido se le aplica la
operación de dilatación, este tiene como efecto eliminar elementos salientes, conexiones finas
o suavizar los contornos de un objeto (Fernández, 2020).

Figura 13 Ejemplo de apertura en una imagen binaria

Fuente tomado de:(Rafa Docencia,2021.)

Esta operación se representa mediante la siguiente expresión:

 I imagen digital
 H ventana de operación

I ○ H =(I ⦵ H )⨁ H

Ecuación 13 Apertura.

2.1.8.4. CLAUSURA:

Para realizar esta operación se aplica en primer lugar dilatación posterior a esto se realiza
erosión, la clausura fusiona dos objetos separados por un margen delgado además de eliminar
pequeños orificios manteniendo el tamaño del objeto rellenar o suavizar el contorno
(Fernández, 2020).

Figura 14 Ejemplo de clausura en una imagen binaria

30
Fuente tomado de:(Rafa Docencia,2021.)

La operación de clausura se puede representar mediante la siguiente expresión:

 I imagen digital
 H ventana de operación

I • H =(I ⨁ H)⦵ H

Ecuación 14 Clausura.

2.1.9. MAPA DE PROFUNDIDAD DE CAMPO.

El mapa de profundidad de campo es el resultado del procesamiento de imágenes de un objeto


o escena de interés, este mapa ofrece una amplia información acerca del ambiente u objeto
capturado como lo es, presencia de objetos en la escena, la distancia de dichos objetos al
punto de referencia de donde se toma la imagen, detalles de los objetos a analizar entre otros.
Este tipo de mapas se usan en aplicaciones como visión artificial, navegación autónoma e
inspección de partes mecánicas (Chang & Maruyama, 2018). Existen varios métodos por los
cuales es posible generar este tipo de mapas, uno de ellos es la técnica de visión estéreo, este
se basa en tomar la imagen de la escena a analizar usando dos cámaras puestas a la misma
distancia, pero con una separación entre ellas. Con esta técnica de visión estéreo se busca
hacer una reconstrucción de la geometría de la imagen mediante la comparación de pixeles de
las dos imágenes y encontrando las equivalencias entre los pixeles de las dos imágenes
capturadas además de determinar su distancia relativa entre los pixeles que coincidan entre si
y de esta manera generar un mapa de profundidad, la desventaja de este método es que
requiere mayor capacidad computacional para el análisis de las imágenes además de tener que
implementar algoritmos para dicho análisis (Parissaki, 2019) .

Figura 15 Mapa de profundidad generado por visión estéreo

Fuente (Parissaki, 2019)

Otro método para obtener mapas de profundidad es mediante cámara que no solo cuentan con
señores RGB sino también sensores infrarrojos. En este método lo que se hace es lanzar el
rayo del láser infrarrojo a la superficie del objeto y ser realiza la grabación de la proyección del
láser para así determinar la geometría del ambiente. Una vez determinada la geometría de
entorno las coordenadas de la luz reflejada se pueden estimar por triangulación. Con esto se
genera una nube de puntos con la cual se detecta movimientos en los tres ejes espaciales (x, y,

31
z) en los objetos de la escena o de la cámara. Esta nube de puntos se puede proyectar en un
espacio 2D
La cual en los pixeles de la imagen que genera no contiene los valores de distancia en lugar de
los valores de intensidad. En la mayoría de las veces una sola cámara puede ser suficiente, sin
embargo, si el objeto esta ocluido en referencia a la cámara el mapa generado puede quedar
incompleto para solucionar este problema se recurre al uso de varias cámara láseres(Parissaki,
2019).

Figura 16 Mapa de profundidad generado por cámara con sensor de profundidad

Fuente (Xu & Fujimura, 2003)

2.1.10 ALGORITMOS DE INTELIGENCIA ARTIFICIAL IA

El concepto de inteligencia artificial puede variar dependiendo de la fuente que se tome como
referencia y el punto de vista que esta manifieste. Sin embargo, lo que sí es claro es que la IA
estudia la forma para que los ordenadores o equipos de cómputo sean capaces de llevar a
cabo actividades o tareas que por ahora son mejor realizadas a por los seres humanos
(Vásquez Salazar & Cardona Mesa, 2019).

Dentro del proceso de desarrollo de la IA fueron creadas las redes neuronales con las cuales
surgió la posibilidad de realizar tareas que eran cotidianas para las personas, pero ahora con la
asistencia de un equipo de cómputo alguna de estas tareas se han logrado realizar con este
tipo de algoritmos han sido ejemplo de ello es el reconocimiento de patrones, reconocimiento
de caracteres, reconocimiento de voz, reconocimiento de rostros, reconocimiento de objetos y
otras aplicaciones más (Vasquez Salazar & Cardona Mesa, 2019).

Uno de los mayores retos que se ha propuesto con el surgimiento de la IA es entender el


funcionamiento de los órganos que permiten interactuar a una persona con el mundo exterior y
de esta manera tratar de imitar el funcionamiento de dichos órganos por medio de las
tecnologías existentes buscando mejorar la calidad de vida de las personas. De esta forma se
han venido desarrollando diversos algoritmos de visión por computadora con el uso de técnicas
de inteligencia artificial con el fin de realizar el procesamiento de imágenes, analizar los datos
obtenidos de la imagen y obtener resultados para una aplicación en específico(Vasquez
Salazar & Cardona Mesa, 2019).

32
Uno de los algoritmos más populares es el algoritmo YOLO (You Only Look Once) este
algoritmo hace uso de redes neuronales para realizar la detección de objetos en tiempo real y
ha sido muy utilizado en diversas aplicaciones como detectar señales de tráfico, personas,
parquímetros y animales y objetos(Jadhav et al., 2021).

2.1.11 PWM
La modulación PWM (Pulse Width Modulation) es una técnica que consiste en realizar la
variación del ancho del ancho de pulso o ciclo de trabajo de una señal periódica (típicamente
cuadrada), el cual determinara el tiempo en el que la señal se encuentre en nivel alto o bajo
con respecto al periodo de dicha señal, este tipo de modulación tiene diversas aplicaciones que
van desde el control de brillo de leds, control de velocidad de motores hasta aplicaciones de
electrónica de potencia (Vanegas, 2017).

Figura 17 Grafica general PWM

Fuente (Lucas Martin,2012)

Realizando su representación matemática:

τ
D=
T
Ecuación 15 PWM.

En donde

 D es el ciclo de trabajo
 τ es el ancho de pulso
 T es el periodo de la señal

En cuanto a la generación de la señal PWM la Jetson Xavier NX de Nvidia cuenta con un


módulo que permite realizar la modulación por ancho de pulso. Esta cuenta con un módulo
dedicado a esta función, los pines de salida de este módulo son el pin 33 y 32 que se ubican en
el puerto GPIO de la tarjeta, este módulo es configurado mediante software por medio de una
librería la cual permite realizar variaciones en los diferentes elementos de la señal como
anchos de pulso y frecuencia según se requiera (Nvidia, 2020).

33
2.1.12 RPI GPIO
Esta librería es compatible con varias tarjetas de NVIDIA entre ellas la Jetson Xavier NX,
debido a que estas tarjetas tienen un puerto GIPO similar a las de las Raspberry, estos pines
de propósito general son configurables como entradas o salidas digitales, usando esta librería
en Python proporcionada por el paquete Jetson GPIO, esta tiene la misma API que la biblioteca
Rpi.GPIO usada por las Raspberry con el fin de generar compatibilidad entre las 2 plataformas
(NVIDIA, 2019).

Esta proporciona diferentes modos de acceder a los pines, si se trabaja por el número de pin
cada uno de ellos cuenta con dos numeraciones distintas para esto existen el modo BOARD y
BCM, el primero hace referencia al número del pin correspondiente al puerto GPIO y el
segundo modo corresponde al número del Board Com Soc (NVIDIA, 2019).

También cuenta con dos modos adicionales los cuales son el CVM y el Tegra SoC, estos
utilizan cadenas de caracteres en lugar de números que corresponden a los nombres de las
señales con el conector CVM y el Tegra SoC respectivamente (NVIDIA, 2019).

2.1.13 Análisis del marco conceptual

Los anteriores conceptos son importantes en el desarrollo del proyecto debido a contexto que
ofrecen acerca de los diferentes elementos teóricos que soportan la implementación de
asistente de navegación. La definición de discapacidad visual permite contextualizar las causas
que generan dicha discapacidad y los distintos tipos que existen y sus repercusiones a la salud,
y también identificar el porcentaje de población que presenta esta este tipo de discapacidad y
un estimado de la población que puede sufrir este tipo de discapacidad en el futuro y quienes
podrían ser beneficiados con este tipo de sistema.

En cuanto al concepto de GPU ofrece una visión general acerca de la plataforma en la que se
soporta el prototipo, además de las aplicaciones para las que son usados este tipo de
procesadores. CUDA permite conocer como está constituida las GPU’s en específico las
desarrolladas por la compañía NVIDIA y la forma de realizar la programación de los kernels a
ejecutar en esta plataforma.

El concepto de imagen digital permite identificar como están compuestas este tipo de imágenes
y entender de qué forma están constituidas dichas imágenes y de esta manera entender de
mejor manera como realizar el procesamiento de este tipo de imágenes, también los espacios
de color proveen la información de los diferentes planos en las cuales se puede analizar este
tipo de imágenes y las ventajas y desventajas de cada uno de estos espacios.

El término de convolución es considerado en este proyecto debido a que es la operación más


usada en cuanto a procesamiento de imágenes y la aplicación de filtros. Los filtros son
importantes en la fundamentación teórica de este proyecto debido a que con esta herramienta
se realiza el difuminado de imágenes o se resaltan diferentes características de interés en las
imágenes.

34
Las operaciones morfológicas fueron tenidas en cuenta debido a su facilidad en la
implementación y que mediante de estas operaciones es posible extraer información de interés
presente en la imagen a analizar.

Los mapas de profundidad se consideraron en el desarrollo del prototipo debido a la cantidad


de aplicaciones que se puede desarrollar con este tipo de mapas, en el caso particular
determinar a qué distancia se encuentran los objetos y de esta manera trazar la ruta para el
usuario.

En cuanto el PWM este concepto permite conocer una técnica de control de actuadores en este
caso motores para generar las alertas hápticas las cuales se describirán con más detalle más
adelante.

El RPI GIPO permite identificar las similitudes que tiene la Jetson Xavier y las Raspberry en
cuanto al puesto de pines de prototipo general lo cual facilita el uso de este puerto para el
desarrollo de diversas aplicaciones

2.2. MARCO METODOLÓGICO

Dentro de la bibliografía consultada se observa en la mayoría de los diferentes trabajos se


plantea una metodología con enfoque dominante cuantitativo y de tipo descriptivo experimental,
para el desarrollo de los diferentes asistentes de navegación que dan apoyo a las personas con
discapacidad visual.

Para el desarrollo del asistente de navegación se establece una etapa en donde se identifiquen
las especificaciones mínimas que permitan solventar las necesidades básicas en cuanto a
movilidad consideradas por parte de las personas con limitaciones visuales además de algunas
mejoras que se sugieren por parte de los distintos autores que han trabajado en el desarrollo
de estos prototipos (Romero et al., 2018; Sadi, Mahmud, Kamal, & Bayazid, 2014; SEGURA
MEDRANA, 2019; Vasquez Salazar & Cardona Mesa, 2019). En el trabajo realizado
por(Romero et al., 2018) se identifica el porcentaje de población con limitación en este trabajo
se encontró que en Colombia según estudios realizados por el DANE para el año 2005 las
personas con discapacidad visual era del 43,2% del total de personas con alguna discapacidad,
también en el trabajo realizado por en donde se en el cual se muestra que la población objetivo
es de 39 millones en todo el mundo lo que equivale al 13% de la población mundial, con esto
se toma como base estos estudios para realizar la identificación de las necesidades que
presenta esta población en particular.

Como segunda instancia y tomando como referencia los trabajos de (Alarcon Ariza & Talero
Niño, German Leonardo, Pérez Holguín, 2013; OBANDO, 2015; Plikynas et al., 2020) se
plantea una etapa de diseño de alto nivel con el fin de identificar las diferentes partes que
componen el asistente que suplan las especificaciones de diseño identificadas en la etapa
anterior, además de identificar las diferentes tecnologías que más usadas en la implementación
de estos dispositivos.

Con base en diseño de alto nivel se propone realizar el diseño a detalle de cada una de las
partes identificadas para conformar el asistente, con el objetivo de identificar cual es el mejor

35
método de procesamiento de la información que reciba el asistente además de los distintos
elementos que componen cada parte de los módulos del asistente. (Caraiman et al., 2017;
OBANDO, 2015; Patel, Mistry, Desai, & Meghrajani, 2018).

Dentro de otros aspectos importantes que se encontraron en la revisión bibliográfica fue la


validación de funcionamiento de los prototipos propuestos, con lo cual también se propone
realizar esta mima validación de funcionamiento realizando la integración de todos los módulos
que conforman el dispositivo para detectar sus posibles fallos y realizar los ajustes necesarios.

Por último se plantea una etapa de validación del asistente con ayuda de personas que
presentan limitación visual como se realizó en los trabajos (ARIZA et al., 2010; Caraiman et al.,
2017; OBANDO, 2015; Romero et al., 2018; Sekhar et al., 2016) , realizando encuestas de
satisfacción al momento de utilizar el dispositivo propuesto para conocer la opinión de esta
población y determinar los posibles ajustes para trabajos futuros.

2.3. ESTADO DEL ARTE

Existen aproximadamente más de 285 millones de personas que sufren de una discapacidad
visual, de los cuales cerca de 39 millones de personas son ciegas y el restante son personas
que presenta baja visión. La mayor parte de personas con alguna discapacidad visual se
encuentra en edades mayores a 60 años, estos problemas han logrados ser mitigados gracias
al avance en tecnología médica, sin embargo, las personas se ven afectadas por degeneración
macular (destrucción lenta de visión central aguda) relacionadas con la edad. Debido a esto se
espera que en los próximos 25 años la población que sufra de alguna limitación visual se
triplique (Pararajasegaram, 2020).

Por esta razón se ha dado desarrollo a distintos tipos de dispositivos electrónicos los cuales
emplean diversas formas de detección de objetos, para dar más independencia a las personas
con limitación visual y mejorar la calidad de vida de las personas que presentan esta condición,
estos dispositivos se dividen en 3 tipos de pendiendo de la forma en que perciban la
información del entorno dichos tipos se muestran a continuación.

2.3.1 Dispositivos no basados en cámaras

Uno de los métodos más utilizados en la detección de objetos es el uso de sensores de


ultrasonido, ejemplo de esto es el desarrollo de unos lentes a los cuales se les acondiciono un
sensor ultrasónico y por medio de un microcontrolador se realizaba la adquisición de datos
captados por el sensor y determinar si hay presencia de obstáculos en la ruta del usuario, una
de las ventajas de este sistema es la portabilidad que ofrece, este tiene un alcance de
detección de 0 a 3m. Sin embargo su precisión es un poco más baja para los requerimientos de
la aplicación, lo cual se puede corregir haciendo mejoras al dispositivo o implementando
sistemas más robustos (Sadi et al., 2014).

Por otro lado, existe un dispositivo electrónico para dar asistencia a las personas invidentes el
cual consta de un chaleco en el cual se ubican cuatro sensores ultra sónicos además de 2
microcontroladores uno de ellos el maestro se encarga de recibir la información proveniente de
los sensores y enviar la señales de alerta audibles, las cuales son mensajes pregrabados que

36
le informan al usuario acerca de lo que hay en su entorno, el otro microcontrolador el esclavo
se comunica con el maestro mediante un receptor inalámbrico por comunicación serial RS232,
para de esta forma dar las alertas aptica al usuario mediante seis motores vibratorios que se
ubican en el chaleco (OBANDO, 2015)

Otro dispositivo basado en este tipo de plataformas es un asistente el cual está conformado por
un sensor ultrasónico con un rango de detección de 17 a 30 cm y un módulo GPS, el sensor
ultrasónico es usado para realizar la detección de objetos en la ruta que se traza por medio del
GPS y para alertar de algún obstáculo genera una alerta háptica la cual varia su intensidad
según sea la distancia a la que se detecta el objeto, una de las desventajas de este dispositivo
es que en ambientes cerrados como edificios el modulo GPS no hace una buena recepción de
los datos para realizar su ubicación (Miño, 2020).

Además de los prototipos desarrollados anteriormente, otro dispositivo implementado para la


asistencia de navegación de personas invidentes es el Smart cane este sistema fue
desarrollado para realizar la detección de objetos presentes en el recorrido realizado por el
usuario, este envía señales de manera audible o por señales vibratorias para darles
instrucciones de movilidad al portador del asistente. (Vásquez Salazar & Cardona Mesa, 2019).

Además de las diferentes plataformas en las cuales se soportan los asistentes de navegación
existen también existe diversas tecnologías que pueden ser usadas para la implementación de
prototipos con esta finalidad. Una de estas tecnologías es el BLE (Bluetooth Low Energy),
este trabaja realizando una red de etiquetas de navegación, esta alcanza una precisión de 1 a
2 m dependiendo de la propagación de la señal, uno de los ejemplos de dispositivos basados
en esta tecnología es el asistente SUGAR el cual usa etiquetas (BLE) para dar el
posicionamiento del usuario (Plikynas et al., 2020).

Los sensores infrarrojos también han sido utilizados como una alternativa para el desarrollo de
dispositivos de navegación de interiores, estos son usados para establecer la distancia de los
objetos dentro de la escena en la que se encuentre la persona con discapacidad visual, el
rango dinámico de estos sensores oscila entre 0.2 a 14 metros, la desventaja de los sistemas
basados en estos sensores es que son demasiado complejos e ineficientes en comparación
con otros asistentes que implementan otras tecnologías de posicionamiento (Plikynas et al.,
2020).

Además de esto también existen formas poco convencionales para realizar asistentes de
navegación en interiores, un ejemplo de esto es utilizar el campo magnético para el
posicionamiento, este utiliza el paisaje magnético que generan las edificaciones creado por sus
estructuras internas y los materiales con los cuales están construidas, estas crean
perturbaciones en el campo estable de la tierra y le dan forma al paisaje anteriormente
mencionado, dichas perturbaciones se usan para determinar la dirección, un asistente que usa
este método es GROPING el cual usa el campo geomagnético para generar mapas de
interiores, para esto se toma la huella dactilar magnética y la localización ligera luego se
reconstruye el mapa magnético para realizar la estimación de la posición del usuario (Plikynas
et al., 2020).

Sin embargo los asistentes basados en estas tecnologías no han tenido gran acogida en el
mercado dado a que estos pueden sufrir fallas, además de que su interfaz de comunicación

37
transmite poca información de los obstáculos que detecta y que puede ser un peligro potencial
de colisión (Vasquez Salazar & Cardona Mesa, 2019).

2.3.2 Dispositivos basados en cámaras.

Los sistemas basados en cámaras usan sensores RGB como fuente principal de información,
siendo capaces de reconocer objetos.

Ejemplo de estos asistentes, es el desarrollo de un dispositivo de navegación asistida el cual


detecta obstáculos dinámicos y ajusta la planificación de la ruta en tiempo real para mejorar la
seguridad mientras se realiza el recorrido, para esto el asistente cuenta con un editor de mapas
para analizar la información geométrica de la arquitectura de ambiente y de esta manera
realizar un mapa 2D, también aprovechando el posicionamiento que ofrece el VPS (Visual
Positioning Service) dentro del dispositivo Google tango, se realiza un algoritmo para alinear los
mapas y unirlo con un archivo de área visual que genera el sistema, además de incorporar una
cámara RGB-D para capturar imágenes del ambiente y pasándolas por un filtro Kalman, con un
sello de tiempo con el fin de realizar una detección de obstáculos eficiente, para la interacción
con el usuario este sistema cuenta con una interfaz HMI multimodal la cual cuenta con
interacción por canales de voz y audio y una robusta interacción háptica por medio de un Smart
cane (Li et al., 2019).

Los Smartphone también han sido usados para el desarrollo de estos asistentes, para los
Smartphone con sistema Android se ha desarrollado una aplicación la cual identifica códigos
QR, la ventaja de este es que no requiere ningún hardware adicional para su funcionamiento
además los códigos QR están distribuidos en el piso a una distancia determinada, este código
le da información al usuario de su posición actual y solicita el destino al cual se quiere dirigir la
persona con discapacidad visual para ofrecer así la ruta más óptima para llegar a su lugar de
destino, la aplicación cuenta con un rastreo de la ruta la cual si detecta una desviación este
envía alertas audibles al usuario para ayudar a regresa al usuario a la ruta trazada
anteriormente. Uno de los inconvenientes es que se debe estar todo el tiempo en línea, pero
con ayuda del módulo GPS se espera poder suplir este inconveniente y que la aplicación pueda
ser usada no solo para interiores sino también para exteriores (Idrees et al., 2015)

Dentro de los prototipos desarrollados para el apoyo apersonas con discapacidad visual existe
un asistente de navegación el cual se compone de un sensor Kinect de Microsoft, un teclado
numérico un sensor táctil y finalmente un bastón blanco y otros dispositivos para la
retroalimentación, el sensor Kinect se usa para realizar la búsqueda de objetos y luego envía
una retroalimentación al usuario mediante el sensor táctil, este cuanta con la capacidad de
reconocer varias clases de objetos como silla escaleras entre otros que estén fuera de rango
de detección con el bastón, este está diseñado para enviar la cantidad justa de información al
usuario y de la manera más eficiente posible (Takizawa, Yamaguchi, Aoyagi, Ezaki, & Mizuno,
2015).

Otro dispositivo realizado dentro de este campo es un prototipo realizado sobre la plataforma
Raspberry pi 3, el cual es capaz de reconocer las diferentes señales de tránsito entre ellas los
tres estados de un semáforo (rojo, amarillo, verde), este primero realiza una etapa de pre
procesamiento con el fin de destacar la información de mayor importancia, para dar más

38
facilidad al seccionamiento de los objetos de interés, para luego realizar una comparación y
realizar la distinción de los objetos identificados y de esta manera generar una alerta para
enviar un mensaje con la información obtenida por medio de alertas auditivas. La desventaja de
este prototipo es su tiempo de ejecución este asistente demoro en promedio de 4.3 segundos
entre adquirir los datos a analizar y enviar una alerta lo cual hace que la fluidez con la que el
usuario transita por el entorno se vea afectada (SEGURA MEDRANA, 2019)

Además de los dispositivos electrónicos anteriores para la asistencia de navegación de


personas con limitación visual se han llevado acabo el desarrollo de aplicaciones web, ejemplo
de esto es una aplicación web la cual pude ser usada en Smartphone con sistema Android y en
PC, esta aplicación hace uso de la cámara integrada en el Smartphone y la cámara webcam en
el PC, las imágenes capturadas por las cámaras son enviadas para ser analizadas en tiempo
real las cuales pasan por el algoritmo YOLO con el cual se realiza la detección de objetos
presentes en la imagen y que pueden ser obstáculos potenciales para el usuario de la
aplicación además de su ubicación exacta, una vez obtenida la información necesaria se
genera una alerta audible con la información de los obstáculos detectados y la ruta a transitar.
Al realizar las pruebas de funcionamiento de la aplicación este alcanzo una taza de aciertos en
la detección de objetos y su posición de 75% con lo cual se busca mejorar la aplicación para
tener una mayor exactitud al momento de realizar la detección y estimar la posición en la cual
se encuentran dichos objetos (Jadhav et al., 2021).

Un aporte más al desarrollo de asistentes de navegación es un prototipo el cual cuenta con dos
tipos de alerta audible y no audible además de una cámara Kinect con la cual se toman las
imágenes de a escena por la cual el usuario se desplaza además de estimar la distancia de los
objetos presentes en el ambiente en un rango de 50 a 250 cm, la alerta no audible consta de
tres dispositivos hápticos que se ubican en el abdomen de la persona con los cuales se
indicaba en qué posición se encuentra el obstáculo (derecha, centro e izquierda) este
dispositivo presento la limitante de que sus alertas vibratorias eran confusas además de no
ofrecer mucha información acerca del ambiente por el cual se está transitando (Romero et al.,
2018).

2.3.3 Dispositivos híbridos


En cuanto a los sistemas híbridos, se mezclan los dispositivos no basados en cámaras (RFI,
BLE, NFC, …) y el procesamiento de imágenes (Nair, Tsangouri, et al., 2018), en estos se
emplean cámaras RGB para mejorar la localización (Simoes et al., 2018). Según los usuarios,
el uso de varias tecnologías aumenta la precisión del sistema, además de notar que les facilita
llegar con mayor rapidez a sus destinos.

La compañía Google también ha trabajado en este campo y ha desarrollado un sistema el cual


utiliza Bluetooth y Google tango la cual es una plataforma de realidad aumentada, este sistema
hibrido reduce las debilidades que estas 2 tecnologías presentan de manera individual, este
sistema funciona mediante el algoritmo Dijikira recibiendo por parte del usuario el lugar de
destino y por medio de las imágenes tomadas por la plataforma Google Tango y las marcas
Bluetooth presentes en el ambiente se traza la ruta más corta desde el punto de partida al
punto de destino, este también cuenta con un módulo vibro táctil los cuales también tienen
sensores infrarrojos con los cuales realiza la detección del objeto haciendo que se produzca

39
una señal vibratoria con una velocidad inversamente proporcional a la proximidad del objeto es
decir entre más próximo este el objeto u obstáculo en la ruta trazada más veloz será la
vibración. Una de las limitantes que presentaba este dispositivo es el tiempo en el que tarda
para realizar la abstracción de características del entorno en el que se encuentra el usuario
(Nair et al., 2018).

Otro dispositivo que integra varias tecnologías es un asistente de navegación el cual incorpora
dos formas de realizar el procesamiento de la información obtenida del ambiente, la primera
forma es un modo online se realiza la fusión de datos de radio frecuencia junto con unos
marcadores visuales o solo por el wifi cuando uno de los sensores se ve fuertemente afectado
por ruidos u otras interferencias, el segundo modo es el modo off line, el mapeo de interiores se
realiza mediante la fusión de datos de radiofrecuencia y marcadores visuales, construyendo
una representación del entorno por el cual está transitando la persona portadora del dispositivo
(Simoes, Da Silva, Da Silva, & De Lucena, 2018).
Otro aporte realizado en cuanto al desarrollo de asistentes de navegación para invidentes es un
dispositivo para detección de objetos en ambientes cerrados el cual cuenta con unos sensores
de ultrasonido con los cuales envían la información de la ubicación de los objetos presente en
el entorno a un microcontrolador para su procesamiento, el sistema no solo cuenta con
sensores ultrasónico sino también con sensores laser y la captura de imágenes para obtener
información más precisa del ambiente que rodea a la persona. Para la interacción con el
usuario cuenta con un motor vibrador que se ubica en la cintura del usuario además de dar
alerta de forma audible mediante auriculares estéreo, en cuanto al procesamiento de imágenes
este procesa grupos de seis imágenes de una misma escena para determinar si hay un
obstáculo o no y determinar la ruta más segura para el usuario, dentro de los problemas
encontrados con este sistema es que no logra detectar de manera eficiente las paredes
generando un riesgo de colisión al usuario (Gabriel, 2018).

Las FPGA (Field Programmable Gate Array) han sido utilizadas con el fin de desarrollar
prototipos eficaces de asistencia de navegación para personas con discapacidad visual, para
ello se ha aplicado el uso de algoritmos de disparidad, y las diferentes arquitecturas de
hardware eficientes para describir estos algoritmos sobre la FPGA, con los cuales es posible
estimar la distancia del obstáculo y enviar la alerta correspondiente al usuario mediante señales
audibles, la desventaja de esto es que para realizar un sistema veloz se requiere el uso de
muchos elementos lógicos a pesar de optimizar el algoritmo, por lo cual ha recurrido a
arquitecturas semiparalelas para reducir los elementos lógicos en la implementación del
sistema (Sekhar et al., 2016).

En cuanto a trabajos realizados en este campo por parte de la Universidad Pedagógica y


Tecnológica de Colombia (UPTC), en el año 2010, el Grupo de Investigación en Robótica y
Automatización industrial (GIRA), diseñó un sistema electrónico de guía para personas
invidentes en espacios cerrados controlados, como trabajo de grado dirigido por el Ing. Wilson
Javier Pérez Holguín. Este sistema estaba conformado por: dos cámaras, dos sensores
ultrasónicos, 2 actuadores de vibración y una tarjeta de adquisición basada en el
microcontrolador PIC18F2550, y este se conectaba a un computador encargado de realizar la
identificación de obstáculos a una distancia de hasta 6 metros. Para distancias inferiores a 3
metros, la detección de obstáculos era realizada mediante los sensores ultrasónicos que

40
enviaban la información al computador a través de la tarjeta de adquisición. Para distancias
mayores a los 3 metros, la detección de obstáculos era realizada a través de las imágenes
obtenidas por las cámaras. Por último, los actuadores de vibración le indican al usuario la mejor
ruta de navegación. Una de las recomendaciones de este trabajo es estudiar la viabilidad de
implementar el algoritmo general en un sistema embebido, con el fin de aumentar la velocidad
de procesamiento y la portabilidad del sistema. El dispositivo desarrollado en el año 2010 no
tenía las capacidades para detectar puertas de acceso, interruptores, escalones, huecos y
objetos pequeños. Además, de tener un tiempo de procesamiento elevado, aproximadamente
de treinta segundos por imagen, demostrando el principal problema de esta implementación
(ARIZA et al., 2010).

Tabla 2 Estado del arte

TECNICA DE
Tipo de sistema PLATAFORMA SENSORES PROCESAMIENTO AUTOR

Ultrasónico Eco localización (Sadi et al., 2014)

Microcontrolador Ultrasónico Eco localización (Miño, 2020)

GPS Geolocalización

No basados en Ultrasónico Eco localización (OBANDO, 2015)


cámaras
No registra BLE Beacon No registra (Plikynas et al.,
2020)

No registra Ultra sonido Eco localización (Vasquez Salazar


& Cardona Mesa,
2019)

No registra No registra Geoposicionamiento (Plikynas et al.,


2020)

No registra Cámara RGB-D VPS (Li et al., 2019)

Smartphone cámara Escaneo código QR (Idrees et al.,


2015)

(SEGURA
MEDRANA,

41
Raspberry pi Rasbpicam Visión por 2019)
computadora
Basado en
cámaras

Raspberry pi Cámara Kinect Visión por (Romero et al.,


computadora 2018)

Computador Cámara web


personal Cámara integrada
Smartphone Algoritmo YOLO (Jadhav et al.,
2021)

Harris Corner
detector-Visión (Takizawa et al.,
Computador Cámara Kinect stereo 2015)

Cámara

No registra BLE Beacon Algoritmo de (Nair et al., 2018)


Dijkstra
Google Tango

ultrasonido Eco localización

Computador Cámara Disparidad (ARIZA et al.,


personal 2010)

ultrasonido Eco localización

Microcontrolador Cámara IR No registra (Gabriel, 2018)


Híbridos
ultrasonido Eco localización

FPGA cámara Disparidad (Sekhar et al.,


2016)

Cámara Marcadores
visuales
Raspberry (Simoes et al.,
wifi No registra 2018)

Sensores de Marcadores de

42
radio frecuencia radio frecuencia

Fuente. Elaborada a partir de “Revisión bibliográfica realizada en el desarrollo del proyecto”.

43
3. METODOLOGÍA EMPLEADA

1.
2.
3.1. MATERIALES Y TECNICAS

3.1.1 HARDWARE

JETSON

Es un sistema en módulo SOM (Sistem On Module) completo, con CPU, GPU, DRAM y
almacenamiento flash de alto rendimiento de formato pequeño, SDK (software development kit)
NVIDIA JetPack™ para acelerar el software y un ecosistema con sensores, SDK, servicios y
productos para acelerar el desarrollo. Dentro de las plataformas se encuentra la Jetson Xavier
Nx de Nvidia, la cual cuenta con las siguientes especificaciones:

Es un sistema en módulo SOM (Sistem On Module) completo, con CPU, GPU, DRAM y
almacenamiento flash de alto rendimiento de formato pequeño, SDK (software development kit)
NVIDIA JetPack™ para acelerar el software y un ecosistema con sensores, SDK, servicios y
productos para acelerar el desarrollo. Dentro de las plataformas se encuentra la Jetson Xavier
Nx de Nvidia, la cual cuenta con las siguientes especificaciones:
 puede ser alimentada con voltajes entre el rango de 9v a 20v.
 potencia de trabajo hasta los 15W otorgando altas tasas de frecuencias de
trabajo tanto de la CPU como de la GPU.
 una GPU volta con 348 núcleo Nvidia Core y de 48 hilos por núcleo.
 procesador ARM Carmel V8.2 de 64 bits.
 memoria DRAM de 8GB LPDDR4x.
 almacenamiento de 16GB de memoria eMMC 5.1.
 4 puertos USB 3.1.
 GPIO de 40 pines, donde varios de estos están dedicados a módulos
específicos como son dos módulos PWM.
 cuenta también con un conector HDMI.
 conector Gigabit ethernet (Nvidia, 2020).

Fue necesaria la instalación del sistema operativo Linux en su versión XXX sobre una memoria
micro sd (Micro Secure Digital) de 64GB, Para el uso del GPIO, fue necesaria la instalación de
la librería Rpi.GPIO-0.5.11 con la cual fue posible configurar los pines como entrada o salida e
interrupción por flanco.

MICROCONTROLADOR PIC 12675

44
Es un micro controlador potente y fácil de programar, tiene un encapsulado de 8 pines, cuenta
con 4 canales para el conversor análogo digital los cuales tienen una resolución de 10 bits,
además de esto tiene una memoria flas la cual se usa como memoria de programa de 1.75
Kbytes y puede ser alimentado con voltajes en el rango de 2 a 5.5 voltios (MICROCHIP, 2010).
En la memoria interna del microcontrolador se encuentra un programa con el cual se configuró
el ADC a 10 bit de resolución y se dispuso la toma de datos cada XXX segundos, junto a un
acumulador y una función que se encargara de promediadiar 4 tomas de datos pasadas.

KINECT
El sensor Kinect es un dispositivo desarrollado por la compañía Microsoft, el cual está orientado
principalmente a la industria de los videojuegos. este dispositivo está constituido por una
cámara RGB, un sensor infrarrojo o de profundidad, un micrófono multi array y un procesador
personalizado que es propio de Microsoft. Por medio de su sensor infrarrojo permite obtener un
mapa de profundidad, la cual permite estimar la distancia de los diferentes obstáculo u objetos
presentes en la imagen capturada. Posee también una base graduable de entre 30° y –30° en
el eje vertical (Guerrero & Villaluenga, 2013).

Figura 18 Sensor Kinect de Microsoft

Fuente (Córdova Lucero, 2012)

La cámara Depth o sensor de profundidad 3D funciona a partir de dos elementos, uno de ellos
es un proyector de luz de infrarrojos y un sensor de recepción de la misma luz, el software del
Kinect determina una matriz de 640*480, en la cual el pixel vario su valor dependiendo a que
distancia se encuentre el objeto con respecto al sensor

Figura 19 Proyección y recepción del haz de luz infrarrojo

45
Fuente Tomada de(ideas geek, 2018)

Para el manejo de la cámara Kinect en la plataforma Jetson mediante el lenguaje de


programación Python, se realizó la correcta instalación del driver freenect y la descarga del
repositorio libfreenect donde se encuentra la librería propia en lenguaje C, debido a esto, fue
necesaria la traducción a lenguaje Python de la librería por medio de un módulo de extensión
basado en el compilador estático cython, módulo de extensión que se encuentra el mismo
repositorio, Asegurando así la correcta comunicación, sincronización y envió de comandos que
permitieron controlar la calibración de la cámara y extracción de la información suministrada
por el dispositivo Kinect®.

Debido a que la comunicación del dispositivo con la plataforma Jetson, es por medio de interfaz
USB 2.0 también fue necesaria la instalación de la librería libusb-1.0, la cual permitió acceder a
la información directamente por medio del módulo USB de la Jetson.

SENSOR DE ULTRASONIDO HRLV-MAXSONAR-EZ0

El sensor de ultrasonido HRLV-MaxSonar-EZ0 permite hacer mediciones desde 30cm a 5m,


cuenta con una resolución de 1mm, su alimentación consta de una fuente de alimentación de
entre 2,2 a 5,5 voltios estables y los formatos de salida de la interfaz son anchos de pulso,
voltaje análogo y digital serial RS232 o TTL. cuando se usa la salida de voltaje análogo la
distancia tiene un factor de escala dado por la siguiente expresión:

Vin∗5 mm
distancia=
1024

Ecuación 16 Calculo de distancia sensor HRLV-MAXSONAR-EZ0

Además, este sensor actualiza los datos de distancia cada 0.1 segundos lo que permite que
realice toma de datos en tiempo real (MaxBotix Inc., 2021).

MODULO DE AUDIO

El adaptador USB ALUMINIUM STEREO SOUND ADAPTER es un adaptador de tarjeta de


sonido y de audio el cual permite ser usado con un sistema portátil o de escritorio, es
compatible con todos los sistemas operativos convencionales (Windows, Mac, Linux). Este es
un adaptador de audio 3D, con una especificación USB 2.0 de alta velocidad, tiene un conector
de salida estéreo y uno de entrada para micrófono (Sabrent, 2021).

MODULO DE VIBRACION

46
El módulo de vibración fue dividió en dos secciones: La primera sección del módulo constó en
el uso de dos motores de referencia N20, el cual tiene una tensión de alimentación entre 1.5 a
9v, tiene una velocidad de rotación máxima de 8800 RPM, cuenta con una corriente nominal
90mA, en ocasiones estos motores son usados para realizar funciones de realimentación
háptica en diversos dispositivos para diferenciarlos de la competencia. La segunda sección de
modulo es el driver de potencia el cual está conformado por el módulo Arduino DRV8833, este
es un dispositivo el cual cuenta con un puente dual para el control de giro para motores DC, el
bloque de salida del dispositivo consiste por un mosfet de potencia de canal N, también cuenta
con funciones de protección contra cortos y sobre corrientes, un bloqueo por sub tensión y
sobre calentamiento, este puede ser alimentado en un rango de tensión entre -0.3 v a 11.8 v y
en sus entradas digitales tensiones entre -0.5v a 7v (Texas, 2015).

3.1.2 FIRMWARE Y SOFTWARE

 Herramientas

El sistema operativo Linux en su versión 18.4 es el recomendado por el fabricante de la tarjeta


de desarrollo, este SO (Operative System) permitió la instalación y uso del software Python
versión 3.8 siendo este el lenguaje de programación predilecto para la descripción del
programa principal del prototipo.

Para el desarrollo del programa del microcontrolador, se utilizaron herramientas en las etapas
de diseño, simulación y depuración tales como la interfaz de desarrollo del código del
controlador CCS en su versión 5.083 y el simulador funcional Proteus en su versión 8.10
utilizado principalmente para la prueba y depuración del algoritmo descrito para el
microcontrolador.

PyCUDA

Para dar más accesibilidad a la comunidad de desarrolladores a el uso de GPUS, se han


desarrollado varias interfaces dentro de las cuales se encuentra PyCUDA, este se desenvuelve
alrededor de la interfaz de CUDA, esta tiene fácil acceso a Pythonic NVIDIA CUDA API, esta
interfaz permite crear kernels descritos en leguaje c y ser llamados como funciones dentro del
código descrito en Python, lo cual brinda una herramienta de gran ayuda puesto que ofrece la
posibilidad de programar el kernel a lanzar en la GPU para los programadores familiarizados
con el lenguaje nativo de CUDA y trabajar con las diferentes librerías que permiten manipular
arreglos de datos que contiene el lenguaje Python (Klöckner, 2021).

3.1.3 TECNICAS

ESCALIZACION DEL SENSOR DE PROFUNDIDAD

La escalizacion del sensor de profundidad se basó principalmente en la obtención de la


ecuación característica de los valores promedios del sensor, para ello se realizaron las
siguientes acciones:

47
1. Se realizó la descripción de un algoritmo en Python, el cual fuese capaz de calibrar el
dispositivo para realizar la adquisición y posterior almacenamiento de los datos
correspondientes al mapa de profundidad en formato JPEG y CSV.
2. Se ubicó la cámara Kinect a una altura de 65 centímetros y con un ángulo de inclinación
de 30° para el dispositivo, 0 grados con respecto al suelo.

3. Un obstáculo con medidas 67cm x 106cm fue ubicado frente a la cámara primeramente
a una distancia mínima de 50cm hasta una distancia máxima de 350cm, se obtuvieron 8
datos almacenados por toma y formato realizando variaciones cada 5cm entre toma y
toma.

Figura 20 pruebas de escalización

Fuente Tomada de (Autores)

4. Se describió otro algoritmo en Python que fuese capaz de acceder a los datos
almacenados en formato JPEG y CSV resultantes del anterior paso, con el fin de lograr
promediar el valor de los pixeles que corresponden al objeto identificado como
obstáculo en cada formato correspondiente a cada distancia para así generar una hoja
de cálculo donde se tabularon los resultados obtenidos.
1.1

5. con los datos plasmados en la hoja de cálculo, se promediaron los 8 diferentes valores
obtenidos de los valores de pixel por distancia recorrida, para así obtener un valor de
único de pixel.
6. con los resultados promediados obtenidos por cada distancia vs valor de pixel, se
realizó la gráfica XXX para luego agregar la línea de tendencia y ecuación característica
de esta.

Cabe resaltar que, se realizó la misma prueba en diferentes horas del día y con variaciones en
el nivel de luminosidad tabulando y promediando los resultados obtenidos, llegando a una
ecuación característica del funcionamiento general del sensor.

ALGORITMO PARA LA DETECCION DE OBSTACULOS

48
El algoritmo para la detección de obstáculos se basó principalmente en el análisis por intervalos
de distancias del mapa de profundidad entregado por el sensor, la ubicación y distancia de los
obstáculos resultados que serán representados por un mapa de profundidad 2D en formato
binarizado. El proceso de funcionamiento se describe en las siguientes iteraciones:

1. se realiza la definición de tres variables las cuales representan el valor máximo y el


valor mínimo de los intervalos dinámicos de las distancias de interesa, además de un
valor de incremento para dichos intervalos.

2. Se umbraliza el mapa de profundidad entregado por la cámara Kinect, aplicando como


límites de la umbralizacion, los valores máximos y mínimos de los intervalos de
distancia definidos anteriormente.

3. Se aplican operaciones morfológicas

4. Se fracciona la imagen en 15 secciones donde se evalúa el valor de los pixeles que


componen cada una de las secciones con el fin de determinar si existe un obstáculo
además de identificar su posición, plasmando los resultados en formato binario en una
matriz donde un 1 significa presencia de un objeto y un 0 la ausencia del mismo.

Figura 21 Seccionamiento de la imagen y matriz resultante de la detección de objetos

5. Se aplica el aumento al intervalo de distancias y se realiza el mismo procedimiento


desde la iteración 2 a la 4 hasta ocupar todo el rango de distancias que compone el
mapa de profundidad. La cantidad de frames analizados, la resolución y precisión
dependerá del valor de incremento.

¿ frames=∫ ( 255−valor alto ventana¿¿¿ incremento )+ 1

49
Ecuación 15 Cálculo del número de frames procesados.

6. Se sintetiza la información de los tres segmentos que componen cada columna en la


imagen, con el fin de identificar en cinco posiciones (muy izquierda, izquierda, centro,
derecha y muy derecha) la ubicación de los posibles obstáculos. Se realiza este
procedimiento por cada uno de los frames correspondientes a los intervalos de
distancias.

DISCRIMINANTE DE SUELO
El algoritmo para la discriminación del suelo se basó principalmente en la teoría de perspectiva
que tiene la imagen obtenida por la cámara, en este se tuvo en cuenta que la cámara
idealmente:

Figura 22 Calculo de distancia de discriminación

 Está situada a 0 grados


respecto al horizonte (Y = 90°)
 a = altura a la que se sitúa la
cámara es conocida
 β = apertura del lente de la
cámara es de 69°

Fuente Tomada de (Autores)

Donde:
a b=c∗sin β
c=
cos β

Ecuación 17 Cálculo de distancia de discriminación

Por lo tanto, b es la distancia desde la cual se empezará a detectar el suelo como un objeto,
para obviar este parámetro fue necesario partir de la matriz resultante del proceso 5 del
algoritmo para la detección de obstáculos adonde: para las capas donde el numero entero del
intervalo de distancias (encontrado en las posiciones [x, 15]) sea igual o mayor a la distancia
obtenida b, en las capas si los valores de las secciones 6, 7 y 8, (las cuales refieren a la parte
baja central de la imagen) son 0, la sección correspondiente al elemento de la fila inferior y que
hace parte de la misma columna también serán puestas en estado de no identificación de
objeto o cero, de modo contrario, cada una mantendrá su valor.

TRACE PLANNING

50
El algoritmo para la creación de la ruta será el encargado de analizar la matriz entregada por el
algoritmo para la detección de obstáculos. Está diseñado principalmente para seleccionar la
ruta que presente ningún obstáculo o el obstáculo a la mayor distancia asegurando al usuario
una más cómoda y segura vía para transitar, además de entregar la información necesaria para
la generación de las alertas. El proceso de funcionamiento se describe en los siguientes
puntos:

1. Se compara cual columna es la que a mayor distancia se encuentra la presencia


de un carácter 1, el cual indica presencia de objeto, o presenta ausencia de éste,
y se elige como ruta ideal para transitar.

2. Se genera un vector de 5 posiciones con la información necesaria para generar


la alerta organizado de la siguiente manera: En la posición 0 del vector se tiene
la información necesaria para encender o apagar el motor izquierdo según sea el
caso, en la posición 1 valor distancia mínima a la que se encuentra el obstáculo
por la izquierda, en la posición 2 contiene la información correspondiente al
encendido o apagado del motor derecho según la ruta a indicar, en la posición 3
se tiene el valor de distancia mínima de obstáculo por la derecha, en la posición
4 está la información concerniente a la información de ruta sugerida.

Figura 23 vector de alertas.

Fuente Tomada de (Autores)

ALGORITMO FILTRO DE MEDIA MOVIL

GENERACION DE ALERTAS

 AUDIBLES
Para las alertas audibles se definió una función la cual selecciona la posición 4
del vector de alertas como entrada con el fin de reproducir una alerta pregrabada
correspondiente a la ruta sugerida para luego ser reproducida.

 HAPTICAS
Para estas alertas también se definió una función la cual generara una señal
PWM modificada la cual varia su ancho de pulso y su frecuencia. La salida de
esta señal se realiza por dos pines del GPIO de la siguiente manera:

1. Se selecciona las posiciones 1, 2, 3 y 4 del vector de entrada alerta, que


poseen información como el On/Off de los motores y la distancia a la que se
encuentra un obstáculo por cada uno de los lados.
51
2. Se compara el valor de On/Off de cada motor y dependiendo de la distancia
a la que se encuentre el objeto por el lado en el que el motor se encuentre
encendido, se designa un valor de PWM a los motores.

3. Se cambia la frecuencia de los motores de acuerdo a los valores


seguidamente definidos.
Tabla 3 Tabla de generación PWM respecto a la distancia de detección

DISTANCIA MINIMA DISTANCIA PWM (%) FREFCUENCIA (Hz)


(cm) MAXIMA (cm)

50 100 100 2000

101 199 60 1000

200 300 30 25

Fuente. Elaborada a partir de “Trabajo experimental”.

3.2. METODOLOGÍA

3.2.1 DETERMINACIÓN DE LAS CARACTAERISTICAS MINIAS DE


DISEÑO
Tomando en cuenta el proyecto llamado: diseño e implementación de un sistema electrónico de
guía para personas invidentes en espacios cerrados controlados (blind guidance system)
realizado en el año 2012, los autores pusieron a consideración algunas recomendaciones para
trabajos futuros, algunas de estas fueron referente para el desarrollo de este prototipo
renovado, siendo estas:
- Implementar el sistema de guía para personas invidentes en un sistema de
procesamiento embebido, de esta forma garantizando una ejecución en tiempo real,
mayor portabilidad y posible comercialización del dispositivo.
- mejorar la percepción de las cámaras utilizadas o bien integrar este modelo a sensores
más precisos y menos sensibles a ruidos y luminosidad externa.
- Respecto al método de estimación de profundidad, es necesario realizar la evaluación
de nuevos métodos más robusto, que ofrezcan un mapa de disparidad más confiable y
con un menor costo computacional.

Teniendo en cuenta las consideraciones planteadas se define que:

- El procesador principal será una GPU de marca NVIDIA.

52
- El sistema garantizará un menor tiempo de ejecución y mayor precisión al momento de
realizar la ruta y detección de obstáculos que presenten algún riesgo al momento de
desplazamiento del usuario por un ambiente cerrado controlado.
- El sistema será basado principalmente en el procesamiento de imágenes.
- El sistema se ejecutará sobre un dispositivo que permita el procesamiento embebido,
con el fin de facilitar su portabilidad.

La generación de la ruta, se basará principalmente en la seguridad del usuario, con el fin de


que no colisione, además de lograr un desplazamiento optimo

3.2.2 DEFINICIÓN DEL DISEÑO DE ALTO NIVEL DEL PROTOTIPO

Una vez se establecieron las características para el nuevo diseño, el primer paso se centró en
definir la arquitectura interna del dispositivo de guía para invidentes. Para cumplir con las
características mínimas de diseño, se decidió dividir el problema general en partes o
subsistemas, como estrategia para llegar al objetivo de diseño. El esquema de la Figura 40
muestra los principales subsistemas.

Figura 24 Esquema general de la arquitectura interna del dispositivo de guía para invidentes

Fuente Tomada de (Autores)

Con los subsistemas establecidos, se procedió a definir la arquitectura basada en una


plataforma como único dispositivo de procesamiento, a la cual le ingresará información desde
el subsistema de sensores encargado de entregar la información proveniente del ambiente en
formato de imágenes.

Dentro del subsistema de plataforma, los datos entrantes serán trabajados por componentes
internos tales como:

a. Subsistema de algoritmo donde se aplicarán técnicas para limpiar y seleccionar la


información de interés además de localizar los obstáculos presentes en el ambiente.
b. Subsistema de elaboración de rutas donde se evaluará y elegirá la ruta que satisfaga
las características de diseño.
c. Subsistema de generación de alertas donde se crearán las señales auditivas y de PWM
correspondientes a la ruta anteriormente definida.
d. Sub sistema de alerta de punto ciego será el encargado de revisar la información
entrante del sensor de ultrasonido y dependiendo de su valor enviará directamente la
alerta.

Figura 25 Esquema general de la arquitectura interna del dispositivo de guía para invidentes

53
Fuente Tomada de (Autores)
Por último, el subsistema de interacción humana será el encargado de recibir la información y
traducirla a señales eléctricas, las cuales por medio de transductores serán emitidas de forma
audible y háptica al usuario.

3.2.3 Selección de hardware necesario para funcionamiento del prototipo

Teniendo en cuenta las características mínimas del prototipo, en cuanto a Hardware se


requiere trabajar sobre una plataforma de fácil y ligera portabilidad que además incluya una
GPU de marca NVIDIA como soporte para el procesamiento de datos gráficos, por este motivo
la búsqueda de la plataforma se basó principalmente en la comparación de hardware vs
potencia de procesamiento obteniendo los siguientes resultados:

Tabla 4 Tabla de selección hardware.

Platafor GPU CPU Memoria Sistema Requerimientos Interfaz de Dimensio Costo


ma Operativ de operación periféricos nes
128 núcleos ARM Cortex- RAM: 2GB Rango 1 puerto 69.6 mm
de A57 (Quad o temperatura de - para tarjeta x 45 mm
arquitectura Core) con 4GB 25C°-97C° microSD
Maxwell con una Potencia de 5 a 4 Puertos
Jetson soporte para frecuencia 10W USB
NANO Open GL maxima de Almacena Voltaje de 1 módulo
4.6, Open operación de miento: alimentación de PWM
GL-ES, 1.43 GHz eMMC 5V 1 UART, dos
CUDA, 16 GB módulos SPI
Vulkan1.1 1 conector
con una para rasbian
frecuencia cam,
máxima de 1 módulos
Operación I2C
921MHz 1 puerto
GPIO de 40
pines
384 núcleos, ARMv8.2 Rango de 1 puerto 69.6 mm
48 Tensor (64-bit) 3x temperature para tarjeta x 45 mm
cores con dual-core RAM: 8GB –25°C – 90°C microSD

54
soporte para CPU clusters Potencia 4 puertos
OpenGL (six NVIDIA soportada de USB, 2
Jetson 4.6,OpenGL Carmel Almacena 10W a 15W módulos
XAVIER- ES 3.2, procesador miento: Voltaje de PWM, 1
NX Vulkan, cores eMMC alimentación: módulo
1.1,CUDA frecuencia 16 GB 9Va 20V SDIO, 2
10, con una máxima de módulos
frecuencia operación SPI, 1
máxima de 1900 MHz UART, 1
operación de módulo
1100 MHz CAN, 2
módulos I2C
, 1 conector
para rasbian
cam,
1 puerto de
40 pines
GPIO
ASUS 2048 Intel Core i7 RAM: 114 W 3 Puertos 1574
VivoBok núcleos 11370H 16GB USB USD
K3500P CUDA Processor Windows 1 Puerto
C Arquitectura 3.3 GHz USB tipo C
Ampere (12M Cache, Almacena 1 Puerto
Vulkan1.1 up to 4.8 miento: Linux microSD
con una GHz, 4 SSD 512 1 puerto de
frecuencia cores) GB audio
máxima de
Operación
1740MHz
PC 1280 RAM: 8GB 650 W 788
escritorio nucleos
CUDA Windows
Arquitectura Almacena
Pascal miento:
con una SSD 512 Linux
frecuencia GB & HDD
máxima de 2TB
Operación
1708MHz

Fuente. Elaborada a partir de “Hojas de especificaciones de las plataformas consultadas”.

55
Teniendo en cuenta los resultados anteriormente mostrados, se optó por el uso de la
plataforma Jetson en su variante Xavier la cual fue adquirida por el grupo de investigación
GIRA, esta plataforma cumple con las características definidas anteriormente ya que:

1. Posee un procesador gráfico de marca NVIDIA.

2. Presenta un precio en el mercado asequible.

3. Las características físicas la hacen ideal para prototipos portátiles y de bajo consumo.

4. Es un módulo que ejecuta un sistema operativo de libre acceso.

5. cuenta con los puertos necesarios para la conexión de periféricos y actuadores.

3.2.4 Estudio de la arquitectura y tecnología del kit de desarrollo para GPU


NVIDIA Jetson

Arquitectura Maxwell y Volta

En la arquitectura Maxwell cada SM esta particionado en cuatro bloques de procesamiento esta


reduce el consumo energético en la ejecución de instrucciones además de optimizar el flujo de
datos, cada Maxwell SM (llamado SMM) posee su propio búfer de instrucciones, programador y
32 núcleos CUDA.

La arquitectura de los SMM y el rendimiento del procesamiento de píxeles hacen de esta


arquitectura la más adecuada para renderizar interfaces de usuario avanzadas y aplicaciones
de juegos complejas; la eficiencia energética de la GPU Maxwell permite este rendimiento en
dispositivos con entornos de energía limitada.

En cuanto a la arquitectura Volta cada SM esta seccionado en cuatro bloques de


procesamiento al igual que la arquitectura Maxwell sin embargo la arquitectura Volta se
diferencia en que cada uno de los SM tiene su propio buffer de instrucciones además de
núcleos CUDA y tensor core, cada tensor le proporciona una matriz de procesamiento 4x4x4
para realizar operaciones matemáticas de fusión de precisión mixta como multiplicación y suma
(FMA).

La arquitectura SM y el rendimiento del procesamiento de píxeles lo hacen una muy buena


alternativa para renderizar interfaces de usuario avanzadas, mientras que la eficiencia de la
GPU Volta permite este rendimiento en dispositivos con entornos de energía limitada.

3.2.5 Sensores a utilizar


De acuerdo a los antecedentes consultados y teniendo en cuenta las características
específicas nombradas anteriormente, la forma de adquisición y procesamiento de imágenes
resulta ser la más precisa e idónea para identificar variables del ambiente, esto claro, si se

56
cuenta con un sensor capaz de entregar imágenes con suficiente calidad e información de
interés.

Debido a esto, y con el objetivo de realizar la selección del dispositivo, se procedió a la


comparación de dos cámaras, cuya principal característica es la de poseer un sensor infrarrojo
con el cual genera un mapa de profundidad. A continuación, se muestra la tabla de
comparación:

Tabla 5 Tabla de comparación de Sensores RGB y Profundidad

Dispositivo Sensores Campo de vision Fluj Fuente Interfaz


o de datos de de
alimentac conexión
ión
Color: sensor Campo de visión 640 × 480 a 12 voltios
CMOS horizontal: 57 grados 16 bits de
profundidad
@ 30fps
Profundidad: Campo de visión vertical: 640 × 480 12 vatios
sensor CMOS y 43 grados 32-bit de
proyector de luz IR color
Kinect @30fps USB 2.0
Micrófono multi- rango de inclinación Audio de
arreglo física: ± 27 grados 16-bit @ 16
Ajuste de sensor Rango de profundidad kHz
con motor de del sensor: 50
inclinación centímetros – 3,5 metros
Giroscopio
Color: sensor Campo de visión 640 × 480 a 5 voltios
Intel cromático con ISP horizontal: 71.5 grados 16 bits de
realsense discreto profundidad
camera @60fps
sr300 Profundidad: Campo de visión vertical: 1920 × 1080 1.8 vatios USB 3.0
sensor infrarrojo 55 grados 32-bit de
monocromático y Rango de profundidad color
proyector de luz IR del sensor: 10 @30fps
centímetros – 1.5 metros

Fuente. Elaborada a partir de “Hojas de especificaciones de las cámaras consultadas”.

Teniendo en cuenta el tipo de información suministrada por cada sensor, sus características
electrónicas y físicas, se optó por la implementación del módulo Kinect de Microsoft, como
principal fuente de información del ambiente capaz de entregar imágenes digitalizadas tanto en
RGB como un mapa de profundidad el cual será de gran utilidad para el proyecto, además de

57
facilitar el análisis de los datos debido a que la plataforma utilizada facilita también la conexión
y sincronización de los dispositivos al momento de realizar el muestreo del ambiente.

Debido a que la cámara del Kinect tiene un ángulo de apertura de 69° se genera un punto ciego
el cual causa un gran problema al momento de la detección de obstáculos que se encuentren
en esta zona generando un gran riesgo de colisión al usuario.

Figura 26 Punto ciego cámara Kinect

Fuente Tomada de

Teniendo en cuenta esta dificultad se procedió en la búsqueda de un método el cual permitiera


suplir esta dificultad de una manera óptima, precisa y sencilla, tomando como base la Error:
Reference source not found se procedió a la selección de un sensor el cual base su
funcionamiento mediante el uso de ondas ultrasónicas, una vez se define el tipo de tecnología,
se consulta con los fabricantes especializados y generales sobre el sensor analógico adecuado
que cumpla con los requerimientos para la aplicación a desarrollar
Tabla 6 Tabla de comparación de Sensores Ultrasónicos.

Fabricante Serie Rango Alimentación Taza de Comunicación


muestreo
OSEPP HC-SR04 5 voltios 52 Hz Lectura de
Electronics 2cm a 15 miliamperios tiempo de
Adafruit 4007 400cm 3 – 5 voltios ancho de pulso

DFRobot MaxSonar-EZL0 30cm 3.3 – 5.5 voltios 10 Hz Salida serial


a RS232
750cm Lectura de
tiempo de
ancho de pulso
Lectura
MaxBotix MaxSonar- 30cm 2.7 – 5 voltios análoga
MB1003 a
500cm
EV_MOD_CH201 5cm a 1.8 voltios 1 Hz

58
TDK 30cm
InvenSense SRF08 40cm 5 voltios 26 Hz I2C
a 50 miliamperios
600cm
DFRobot 981 2cm a 5 voltios 47 Hz Lectura de
200cm 15 miliamperios tiempo de
ancho de pulso

Fuente. Elaborada a partir de “Hojas de especificaciones de las cámaras consultadas”.

Al comparar los datos presentados en la Error: Reference source not found, se observan
diferencias en las características de los sensores. Se encuentran para uso general con un bajo
costo, pero con la desventaja de baja sensibilidad, poca información del rango dinámico.
Igualmente, se presentan otros sensores con buena sensibilidad, ancho de banda adecuado y
rango dinámico aceptable, pero a un elevado costo.

3.2.6 Revisión y selección de los algoritmos para la detección de obstáculos.

Con el diseño de alto nivel ya planteado y los materiales elegidos se procedió en la búsqueda,
comparación y selección de diferentes algoritmos de reconocimiento de objetos debido a que
es necesario identificar los obstáculos presentes en el ambiente además de conocer la
distancia a la que se encuentran, con el fin de crear un mapa de dos dimensiones el cual
permita elegir una ruta libre de obstáculos que permita un seguro desplazamiento para el
usuario, debido a la naturaleza de la plataforma es necesario que el algoritmo sea fácilmente
paralelizable con el fin de aprovechar la velocidad de procesamiento siendo este el principal
objetivo a tratar en este proyecto.

Tomando como base la anterior premisa, y de acuerdo a los antecedentes consultados, las
técnicas IA más utilizadas en las últimas décadas para el procesamiento de imágenes según
[Ali2015] son las redes neuronales, los sistemas difusos y los algoritmos evolutivos en donde
se destacan los sistemas inmunes artificiales y la inteligencia de enjambre. En estas técnicas
de IA se encuentra YOLO (You Only Look Once) donde por medio de por medio del uso de una
red neuronal convolucional se efectúa la detección y reconocimiento de objetos el cual esta
optimizado para su ejecución en plataformas portátiles como se muestra en [YOLO].

Otro algoritmo de IA usado para la detección de objetos es el algoritmo MobileNet este al igual
que YOLO esta basados en una arquitectura de redes neuronales convolucionales con la
diferencia es que dichas redes están optimizadas para ser más livianas y trabajar de mejor
manera en las plataformas móviles, este algoritmo ha tratado de obtener un buen equilibrio
entre el volumen de cálculo y espacio de almacenamiento, sin embargo al tratar de ser más
liviano este ha reportado predicas en la precisión de detección en comparación de otros
algoritmos (Howard et al., 2017).

Teniendo en cuenta la tabla XXX, se concluyó que la información no es suficiente para realizar
la selección de alguno de estas dos técnicas, por lo que fue necesaria la implementación y

59
prueba de estas sobre la plataforma Jetson Xavier descrita en la anterior sección, obteniendo
como resultados

YOLO
Debido a que esta técnica cuenta con varias versiones se decidió implementar las que el
desarrollador facilita el en su repositorio enfocado a plataformas que ejecuten sistema operativo
Linux en las cuales se encuentra Yolo v4, v3 y v2, se realizó además la adecuación de la
plataforma e instalación de firmware y software necesario para su correcta y optimizada
ejecución sobre CUDA obteniendo los siguientes resultados:

Tabla 7 comparación de algoritmo Yolo en sus distintas versiones

Version Variante Cambios FPS


yolov2 6 FPS
yolov2-tiny Variación en tamaño y 4 FPS
Yolo v2 ejecución de yolov2
yolov2-tiny-voc Variación en tamaño y 5 FPS
ejecución yolov2-voc
yolov3 5 FPS
yolov3- Adición de activación 6 FPS
Yolo v3 openimages SELU
yolov3-tiny-prn 5 FPS
yolov3_5l Variación de tamaños de 4 FPS
imagen aceptados
yolov4 6 FPS
yolov4-tiny.cfg Variación en tamaño y 8 FPS
ejecución de yolov4
Yolo v4 yolov4- Adición de híper 5 FPS
tiny_contrastive parámetros
yolov4-p5 Pre entrenado con 5 FPS
COCO
Fuente: https://github.com/AlexeyAB/darknet/tree/master/cfg

MOBILENET

Al igual que con el algoritmo YOLO se realizó la instalación de las diferentes herramientas a
nivel de software para que el algoritmo corra de manera correcta en la plataforma para lo cual
se instaló la librería TensorFlow en su versión 2.0 la cual viene optimizada para el uso con
plataformas GPU. En las pruebas realizadas se usó el algoritmo MobileNet se encontró que
este algoritmo no corría de forma óptima sobre la plata forma puesto que pocas veces se
lograba ejecutar el algoritmo y recibir respuesta de la detección realizada por parte de este, por
otro lado, las pocas ocasiones en las que la plataforma lograba ejecutar este solo lograba

60
trabajar a 3 FPS además de tardar bastante tiempo en dar respuesta en comparación del
algoritmo YOLO pues el algoritmo MobileNet tardaba en promedio 10.58 segundos en realizar
una detección

A demás del uso de técnicas de IA como método para reconocimiento de obstáculos, también
se planteó y estudió la implementación de un algoritmo que, basado en el mapa de profundidad
lograse la identificación de obstáculos, para ello se toma como referencia el algoritmo llamado
watershed. Según [notrelevant-2006-imprwatershed], este algoritmo es una de las herramientas
más valoradas en el campo de la segmentación de imágenes digitales el algoritmo, cumple la
función de realizar RL (Region Labeling) considerando la imagen como una superficie
topográfica donde cada píxel es un punto situado a cierta altura en función de su nivel de gris,
donde el color blanco (gris nivel 255) se toma como la altura máxima y el color negro (gris nivel
0) la mínima, el resto de los niveles de gris coinciden con una altitud asociada a la imagen entre
estos extremos.

Figura 27 Organización de hilos y bloques

Fuente Tomada de

mediante valores definidos y otros obtenidos por el algoritmo, es posible individualizar los
pixeles que tengan características idénticas obteniendo como resultado un conjunto de áreas
bien delimitadas, por lo que, si consideramos que estas áreas representan los objetos
buscados, obtendremos una detección de bordes precisa definida por un conjunto de píxeles
conectados [notrelevant-2006-imprwatershed].

Debido a que los resultados obtenidos por las técnicas IA presentaron una muy baja tasa de
procesamiento y un alto tiempo de ejecución, se opta por la selección del algoritmo que basa
su técnica en el etiquetado e identificación de elementos cuyos pixeles comparten
características.

3.2.6 Análisis del algoritmo seleccionado y detección de las etapas que


intervienen en su funcionamiento

61
Teniendo en cuenta el algoritmo seleccionado, su funcionamiento y resultados, conocer la
cantidad y área de objetos presentes en la imagen no es un dato de interés, más sí lo es el de
la identificación de la presencia de un objeto, además de su ubicación en el mapa espacial. Por
este motivo se tomó como referencia dicho algoritmo y el procedimiento de detección de
obstáculos utilizado por [RodriguezFernandezWilmarFelipe2018] a los cuales se les realizó un
análisis y reestructuración asegurando un funcionamiento y resultado deseado.

Como resultado, se planteó un algoritmo el cual fuese capaz de identificar objetos desde una
imagen en escala de grises, sin embargo y por facilidad en la aplicación del método para la
detección y reconocimiento de la distancia a la que se encuentra el objeto encontrado, se
requirió primero de una etapa donde se lograse adecuar la imagen para la aplicación del
algoritmo replanteado, donde mediante un proceso similar al ejecutado en el algoritmo
watershed se obtuvo la identificación de objetos además de sus coordenadas dentro de la
imagen. por último, se entregó una matriz la cual plasmo el mapeo 2D de los objetos presentes
en el ambiente. El algoritmo resultante se encuentra plasmado en la sección de materiales y
técnicas.

Con base en el análisis del algoritmo, se reconocieron 3 etapas principales en la ejecución del
mismo y se planteó un diseño de alto nivel:

Figura 28 Diseño de alto nivel del algoritmo seleccionado

Fuente Tomada de (Autores)

3.2.7 Análisis de los requerimientos por etapas del algoritmo seleccionado


para su implementación en CUDA.

Basándose en el tipo de datos que le ingresan al subsistema y en las funciones que cada etapa
realizó, se observa que: los datos provenientes del sensor de profundidad son de tipo vector
con un tamaño de 640 ×480 en un solo canal, para realizar el procesamiento de dichos valores
se procedió a establecer los parámetros para reservar el espacio en memoria en el device de la
siguiente manera:

62
 El primer parámetro establecido fue el número de hilos mínimo por cada bloque
que se debieron lanzar para procesar la imagen, dicho valor se estableció
mediante las siguientes expresiones:

ancho de la imagen
¿ hilos ancho=
100

alto de la imagen
¿ hilos alto=
100

¿ total de hilos por bloque=¿ hilos alto∗¿ hilos ancho

Ecuación 18 Calculo de hilos necesarios alanzar en el grid

Para poder procesar los 307200 pixeles que tiene la imagen de profundidad proveniente
del Kinect se tiene que el número mínimo de hilos por bloque requeridos es de 30.72,
pero debido a que solo se pueden lanzar números enteros de hilos en cada bloque se
aproxima a 31 hilos por bloque.

 Como segundo parámetro se estableció el tamaño del grid necesario para almacenar la
imagen de profundidad en la memoria del device, se determinó que, para obtener el
número total de hilos las dimensiones del grid debían ser de 100 bloques de ancho y
100 bloques de alto para un total de 310000 hilos a lanzar en la memoria del dispositivo.

A demás de estos parámetros se definieron los pasos base para cada uno de los procesos que
realicen el procesamiento en el device, de la siguiente manera:

- Definir arreglos matriciales con las mismas dimensiones de la imagen para almacenar la
información en la memoria del host y en el device.
- Realizar la descripción del kernel en el lenguaje nativo CUDA.
- Retornar a la memoria del Host los valores procesados para ser enviados a la siguiente
etapa del algoritmo.

Dependiendo de la etapa y el proceso que se esté ejecutando, la función del kernel varia de la
siguiente forma: en la etapa de pre procesamiento únicamente en el proceso 3, la descripción
del kernel se realiza con el fin de aplicar las operaciones morfológicas y en la etapa de
detección, la descripción del kernel se orienta al fraccionamiento de la imagen y análisis de
cada uno de sus pixeles.

3.2.8 Diseño de alto nivel de cada una de las etapas para implementación en
CUDA

Partiendo de los procesos del algoritmo resultante, se procedió en el diseño de alto nivel y
descripción de cada etapa propuesta cada una enfocada a su implementación en CUDA

Pre procesamiento es la primera etapa donde se encuentran los procesos 1, 2 y 3 del


algoritmo, esta fue la encargada de realizar la adecuación de los datos provenientes del mapa

63
de profundidad ya que, debido a valores intrínsecos de la cámara la imagen obtenida presenta
una resolución de bits inapropiada para la precisa identificación de distancias. Este cambio
además facilita la umbralización de la imagen, sin embargo, por factores propios del sensor y
del ambiente, la imagen resultante presenta ruido que puede provocar falsos positivos en la
detección de objetos, para su eliminación, como último paso, se aplican operaciones
morfológicas mediante los requerimientos descritos para la carga y procesamiento de datos
sobre el device con CUDA.

Figura 29 Esquema estapa de procesamiento

Fuente Tomada de (Autores)

Detección es la segunda etapa; en esta intervinieron los procesos 4 y 5 los cuales hicieron uso
pleno de los núcleos y memoria del device para el procesamiento de los datos, ya que el
método definido por el algoritmo exige que sea revisado el valor de cada uno de los pixeles,
además de su correspondiente posición en la imagen mediante los requerimientos descritos
para la carga y procesamiento de datos sobre el device con CUDA. Debido a que, por las
características del sensor de profundidad, se toma el suelo como un objeto, es necesaria la
aplicación además del algoritmo para la discriminación del suelo.

Figura 30 esquema etapa de detección

Para la última etapa solo interviene el proceso 6, en este se organizaron de mejor manera los
datos obtenidos y se configuran los parámetros para realizar de nuevo la ejecución del
algoritmo.

64
Fuente Tomada de (Autores)

3.2.9 Implementación, simulación y test del diseño realizado para cada etapa.

Para la implementación y simulación de la etapa de pre procesamiento se partió de que, por


medio de la función (Depth()) (la cual se encuentra dentro de la librería freenect), fue posible la
obtención de la imagen proveniente del sensor de profundidad; Debido a que esta función
entrega la información tipo vector con resolución de 11 bits fue necesario realizar un reajuste
de su resolución a 10 bits para luego efectuar un desplazamiento de dos posiciones eliminando
los 2 bits de menor peso, obteniendo como resultado un vector donde el valor en cada posición
fuese representado en 8 bits de resolución.

Figura 31 Organización de hilos y bloques

Partiendo de estos valores escalizados y mediante la ecuación característica del sensor, se


definieron los valores de pixel que corresponden a un intervalo de distancias predefinidas con
el fin de realizar una umbralización por capas.

Figura 32 Organización de hilos y bloques

65
A B C

D E F

G H I

Debido a factores externos al sensor, en la imagen luego de su umbralizacion fue posible


identificar la presencia de ruido tipo sal y pimienta, para su filtrado fue indispensable la
aplicación de operaciones morfológicas y con ellas la aplicación de su ventana tipo cuadrada
con dimensiones de 7x7, la cual fue comparada y seleccionada de manera experimental. Para
su ejecución fue necesaria la carga de estos datos al Device con el fin de ejecutar el kernel
correspondiente a las operaciones morfológicas directamente sobre la GPU.

66
Figura 33 Organización de hilos y bloques

Debido a que la etapa de detección trabaja plenamente en el device, Para su ejecución fue
necesaria la carga de estos datos con el fin de ejecutar el kernel correspondiente. Como primer
paso, mediante valores pre definidos, se fracciona la imagen en tres partes verticales y cinco
horizontales (para efecto representativo esta división es visualizada por la grilla verde) con los
cuales fue posible designar la ubicación espacial en la que se encuentran los pixeles en la
imagen, teniendo en cuenta la distorsión de perspectiva del observador y el efecto túnel que
esto genera, es necesario también que esta varíe su tamaño de análisis conforme aumenta la
distancia que se analiza.

Figura 34 imagen de barrido por distancias

A B C

D E F
Fuente Tomada de (Autores)
Mediante la imagen binarizada por capas y fragmentada por regiones, al momento de observar
el valor de cada uno de los pixeles, es posible definir la presencia de un objeto (pixel en blanco)
y su ubicación espacial en la imagen, además de definir qué región no presenta ningún objeto,
la cual será definida como transitable o libre de obstáculos, de no cumplir esto la región será
identificada como riesgosa, además de esto, mediante la ecuación característica es posible

67
definir la distancia que cada capa representa y de manera directa se referencia la distancia a la
que se encuentran los objetos encontrados en cada una de ellas. Debido a que en el mapa de
profundidad el suelo también es representado como un objeto, fue necesaria la aplicación del
algoritmo para su discriminación al momento de realizar la detección explicado en la sección de
técnicas.

Por cada capa analizada se genera un vector de 16 posiciones donde cada posición representa
el análisis de cada uno de los fragmentos, y si éste está libre de objetos o no, en la última
posición se almacena la distancia en la que se realizó el análisis. Dado que se generan
[ECUACION PROCESO 5] cantidad de capas, donde por cada una se crea un vector
correspondiente, fue necesario anexar cada una a una sola matriz.

Figura 35 Organización de hilos y bloques

Debido a que se pueden detectar regiones que componen las columnas donde se encuentre
algún objeto, por prevención, esta columna completa se considera como riesgo potencial, para
ello se tabulan los resultados de los valores que componen las columnas y se plasman en un
vector de 6 posiciones, donde las primeras 5 son los valores tabulados obtenidos y la última
posición es el valor de distancia estudiado de esta manera finalizando la implementación del
algoritmo para la detección de obstáculos.
Figura 36 Organización de hilos y bloques

MOSRAR VECTOR RESULTANTE DE 6 POSICIONES

Además del algoritmo para la detección de obstáculos, se planteó y aplico el algoritmo de trace
planning perteneciente al subsistema de elaboración de rutas, el cual recibe la matriz resultante
del algoritmo de detección de objetos y, mediante la ejecución realizada en el procesador del
host, como resultado entrega un vector con la información necesaria para generar las señales
hápticas y audibles en el subsistema de generación de alertas.

Para el subsistema de alerta punto ciego se implementó el sensor ultrasonido, el cual también
fue el encargado de tomar la variable de distancia del entorno para la detección de objetos que
estén dentro de un rango determinado de 300cm, este proceso fue realizado mediante la
descripción en C del algoritmo

68
de funcionamiento para el micro controlador, el cual, cada XXX tiempo toma muestra del valor
análogo entregado por el sensor el cual corresponde a la distancia calculada, si esta es igual o
inferior a 80cm se enviará por medio de directamente los datos necesarios para la creación de
una alerta inmediata FILTRO DE MEDIA MOVIL???? https://www.luisllamas.es/arduino-filtro-
media-movil/

Por medio de la librería serial, se realizó la configuración del puerto serial 1 que posee la
Jetson Xavier, ajustando el baud rate a 9600 y el tamaño de bits a 8. Debido al funcionamiento
que la Jetson debe enviar un pulso al microcontrolador

Por último, la creación de las alertas audibles fue realizada mediante la librería gtts (Google
text to speach) con la cual, mediante la función gTTS() se configuró el tipo de texto y el
lenguaje al que se deseó reproducir en formato de audio el texto definido, debido a que para su
funcionamiento se necesitaba de conexión a internet constante, algo que disminuiría la
autonomía del prototipo, se decidió generar y almacenar los audios con las palabras que
conforman la alerta por separado.

Figura 37 Organización de hilos y bloques

Teniendo en cuenta el nombre de los audios almacenados, la función utilizada para la


reproducción del audio, extrae el dato en la posición 4 del vector obtenido del subsistema de
elaboración de rutas el cual, al adicionarle la terminación .mp3 coincide con el nombre del
audio a reproducir.

3.2.10 Verificación y validación del sistema implementado con personas en


condición de discapacidad visual.

Debido a la contingencia generada por la pandemia generada por sars-coV-2 o COVID19 no


fue posible realizar las pruebas de funcionamiento del asistente de navegación con personas
con discapacidad visual, debido a la medida de aislamiento social lo que dificultaba contar con
la presencia de la población objetivo, por esta razón se realizaron las pruebas con personas
con las cuales era más fácil contar con su asistencia. Para realizar las pruebas de validación a
los voluntarios se les vendó los ojos para simular de esta manera la condición de limitación
visual o ceguera total.

69
Las pruebas se realizaron en el edificio de laboratorios de la Universidad Pedagogica y
Tecnologica de Colombia UPTC, estas pruebas se basaron en trancitar una pista de
obstáculos usando los tres modos de emisión de alertas por parte del asistentes (alertas
hápticas, audibles e híbridas), para la prueba se conto con la presencia de 6 particiapantes de
entre 20 a 25 años de edad a los cuales se les informo de la prueba a realizar mediante un
consentimiento informado que se presenta en el Anexo xx, para realizar las pruebas las
personas recibieron un tiempo de entrenamiento de aproximadamente 2 minutos, para
interpretar las alertas el cual consistia en caminar con el asistente puesto, con los ojos sin
vendar y reconociendo las indicaciones del asistente mientras ellos caminaban libremente, al
momento de sentir que interpretaban de manera correcta, se les vendaron los ojos paraque
dieran inicio al reccorrido de la pista preparada para la prueba, al terminar la prueba se pedia a
cada participante diligenciar una encuesta en donde se manifestara la opinion acerca del
funcionamiento del asistente y otros aspectos como comodidad al portar el dispositivo. La
encuesta realizada se puede ver en el Anexo xx.

70
4. DESARROLLO

4.1.

4.2.

4.3.

4.4. VERIFICAR LA EFECTIVIDAD DEL PROTOTIPO Y VALIDAR SU FUNCIONAMIENTO


EN CONDICIÓN DE DISCAPACIDAD VISUAL

Dentro de los resultados obtenidos en las pruebas de validación del prototipo implementado, se
encontró que la mayor parte de las personas encuestadas expresaron que el prototipo era muy
cómodo al momento de portarlo lo cual se puede ver con mejor claridad en la gráfica de la
Figura 38.

Figura 38 Grafica de comodidad al portar el prototipo(1 muy incómodo, 10 bastante cómodo).

Fuente Tomada de (Autores)

Uno de los aspectos más importantes que se evaluaron en las pruebas fue la manera en la cual
los voluntarios se sentían más orientados al momento de transitar lo cual arrojo como resultado
que de los tres modos disponibles en el asistente, el 66,7% de las personas que realizaron las
pruebas sintieron mayor preferencia por la emisión de alertas hibridas (audibles y hápticas
simultáneamente) debido a que este modo proveía mayor información acerca del ambiente que
rodeaba al sujeto de prueba, en cuanto a los otros dos modos las alertas las personas con las
cuales se llevó acabo la prueba manifestaron que al ser orientados únicamente por las alertas
audibles no les permitió movilizarse de una manera fluida por la pista a transitar pues los
encuestados no sintieron que con este tipo de alertas dieran la suficiente información para
orientarse.

71
Al usar únicamente las alertas hápticas, el 33,3% de las personas manifestaron que este tipo
de alertas dieron mejores resultados en comparación a las alertas audibles al momento dar
guía a los voluntarios de la prueba dichos resultados se expresan de una mejor manera en la
figura

Figura 39 Grafica de preferencia de emisión de alertas

Fuente Tomada de (Autores)

En cuanto a la facilidad de interpretar las alertas el 33,33% de las personas encuestadas


manifestaron que la interpretación de alertas era bastante fácil e intuitiva pues luego de un
breve tiempo de entrenamiento lograban entender las alertas que emitía el asistente, el 33,4%
de las personas encuestadas le resulto muy difícil y confuso la interpretación de las
indicaciones dadas por el asistente el porcentaje restante manifestó que las alertas que
provenían del dispositivo eran bastante intuitivas para interpretar lo cual se muestra en la
Figura 40.

Figura 40 facilidad de interpretación de alertas por parte de los usuarios(1 muy difícil de interpretar, 10
muy fácil de interpretar)

72
Fuente Tomada de (Autores)

Además de lo anterior las pruebas realizadas con el asistente de navegación que la mayor
parte de los participantes, encontraron que el asistente es una herramienta útil pues expresaron
que el prototipo contaba con una buena reacción ante obstáculos cercanos, sin embargo,
también notaron que el dispositivo presenta limitaciones debido a que en algunos casos las
personas tuvieron colisiones leves con algunos obstáculos. También manifestaron que si
tuvieran la posibilidad de adquirir este tipo de dispositivos lo harían puesto que a pesar de ser
un prototipo sujeto a mejoras consideran que es una herramienta útil y de fácil manejo que
brinda una mayor independencia al momento de movilizarse.

73
5. CONCLUCIONES

74
6. RECOMENDACIONES.

75
7. BIBLIOGRAFÍA

76
77
78

También podría gustarte