CAPÍTULO VIII: ANEXOS
Ecuación 11.- Ecuaciones de posición del robot respecto a marco de
En donde las coordenadas (x’, y’), son las coordenadas calculadas por un desplazamiento de traslación de robot con respecto a los ejes coordenados en ese momento; y las coordenadas (x, y), son aquellas que representan el desplazamiento real con respecto a los ejes coordenados originales o bases.
Estas últimas coordenadas (x, y), deben ser sumadas a las últimas coordenadas de posición conocidas del robot, para así determinar la nueva posición con respecto a los ejes coordenados iniciales.
De esta forma siempre se podrá conocer las coordenadas de posición del robot (de su centroide).
3.4.2.1.1.1.2. Planteamiento de funcionamiento
El mapeo del ducto se realizará con los sensores ultrasónicos, que en total serán 7, debido a que se utilizarán 4 en las esquinas, 2 en las partes laterales, y 1 en la parte superior del robot.
Página 75 de 142
Para el mapeo solo se utilizarán 6 sensores ultrasónicos, todos menos el superior, y su funcionamiento se basa en emitir una señal, y tomar el tiempo que demora en regresar, para medir la distancia a la que se encuentra el objeto detectado.
Esta distancia debe manipularse, ya que cada sensor tiene un ángulo determinado con respecto al centroide y los ejes principales del robot, por lo que se utilizará el ángulo fijo (ángulo de posición del sensor ultrasónico), más el ángulo de orientación del robot, para poder calcular las coordenadas de cada punto detectado (puntos que forman parte de las paredes laterales) con respecto a las coordenadas base (ilustración 42).
Ilustración 42.-Sistema de mapeo del robot.
De esa forma es como se obtienen las coordenadas de cada punto de la pared del ducto con respecto al sistema de referencia inicial, y todos estos datos, son enviados de forma
Página 76 de 142
constante hacia el computador a través del puerto serial.
El software en la computadora leerá los datos de todas las coordenadas que llegan a través del puerto serial, y mediante el código pre programado, se irá realizando un mapeo del ducto conforme el robot pase a través de este, lo que significa que se realizará en tiempo real, y en una vista superior.
Un ejemplo de lo que sería el mapeo realizado con los pocos puntos tomados en la imagen anterior, que serán muchos más debido a que se programará para que los puntos sean tomados por cada 0.05 segundos, se apreciará en la ilustración 43.
Página 77 de 142
3.4.2.1.1.1.3. Esquema del flujo de la información
Ilustración 44.- Esquema del sistema de mapeo
3.4.2.1.1.2. Locomoción del robot
3.4.2.1.1.2.1. Descripción del sistema
Desde un interfaz se deberá controlar los desplazamientos, por lo que serán necesarios los siguientes controles:
o Avance:
Debe activar los motores con la combinación de giros que le permita avanzar.
Se bloqueará cuando un sensor ultrasónico indique que una pared se encuentra a una distancia
determinada mínima.
Solo funcionará cuando se
mantenga presionado el botón que lo represente.
Página 78 de 142
o Retroceso
Debe activar los motores con la combinación de giros que le permita retroceder.
Se bloqueará cuando un sensor ultrasónico indique que una pared se encuentra a una distancia
determinada mínima.
Solo funcionará cuando se
mantenga presionado el botón que lo represente.
o Avance Lateral Izquierdo: Debe activar los motores con la
combinación de giros que le permita avanzar lateralmente hacia la
izquierda.
Se bloqueará cuando un sensor ultrasónico indique que una pared se encuentra a una distancia
determinada mínima.
Solo funcionará cuando se
mantenga presionado el botón que lo represente.
Página 79 de 142
o Avance Lateral Derecho Debe activar los motores con la
combinación de giros que le permita avanzar lateralmente hacia la
derecha.
Se bloqueará cuando un sensor ultrasónico indique que una pared se encuentra a una distancia
determinada mínima.
Solo funcionará cuando se
mantenga presionado el botón que lo represente.
o Giro Horario:
Debe activar los motores con la combinación de giros que le permita la realización del giro antihorario (Según vista de planta).
Se bloqueará cuando un sensor ultrasónico indique que una pared se encuentra a una distancia
determinada mínima.
Solo funcionará cuando se
mantenga presionado el botón que lo represente.
Página 80 de 142
o Giro Antihorario:
Debe activar los motores con la combinación de giros que le permita la realización del giro antihorario (Según vista de planta).
Se bloqueará cuando un sensor ultrasónico indique que una pared se encuentra a una distancia
determinada mínima.
Solo funcionará cuando se
mantenga presionado el botón que lo represente.
3.4.2.1.1.2.2. Estructura del código de programación Botón de encendido general
Es el primer botón que debe presionarse, debido a que trabaja de la siguiente manera: i. Realiza comparaciones entre las diferentes
medidas tomadas por los sensores ultrasónicos, a fin de poder determinar la posición y orientación con respecto a las paredes laterales del ducto.
ii. Se comienza a realizar un ciclo retroalimentado en el que el robot se traslada horizontalmente hasta que la diferencia entre las medidas
Página 81 de 142
correspondientes tomadas por los sensores ultrasónicos sean menores que 2mm
(Medida referencial).
iii. Luego se realiza otro ciclo en el que el robot gira sobre su eje en cualquier sentido dependiendo de la orientación determinada inicial. Y esto ocurre hasta que la
orientación del robot sea paralela a las paredes laterales.
iv. Luego de la reubicación del robot, se marcan y se guardan con coordenadas (0,0) a la ubicación del centroide del robot (Intersección de diagonales).
Botón de inicio de mapeo
i. Se obtienen las coordenadas del centroide del robot con los datos brindados por los encoders acoplados a los motores (Esto se programa con interrupciones que para el arduino Due R3 puede ser en cualquiera de sus pines digitales, y con funciones
relámpago que incrementarán o
disminuirán los valores de un contador según sea el sentido de giro pre
Página 82 de 142
ii. Se obtienen los puntos a mapear usando las distancias a la que se encuentran los obstáculos detectados por los sensores ultrasónicos. La fórmula a utilizar se detallará más adelante.
iii. Se suman las coordenadas del centroide con las coordenadas calculadas mediante fórmula con los datos de los sensores ultrasónicos, y se obtienen las coordenadas a mapear, pero con respecto a un marco de referencia que tiene como coordenadas (0,0), a la posición inicial del centroide registrada desde el inicio.
iv. Se mapea o grafica un punto, con las coordenadas resultantes (Cada 0.05 segundos, o puede variar).
Botones de desplazamiento
i. Desde la interfaz se selecciona la dirección de desplazamiento o sentido de giro al presionar los botones correspondientes; a través del puerto serial se envían datos hacia la placa principal de arduino. Cada vez que se presiona un botón en la interface, ya sea para indicar la dirección del desplazamiento o el sentido de giro, se
Página 83 de 142
llama a la función de desplazamiento y se le pasa como argumento la conjugación de parámetros que pueden ser 1 o 0,
dependiendo de los sentidos en los que deben girar los 4 motores (En la imagen siguiente se muestra cómo cambia el
sentido de giro de los motores dependiendo los pulsos que se envíen hacia el driver puente h)
Ilustración 45.-Cambio del sentido de giro de acuerdo a pulsos
ii. Automáticamente mientras el robot se encuentre desplazándose o girando, la placa principal arduino debe enviar
coordenadas de puntos a mapear. Para tal método, uno de los componentes
principales es el encoder óptico acoplado a los motores de llantas, que debe ser
declarado en el inicio del código, en la parte que se ejecuta una sola vez.
Página 84 de 142
CAPÍTULO IV : RESULTADOS Y DISCUSIÓN
4. Resultados y discusión
4.1. Especificaciones técnicas y geométricas del diseño mecánico:
*Planos detallados en Anexo D.
4.1.1. Chasis
Cuerpo de chasis
Ilustración 46.-Cuerpo de chasis
Características técnicas y geométricas:
Característica Valor Unidad
Altura 65 mm Ancho 56 mm Longitud 176 mm Material Plancha de Aluminio de 2 mm Masa 131,72 g
Página 85 de 142 Tapas de chasis
Ilustración 47.- Tapa del chasis
Características técnicas y geométricas:
Característica Valor Unidad
Altura 9,72 mm Ancho 60 mm Longitud 180 mm Material Plancha de Aluminio de 2 mm Masa 67,45 g
Tabla 22.- Características técnicas y geométricas de chasis
4.1.2. Ruedas
Características técnicas y geométricas
Ruedas Mecanum 60mm de aleación de aluminio (2
izquierdas y 2 derechas) cuyas características técnicas son las siguientes:
Característica Valor Unidad
Diámetro exterior 60 mm Diámetro de eje interior 4 mm Ancho 24 mm Capacidad de carga 15 kg
Página 86 de 142
4.1.3. Motor
Micromotor DC N20 100 rpm (300:1)
Cuyas características técnicas son las siguientes:
Característica Valor Unidad
Voltaje de operación 12 V
Corriente nominal 150 mA
Corriente con eje detenido 300 mA
Velocidad angular con carga
80 Rpm
Torque nominal 196 N.mm
Dimensiones 24 x 10 x 12 mm
Peso 40 g
Tabla 24.- Especificaciones técnicas de micro motor
4.1.4. Eslabones Eslabón I
Ilustración 48.-.-Dimensiones de eslabón I
Cuyas dimensiones geométricas son las siguientes:
Característica Valor Unidad
Altura 6 mm Ancho 40 mm Longitud 2 mm Material Plancha de Aluminio de 2 mm
Página 87 de 142
Eslabón II
Ilustración 49.- Dimensiones geométricas de eslabón II
Cuyas dimensiones geométricas son las siguientes:
Característica Valor Unidad
Altura 6 mm Ancho 28 mm Longitud 2 mm Material Plancha de Aluminio de 2 mm
Tabla 26.- Dimensiones geométricas de eslabón II
Eslabón III
Ilustración 50.-Dimensiones geométricas de eslabón III
Cuyas dimensiones geométricas son las siguientes:
Característica Valor Unidad
Altura 9,72 mm Ancho 60 mm Longitud 180 mm Material Plancha de Aluminio de 2 mm
Página 88 de 142
4.1.5. Pasadores
Características técnicas:
Tornillo de acero 1/8” – ¼”
Característica Valor Unidad
Diámetro de cabeza 6 mm
Diámetro de tuerca 3,175 (1/8) mm (in)
Diámetro nominal 3,175 (1/8) mm (in)
Longitud 6,35 (1/4) mm
Cantidad 32 unidad
Tabla 28.-Especificaciones técnicas de pasador I
Tornillo 1/8” – 3/8”
Característica Valor Unidad
Diámetro de cabeza 6 mm
Diámetro de tuerca 3,175 (1/8) mm
Diámetro nominal 3,175 (1/8) mm
Longitud 9,5 (3/8) mm
Cantidad 8 unidad
Tabla 29.-Especificaciones técnicas de pasador II
4.1.6. Pernos de sujeción
Características técnicas y geométricas:
Tornillo de acero 1/8 – 3/8”
Característica Valor Unidad
Diámetro de cabeza 6 mm
Diámetro de tuerca 3,175 (1/8) mm (in)
Diámetro nominal 3,175 (1/8) mm (in)
Longitud 9,5 (3/8) mm
Cantidad 16
Página 89 de 142
4.1.7. Soportes de eslabón
Características técnicas y geométricas:
Ilustración 51.-Soporte de eslabón
Característica Valor Unidad
Altura 6 mm Ancho 10 mm Longitud 12 mm Material Plancha de Aluminio de 2 mm Masa 0,57 g
Tabla 31.-Especificaciones técnicas de soportes de eslabón
4.1.8. Remaches
Características técnicas y geométricas:
Remache de acero 1/8” – 3/8”
Característica Valor Unidad
Diámetro de cabeza 6,35 (1/4) mm (in)
Diámetro nominal 3,175 (1/8) mm (in)
Longitud 9,525 (3/8) mm (in)
Cantidad 6
Página 90 de 142
4.1.9. Soporte de resorte
Características técnicas y geométricas
Ilustración 52.-Características geométricas de soporte de resorte
Características técnicas y geométricas:
Característica Valor Unidad
Altura 18 mm
Ancho 12 mm
Material Plancha de
Aluminio de 2 mm
Altura 10 mm
Tabla 33.-Características geométricas de soporte de resorte
4.1.10. Resorte
Características técnicas y geométricas
Resorte de compresión de alambre de piano calibre 17 con extremos planos
N
Características Valor Unidad
1 Diámetro externo (D) 6 mm
2 Diámetro de cable (d) 1 mm
3 Longitud libre 20,6 mm
5 Paso 2,8 mm/vuelta
6 Espiras totales 7
Página 91 de 142
4.1.11. Isométrico de diseño mecánico.
Ilustración 53.-Isométrico de diseño mecánico
4.2. Características técnicas y geométricas de sistema de control
Los elementos mencionados serán ubicados en el chasís del robot, mientras que el operador podrá hacer que el robot realice cualquiera de las funciones de la propuesta (incluida la locomoción) desde una computadora personal.
4.2.1. Para sistema de mapeo:
*Código de programación en anexo E
4.2.1.1. 4 Codificadores de disco:
Servirán para acoplar al eje del motor y al encoder óptico. Se muestra una imagen de estos en la ilustración 54.
Ilustración 54.- Ejemplo de codificador de disco.
4.2.1.2. 4 Encoders ópticos:
Junto al codificador de disco permitirá poder contar el desplazamiento angular del motor, por tanto de la llanta, y
Página 92 de 142
así determinar el desplazamiento del motor. Se muestra una imagen de estos en la ilustración 55.
Ilustración 55.- Encoder óptico.
4.2.1.3. Esquema de conexión
El esquema de conexión entre arduino Due r3 y los 4 encoders ópticos infrarrojos se aprecia en la ilustración 56, notar que debido a que todos los pin del arduino DUE tienen la capacidad de trabajar con interrupciones,
podemos conectar los pines digitales sin problemas.
Ilustración 56.-Esquema de conexión entre arduino y los 4 encoders ópticos.
4.2.2. Para el sistema de desplazamiento:
*Códigos de programación en anexo E
4.2.2.1. La placa principal – Arduino Due R3:
Placa que será utilizada para controlar todo el dispositivo por la capacidad de su microcontrolador Atmel SAM3X8E ARM
Página 93 de 142
Cortex-M3 CPU de 32 bits. Se puede observar una vista de este en la ilustración 57.
Ilustración 57.- Arduino Due R3
4.2.2.2. 4 Micromotores DC N20 100 RPM (300:1):
Proporcionan el torque necesario para mover el robot. Cuenta con un reductor de engranajes, se muestra una imagen de este en la ilustración 58.
Ilustración 58.-Micromotor DC N20 100 RPM
4.2.2.3. 4 ruedas suecas mecanum:
Rueda omnidireccional, se muestra una imagen de esta en la ilustración 59.
Ilustración 59.-Rueda omnidireccional
4.2.2.4. 2 Drivers puente H L298N:
Cada uno es de 2 canales, lo que les permite controlar 2 cada uno, y se utilizan para poder controlar el sentido de giro de los motores de acuerdo a los comandos preestablecidos de
Página 94 de 142
direccionamiento del robot. También permite poder controlar la velocidad de giro de los motores. Se muestra una imagen de este en la ilustración 60.
Ilustración 60.- Driver puente H L298N
4.2.2.5. 7 Sensores ultrasónicos:
Serán utilizados para detectar la proximidad de las paredes del ducto, y bloquear los comandos de desplazamiento ante un inminente choque (Considerando una distancia mínima). Se le escogió debido a su costo accesible, y a que su rango de detección va desde 2 a 450 cm. Se muestra una imagen de este en la ilustración 61.
Ilustración 61.-Sensor ultrasónico
4.2.2.6. Batería Lipo de 12 voltios:
Batería para alimentar los circuitos electrónicos, se muestra una imagen de esta en la ilustración 62.
Página 95 de 142
Ilustración 62.-Batería LIPO 12VDC
4.2.2.7. Software de interfaz: PYTHON
Ilustración 63.-Interfaz para desplazamiento
4.2.2.8. Esquema de conexión
El esquema de conexión se aprecia en la ilustración 64,
Página 96 de 142
4.2.3. Para la transmisión de video
El robot móvil debe contar con un sistema de visión que permitirá a los operadores observar los alrededores con el objetivo de inspeccionar los ductos. Los datos de video capturados por la cámara de circuito impreso serán procesados en una placa de microcontrolador.
La interface entre la cámara y la placa de microcontrolador es por medio de un bus de control de cámara en serie (SCCB), y es el medio para leer y escribir datos en los registros de la cámara, que son celdas de memoria que tienen 1 byte de longitud y contienen valores que se utilizan para controlar las funciones de la cámara (resolución, formato de salida de imagen, exposición, ganancia, velocidad de cuadros, etc.). Posteriormente los datos serán transmitidos hasta una computadora personal (mediante una interfase USB) donde una aplicación desarrollada en lenguaje de programación Java podrá leerlos y procesarlos para poder mostrarlos en la pantalla en tiempo real.
Se reduce el tiempo de desarrollo en programación por medio de la utilización de librerías de código abierto (adquisición de manera gratuita), disponibles en GitHub. GitHub es una plataforma de desarrollo colaborativo que facilita el alojamiento y revisión de código, administración proyectos y creación software junto con 40 millones de desarrolladores.
Página 97 de 142
Hardware necesario 4.2.3.1. Arduino Due :
Se muestra una imagen de este en la ilustración 65.
Ilustración 65.-Arduino Due
4.2.3.2. Cámara OV7670 con buffer AL422B FIFO
“Este módulo posee un sensor de imagen CMOS VGA OV7670, fabricado por Omnivision, capaz de trabajar a un máximo de 30 fps (cuadros por segundo) a una resolución de 640x480 pixeles (0.3MPx)”. Se muestra una imagen de este en la ilustración 66.
Página 98 de 142
Diagrama de bloques de la cámara:
Ilustración 67.-Diagrama de bloques de cámara
4.2.3.3. Traductor de nivel de voltaje bidireccional:
Se muestra una imagen de este en la ilustración 68.
Ilustración 68.-Traductor de nivel de voltaje bidireccional
4.2.3.4. Software necesario
La utilización de una librería disponible en GitHub (https://github.com/dasaki/arduvision/tree/master/arduvision_02 _mega/arduino/ov_fifo_test_mega), permite reducir el tiempo de desarrollo ya que se elimina el proceso de creación y programación de los algoritmos.
Página 99 de 142
El software de la cámara consta de 2 programas, el primero está implementado en el IDE (entorno de desarrollo integrado) de Arduino (https://www.arduino.cc/en/main/software), por lo que se cargara en la memoria del microcontrolador. Este código se encarga de realizar la comunicación USB entre la placa Arduino Due y la computadora persona, además de realizar el procesamiento primario de los datos de video.
Después de transmitir los datos de video hasta la PC, es necesario que puedan mostrarse en la pantalla en tiempo real, por este motivo un segundo programa fue necesario. Este segundo programa está desarrollado en lenguaje de programación Java y permite la lectura de los datos de video que llega desde el Arduino Due, para hacer el procesamiento secundario y poder posteriormente mostrarlos. Para correr el segundo programa en la PC, se hace necesario la instalación del entorno de desarrollo y programación para Java, llamado IntelliJ IDEA (https://www.jetbrains.com/idea/).
4.2.3.5. Interfaz entre cámara OV7670 con buffer AL422B FIFO y Arduino Due.
La secuencia de imágenes capturadas por la cámara debe ser procesada y transmitidas a la placa Arduino Due, para ello la cámara OV7670 utiliza la interfaz SCCB que es compatible con la interfaz I2C de Arduino. Así el código utilizado para activar y
Página 100 de 142
usar la interfaz I2C funcionará con la interfaz SCCB de la cámara sin modificaciones.
Esta interfaz se utiliza para leer datos de los registros de la cámara y para escribir datos en los registros de la cámara. Hay dos pines que son los relojes con la etiqueta SIOC y los datos con la etiqueta SIOD. El SIOC es el mismo que el SCL en la interfaz I2C y el SIOD es el mismo que el SDA en la interfaz I2C.
Todos los datos capturados por la cámara siguen un proceso de conversión análogo/digital y posteriormente son almacenados en el FIFO AL422B mediante la conexión de los pines OE, WR, RCK, WRST y RRST. Posteriormente se puede acceder a los datos puedan ser extraídos al ser conectado al Arduino Due a través de los pines de salida D7/D0 de la cámara OV7670.
Ilustración 69.- Pines de conexión de la cámara OV7670
VCC – 3.3V potencia de entrada. GND – Entrada a tierra.
SIOC – Usado para la
comunicación I2C, conectado al pin SCL del microcontrolador.
SIOD – Usado para la
comunicación I2C, conectado al pin SDA del microcontrolador.
Página 101 de 142
VSYNC – Salida que está en alto en el inicio de un nuevo marco.
HREF – Salida que está en alto mientras se está generando una nueva fila.
D7/D0 – Se emiten datos de imagen un byte a la vez.
RST – Entrada para resetear la cámara.
PWCN – Entrada para poner la cámara en modo apagado.
STR – Salida estroboscópica de la cámara que puede ser utilizada para encender un LED mientras la cámara toma una imagen.
RCK – Entrada para pulso de reloj, cada ciclo de reloj corresponde a un byte.
WR – Establecer en alto para habilitar la escritura de datos a la memoria del buffer.
OE – Configurado alto para una salida de cámara válida desde los pines D7 – D0.
WRST (write reset) – Pin de entrada que reinicia el puntero de escritura de la memoria del buffer.
RRST – Pin de entrada que reinicia el puntero de escritura de la memoria del buffer.
Tabla 35.-Uso de cada pin de conexión de la cámara OV7670
4.2.3.6. Esquema de conexión
Ilustración 70.-Diagrama de conexión cámara OV7670 / Arduino Due.