Página principal
Quienes somos
Nuestras actividades, concurcos, competiciones...
Manuales, tutorials......
Proyectos
Nuestros robots
Tecnología
Neumática
Diseño y modificación de sensores
Banco de pruebas
Sitios en la red sobre Robótica Educativa
 
Contactar con COMPLUBOT


ArduSoccerBot

ArduSoccerBot

1 Propósito

ArduSoccerBot es un proyecto de tipo didáctico cuyo fin es realizar un robot de Soccer (al estilo de los de la RoboCup Junior) usando un único controlador Arduino Diecimila USB.

ArduSoccerBot no pretende ser un robot de última generación para la prueba de Soccer de la RoboCup Junior, el objetivo es implementar el máximo de funciones posibles con este pequeño controlador.

El resultado que perseguimos es un proyecto de fácil realización en el que estén integrados aspectos útiles para otros diseños: control de movimiento localización de luz (infrarroja), orientación (brújula electrónica)...

Con el fin de conseguir un diseño modular y para hacer más sencillo el desarrollo y la reutilización de este robot y de sus partes, iremos realizando distintas versiones del mismo que añadirán funcionalidades sobre las anteriores.

2 ArduSoccerBot versión 1.0

2.1 El controlador Arduino

Arduino Diecimila Arduino es un proyecto de "hardware abierto" que se basa en una placa controladora de pequeñas dimensiones cuyo núcleo es un microcontrolador Atmega168 (documentación completa del Atmega168). La placa dispone de hasta 13 entradas/salidas digitales y 6 entradas analógicas. Sobre las propias entradas/salidas digitales también podemos tener un puerto serie asíncrono, un puerto serie SPI, un puerto serie I2C y salidas de conprol por modulación de anchura de pulso (PWM). Todo esto arropado por un software de control ( WIRING) que combina la sencillez del lenguaje C con unas funciones de alto nivel para controlar los distintos dispositivos del microcontrolador.

Además de la entrada de alimentación también dispone de cuatro conectores para poder acceder a las distintas entradas y salidas.

Existen varias versiones de la placa controladora Arduino, todas con unas características muy similares presentando variaciones en su conectividad (puerto serie o USB) y en su tamaño: los modelos más pequeños están pensados para facilitar su integración en otros sistemas.

De todas ellas nosotros hemos selecionado la Arduino Diecimila que le compramos a nuestro amigo Oscar de BricoGeek.

Podéis encontrar mucha información sobre Arduino en la web oficial del proyecto y en su versión en español.

2.2 El entorno de desarrollo

Entorno de desarrollo Arduino Arduino dispone de un completo entorno de desarrollo (escrito en processing) desde el cual podemos editar, compilar y descargar nuestros programas. Dispone, además, de un terminal donde poder mostrar información procedente del controlador mediante el propio cable de descarga.

El entorno de desarrollo se puede descargar desde la propia web oficial del proyecto y está disponible para tres plataformas: Linux (32 y 64 bits), MAC OS X y Windows. Resulta fantástico poder trabajar cómodamente con Arduino en un Mac (lo hemos probado) y realizar cualquier cambio y/o modificación del programa en un PC con Windows sin que esto suponga problema alguno.

Una de las cosas que más nos ha gustado de este entorno es la cantidad de información (guia de referencia) y de ejemplos a los que podemos acceder con toda comodidad, así como las librerias (servo, LCD...) que resultan muy sencillas de incluir y vienen con varios ejemplos cada una.

El entorno resulta sencillo y claro (algo bueno para los principiantes) aunque seechan de menos algunas características de otros entornos un poco más profesionales (como el MPLAB de Microchip ) como un buen gestor de proyectos.

El código que se muestra en la imagen (se puede hacer más grande haciendo cilc sobre ella), es un sencillo ejemplo que hemos usado para verificar el funcionamiento de los sensores IR.

2.3 Esquema de conexiones del robot

Esquema ArduSoccerBot El esquema del ArduSoccerBot es bastante sencillo. Haciendo uso de la controladora Arduino como elemento principal del montaje, solo es necesario añadirle el sistema de alimentación , formado por una batería de LIPO de 7,4V y un interruptor. El sistema de movimiento, que lo integran dos servomotores de rotación continua. Y el sistema sensorial que usa dos fototransistores sensibles al infrarrojo.

2.4 Estructura del robot

En esta primera versión del ArduSoccerBot hemos usado una única placa soporte sobre la que se sujetan todos los elementos del robot (motores, controlador, batería, sensores...). Dada su resistencia y por su fácil mecanizado hemos usado una plancha de madera contrachapada de 5mm de espesor de 5 capas (una mejor opción la encontramos en las tiendas de modelismo donde hay contrachapado estructural de hasta 4 capas por milímetro de espesor).

Tras proceder al dibujo del contorno del robot y de los huecos que necesitarán las ruedas, hemos cortado la madera de contrachapado con una sierra de marquetería tras lo cual hemos lijado los bordes para librarlos de astillas y aristas cortantes.

El taladrado de la base también se realiza con facilidad (igual con demasiada facilidad) con un taladro vertical o de mano. Para los huecos y cajeados hemos usado de nuevo la sierra de marquetería y las limas redonda y cuadrada.

Alguno de los elementos, como la batería hemos preferido sujetarlos con velcro adhesivo de doble cara. Para el resto usamos tornillería de M3 y M4 con sus correspondientes tuercas auto-frenantes.

2.5 Ruedas y motores

Para poder conectar los motores directamente a las salidas PWM del Arduino sin necesidad de utilizar un driver de potencia adicional, hemos utilizado dos servos de rotación continua HSR1422 de HITEC. A diferencia de los servos normales que giran un determinado ángulo (de entre 0 y 180 grados) en función de la anchura de pulso de la señal aplicada, los servos de rotación continua giran a mayor velocidad en función de dicha velocidad pudiendo, incluso, invertir su sentido de giro.

Para que este servo se pare, hay que proporcionarle una señal con una anchura de pulso de 1,5ms, esto es, la que correspondería a una posición de 90 grados en un servo normal: su posición media.

Aunque la alimentación nominal de este servo es de 4,8v nosotros le alimentaremos con los 7,4 de nuestra batería (si, tendrá una vida un poco más corta) con lo que conseguiremos que gire a unas 66 RPM en vacío.

Las ruedas que hemos seleccionado para este proyecto son unas de espuma de neopreno de 76 mm de diámetro que proporcionan un buen agarre sobre cualquier superficie y una gran suavidad en el movimiento. Además de su idoniedad para este proyecto, peso el echo de que estuvieran disponibles en nuestro aula. Para acoplarlas al servo atornillamos una de las mitades de la pieza central de la rueda sobre el plato de rotación del servo mediante tres pequeños tornillos de M2,5.

Con este diámetro de rueda de 76 mm y las 66 RPM máximas de giro del servo, se podría conseguir una velocidad máxima de avance (teórica) de unos 260 mm por segundo. Unas cuatro veces menos de lo que puede alcanzar uno de nuestros robots de Soccer de los que usamos en la RoboCup Junior, aunque lo daremos por bueno ya que se trata de un simple ejercicio y no de un robot de competición.

Las ruedas motrices se encuentran en la parte frontal del robot, bueno en realidad unos 10mm pasados el centro del mismo, proporcionándole tracción delantera.

En la parte trasera del robot hemos colocado una "rueda loca" formada por una bola como en las que se utilizan en las mesas de transferencia de carga (las podemos ver en las cajas de algunos supermercados) y que se pueden encontrar con facilidad en una tienda de venta de rodamientos. La bola loca esta montada sobre una pequeña placa de fibra de vídreo (resto de algun otro proyecto) y dispone de dos tornillos con tres tuercas cada uno montados de forma que se pueda regular la altura de la parte trasera del robot.

2.6 Sistema de alimentación

La alimentación del robot se la proporciona una batería de LIPO (Polimero de Litio) de 2 elementos que proporciona 7,4v y una capacidad de 1100mA/h. Dicha batería es de muy poco espesor lo que nos permite colocarla en la parte inferior del robot (entre la placa de contrachapado y el suelo) sin que dificulte el movimiento del robot y con la ventaja de bajar el centro de gravedad del mismo.

El encendido/apagado del robot se logra mediante un pequeño interruptor alojado en la propia base de madera que se acciona por la parte superior del robot pero que se encuentra cableado por su parte inferior.

En este modelo no hemos puesto un fusible de protección pero serí algo más que conveniente dada la alta corriente de descarga de la batería de LIPO que hemos usado: xxAmp/hora.

El conector de carga de la batería queda oculto entre la placa soporte de la rueda loca y la base del robot de forma que pueda ser extraído con facilidad para proceder a la carga de la batería y que quede colocado sin que se arrastre o entorpezca el movimiento del robot.

Para alimentar la placa controladora Arduino hemos utilizado un "jack" conectado a su entrada de alimentación externa. Para los sensores y circuitos que lo requieran tenemos una salida de 5V estabilizada en uno de los pines de la controladora, es conveniente verificar que el regulador de 5V del Arduino no se caliente en exceso ya que este no dispone de ningún radiador disipador de calor.

Para facilitar las conexiones de los cables entre los distintos circuitos y elementos hemos usado unas clemas rápidas sin tornillos que son muy prácticas para este tipo de aplicaciones.

2.7 Sensores de IR

Para poder detectar los infrarrojos que emite la pelota de Soccer, hemos colocado dos fototransistores del tipo SFH313 como sensores en la parte delantera del robot. Cada sensor nos proporciona un voltage (0-5v) proporcional a la distancia/orientación respecto de la pelota.

El resultado de la diferencia del valor de los sensores nos proporciona información acerca de la colocación de la pelota respecto del robot, mientras que el valor de cada sensor nos dice lo lejos que se enecuentra la pelota del robot.

Este tipo de sensor es sensible a todo tipo de radiación infrarroja por ejemplo a la luz del Sol o a la que emiten las lámparas halógenas. Para minimizar este problema hemos colocado los fototransistores en la parte inferior del robot procurando que queden a la sombra de estas emisiones.

2.8 Programa principal del ArduSoccerBot versión 1.0

El programa principal del ArduSoccerBot v1.0 es un sencillo ejercicio donde pretendemos conseguir que el robot siga una pelota emisora de infrarrojos como la que se usa en la prueba de Soccer de la RoboCup Junior. Esta pelota emite luz infrarroja de forma continua mediante una serie de LEDs que hay en su interior. (Importante, a partir del año 2009 la pelota oficial emitira luz modulada sobre una portadora de 40KHz).

El programa asigna al robot dos comportamientos distintos:

Modo búsqueda: El robot no ve la pelota por ninguno de los dos sensores de infrarrojos (el nivel de umbral es ajustable) y gira sobre su propio eje para localizar la pelota.

Modo Seguimiento: Alguno de los sensores (o los dos) reciben un nivel de infrarrojos que supera el umbral, el robot avanza hacia la pelota corrigiendo de forma proporcional la velocidad de las ruedas de forma que ambos sensores reciban el mismo nivel de señal.

2.9 Vídeos ArduSoccerBot versión 1.0

Vídeos Descargar Real Player Descargar Windows Media Player
ArduSoccerBot versión 1.0
Formato Real Player (10,3MB)

Formato Windows Media (5,6MB)