Mecatronica Sistema Automatico de Parqueo

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 76

DISEÑO DE UN SISTEMA AUTOMÁTICO PARA EL PARQUEO DE

AUTOMÓVILES EN CENTROS COMERCIALES

OMAR ALFREDO CELIS MORALES

UNIVERSIDAD AUTÓNOMA DE BUCARAMANGA


FACULTAD DE INGENIERÍA FISICO-MECANICAS
INGENIERÍA MECATRÓNICA
BUCARAMANGA
2022
DISEÑO DE UN SISTEMA AUTOMÁTICO PARA EL PARQUEO DE
AUTOMÓVILES EN CENTROS COMERCIALES

Autor: OMAR ALFREDO CELIS MORALES

Proyecto de grado para optar al título de Ingeniero Mecatrónico

Director: CARLOS JULIO ARIZMENDI PEREIRA, PhD.

UNIVERSIDAD AUTÓNOMA DE BUCARAMANGA


FACULTAD DE INGENIERÍA FISICO-MECANICAS
INGENIERÍA MECATRÓNICA
BUCARAMANGA
2022

2
CONTENIDO
Pág.
1. INTRODUCCION .............................................................................................. 8

2. DESCRIPCIÓN Y JUSTIFICACIÓN DEL PROBLEMA ..................................... 9

3. OBJETIVOS .................................................................................................... 10

3.1. OBJETIVO GENERAL..................................................................................... 10

3.2. OBJETIVOS ESPECÍFICOS ........................................................................... 10

4. ESTADO DEL ARTE ....................................................................................... 11

5. MARCO TEÓRICO .......................................................................................... 14

6. METODOLOGÍA .............................................................................................. 22

6.1. MALLA DE SENSORES .................................................................................. 23

6.2. SERVIDORES DE ALMACENAMIENTO ........................................................ 28

6.3. ELABORACIÓN DE MAPAS DIGITALES ....................................................... 33

7. RESULTADOS Y EVIDENCIAS ...................................................................... 36

7.1 FASE DE PRUEBAS ....................................................................................... 43

8. CONCLUSIONES ............................................................................................ 53

9. BIBLIOGRAFÍA ............................................................................................... 56

10. ANEXOS ......................................................................................................... 59

11. CRONOGRAMA .............................................................................................. 71

12. RECURSOS .................................................................................................... 77

4
LISTA DE FIGURAS
Pág.
Ilustración 1. Sistema de gestión plazas de parqueadero. ................................... 11
Ilustración 2. Trayectorias simuladas para estacionar un automóvil. ................... 12
Ilustración 3. Trayectorias simuladas para estacionar paralelo de un automóvil.. 13
Ilustración 4. Funcionamiento de un sensor ultrasónico de distancia. ................. 14
Ilustración 5. Sensor de ultrasonido EZ4. ............................................................ 15
Ilustración 6. Sensor de ultrasonido SRF04. ........................................................ 15
Ilustración 7. Sensor de ultrasonido SRF05. ........................................................ 16
Ilustración 8. Proceso lógico servidor de almacenamiento. ................................. 17
Ilustración 9. Tarjeta de adquisición de datos NodeMCU ESP32MOD. ............... 19
Ilustración 10. Generación de mapas con LiDAR-SLAM. ..................................... 20
Ilustración 11. Visualización entorno virtual Unity 3D. .......................................... 21
Ilustración 12. Metodología por implementar. ...................................................... 22
Ilustración 13. Sensor de ultrasonido HC-sr04. .................................................... 23
Ilustración 14. Circuito acondicionamiento de los sensores de ultrasonido HC-sr04.
............................................................................................................................... 25
Ilustración 15. Conexiones protocolo maestro - esclavo modulo lector RFID ...... 26
Ilustración 16. Circuito acondicionamiento lectores RFID .................................... 27
Ilustración 17. Tarjeta de adquisición de datos NodeMCU ESP32. ..................... 28
Ilustración 18. Proceso lógico servidor de almacenamiento. ............................... 28
Ilustración 19. Parámetros de comunicación NodeMCU - ThingSpeak................ 29
Ilustración 20. Comunicación ThingSpeak - Matlab. ............................................ 30
Ilustración 21. Funciones de lectura canales de ThingSpeak en Matlab. ............. 30
Ilustración 22. Transmisión datos del módulo de sensado. .................................. 30
Ilustración 23. Información Servidor almacenamiento FireBase. ......................... 31
Ilustración 24. Función de envío datos al servidor. .............................................. 32
Ilustración 25. Identificación de las variables en el servidor. ................................ 32
Ilustración 26. Levantamiento de mapa en Matlab. .............................................. 33
Ilustración 27. Diagrama de flujo del proceso. ..................................................... 34

5
Ilustración 28. Diseño inicial interfaz. ................................................................... 35
Ilustración 29. Sistema de sensado plazas de parqueo. ...................................... 36
Ilustración 30. Sistema de sensado ubicación del vehículo. ................................ 37
Ilustración 31. Falla de memoria NodeMCU ESP32 ............................................ 38
Ilustración 32. Prueba de sensado tarjetas RFID. ................................................ 38
Ilustración 33. Prueba de envío de datos al servidor en FireBase. ...................... 38
Ilustración 34. Vista previa del desarrollo de la aplicación. .................................. 39
Ilustración 35. Pantalla de inicio - Registro de usuario......................................... 40
Ilustración 36. Registro número de identificación. ................................................ 41
Ilustración 37. Selección modo de trayectoria. ..................................................... 42
Ilustración 38. Interfaz Matlab “Prueba Manual”................................................... 44
Ilustración 39. Interfaz Matlab – ThingSpeak “Prueba Servidor”. ......................... 46
Ilustración 40. Interfaz Android Studio – FireBase “Prueba emulador Android
Studio”. .................................................................................................................. 48
Ilustración 41. Prueba Aplicación IMK Parking en un entorno controlado – inicio.
............................................................................................................................... 50
Ilustración 42. Prueba Aplicación IMK Parking en un entorno controlado –
desarrollo. .............................................................................................................. 51
Ilustración 43. Prueba Aplicación IMK Parking en un entorno controlado – datos
servidor. ................................................................................................................. 52

6
LISTA DE TABLAS
Pág.

Tabla 1. Unidades vendidas de automóviles en Colombia. ................................... 24


Tabla 2. Interfaz Matlab “Prueba Manual”. ............................................................ 43
Tabla 3. Interfaz Matlab – ThingSpeak “Prueba Servidor”. .................................... 45
Tabla 4. Interfaz Android Studio – FireBase “Prueba emulador Android Studio”. .. 47
Tabla 5. “Prueba Aplicación IMK Parking en un entorno controlado”. ................... 49
Tabla 6. Descripción código fuente interfaz GUIDE. ............................................. 59
Tabla 7. Plan de trabajo correspondiente al primer semestre del año 2019. ......... 71
Tabla 8. Descripción de las actividades del plan de trabajo correspondiente al primer
semestre del año 2019. ......................................................................................... 73
Tabla 9. Plan de trabajo correspondiente al primer semestre del año 2021. ......... 75
Tabla 10. Descripción de las actividades del plan de trabajo correspondiente al
primer semestre del año 2021. .............................................................................. 76
Tabla 11. Descripción de los recursos para la realización del proyecto. ............... 77

7
1. INTRODUCCION

Con el auge de los sistemas integrados a la inteligencia artificial desde un


aprendizaje profundo en temáticas como análisis de big data hasta la realización de
trayectorias mediante algoritmos basados en instancia de tipo supervisado de
Machine Learning como lo puede ser KNN (K-Nearest-Neighbor) u otro algoritmo de
planificación de trayectorias como RRT (Rapidly-exploring Random Trees. En este
documento se plantea el diseño de una red de sensores para el sensado de plazas
de parqueo en el cual mediante un sistema de adquisición de datos y transmisión
de estos se realiza el mapeo bidireccional mediante la implementación de navigation
toolbox de Matlab; dando como resultado un sistema que implementa un algoritmo
generador de trayectorias para visualizar el desplazamiento de un vehículo en busca
de una plaza de parqueo evaluándolo en una interfaz que se ejecuta en un
dispositivo móvil que mostrando la trayectoria en un mapa generado mediante
navigation toolbox de MATLAB.

8
2. DESCRIPCIÓN Y JUSTIFICACIÓN DEL PROBLEMA

La implementación de un sistema inteligente surge debido a que los parqueaderos


no poseen un sistema dinámico para la asignación de plazas, los administradores
de dichos parqueaderos no tienen la información de cuales plazas se encuentran
disponibles u ocupadas, tampoco la ubicación de ellos; es por esto por lo que no
pueden brindar al usuario un servicio óptimo en el que puedan ubicarse en un sitio
disponible en el menor tiempo posible; los sistemas inteligentes en los últimos años
han desarrollado notables mejoras en lo referente a los sistemas de
estacionamiento e indicadores de parqueo.

El sistema inteligente que se desea implementar está orientado a mejorar la


asignación de plazas libres para los automóviles que ingresan al parqueadero,
debido a una de las mayores falencias que se evidencian en estos, la cual es el
tiempo perdido en búsqueda de una plaza disponible para parquearse y la
congestión que se puede presentar en casos críticos de hacinamiento vehicular, la
información de los vehículos y las plazas libres se puede recopilar por medio de
cámaras y sensores de ultrasonido o magnéticos cuyo rango de acción y
confiabilidad son altos, este tipo de sensor mide la variación del campo magnético
terrestre en una plaza, cuando el campo varía significativamente con respecto al
anterior valor medido emitirá una señal eléctrica para indicar que la plaza está
ocupada, estos elementos estarán ubicados en el parqueadero para cada plaza, la
asignación de la zona de parqueo a cada cliente se ejecutara por medio de una
estrategia de minería de datos asistida por software MATLAB@, o la
implementación de un algoritmo propio que use estrategias de inteligencia artificial
en la estrategia de mapeo y configuración de la ruta más cercana en un menor
tiempo; es por eso que la idea del proyecto se enfoca en brindar una solución y
practica a nivel de ingeniería.

9
3. OBJETIVOS

3.1. OBJETIVO GENERAL

• Diseñar un sistema inteligente que genere la trayectoria a seguir por un


conductor de automóvil para ocupar una plaza libre en un parqueadero de
un centro comercial.

3.2. OBJETIVOS ESPECÍFICOS

• Diseñar una red de sensores que determinen el estado <ocupado o libre>,


de una plaza de parqueadero.
• Diseñar un sistema de comunicación para transmitir la información de las
plazas ocupadas en un parqueadero a un servidor de almacenamiento de
datos.
• Desarrollar un algoritmo de realización de trayectorias optimas desde el
punto de entrada del parqueadero hasta la plaza libre más cercana.
• Crear un entorno virtual en el que se realice la validación de las
trayectorias asignadas y la adquisición de los datos de la red de sensores.
• Diseñar una aplicación móvil en el que se visualice las plazas de parqueo
libres y ocupadas.
• Validar sistema final de la generación de trayectorias y visualización de
esta en un entorno real.

10
4. ESTADO DEL ARTE

Se evidencian soluciones a problemas relacionados que no sirven como solución


software de este proyecto, pero que ayudan a entender el objetivo del cual y algunos
de los problemas que pueden surgir.

García Velandía Camilo Sneider y Huertas Acevedo Jairo Alberto de la Universidad


Distrital Francisco José de Caldas [1], desarrollaron un prototipo de sistema para la
gestión de ocupación de parqueaderos en un centro comercial, en la que se
encuentran con el problema de la congestión dentro del parqueadero, la poca
comodidad para los usuarios debido que los vehículos se ubican muy cerca unos
de otros y no dejan espacio suficiente para la apertura de puertas y el ingreso de
mercancía, tampoco se genera una rotación adecuada en cuanto al uso de todas
las plazas de parqueo con las que cuenta el parqueadero, por esto realizaron el
sistema que determina la plaza de parqueo asignada al usuario por medio de xxx y
yyy, que son las coordenadas de la plaza de parqueo.

Ilustración 1. Sistema de gestión plazas de parqueadero.

11
Bernhard Muller; Joachim Deutscher y Stefan Grodde; en la conferencia
internacional sobre aplicaciones de control en Múnich, Alemania 2006. Postulan su
proyecto de generación de trayectoria y control de avance para estacionar un auto
[2]. En la cual su problemática la centran en las colisiones entre automóviles en el
proceso de parqueo entre dos posiciones al no guardar la distancia y maniobra en
retroceso. Cuya solución la centran en un algoritmo de planificación de trayectoria
de dos pasos para generar trayectorias adecuadas para una maniobra de
estacionamiento autónomo de un automóvil.

Ilustración 2. Trayectorias simuladas para estacionar un automóvil.

Cárdenas Correa y Edwin Francis de la Universidad Nacional de Colombia en


Bogotá 2009, presentan como trabajo de grado una aplicación computacional de
generación de trayectorias y evasión de obstáculos para distintos robots
manipuladores con análisis en un sistema real [3]. Donde tratan con la programación
de los robots industriales que se realiza bajo el criterio cualitativo del hombre, quién
es el que diseña la trayectoria libre de colisiones utilizando un programa
computacional con la capacidad de visualizar entornos en 3D. Como solución
realizaron una variación en el método “Rapidly-exploring Random Trees” (RRT) para
mejorar su desempeño en entornos de búsqueda complejos y con pasajes
estrechos utilizando diversas simulaciones en el entorno de programación de
ingeniería MATLAB.

12
Parisa Masoumi Moghri; Mohammad Reza Karami y Reza Ghaderi presentaron en
el 16to Simposio internacional CSI sobre inteligencia artificial y procesamiento de
señales (AISP 2012) su sistema de estacionamiento paralelo inteligente en tiempo
real para un automóvil como un robot móvil [4], en el que consideraron el
estacionamiento paralelo una acción difícil tanto para los conductores nuevos como
para los experimentados. Por lo tanto, este problema se ha convertido en un asunto
serio en el curso de las últimas décadas. Donde presentaron un método en línea
para la planificación del movimiento del estacionamiento paralelo autónomo hacia
atrás de un automóvil de cuatro ruedas como un robot móvil (CLMR) y aplicaron
sensores de distancia para reconocer un espacio factible para realizar maniobras
de estacionamiento sin colisiones según el tamaño del lote de estacionamiento y
CLMR.

Ilustración 3. Trayectorias simuladas para estacionar paralelo de un automóvil.

13
5. MARCO TEÓRICO

• ULTRASONIDO
El ultrasonido es una forma de energía, la cual es transmitida por ondas vibratorias
a frecuencias por encima del rango de audición humano normal, con frecuencias
superiores a 16 [KHz]. El ultrasonido es una rama específica de la acústica, la cual
trata con ondas vibratorias en sólidos, líquidos y gases. Este tipo de ondas es
ampliamente utilizado debido a su seguridad, sensibilidad y precisión,
independencia del material, superficie, color y tamaño del objeto, además de ser
una técnica no invasiva la cual permite observar los órganos internos de un paciente
sin la necesidad de exámenes como biopsias, radiografías, etc. en aplicaciones
clínicas, hasta la caracterización de materiales y pruebas no destructivas en estos,
entre otras aplicaciones.
La utilización del ultrasonido como medidor de distancia, tiene como principio de
funcionamiento la reflexión de las ondas por parte de los objetos. Como se muestra
en la figura 1 los componentes básicos de un sensor ultrasónico es un transmisor el
cual emite la señal de ultrasonido, la cual rebota contra el objeto que se encuentra
a una distancia cercana de este, y un receptor el cual recibe la reflexión de la onda.

Ilustración 4. Funcionamiento de un sensor ultrasónico de distancia.

El cálculo de la distancia a la que se encuentra el objeto es descrito por la siguiente


ecuación:

Ecuación 1. Cálculo de la distancia.

14
Donde:
d; es la distancia a la que se encuentra el objeto.
V; es la velocidad del sonido en el aire.
t; es el tiempo transcurrido entre la emisión y recepción del pulso.

• SENSORES PARA LA MEDICIÓN DE DISTANCIA POR MEDIO DE


ULTRASONIDO

✓ EZ4 [6]
Voltaje: 2.5 a 5 [Vdc]
Tipo de Salida: PWM, analógica o serial.
Frecuencia 42 [kHz].
Distancia de medición 0 [cm] a 6 metros.

Ilustración 5. Sensor de ultrasonido EZ4.

✓ SRF04 [7]
Rango - 3 [cm] a 3 [m]
Voltaje - 5 [V], 30 [mA] Typ.
Frecuencia - 40 [KHz].
Tamaño - 43 [mm] x 20 [mm] x 17 [mm]
Salida: Ancho de pulso proporcional a la distancia en que se encuentra el objeto.

Ilustración 6. Sensor de ultrasonido SRF04.

15
✓ SRF05 [8]
Rango - 1,7 [cm] a 4 [m].
Voltaje - 5 [V], 4 [mA] Typ.
Frecuencia - 40 [KHz].
Tamaño 43 [mm] x 20 [mm] x 17 [mm].

Ilustración 7. Sensor de ultrasonido SRF05.

✓ HRTU 418 RM/WM [9]


Capta los objetos independientes del color y la transmisión, sus propiedades de
conmutación en gran parte son independientes de la superficie y su forma
constructiva es pequeña.
Alcance de operación de 25mm a 400mm.
Voltaje de operación 24 Vcc
Frecuencia de conmutación de 10Hz
Tiempo de respuesta de 50 ms

✓ ULTRASONIDO INDUSTRIAL MB7367 HRXL [10]


Voltaje: 2.7 a 5 [Vdc].
Compensación interna de temperatura
Tipo de Salida: PWM, analógica o serial.
Rata de lectura 7.5 [Hz].
Distancia de medición 30 [cm] a 5 metros
Resolución 1 [mm]
Resistencia a ambientes externos IP67.

16
• THINGSPEAK
Es una plataforma de IOT que permite almacenar y recolectar datos utilizando el
protocolo HTTP a través de Internet o a través de una red de área local. También
permite la creación de aplicaciones de registro de sensores, aplicaciones de
localización de posicionamiento, y una red social con notificaciones de las
actualizaciones de estado. [11]

Ilustración 8. Proceso lógico servidor de almacenamiento.

• SISTEMAS EMBEBIDOS
Son sistemas diseñados para ejecutar tareas específicas programadas por los
usuarios, la ventaja de estos es su precio y tamaño reducido [12]. Los componentes
principales de un sistema embebido son: Procesador, memorias y periféricos.
Algunos sistemas embebidos como BeagleBoard, Raspberry Pi o PandaBoard su
arquitectura es ARM, usan memorias SD/MicroSD15 de almacenamiento y
memorias de trabajo RAM16. [13]

• COMUNICACIÓN ENTRE SISTEMAS DE PROCESAMIENTO


La comunicación de datos entre los diferentes sistemas de procesamiento con los
que contará el proyecto es una parte crucial para el buen funcionamiento de este,
es por esto por lo que se mostraran las formas de comunicación que pueden tener
entre los posibles sistemas embebidos a utilizar.

17
✓ BLUETOOTH®
Es una tecnología de enlace inalámbrica que se utiliza para transmitir sonido, datos
e información entre dispositivos. Bluetooth utiliza una topología de red punto a punto
(P2P) con la cual establece comunicación entre dispositivos uno a uno (1:1). [14]

✓ WIFI (WIRELESS FIDELITY)


Es un estándar industrial para productos definidos por Wifi Alliance o por la norma
IEEE 802.11. Wifi es cualquier conexión inalámbrica de área local (WLAN) definida
por la norma IEEE antes mencionada. [15]

• ANDROID
Android es un sistema operativo móvil desarrollado por Google; es uno de los más
conocidos junto con iOS de Apple. Está basado en Linux, que junto con aplicaciones
middleware está enfocado para ser utilizado en dispositivos móviles como teléfonos
inteligentes, tablets, Google TV y otros dispositivos. [16]
Existe un entorno para desarrollo de aplicaciones Android llamado Android Studio
creado por Google, el cual está escrito en el lenguaje de programación Java. [17]

• NODEMCU ESP32MOD
Es una pequeña placa Wifi, disponible para usar en cualquier proyecto IoT (internet
of things). Está montada alrededor del ya conocido ESP32 y expone todos sus pines
en los laterales. Además, ofrece más ventajas como la incorporación de un
regulador de tensión integrado, así como un puerto USB de programación. Se puede
programar mediante el IDE de Arduino. [18]

Voltaje de Alimentación (USB): 5V DC


Voltaje de Entradas/Salidas: 3.3V DC
Pines Digitales GPIO: 30 (varía según el modelo comercial)
Pin Analógico ADC: 1 (0-1V)
Wi-Fi Direct (P2P), soft-AP

18
Ilustración 9. Tarjeta de adquisición de datos NodeMCU ESP32MOD.

• COMUNICACIÓN ANDROID-ARDUINO
La comunicación entre Arduino y Android se realiza por las siguientes formas:
✓ Bluetooth
✓ Wireless Fidelity
✓ USB (Universal Serial Bus)

• MATLAB
Matlab cuenta con la librería Computer Vision System Toolbox la cual nos provee
algoritmos de, funciones y aplicaciones para el procesamiento digital de imágenes,
estas funciones nos permiten realizar la detección y seguimiento de objetos en
movimiento, estimación de movimientos y análisis en tiempo real de videos. Las
funciones están disponibles como funciones de MATLAB, objetos System y bloques
Simulink. [19]

19
• BASES DE DATOS
Las bases de datos como su nombre lo indica almacenan datos de manera
estructurada. Las bases de datos permiten utilizaciones variadas y simultáneas. [20]
Un SGBD (Sistema gestor de base de datos) es un sistema que permite acceder a
la información contenida en una base de datos, por medio de programas que
facilitan su recuperación, manipulación y almacenaje. Estos sistemas son diseñados
para gestionar gran cantidad de información, además de garantizar su seguridad.
Las bases de datos SGBD son generalmente utilizadas por empresas o entidades
que necesitan alto grado de seguridad y fiabilidad de la información que almacenan
en estas. [21]

• Navigation toolbox - Matlab


Ofrece algoritmos y herramientas de análisis para el diseño de sistemas de
navegación y planificación de movimiento. Navigation toolbox incluye una búsqueda
definida por el usuario y un planificador de rutas basado en muestras. Puede crear
representaciones de mapas 2D y 3D con sus propios datos o generar mapas con
los algoritmos SLAM (localización y mapeo simultáneos) contenidos en la caja de
herramientas. [22]

Ilustración 10. Generación de mapas con LiDAR-SLAM.

20
• UNITY 3D
Es un motor de desarrollo para la creación de juegos y contenidos 3D interactivos,
con las características que es completamente integrado y que ofrece innumerables
funcionalidades para facilitar el desarrollo de videojuegos. Una de las mayores
ventajas de Unity 3D es que permite desarrollar juegos para muchas plataformas
con realmente muy poco trabajo extra. A diferencia de otras tecnologías, con Unity
3D prácticamente no hay que hacer casi ajustes para adaptar compilar un juego
para iOS teniéndolo ya para Android. [23]

Ilustración 11. Visualización entorno virtual Unity 3D.

21
6. METODOLOGÍA

Se comienza por el análisis de los requisitos y especificaciones del sistema, con la


cual se busca que satisfaga la necesidad del ahorro de tiempo en búsqueda de
plazas libres y minimizar la congestión vehicular en establecimientos cerrados. Al
tener claro esta necesidad del cliente, identificamos las características funcionales
del sistema propuesto; tales como, la asignación de las plazas libres, este tipo de
sistemas inteligentes se puede considerar como una caja negra, y caracterizarla
únicamente con aquellas funciones que son directa o indirectamente visibles por el
usuario final. Teniendo las funciones del sistema inteligente, identificamos los
componentes de hardware y software, que proporcionen una medida, asignación y
visualización correcta para llevar a cabo las validaciones del sistema, este conjunto
se denomina arquitectura del sistema. En la fase de implementación, se desarrollan
los elementos que unen al sistema con el usuario, un tipo de interfaz hombre
máquina, representado como una aplicación móvil.

Ilustración 12. Metodología por implementar.

22
6.1. MALLA DE SENSORES

En el diseño de la malla de sensores se debe evaluar la viabilidad según las


características de estos sensores en cuanto a su vida útil, calibración, confiablidad
y costo comercial donde se tiene que definir el tipo de variable a sensar, como el
proyecto se orienta a la asignación de trayectorias para el guiado de automóviles,
es necesario sensar la ubicación de los automóviles en ciertos lugares finales
“plazas de parqueo”.

Para el sensado se plantea la utilización de sensores ultrasónicos, ya que estos


detectan los materiales en los que pueden rebotar las ondas ultrasónicas emitidas
por el sensor. Este sensor se puede utilizar para la detección de objetos y de nivel
en contenedores. Son sensores que cuentan con un rango de sensado amplio de
hasta 8m por factores económicos y de rendimiento se desea implementar los
sensores de ultrasonido HC-sr04. Una de las principales ventajas es el rango de
sensado, rango de sensado ajustable y diferentes funciones para activación de las
salidas (histéresis, setpoints, ventanas).

Ilustración 13. Sensor de ultrasonido HC-sr04.

Para el diseño de la red de sensores de las plazas de parqueo, se deben tener


presentes las dimensiones de los vehículos promedio para la ubicación de los
sensores y el rango de medida que posee el sensor. Es por esto por lo que bajo la
posterior investigación de los vehículos más vendidos en Colombia en los años 2017
[24] y a marzo del 2019 [25] obtenemos una idea de la mayoría de los vehículos en
circulación y las dimensiones promedio en relación con estos vehículos.

23
Tabla 1. Unidades vendidas de automóviles en Colombia.

Vehículo Unidades vendidas Dimensiones


2017 Marzo del 2019 <Altura [m]>
Renault sandero 20.186 933 1.64
Chevrolet spark gt 16.543 753 1.52
Chevrolet sail ls 13.637 405 1.50
Renault logan 11.462 743 1.52
Kia picanto 10.053 599 1.48
Renault dacia duster 8.763 809 1.69
Chevrolet tracker 5.769 355 1.67
Renault sandero stepway 5.756 723 1.64
Mazda cx-5 4.624 438 1.67
BMW x1 550 N/R 1.60
Mercedes-Benz c 200 486 79 1.45
Volvo xc60 420 N/R 1.71

La altura promedio de los vehículos y la cual tendremos como referencia para el


diseño de la red de sensores 1,59 [m] y según la norma técnica colombiana NTC
5385 centros de diagnósticos automotor [26], las medidas estándar para una plaza
de parqueo son de 2,5 m de ancho por 5 m de largo. Con estas medidas ya tenemos
definido el área de trabajo para la cual se diseña la red de sensores y sus
respectivos circuitos de alimentación.

24
Ilustración 14. Circuito acondicionamiento de los sensores de ultrasonido HC-
sr04.

25
La malla de sensores consta de dos partes, la primera es el sensado de las plazas
de parqueo en la cual se obtiene los estados de ocupación en tiempo real y la
segunda parte de la malla de sensado consta en el diseño de una red para saber la
ubicación del vehículo dentro del área “mapa” de parqueo, para esto se decidió
cambiar los sensores de presencia que se pensó utilizar en primer lugar y se
utilizaron lectores RFID con tal de evitar falsos positivos de activación y conseguir
un registro para los usuarios con tarjetas RFID identificados con un ID que se
guardan en una base de datos con el fin de globalizar el sistema para una futura
ampliación de mapas y zonas de parqueo a optimizar.
En este diseño se debe tener en cuenta que un módulo de sensado no consta de
un (1) solo lector RFID, va a estar compuesto de cuatro (4) lectores RFID, formando
una regleta “ilustración 16”, para no limitar su zona de funcionamiento y lectura del
vehículo por la vía, su programación comprende de la información obtenida de los
pines de comunicación SPI para múltiples lectores ya que deben compartir los pines
“miso, mosi, sck y reset” mediante el protocolo de comunicación maestro esclavo
“ilustración 15”, se les asignan diferentes pines de selección de esclavo “ss” en el
código para la lectura de los ID y la comparación en el código interno dela base de
datos y el envío a la plataforma de almacenamiento web.

Ilustración 15. Conexiones protocolo maestro - esclavo modulo lector RFID

26
Ilustración 16. Circuito acondicionamiento lectores RFID

27
6.2. SERVIDORES DE ALMACENAMIENTO

En la etapa de los servidores de almacenamiento se revisa el concepto de


comunicación entre sistemas o dispositivos de procesamiento que recopilen los
datos adquiridos de la malla de sensores y los almacenen según los protocolos
respectivos en una base de datos situada en servidores web; por criterio de
economía y rendimiento se plantea utilizar la tarjeta NodeMCU ESP32, ya que
cuenta con un módulo de transmisión por WIFI y su arquitectura cumple con los
requisitos necesarios, en comparación con el la tarjeta de adquisición de datos de
Arduino.

Ilustración 17. Tarjeta de adquisición de datos NodeMCU ESP32.

El sistema en funcionamiento se lleva a cabo como la ilustración 18, en el cual el


proceso es sensar la variables y por medio de la tarjeta de adquisición de datos
NodeMCU, cuyo funcionamiento en el internet de las cosas “IoT” la hace competitiva
y completa con respecto a los criterios aplicados, estos datos son transmitidos por
WIFI hacía unos servidores codificados en formato HTTP “Protocolo de
transferencia de hipertexto” o en inglés “Hypertext Transfer Protocol“ y PHP
“preprocesador de hipertexto” o en inglés “Hypertext Preprocessor” derivados como
tal al servidor MySQL en el cual se puede visualizar y graficar estos datos sensados.

Ilustración 18. Proceso lógico servidor de almacenamiento.

28
Este sistema se comunica con el servidor de ThingSpeak a través de su modulo wifi
y se realiza la programación en el IDE Arduino, en este script se declara dos librerías
que definen habilitan la comunicación entre placa y web definiendo los parámetros
de comunicación con la plataforma ThingSpeak después se pasó a la etapa de
verificación de la información recibida a través de la IP de ThingSpeak, se llenó la
información recibida en un vector de 11 posiciones los cuales se almacenan en unas
nuevas variables los estados de los sensores.

Ilustración 19. Parámetros de comunicación NodeMCU - ThingSpeak.

En el software MATLAB se puede manipular los datos a través de una función de


lectura que se conecta a la IP de ThingSpeak y la almacena en un vector para ser
las operaciones en el desarrollo de la generación de trayectorias. El script realizado
en MATLAB permite enviar datos a través de una función de escritura a esta misma
IP con los datos enteros que se quieren enviar; la diferencia entre la función de
lectura y escritura es que van comunicados con dos campos diferentes en el
servidor.

29
Ilustración 20. Comunicación ThingSpeak - Matlab.

Como primer método de solución a la transmisión de datos se utilizó la librería de


ThingSpeak en la cual se llamó la función de lectura para obtener los datos enviados
desde el Arduino. En la línea de código de Matlab de escritura se utilizaron los
parámetros: canal de conexión con el servidor de ThingSpeak, nombre de
identificación (campo), valor del nombre de identificación, tipo de código a enviar,
valor a enviar y api key de escritura del servidor.

Ilustración 21. Funciones de lectura canales de ThingSpeak en Matlab.

El cambio de estado de los sensores se refleja tanto en la transmisión al canal y


servidor de almacenamiento como en el montaje físico del módulo de adquisición
de los datos.

Ilustración 22. Transmisión datos del módulo de sensado.

30
Como segundo método para dar solución debido a un limitante de envió de datos
en el servidor ThingSpeak, se implementa el uso de un servidor libre para el
almacenamiento de datos dinámicos y una visualización del cambio de estado de
estos sensores mediante FireBase, que es una plataforma de libre acceso diseñado
para el desarrollo de aplicaciones móviles o web y que consta de varias
herramientas de la mano de Google, la principal razón del uso es la implementación
del Realtime Database, que permite crear una base de datos y actualizar los datos
de la aplicación móvil final en tiempo real, manteniendo actualizado los datos sin la
manipulación del desarrollador del código de la aplicación.

Ilustración 23. Información Servidor almacenamiento FireBase.

La codificación es muy parecida a la realizada para el servidor en ThingSpeak, la


diferencia es que en esta se emplea el envío de datos hacia una dirección url
“Ilustración 24” que identifica al servidor y almacena en variables definidas con las
que se identifican los sensores tanto de las plazas de parqueo como los de
identificación de la posición del vehículo “Ilustración 25”.

31
Ilustración 24. Función de envío datos al servidor.

Ilustración 25. Identificación de las variables en el servidor.

32
6.3. ELABORACIÓN DE MAPAS DIGITALES

Se realiza el diseño y codificación para construir un mapa bidimensional utilizando


la herramienta navigation toolbox de Matlab, que nos permite mediante código de
asignación de 1 (unos) y 0 (ceros) construir desde cero en un plano el mapa a utilizar
como se puede apreciar en la siguiente ilustración.

Ilustración 26. Levantamiento de mapa en Matlab.

Al tener el mapa en las dimensiones necesarias, se realiza la implementación de un


algoritmo generador de trayectoria plannerHybridAStar donde evalúa un punto de
entrada y uno de salida evitando obstáculos en el mapa y generando múltiples
trayectorias en ramificaciones dando como resultado una trayectoria optima.
Manipulando a este generador el punto de llegada como el vector que almacena la
lectura de los estados de las plazas genera la trayectoria de forma automática hasta
la plaza más cercana y libre según el diagrama del proceso para la asignación de la
trayectoria en el modo automático.

33
Ilustración 27. Diagrama de flujo del proceso.

34
Con los parámetros del diagrama del proceso, el siguiente paso es diseñar una
interfaz inicial como validación virtual utilizando herramientas de Matlab, en la que
se evalúa la transmisión de los datos y lectura mediante líneas de código ya vistas
y para la ilustración de los estados de los sensores y la asignación de una
trayectoria.
Como se planteó en la sección de diseño de la malla de sensores, se representan
en el mapa 11 sensores para las plazas de parqueo y 11 sensores para el sensado
de la posición del vehículo en el mapa.

Ilustración 28. Diseño inicial interfaz.

Una vez comprobado el funcionamiento de la transmisión de datos y el cambio de


estados en tiempo real con la comunicación entre Matlab y ThingSpeak se migra la
interfaz desarrollada a una versión amigable con el usuario y funcional en
dispositivos móviles Android en el que replique el funcionamiento ya validado. de
visualización del estado de las plazas de parqueo y opciones para la selección del
lugar a parquear de forma manual y automática.

35
7. RESULTADOS Y EVIDENCIAS

Como se evidencia, en la elaboracion y puesta a punto del sitema tenemos como


resultados el diseño de la red de sensores tanto para las plazas de parqueo
“Ilustracion 29” como para el sistema de sensado de la ubicación de los vehiculos
“Ilustracion 30”, asi encontramos una breve descripcion del sistema mas a fondo.

Ilustración 29. Sistema de sensado plazas de parqueo.

En la primera parte de la malla se encuentran los sensores de ultrasonido


conectados por una interfaz TTL al microcontrolador en la que según ciertos
setpoints realizan la identificación del estado de la plaza de parqueo asignando
valores de 0 “cero” para el estado ocupado y de 1 “uno” para el estado libre.
El sistema se diseña con dos (2) métodos como alternativas de servidor de
almacenamiento de datos, uno en la plataforma de ThingSpeak, que permite la
manipulación de datos tanto en escritura como lectura con Matlab, en esta
plataforma una vez se tengan los sensores calibrados y verificados en
funcionamiento, el microcontrolador enviara los datos y su cambio se refleja con la
limitante de envío y actualización en la plataforma de 15 segundos por el uso de
una licencia gratuita. Dado esa limitante se diseña un nuevo sistema de envío hacia
un servidor en la plataforma FireBase, con la cual se reflejan los cambios de estado
en tiempo real.

36
Ilustración 30. Sistema de sensado ubicación del vehículo.

La siguiente parte de la malla de sensado consta de sensores RFID comunicados


por el protocolo SPI hacia una placa de adquisición de datos, que en primer lugar
se basaba solo en la nodeMCU ESP32, pero en el punto de pruebas se encontro
una falla “Ilustacion 31” con la cual se establecio la falta de memoria en la placa, por
lo que se paso a realizar un sistema maestro esclavo por comunicación serial en la
cual la placa de arduino se encarga de recolectar los datos de los sensores y
enviarlos hacia el microcontrolador 2 que trabaja como maestro, comprobando la
lectura de los sensores como lo muestra la Ilustracion 32 y posterior el envio de
datos al servidor como lo muestra la ilustracion 33, en la que el codigo del estado
de respuesta en http nos da como resultado 200, lo que significa éxito en la solicitud
del escritura de datos.

37
Ilustración 31. Falla de memoria NodeMCU ESP32

Ilustración 32. Prueba de sensado tarjetas RFID.

Ilustración 33. Prueba de envío de datos al servidor en FireBase.

38
Una vez comprobado el funcionamiento de la malla de sensado, el sistema de envío
y almacenamiento de datos en los servidores utilizados, se diseña la aplicación
móvil en base a React Native, que permite diseñar aplicaciones móviles para
Android, iOS, macOS, entre otras plataformas, donde se relaciona e implementa el
algoritmo para la asignación de trayectorias dinámicas A*, según el modo de uso de
la aplicación, y se añaden objetos estáticos y basados en clases mediante
TypeScript con el fin de darle un ambiente agradable a la aplicación en busca de
una forma fácil de usar.

Ilustración 34. Vista previa del desarrollo de la aplicación.

39
Ilustración 35. Pantalla de inicio - Registro de usuario.

Al iniciar la aplicación IMK PARKING se despliega una pantalla inicial, donde se


debe registrar el usuario para el uso de la aplicación, donde insertara información
básica que se guardara en la base de datos “Ilustración 35”, una vez realizado el
registro se despliega una pantalla “Ilustración 36”, en la cual debe ingresar el
número de identificación asignado para el seguimiento global del vehículo, seguido
al registro se despliega una pantalla con dos opciones para la generación de
trayectoria “Ilustración 37”, trayectoria manual y trayectoria automática.

40
Ilustración 36. Registro número de identificación.

41
Ilustración 37. Selección modo de trayectoria.

El funcionamiento de la aplicación se explica de forma detallada en el Manual de


usuario “página 19, modo automático” entregado y en los anexos se encuentra el
código fuente de la interfaz realizada en Matlab además de un manual de usuario
de los códigos para los microcontroladores.

42
7.1 FASE DE PRUEBAS

Una vez finalizada la codificación y puesta en marcha de la aplicación en los


emuladores se requiere comprobar el funcionamiento de las opciones de trayectoria
y el sensado de cada sensor, se realizan pruebas tomando en cuenta los siguientes
aspectos:

• Como primera prueba, vamos a comprobar el funcionamiento de la interfaz


creada en matlab, escribiendo los datos desde la pantalla de comand
window, utilizando el modo automático para la creación de trayectorias y ver
el comportamiento de dicha trayectoria.

Tabla 2. Interfaz Matlab “Prueba Manual”.

Interfaz Matlab “Prueba Manual”


Descripción Se envían los datos como escritura por medio de los
comandos de interacción entre Matlab y el servidor en
ThingSpeak, tanto de escritura como lectura para comprobar
los datos de los sensores y la trayectoria en la interfaz.
Condiciones de Previamente se deben escribir los datos en el servidor para
uso que se haga una lectura automática cuando se ejecute la
interfaz.

Entrada ➢ El usuario debe seleccionar el modo manual de la


interfaz.
➢ Dar clic sobre el botón cargar “lee los datos del
servidor”.
➢ Seleccionar un sensor de plaza para parquear “S1-
S11”.
➢ Dar clic sobre el botón generar “visualiza la trayectoria”.

43
Simulación de la
prueba

Ilustración 38. Interfaz Matlab “Prueba Manual”.

Resultado de la No satisfactoria, se debe arreglar la visualización – generación


prueba de la trayectoria, no se deben ver las otras opciones de
trayectoria, se debe modificar en la sección de “goal” en el
código “interfaz_1.m”.

44
• Como segunda prueba, vamos a comprobar el funcionamiento de la interfaz
creada en matlab cargando los datos desde el servidor en ThingSpeak,
utilizando el modo automático para la creacion de trayectorias y ver la
visualización de los estados de los sensores es correcta.

Tabla 3. Interfaz Matlab – ThingSpeak “Prueba Servidor”.

Interfaz Matlab – ThingSpeak “Prueba Servidor”


Descripción Se cargan los datos del servidor en ThingSpeak, mediante los
comandos de lectura para comprobar los cambios de estado de
los sensores y la trayectoria en la interfaz.
Condiciones Se deben cargar los datos del servidor para luego generar una
de uso trayectoria automática cuando se ejecute la interfaz.

Entrada ➢ El usuario debe seleccionar el modo automático de la


interfaz.
➢ Dar clic sobre el botón cargar “lee los datos del servidor”.
➢ Dar clic sobre el botón generar “visualiza la trayectoria”.
Simulación de El funcionamiento del sistema ideal es dar clic en generar y se
la prueba visualiza la trayectoria del vehiculo, pero en esta simulacion se
procede como si fuera manual para evidenciar el cambio de
estado de los sensores, cargandolos desde el servidor
evidenciando su cambio de estado “rojo – ocupado; verde - libre”.

45
Ilustración 39. Interfaz Matlab – ThingSpeak “Prueba
Servidor”.

Resultado de Satisfactoria, se evidencia el cambio de estados de los sensores,


la prueba aunque se debe mejorar la visualización – generación de la
trayectoria, debe seguir una trayectoria recta siguiendo los
carriles viales, se deben modificar en las características del
algoritmo de navigation toolbox en el código “interfaz_1.m”.

46
• En la tercera prueba, se busca ver el funcionamiento de la interfaz de la
aplicación en Android Studio, sobrescribiendo los datos desde el emulador
ejecutando una secuencia utilizando el modo manual.

Tabla 4. Interfaz Android Studio – FireBase “Prueba emulador Android Studio”.

Interfaz Android Studio – FireBase “Prueba emulador Android Studio”


Descripción Se cargan los datos del servidor en FireBase, mediante los
comandos de escritura por “https” para comprobar los cambios de
estado de los sensores y la trayectoria en la interfaz.
Condiciones Se deben cargar los datos de la secuencia a simular paso a paso
de uso para generar una trayectoria manual y ver los cambios de estado
y de la trayectoria.
Entrada ➢ El usuario debe seleccionar el modo manual de la interfaz.
➢ Dar clic sobre el botón generar ruta “visualiza la trayectoria”.
➢ En paralelo en el IDE de Android Studio se debe ejecutar
los comandos de la secuencia a simular.
Simulación El funcionamiento del sistema ideal es dar clic en generar y se
de la prueba visualiza la trayectoria del vehiculo, pero en esta simulacion se
ejecuta paso a paso en paralelo con el emulador de sistema
operativo android para un dispositivo movil, con el fin de evidenciar
el cambio de estado de los sensores “rojo – ocupado; verde - libre”
y la trayectoria generada.

47
Ilustración 40. Interfaz Android Studio – FireBase “Prueba
emulador Android Studio”.

Resultado Satisfactoria, se evidencia el cambio de estados de los sensores,


de la prueba aunque se debe mejorar la visualización – generación de la
trayectoria, agregando un indicador de la posición del vehículo y
mejorando el diseño visual de la interfaz.

48
• Para la cuarta prueba, se busca comprobar el funcionamiento de la aplicación
en un entorno real controlado, al igual que los módulos de sensado y la
transmisión de datos al servidor y la generación de trayectoria optima en los
modos manual o automático.

Tabla 5. “Prueba Aplicación IMK Parking en un entorno controlado”.

“Prueba Aplicación IMK Parking en un entorno controlado”


Descripción Prueba de funcionamiento sistemas de adquisición de datos, envío
de datos al servidor y visualización de estados de sensores y
trayectoria en la aplicación IMK Parking en un entorno real y
controlado.
Condiciones Se deben energizar los módulos de sensado y contar con conexión
de uso a internet para la transmisión de datos.
Entrada ➢ El usuario debe contar con un dispositivo móvil con
conexión a internet y la aplicación IMK parking instalada en
el dispositivo.
➢ Si esta registrado en la app debe elegir la cuenta registrada
para acceder de lo contrario debe registrarse.
➢ Al inicio del proceso el usuario debe digitar el número de la
tarjeta RFID que le proporcionan a la entrada del área de
parqueo.
➢ Seleccionar el modo de generación de trayectoria.

49
Simulación
de la prueba

Ilustración 41. Prueba Aplicación IMK Parking en un entorno


controlado – inicio.

50
Ilustración 42. Prueba Aplicación IMK Parking en un entorno
controlado – desarrollo.

En esta prueba se evidencia los mensajes de aviso desde la


selección de la plaza hasta el punto de llegada, se evidencia el
cambio de estado de los sensores sincronizado con el servidor,
además de la posición dinámica del vehículo en la aplicación
cambiando cada que pasa por un módulo de lectura ubicado en el
piso.

51
Ilustración 43. Prueba Aplicación IMK Parking en un entorno
controlado – datos servidor.

Resultado Satisfactoria, se evidencia el cambio de estados de los sensores


de la prueba sincronizado con el cambio en el servidor en tiempo real, la
trayectoria se visualiza en la aplicación sin dificultad y sin bugs de
conexión, además que el indicador de la posición del vehículo le
da un mejor aspecto al diseño visual de la aplicación.

52
8. CONCLUSIONES

Mediante la caracterización de las dimensiones físicas para las plazas de parqueo


según la norma NTC 5385, se da un punto de origen para el diseño de la red de
sensado para las plazas de parqueo, donde se realiza la implementación de un
módulo físico que consta de sensores de ultrasonido hc-sr04 e indicadores led,
buscando garantizar una toma de datos estable sin perturbaciones de ruido y una
alimentación constante de 3.3V para los sensores y 5V para la placa de control, esto
adaptando la entrada de alimentación de la red eléctrica 110V a un dispositivo
electrónico reductor de voltaje y convertidor AC/DC.

La transmisión de datos en mallas de sensores inalámbricos en la actualidad se


encuentra en crecimiento implementando protocolos de comunicación como
maestro-esclavo, bluetooth y Wi-Fi dando como resultado soluciones eficientes a
problemas de la vida real, es por eso que se emplean unos componentes utilizados
en la tecnología IoT, buscando transmisiones de datos estables en servidores libres
economizando el proyecto y brindando una solución fácil de manejar e implementar,
con el uso de microcontroladores que cuentan con estos protocolos de
comunicación como la NodeMCU ESP32, donde su arquitectura es compatible en
busca de analizar datos y ver la eficacia de transmisión de datos con la plataforma
publica ThingSpeak o en forma de optimizar la cantidad de datos enviado con un
servidor privado en FireBase.

En el desarrollo del algoritmo y la implementación de este, gracias a los


conocimientos adquiridos en los cursos de inteligencia artificial y llevando el
proyecto por esa rama de investigación y profundización se da como punto de
referencia los métodos de clasificación por minería de datos, donde con la
experiencia adquirida procedemos a realizar cambios en el algoritmo de la
navigation toolbox de Matlab, como dimensiones establecidas por el usuario para el
mapeo de las plazas, límites del mapa y el punto de entrada “dinámico”, ya que se

53
va actualizando con la nueva posición del vehículo, y en la migración a código C, se
implementa el algoritmo a estrella “A*”, que se basa en la medida heurística entre el
punto de entrada “ubicación en tiempo real del vehículo” con el punto de llegada
“plaza de parqueo” seleccionada en el modo manual o asignada en el modo
automático.

A causa de las simulaciones realizadas en Matlab con la construcción del mapa 2D


utilizando la herramienta navigation toolbox, implementando los modos manual y
automático, se pudo ver los errores que se generaban con la visualización de varias
trayectorias al mismo tiempo sobre la pantalla, dado estos errores de codificación y
visualización se pudo corregir con la investigación del código paso a paso y así
poder visualizar el vector de trayectoria adecuado. Por otro lado el llamado de los
datos almacenados en los servidores tanto para ThingSpeak como para el servidor
privado en FireBase, no tuvieron tanto problema ya que son compatibles con Matlab
en el caso de ThingSpeak y solo se utilizan funciones de lectura o escritura y
comandos para la visualización en la interfaz, por el lado de FireBase si no se tienen
conceptos claros en codificación del lenguaje C, se puede tornar un poco confuso a
la hora de hacer un llamado a los datos para visualizar o leerlos en la interfaz.

En virtud del trabajo realizado, se obtiene una interfaz de la aplicación amigable al


usuario, en la que se pueden observar las diferentes características del diseño de
forma clara y la visualización de las plazas de parqueo y trayectoria asignada, es
por eso que el éxito de la aplicación depende de la sencillez y el fácil manejo que
se le entregue al usuario además de un diseño atractivo donde los factores de
velocidad de interacción varía de acuerdo a las características del dispositivo móvil
en el que se utilice el sistema además de la calidad de conexión a internet que
maneje el usuario.

54
Con respecto al proyecto, se recomienda una modificación o mejora futura en busca
de entregar un servicio más amplio, ya que, al ser la versión inicial de un proyecto
de movilidad inteligente, carece de algunas funcionalidades como la
estandarización de una tarjeta de identificación para el usuario que funcione de la
mano con la visualización de mapas en diferentes puntos de la ciudad, así como el
modelado y visualización de estos mapas además de la implementación de los
sensores de planta.

55
9. BIBLIOGRAFÍA
1. García Velandia Camilo Sneider, Huertas Acevedo Jairo Alberto. Prototipo
de sistema para la gestión de ocupación de parqueaderos en un centro
comercial. Universidad Distrital Francisco José de Caldas, Facultad
tecnológica, Ingeniería en control. Bogotá, Colombia 2018
2. Bernhard Muller; Joachim Deutscher; Stefan Grodde. Generación de
trayectoria y control de avance para estacionar un auto. Proceedings of the
2006 IEEE. International Conference on Control Applications. Munich,
Germany, October 4-6, 2006.
3. Cárdenas Correa, Edwin Francis. Una aplicación computacional de
generación de trayectorias y evasión de obstáculos para distintos robots
manipuladores con análisis en un sistema real. Universidad Nacional de
Colombia. Bogotá 2009.
4. Parisa Masoumi Moghri; Mohammad Reza Karami; Reza Ghaderi. Sistema
de estacionamiento paralelo inteligente en tiempo real para un automóvil
como un robot móvil. The 16th CSI International Symposium on Artificial
Intelligence and Signal Processing (AISP 2012).
5. PEREZ DE DIEGO, Diego. Sensores de distancia por ultrasonidos. Cuarto
semestre ingeniería de Telecomunicaciones. [en línea].
<http://www.alcabot.com/alcabot/seminario2006/Trabajos/DiegoPerezDeDie
go.pdf > [citado el 16 de febrero de 2019]
6. DYNAMO ELECTRONICS. Sensor ultrasónico EZ4 [en línea].
<https://www.dynamoelectronics.com/medir-distancias/270-sensor-
ultrasonico-ez4.html?search_query=ultrasonico&results=13 > [citado el 16
de febrero de 2019]
7. DYNAMO ELECTRONICS. Sensor ultrasónico SRF04 [en línea].
<https://www.dynamoelectronics.com/medir-distancias/275-sensor-
ultrasonico-srf04.html?search_query=ultrasonico&results=13 > [citado el 16
de febrero de 2019]

56
8. DYNAMO ELECTRONICS. Sensor ultrasónico SRF05 [en línea].
<https://www.dynamoelectronics.com/medir-distancias/277-sensor-
ultrasonico-srf05.html?search_query=ultrasonico&results=13 > [citado el 16
de febrero de 2019]
9. Leuze electronic. Sensor ultrasónico HRTU 418, pág. 25 [en línea]. <
https://www.leuze.com/media/assets/archive/DS_BR_USDS_es.pdf >
[citado el 16 de febrero de 2019]
10. DYNAMO ELECTRONICS. Sensor ultrasónico MB7367 [en línea].
<https://www.dynamoelectronics.com/industria/490-mb7367-sensor-
ultrasonido-industrial-alta-resolucion-
1mm.html?search_query=ultrasonico&results=13 > [citado el 16 de febrero
de 2019]
11. ThingSpeak [en línea]. <https://en.wikipedia.org/wiki/ThingSpeak > [citado el
20 de febrero de 2019]
12. Sistemas embebidos innovando hacia los sistemas inteligentes [en línea].
<http://www.semanticwebbuilder.org.mx/es_mx/swb/Sistemas_Embebidos_I
nnovando_hacia_los_Sistemas_Inteligentes_ > [citado el 16 de febrero de
2019]
13. Parámetros sistemas embebidos [en línea].
<https://www.cdtdegas.com/images/Descargas/Nuestra_revista/MetFlu10/4
AutomatizacionTunel.pdf > [citado el 16 de febrero de 2019]
14. BLUETOOTH. How it Works [en línea]. <https://www.bluetooth.com/what-is-
bluetooth-technology/how-it-works > [citado el 17 de febrero de 2019]
15. Wireless Fidelity (Wi-Fi) [en línea].
<https://www.techopedia.com/definition/10035/wireless-fidelity-wi-fi > [citado
el 17 de febrero de 2019]
16. ANDROID OS. Introducción [en línea].
<https://androidos.readthedocs.io/en/latest/data/introduccion/> [citado el 17
de febrero de 2019]

57
17. ANDROID STUDIO. Android Studio IDE OFICIAL PARA ANDROID [en
línea]. <https://developer.android.com/studio/index.html> [citado el 17 de
febrero de 2019]
18. NodeMCU tutorial paso a paso desde cero. Programarfacil.com. [en línea] <
https://programarfacil.com/podcast/nodemcu-tutorial-paso-a-paso/ > [citado
el 22 de febrero de 2019]
19. MathWorks Design and simulate computer vision and video processing
systems [en línea]. <https://es.mathworks.com/products/computer-
vision.html > [Citado el 15 de febrero de 2019]
20. CMPS PARE, RAFAEL. BASE DE DATOS [en línea].
<http://www.uoc.edu/masters/oficiales/img/913.pdf > [citado el 18 de febrero de
2019]
21. SILBERSCHATZ, Abraham. Fundamentos de bases de datos. Cuarta
Edición, Mc Graw Hill.
22. MathWorks Navigation toolbox. [en línea] <
https://de.mathworks.com/products/navigation.html > [citado el 24 de agosto
de 2020]
23. Unity 3D toolbox de mapas [en línea] < https://www.mapbox.com/unity/> [citado el
12 de marzo del 2019].
24. Moreno, Juan Guillermo. Estos son los carros más vendidos en el país. El
colombiano. [en línea] <https://www.elcolombiano.com/entretenimiento/motores/los-
carros-mas-vendidos-son-hechos-en-colombia-CL8085260> publicado el 27 de
enero del 2018
25. Restrepo, Oscar Julián. Top 50: los carros más vendidos de Colombia en
marzo del 2019. El carro colombiano revista virtual. [ en línea]
<[https://www.elcarrocolombiano.com/industria/top-50-los-carros-mas-
vendidos-de-colombia-en-marzo-de-2019/> Publicado el 23 de abril del 2019
26. Norma técnico colombiana NTC 5385 centros de diagnóstico automotor. 15
de diciembre del 2016
27. Celis Morales, Omar Alfredo. Estudiante de ingeniería mecatrónica.
Universidad autónoma de Bucaramanga. 2019

58
10. ANEXOS
• Código interfaz en Matlab con la herramienta GUIDE para la simulación de
una interfaz virtual “interfaz_1.m”.

Tabla 6. Descripción código fuente interfaz GUIDE.

% --- Executes just before interfaz_1 is made visible.


function interfaz_1_OpeningFcn(hObject, eventdata, handles,
varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to interfaz_1 (see VARARGIN)
INICIO

% Choose default command line output for interfaz_1


handles.output = hObject;
set(handles.INICIO,'visible','on')
set(handles.panel_manual,'visible','off')
set(handles.panel_automatico,'visible','off')
fondo = imread('logo.jpg');
axes(handles.axes1);
image(fondo);
axis off

Segmento de código que inicia la interfaz y las imágenes, tablas, gráficos de inicio.
Nos permite escoger entre los modos de trayectoria manual o automático.
% --- Executes on button press in SALIR.
function SALIR_Callback(hObject, eventdata, handles)
BOTÖN SALIR

% hObject handle to SALIR (see GCBO)


% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
close(gcbf)

Botón que permite salir de la interfaz antes de realizar cualquier procedimiento.

59
function MANUAL_Callback(hObject, eventdata, handles)
% hObject handle to MANUAL (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
set(handles.INICIO,'visible','off')
set(handles.panel_manual,'visible','on')
set(handles.panel_automatico,'visible','off')
set(handles.axes2,'visible','off');
set(handles.text3,'visible','off');
set(handles.text9,'visible','off');
BOTÖN MANUAL

set(handles.text5,'visible','off');
set(handles.text10,'visible','off');
set(handles.text6,'visible','off');
set(handles.text11,'visible','off');
set(handles.text7,'visible','off');
set(handles.text12,'visible','off');
set(handles.text8,'visible','off');
set(handles.text13,'visible','off');
set(handles.text14,'visible','off');
set(handles.text15,'visible','off');
set(handles.S1,'visible','off'); set(handles.S6,'visible','off');
set(handles.S11,'visible','off');
set(handles.S2,'visible','off'); set(handles.S7,'visible','off');
set(handles.S3,'visible','off'); set(handles.S8,'visible','off');
set(handles.S4,'visible','off'); set(handles.S9,'visible','off');
set(handles.S5,'visible','off'); set(handles.S10,'visible','off');

Botón que permite ingresar en el panel de la interfaz de modo manual, donde


encontrara un botón llamado atrás, un botón llamado cargar y otro llamado
generar.

60
function CARGAR_MAN_Callback(hObject, eventdata, handles)
% hObject handle to CARGAR_MAN (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
set(handles.text3,'visible','off');
set(handles.text9,'visible','on');
set(handles.text5,'visible','on');
set(handles.text10,'visible','on');
set(handles.text6,'visible','on');
set(handles.text11,'visible','on');
set(handles.text7,'visible','on');
set(handles.text12,'visible','on');
set(handles.text8,'visible','on');
set(handles.text13,'visible','on');
set(handles.text14,'visible','on');
set(handles.text15,'visible','on');
set(handles.S1,'visible','on'); set(handles.S6,'visible','on');
set(handles.S11,'visible','on');
set(handles.S2,'visible','on'); set(handles.S7,'visible','on');
set(handles.S3,'visible','on'); set(handles.S8,'visible','on');
set(handles.S4,'visible','on'); set(handles.S9,'visible','on');
CARGAR DATOS MANUAL

set(handles.S5,'visible','on'); set(handles.S10,'visible','on');
data = thingSpeakRead(1277825,'Fields',[1,2,3],'Timeout',15)
data_2 =
thingSpeakRead(1283305,'Fields',[1,2,3,4,5,6,7,8],'Timeout',15)
data = [data data_2]
map = binaryOccupancyMap(220, 260, 1);
occ = zeros(260, 220);
%construccion mapa 2D
%La referencia de la toolbox la toma en la esquina izquierda
superior
occ(1,:) = 1; % limite superior "PARED"
occ(1:end,1) = 1; % limite pared izquierda
occ(end,50:end) = 1; % limite inferior "PARED"
occ(1:260,end) = 1; %limite pared derecha
% creacion plazas de parqueo
%plazas de parqueo superior
occ(1:50,[50 90 130 170:end]) = 1;
occ(1:100,[170:end])=1;
% plazas de parqueo derecha
occ([end-40 end-80 end-120 end-160 end-200], 170:end) = 1;
%plazas de parqueo central mirando hacia abajo
% occ(14,5:13) = 1;
% occ(9:14,[5 9 13])=1;
%plazas de parqueo central mirando hacia izquierda
occ([end-40 end-80 end-120 end-160], 50:100) = 1;
occ(100:220,50)=1;
%---------------------------------------------------------
% cerrando via para que busque la direccion correcta
occ(end-40,[1:50])=1;
%------- ó -----------------------------------------------
% obstacleWidth = 49;
% obstacleHeight = 5;
% obstacleBottomLeftLocation = [1 40];

61
% values = ones(obstacleHeight, obstacleWidth);
% setOccupancy(map, obstacleBottomLeftLocation, values)
setOccupancy(map, occ)
axes(handles.axes2);
show(map)
title('DISTRIBUCION PLAZAS PARQUEO')
axis off
if data(1) == 0;
ES1 = set(handles.text5,'Foregroundcolor','red');
else
ES1 = set(handles.text5,'Foregroundcolor','green');
end
if data(2) == 0;
ES2 = set(handles.text6,'Foregroundcolor','red');
else
ES2 = set(handles.text6,'Foregroundcolor','green');
end
if data(3) == 0;
ES3 = set(handles.text7,'Foregroundcolor','red');
else
ES3 = set(handles.text7,'Foregroundcolor','green');
end
if data(4) == 0;
ES4 = set(handles.text8,'Foregroundcolor','red');
else
ES4 = set(handles.text8,'Foregroundcolor','green');
end
if data(5) == 0;
ES5 = set(handles.text9,'Foregroundcolor','red');
else
ES5 = set(handles.text9,'Foregroundcolor','green');
end
if data(6) == 0;
ES6 = set(handles.text10,'Foregroundcolor','red');
else
ES6 = set(handles.text10,'Foregroundcolor','green');
end
if data(7) == 0;
ES7 = set(handles.text11,'Foregroundcolor','red');
else
ES7 = set(handles.text11,'Foregroundcolor','green');
end
if data(8) == 0;
ES8 = set(handles.text12,'Foregroundcolor','red');
else
ES8 = set(handles.text12,'Foregroundcolor','green');
end
if data(9) == 0;
ES9 = set(handles.text13,'Foregroundcolor','red');
else
ES9 = set(handles.text13,'Foregroundcolor','green');
end
if data(10) == 0;
ES10 = set(handles.text14,'Foregroundcolor','red');

62
else
ES10 = set(handles.text14,'Foregroundcolor','green');
end
if data(11) == 0;
ES11 = set(handles.text15,'Foregroundcolor','red');
else
ES11 = set(handles.text15,'Foregroundcolor','green');
end
set(handles.text3,'visible','off');

Carga los datos almacenados en el servidor ThingSpeak de los diversos canales


creados y los fields utilizados, visualizando con color rojo a los sensores de estado
ocupado o verde a los sensores libres, después de cargar los datos puede
seleccionar el sensor que quiere tener como punto final para la trayectoria.

63
function Trayectoria_Manual_Callback(hObject, eventdata, handles)
% hObject handle to Trayectoria_Manual (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
s1 = get(handles.S1,'Value'); s6 = get(handles.S6,'Value'); s11
= get(handles.S11,'Value');
s2 = get(handles.S2,'Value'); s7 = get(handles.S7,'Value');
s3 = get(handles.S3,'Value'); s8 = get(handles.S8,'Value');
s4 = get(handles.S4,'Value'); s9 = get(handles.S9,'Value');
s5 = get(handles.S5,'Value'); s10 = get(handles.S10,'Value');
S = [s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11];
Posiciones_libres = find(S==1);
Trayectoria_a_sensor = Posiciones_libres(1);
if (Trayectoria_a_sensor == 1)
pos_sensor1 = [200 25 -pi/2];
Coordenadas = pos_sensor1;
end
if (Trayectoria_a_sensor == 2)
pos_sensor2 = [200 55 -pi/2];
GENERAR TRAYECTORIA MANUAL

Coordenadas = pos_sensor2;
end
if (Trayectoria_a_sensor == 3)
pos_sensor3 = [200 95 -pi/2];
Coordenadas = pos_sensor3;
end
if (Trayectoria_a_sensor == 4)
pos_sensor4 = [200 135 -pi/2];
Coordenadas = pos_sensor4;
end
if (Trayectoria_a_sensor == 5)
pos_sensor5 = [145 230 -pi/2];
Coordenadas = pos_sensor5;
end
if (Trayectoria_a_sensor == 6)
pos_sensor6 = [115 230 -pi/2];
Coordenadas = pos_sensor6;
end
if (Trayectoria_a_sensor == 7)
pos_sensor7 = [75 230 -pi/2];
Coordenadas = pos_sensor7;
end
if (Trayectoria_a_sensor == 8)
pos_sensor8 = [25 230 -pi/2];
Coordenadas = pos_sensor8;
end
if (Trayectoria_a_sensor == 9)
pos_sensor9 = [60 75 -pi/2];
Coordenadas = pos_sensor9;
end
if (Trayectoria_a_sensor == 10)
pos_sensor10 = [60 95 -pi/2];
Coordenadas = pos_sensor10;
end
if (Trayectoria_a_sensor == 11)

64
pos_sensor11 = [60 125 -pi/2];
Coordenadas = pos_sensor11;
end
map = binaryOccupancyMap(220, 260, 1);
occ = zeros(260, 220);
%construccion mapa 2D
%La referencia de la toolbox la toma en la esquina izquierda
superior
occ(1,:) = 1; % limite superior "PARED"
occ(1:end,1) = 1; % limite pared izquierda
occ(end,50:end) = 1; % limite inferior "PARED"
occ(1:260,end) = 1; %limite pared derecha
% creacion plazas de parqueo
%plazas de parqueo superior
occ(1:50,[50 90 130 170:end]) = 1;
occ(1:100,[170:end])=1;
% plazas de parqueo derecha
occ([end-40 end-80 end-120 end-160 end-200], 170:end) = 1;
%plazas de parqueo central mirando hacia abajo
% occ(14,5:13) = 1;
% occ(9:14,[5 9 13])=1;
%plazas de parqueo central mirando hacia izquierda
occ([end-40 end-80 end-120 end-160], 50:100) = 1;
occ(100:220,50)=1;
%---------------------------------------------------------
% cerrando via para que busque la direccion correcta
occ(end-40,[1:50])=1;
%------- ó -----------------------------------------------
% obstacleWidth = 49;
% obstacleHeight = 5;
% obstacleBottomLeftLocation = [1 40];
% values = ones(obstacleHeight, obstacleWidth);
% setOccupancy(map, obstacleBottomLeftLocation, values)
setOccupancy(map, occ)
% ----------------------------------------------------------------
-------
% GENERACION DE LA TRAYECTORIA SEGUN LA SALIDA
estMap = occupancyMap(occupancyMatrix(map));
vMap = validatorOccupancyMap;
vMap.Map = estMap;
planner = plannerHybridAStar(vMap, 'MinTurningRadius', 2);
entrance = [15 1 0]; %entrada
packagePickupLocation = Coordenadas; %punto de llegada
route = plan(planner, entrance, packagePickupLocation);
route = route.States;
% Get poses from the route.
rsConn = reedsSheppConnection('MinTurningRadius',
planner.MinTurningRadius);
startPoses = route(1:end-1,:);
endPoses = route(2:end,:);
rsPathSegs = connect(rsConn, startPoses, endPoses);
poses = [];
for i = 1:numel(rsPathSegs)
lengths = 0:0.1:rsPathSegs{i}.Length;

65
[pose, ~] = interpolate(rsPathSegs{i}, lengths);
poses = [poses; pose];
end
axes(handles.axes2);
show(planner)
title('TRAYECTORIA GENERADA A PLAZA DE PARQUEO')
axis off

Sección que genera la trayectoria según el sensor seleccionado, genera la


trayectoria desde el punto de origen hasta el “goal” sensor seleccionado cuyo
valor es 1.
function ATRAS_Callback(hObject, eventdata, handles)
% hObject handle to ATRAS (see GCBO)
BOTÓN ATRAS

% eventdata reserved - to be defined in a future version of MATLAB


% handles structure with handles and user data (see GUIDATA)
set(handles.INICIO,'visible','on')
set(handles.panel_manual,'visible','off')
set(handles.panel_automatico,'visible','off')

Como el nombre lo dice, es un botón para retroceder en la interfaz, lo lleva al


panel de inicio.
function AUTOMATICO_Callback(hObject, eventdata, handles)
% hObject handle to AUTOMATICO (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
set(handles.INICIO,'visible','off')
BOTÖN AUTOMÁTICO

set(handles.panel_manual,'visible','off')
set(handles.panel_automatico,'visible','on')
set(handles.axes3,'visible','off');
set(handles.text16,'visible','off');
set(handles.text22,'visible','off');
set(handles.text17,'visible','off');
set(handles.text23,'visible','off');
set(handles.text18,'visible','off');
set(handles.text24,'visible','off');
set(handles.text19,'visible','off');
set(handles.text25,'visible','off');
set(handles.text20,'visible','off');
set(handles.text26,'visible','off');
set(handles.text21,'visible','off');

Botón que permite ingresar en el panel de la interfaz del modo automático, donde
se encuentra un botón llamado generar automático y otro llamado atrás.

66
function trayectoria_Callback(hObject, eventdata, handles)
% hObject handle to trayectoria (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
set(handles.text16,'visible','on');
set(handles.text22,'visible','on');
set(handles.text17,'visible','on');
set(handles.text23,'visible','on');
set(handles.text18,'visible','on');
set(handles.text24,'visible','on');
set(handles.text19,'visible','on');
set(handles.text25,'visible','on');
set(handles.text20,'visible','on');
set(handles.text26,'visible','on');
set(handles.text21,'visible','on');
data = thingSpeakRead(1277825,'Fields',[1,2,3],'Timeout',15)
data_2 =
thingSpeakRead(1283305,'Fields',[1,2,3,4,5,6,7,8],'Timeout',15)
data = [data data_2]
Posiciones_libres = find(data==1);
Trayectoria_a_sensor = Posiciones_libres(1);
GENERAR AUTOMÁTICO

if (Trayectoria_a_sensor == 1)
pos_sensor1 = [200 25 -pi/2];
Coordenadas = pos_sensor1;
end
if (Trayectoria_a_sensor == 2)
pos_sensor2 = [200 55 -pi/2];
Coordenadas = pos_sensor2;
end
if (Trayectoria_a_sensor == 3)
pos_sensor3 = [200 95 -pi/2];
Coordenadas = pos_sensor3;
end
if (Trayectoria_a_sensor == 4)
pos_sensor4 = [200 135 -pi/2];
Coordenadas = pos_sensor4;
end
if (Trayectoria_a_sensor == 5)
pos_sensor5 = [145 230 -pi/2];
Coordenadas = pos_sensor5;
end
if (Trayectoria_a_sensor == 6)
pos_sensor6 = [115 230 -pi/2];
Coordenadas = pos_sensor6;
end
if (Trayectoria_a_sensor == 7)
pos_sensor7 = [75 230 -pi/2];
Coordenadas = pos_sensor7;
end
if (Trayectoria_a_sensor == 8)
pos_sensor8 = [25 230 -pi/2];
Coordenadas = pos_sensor8;
end
if (Trayectoria_a_sensor == 9)

67
pos_sensor9 = [60 75 -pi/2];
Coordenadas = pos_sensor9;
end
if (Trayectoria_a_sensor == 10)
pos_sensor10 = [60 95 -pi/2];
Coordenadas = pos_sensor10;
end
if (Trayectoria_a_sensor == 11)
pos_sensor11 = [60 125 -pi/2];
Coordenadas = pos_sensor11;
end
map = binaryOccupancyMap(220, 260, 1);
occ = zeros(260, 220);
%construccion mapa 2D
%La referencia de la toolbox la toma en la esquina izquierda
superior
occ(1,:) = 1; % limite superior "PARED"
occ(1:end,1) = 1; % limite pared izquierda
occ(end,50:end) = 1; % limite inferior "PARED"
occ(1:260,end) = 1; %limite pared derecha
% creacion plazas de parqueo
%plazas de parqueo superior
occ(1:50,[50 90 130 170:end]) = 1;
occ(1:100,[170:end])=1;
% plazas de parqueo derecha
occ([end-40 end-80 end-120 end-160 end-200], 170:end) = 1;
%plazas de parqueo central mirando hacia abajo
% occ(14,5:13) = 1;
% occ(9:14,[5 9 13])=1;
%plazas de parqueo central mirando hacia izquierda
occ([end-40 end-80 end-120 end-160], 50:100) = 1;
occ(100:220,50)=1;
%---------------------------------------------------------
% cerrando via para que busque la direccion correcta
occ(end-40,[1:50])=1;
%------- ó -----------------------------------------------
% obstacleWidth = 49;
% obstacleHeight = 5;
% obstacleBottomLeftLocation = [1 40];
% values = ones(obstacleHeight, obstacleWidth);
% setOccupancy(map, obstacleBottomLeftLocation, values)
setOccupancy(map, occ)
% ----------------------------------------------------------------
--------
% GENERACION DE LA TRAYECTORIA SEGUN LA SALIDA
estMap = occupancyMap(occupancyMatrix(map));
vMap = validatorOccupancyMap;
vMap.Map = estMap;
planner = plannerHybridAStar(vMap, 'MinTurningRadius', 2);
entrance = [15 1 0]; %entrada
packagePickupLocation = Coordenadas; %punto de llegada
route = plan(planner, entrance, packagePickupLocation);
route = route.States;
% Get poses from the route.

68
rsConn = reedsSheppConnection('MinTurningRadius',
planner.MinTurningRadius);
startPoses = route(1:end-1,:);
endPoses = route(2:end,:);
rsPathSegs = connect(rsConn, startPoses, endPoses);
poses = [];
for i = 1:numel(rsPathSegs)
lengths = 0:0.1:rsPathSegs{i}.Length;
[pose, ~] = interpolate(rsPathSegs{i}, lengths);
poses = [poses; pose];
end
axes(handles.axes3);
show(planner)
title('TRAYECTORIA GENERADA A PLAZA DE PARQUEO')
axis off
if data(1) == 0;
ES1 = set(handles.text16,'Foregroundcolor','red');
else
ES1 = set(handles.text16,'Foregroundcolor','green');
end
if data(2) == 0;
ES2 = set(handles.text17,'Foregroundcolor','red');
else
ES2 = set(handles.text17,'Foregroundcolor','green');
end
if data(3) == 0;
ES3 = set(handles.text18,'Foregroundcolor','red');
else
ES3 = set(handles.text18,'Foregroundcolor','green');
end
if data(4) == 0;
ES4 = set(handles.text19,'Foregroundcolor','red');
else
ES4 = set(handles.text19,'Foregroundcolor','green');
end
if data(5) == 0;
ES5 = set(handles.text20,'Foregroundcolor','red');
else
ES5 = set(handles.text20,'Foregroundcolor','green');
end
if data(6) == 0;
ES6 = set(handles.text21,'Foregroundcolor','red');
else
ES6 = set(handles.text21,'Foregroundcolor','green');
end
if data(7) == 0;
ES7 = set(handles.text22,'Foregroundcolor','red');
else
ES7 = set(handles.text22,'Foregroundcolor','green');
end
if data(8) == 0;
ES8 = set(handles.text23,'Foregroundcolor','red');
else
ES8 = set(handles.text23,'Foregroundcolor','green');

69
end
if data(9) == 0;
ES9 = set(handles.text24,'Foregroundcolor','red');
else
ES9 = set(handles.text24,'Foregroundcolor','green');
end
if data(10) == 0;
ES10 = set(handles.text25,'Foregroundcolor','red');
else
ES10 = set(handles.text25,'Foregroundcolor','green');
end
if data(11) == 0;
ES11 = set(handles.text26,'Foregroundcolor','red');
else
ES11 = set(handles.text26,'Foregroundcolor','green');
end

Como es el modo automático no es necesario cargar los datos del servidor para
ver sus estados, como su nombre lo dice de forma automática el sistema lle los
datos del servidor y genera la trayectoria hasta el sensor cercano que se
encuentre libre.
% --- Executes on button press in ATRAS_2.
function ATRAS_2_Callback(hObject, eventdata, handles)
BOTÓN ATRÁS 2

% hObject handle to ATRAS_2 (see GCBO)


% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% --- Executes on button press in trayectoria.
set(handles.INICIO,'visible','on')
set(handles.panel_manual,'visible','off')
set(handles.panel_automatico,'visible','off')

Botón que retrocede del panel de trayectoria automático al panel de inicio.

70
11. CRONOGRAMA

Tabla 7. Plan de trabajo correspondiente al primer semestre del año 2019.

Semanas
No. Actividades
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1 Revisión estado del arte. X X X X
Investigación del estado
actual de la malla de
sensores utilizadas en
2 X X X X
los parqueaderos en la
ciudad de
Bucaramanga.
Investigar acerca de los
diferentes softwares
3 X X X X
para el levantamiento de
mapas virtuales.
Primera Sustentación
4 X
(50%)
Revisar arquitectura
algoritmos de
5 X X X
generación de
trayectorias 3D.
Seleccionar sensores y
6 módulos de transmisión X X
de datos.
Diseñar sistema de
transmisión y
7 X X
almacenamiento de
datos.

71
Validación sistema de
8 transmisión y X X X
almacenamiento.
Selección del software
a implementar para la
9 X X
realización del entorno
virtual.
Levantamiento de mapa
10 X X X
virtual.
Elaborar documento
11 representativo a la tesis X X X X X X X X X X X X X X X
de grado.
Sustentación Final X
12
(50%)

72
Tabla 8. Descripción de las actividades del plan de trabajo correspondiente al primer
semestre del año 2019.

No. ACTIVIDAD DESCRIPCIÓN


Revisar trabajos previos sobre el tema en
estudio, realizados en instituciones de
1 Revisión estado del arte. educación superior, fuentes primarias, ya que
aportan los datos del estudio, como resultados
y validaciones.
Investigar estado actual Revisar la arquitectura de la malla de sensores
de la malla de sensores implementada en los parqueaderos de
2 utilizadas en los Bucaramanga <C.C. Cacique>, las
parqueaderos en la características de los módulos utilizados y los
ciudad de Bucaramanga. tipos de sensores utilizados.
Revisar los softwares de acceso libre o
Investigar acerca de los
licenciados para el levantamiento de mapas
diferentes softwares para
3 virtuales que no impliquen un elevado coste de
el levantamiento de
implementación o un tiempo de elaboración
mapas virtuales.
alto.
Investigar acerca de la codificación de las
Revisar arquitectura
estrategias de clasificación o ubicación para la
4 algoritmos de generación
asignación de las plazas libres a los
de trayectorias 3D.
automóviles por medio de trayectorias.
Analizar las hojas técnicas de diferentes
sensores análogos y digitales que detecten la
Seleccionar sensores y
presencia de objetos, que cumplan los
5 módulos de transmisión
requisitos de bajo costo, confiabilidad y vida útil
de datos.
con los que se obtenga la mayor eficiencia en
el sistema a implementar.

73
Diseñar sistema de Diseñar el sistema de adquisición de datos, en
transmisión y el que se evalúan las alternativas encontradas
6
almacenamiento de para la transmisión de datos y el
datos. almacenamiento de estos.
Validar el envío y almacenamiento de datos
Validación sistema de
mediante un plan de pruebas que evalúe la
7 transmisión y
implementación de los sensores y la toma de
almacenamiento.
datos en tiempo real.
Cumpliendo con los requisitos de costos bajos
Selección del software a
y el tiempo de elaboración de un mapa sea
implementar para la
8 bajo, se selecciona un software que sea
realización del entorno
compatible con los sensores y elementos a
virtual.
utilizar.
Simular mediante el software seleccionado, un
mapa digital en representación de un espacio,
Levantamiento de mapa
9 que cuente con especificaciones como
virtual.
direcciones y distancias reales o escaladas
entre objetos.
Realizar avances y correcciones en un
Elaborar documento
cuaderno consignando la información obtenida,
10 representativo a la tesis
pruebas de montajes y alternativas de solución
de grado.
para el sistema.

74
Tabla 9. Plan de trabajo correspondiente al primer semestre del año 2021.

Semanas
No. Actividades
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Desarrollar algoritmo de
1 X X X X
trayectorias.
Simular en un entorno
2 virtual las trayectorias X X X X
asignadas.
Primera Sustentación
3 X
(50%)
Diseñar aplicación
4 X X X
móvil.
Validar sistema final en
5 X X X X
un entorno real.
Elaborar un manual de
6 X X X X X X
usuario.
Elaborar documento
7 representativo a la tesis X X X X X X X X X X X X X X X
de grado
Sustentación Final
8 X
(50%)

75
Tabla 10. Descripción de las actividades del plan de trabajo correspondiente al
primer semestre del año 2021.

No. ACTIVIDAD DESCRIPCIÓN


Desarrollar algoritmo de
1
trayectorias.
Simular en un entorno Validar la información correspondiente a la
2 virtual las trayectorias trayectoria asignada interpretada en el mapa
asignadas. virtual.
Desarrollar una aplicación móvil que sirva como
Diseñar aplicación
3 interfaz de comunicación con el conductor del
móvil.
automóvil para la asignación de las plazas libres.
Se ejecutan las pruebas al hardware y software,
Validar sistema final en
4 con el fin de corroborar su funcionalidad y
un entorno real.
precisión en la ejecución del sistema.
Desarrollar un manual de usuario con el cual se
Realizar un manual de
5 garantice una correcta implementación de
usuario.
hardware y puesta en marcha del sistema.
Realizar avances y correcciones en un cuaderno
Elaborar documento
consignando la información obtenida, pruebas
6 representativo a la tesis
de montajes y alternativas de solución para el
de grado.
sistema.

76
12. RECURSOS

Tabla 11. Descripción de los recursos para la realización del proyecto.

DESCRIPCIONES UNIDADES CANTIDAD VALOR VALOR


UNITARIO TOTAL
1.PERSONAL COP COP
Hora ingeniero (4 horas * MES $ 720.000 $
30 días) 8 5.760.000
subtotal $
5.760.000
2. EQUIPAMENTO UNIDADES. CANTIDAD VALOR VALOR
UNITARIO TOTAL
Software Android Studio UNIDAD $ 2.500 $ 2.500
1
Software Matlab UNIDAD $ 220.000 $ 220.000
1
subtotal $ 222.500
3. MATERIALES UNIDADES. CANTIDAD VALOR VALOR
UNITARIO TOTAL
Sensores de ultrasonido UNIDAD $ 17.000 $ 170.000
10
Sensores de presencia UNIDAD $ 15.000 $ 450.000
30
Cables 3 mm diámetro METRO $ 1.000 $ 100.000
100
subtotal $ 720.000
TOTAL $
6.702.500

77

También podría gustarte