Brazo robot que juega al tres en raya.

Grupo 5.

AUTORES:
Nicolás Palacios Galván. GII.
Víctor Manuel Tíscar Pérez. GII.
Andrés García Navarro. GII.




ÍNDICE



  1. Introducción
    1. Objetivos
    2. Funcionamiento
    3. Partes
  2. Hardware
    1. Placas controladoras L298N (controlador motores DC)
    2. Brazo robótico
    3. Arduino UNO
    4. Esquemas
  3. Software
  4. Materiales
  5. Conclusiones
  6. Bibliografía
  7. Media

1. INTRODUCCIÓN



1.1. Objetivos
Este proyecto se eligió con el objetivo de lograr un brazo robótico capaz de jugar contra un humano al juego “tres en raya”, utilizando la placa Arduino UNO. Dicho robot será capaz de tomar decisiones según se desarrolle el juego, y elegirá la opción más adecuada, con el propósito de impedir ganar al rival y de conseguir llevarse la victoria. Para lograr este objetivo el brazo robótico poseerá inteligencia artificial, que se explicará más adelante.



1.2. Funcionamiento
La explicación del funcionamiento de este proyecto es simple.
Consta de un tablero de tres en raya, 4 fichas por jugador (humano y robot) y el brazo robótico controlado por Arduino. El desarrollo del juego será idéntico al que seguiría una partida humano vs humano, solo que esta vez deberemos esperar el movimiento del robot para poder decidir nuestro siguiente movimiento. La partida la empezará el humano, colocando su ficha en la casilla que decida, y mantendrá pulsado el interruptor una vez la haya colocado. Entonces será cuando el robot entre en juego, eligiendo la casilla donde colocar su ficha y efectuando el movimiento. Una vez realizado se bloqueará, y esperará que pulsemos el interruptor para actuar otra vez.
Estos pasos se repetirán hasta que finalice la partida. ¿Quién será más inteligente, el hombre o la máquina?



1.3. Partes




IMG_20150415_143801.jpgTablero
Tablero de tres en raya, sobre el que se realizarán las partidas pertinentes.


Fichas
Fichas necesarias para jugar, se diferencian las de los dos jugadores que iniciarán partida por el color de la superficie.


ce-c9895_3.jpgBrazo robótico
Brazo robótico que jugará contra el humano cada partida. Será el rival a batir.

30066.jpg
Arduino UNO
Será el encargado de tomar la decisión de movimiento y comunicársela al robot para realizar dicho movimiento. Lo podríamos describir como “el cerebro del brazo robótico”.







2. HARDWARE



Una vez explicadas y descritas las partes de nuestro proyecto, vamos a explicar los componentes hardware empleados para el correcto funcionamiento del mismo:



2.1. Placas controladoras L298N
Captura de pantalla 2015-04-16 a las 11.35.12.png Estos drivers son las placas responsables del movimiento de motores DC, que en este caso emplearemos para poder mover de manera automática (sin nuestra intervención) cada motor del brazo robótico, y de esta manera efectuar los movimientos necesarios para coger la ficha y colocarla en la casilla que se decida. Se conectará a cada placa dos motores, que se enlazarán en las entradas azules de la imagen (un motor en las dos de la parte izquierda y otro en las dos de la parte derecha, ya que de cada motor salen dos cables), mientras que en la parte central se conectarán los polos positivo (VMS) y negativo de la alimentación (GND).



2.2. Brazo robótico
Es el encargado de realizar los movimientos que decida la placa Arduino. Las placas anteriormente explicadas se conectarán a los motores del brazo (cada motor corresponde con una articulación del brazo: base, hombro, codo, mano y pinza).



2.3. Arduino UNO
Es el elemento principal de nuestro proyecto, es el responsable de tomar la decisión de dónde colocar cada ficha para poder continuar la partida de manera inteligente, y enviar esa decisión a las placas, que a su vez la enviará a los motores para efectuar el movimiento. Es el “cerebro” del brazo, el encargado de que funcione todo el conjunto.

2.3. Esquemas
A continuación se mostrarán una serie de esquemas para explicar las conexiones entre las placas y el arduino (explicación más detallada en el punto 3) .



3. SOFTWARE



En cuanto a la parte software de nuestro proyecto, hemos diseñado un programa que, mediante señales digitales, maneja el brazo robótico con el fin de situarse, coger una ficha, colocarse en la casilla correspondiente, soltarla y volver a la posición de inicio. Esto se consigue mediante el uso de señales HIGH y LOW a cada placa controladora de los motores, que serán las responsables de producir el movimiento del brazo. De esta manera, logramos jugar partidas al tres en raya con nuestro robot.



Código del Arduino:

Código arduino


Como bien se ha explicado anteriormente, a los drivers l289n se conectan los dos cables que pertenecen a cada motor DC, llegando a utilizar 3 placas ya que a cada una se puede conectar dos motores. Para comunicar el arduino con estas placas es necesario conectar los pines digitales del arduino con los pines macho de las placas llamados IN y EN. En cada placa hay 2 pines EN (uno por cada motor) y cuatro pines IN (2 pines por cada motor), además de la alimentación y el GND. Los pines EN sirven para controlar la velocidad a la que se moverá el motor (no han sido utilizados por falta de pines).
En cuanto al código, se han realizado 10 funciones principales que son las que moverán al motor, dos por cada motor:
  • Girar la base a la izquierda o a la derecha.
  • Subir o bajar el hombro.
  • Subir o bajar el codo.
  • Subir o bajar la mano.
  • Abrir o cerrar la pinza.
A estas funciones se les pasa como parámetros los dos enteros por los que enviar las señales (pines de la placa l298n correspondiente) y un entero que será el tiempo que se moverá el motor.
Por ejemplo, la función abrirPinza(salida1motorPinza,salida2motorPinza,1000) abrirá la pinza enviando una señal de HIGH y otra de LOW por los dos primeros parámetros, posteriormente se realizará un delay del tercer parámetro, un segundo en este caso y, para terminar, la señal que tenía el valor de HIGH vuelve a LOW para evitar que realice movimientos no deseados.
Los movimientos del brazo comienzan cuando se pulsa el botón de la placa de inserción o protoboard. Esto queda reflejado en el código de la siguiente manera:
Al comienzo de la función loop se introduce una estructura if-else en la que la condición a comprobar es si la señal que se lee del pin input del botón es HIGH. Si esto se cumple se comprueba, además, que nuestro contador interno de movimientos (veces que se ha pulsado el botón) valga unos valores u otros. Como al final no hemos sido capaces de incluir el sensor de color, hemos tratado de simular una partida arduino vs humano, por lo que si la primera vez que pulsemos el botón, el contador valdrá 1, la siguiente vez 2 y la última vez valdrá 3. En cada iteración el brazo realizará el mismo movimiento: coger una ficha; con la diferencia de que, después de haberla cogido, la posición del tablero donde se depositará dicha ficha será distinta y, por lo tanto, el brazo realizará movimientos distintos en cada iteración del bucle.
Si en cambio no se pulsa el botón, la señal antes mencionada tendría un valor de LOW y entraría por la rama else, que no hace absolutamente nada por lo que el robot no se movería y se estaría comprobando la condición una y otra vez.
Para tener controladas las posiciones se ha calibrado bien cuánto tiempo debe moverse un motor y, una vez realizada la acción deseada, se procede a deshacer la acción, es decir, si durante 500 milisegundos se ha subido el hombro, ahora se va a bajar el hombro durante otros 500 milisegundos para que vuelva a la posición inicial y así automatizar tanto el movimiento de coger una ficha como el de colocarla en el tablero.



4. MATERIALES



Tablero de madera de marquetería 50×40 cm- 4 €
Listones de madera 2×2 cm – 3 €
Listones para fichas – 3 €
Brazo robótico – 55 €
Placas controladoras L298N (x5) – 5 €
Cables (2 m.) – 0,60 €
Cable macho-hembra – 8 €
Pilas – 10€
Arduino UNO – Proporcionado por la universidad



Total gastado en el proyecto= 106,60 €


5. CONCLUSIONES



Durante la realización del proyecto nos hemos encontrado con diferentes dificultades. La primera fue la elección del proyecto, tuvimos varias ideas interesantes, pero no acababan de convencernos. Una vez elegido este proyecto, nos encargamos de elegir qué componentes serían necesarios y comprarlos, alguno de ellos por internet y teniendo que esperar varias semanas hasta que llegaran. Cuando ya teníamos todos los componentes elegidos, tratamos de averiguar la manera en la que se deben conectar con el Arduino y con el brazo robótico.
Una vez logrado eso, tuvimos que averiguar el método para conseguir la automatización de los movimientos del brazo, ya que en un principio la manera de moverse era a través de un mando.



Nuestro principal objetivo era usar el algoritmo de “minimax” para otorgar inteligencia artificial al brazo robótico para obtener capacidad de decisión según se desarrollara la partida, pero por falta de tiempo y conocimientos no hemos sido capaces de lograrlo, por lo que al final nos hemos decantado por implementar una serie de movimientos para simular una partida, de modo que podamos realizar la demostración de lo que sería nuestro proyecto.



Nos hubiese gustado un poco más de ayuda por parte del profesorado para lograr nuestros objetivos, pero pese a eso nos ha gustado el tener la posibilidad de diseñar un proyecto de este estilo, pudiendo manejar diferentes placas, chips, etc. La asignatura se trataba de esto, y poder ver los resultados a nuestro esfuerzo viendo el proyecto en funcionamiento es una gran sensación.



6. BIBLIOGRAFIA







Información general: http://arduino.cc/forum/
6. MEDIA

También te podría gustar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *