• No se han encontrado resultados

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.

Documento similar