Introducción a la robótica educativa (V)

Nota del autor

Este artículo fue inicialmente publicado en el blog de BQ, mibqyyo, y se encontraba aquí enlazado, pero actualmente ya no se encuentra disponible y, para que no desaparezca, reproduzco aquí el contenido completo.

Como viene siendo habitual te presento un nuevo artículo de la serie Introducción a la robótica, cuyo propósito no es más que mostrarte lo sencillo que puede ser introducirse en este mundillo.

Puede que durante los anteriores artículos te hayas preguntado de qué manera estos ejemplos que te he ido proponiendo forman parte de la robótica, pues, si recuerdas la descripción que te di de ésta en el primer artículo de la serie, la robótica es la rama de la tecnología que se dedica al diseño y construcción de robots, entendiendo robot como una máquina que pueda “sentir” y reaccionar a su entorno de forma autónoma y mostrar un cierto comportamiento “inteligente” en función de su programación.

La respuesta estriba en que entendiendo independientemente la interacción de cada uno de estos componentes con la placa controladora puedas imaginar y entender fácilmente cuál puede ser su función en un robot. Ahora, una vez que he repasado contigo algunos de los componentes principales, te voy a mostrar, al fin, cómo hacer un pequeño robot. O, al menos, mi visión de un robot. La idea es hacer un robot sigue luz, es decir, que sea capaz de evaluar desde que lado le llega una mayor iluminación y pueda desplazarse hacia ese punto por sus propios medios.

Una vez puestos a construir un robot te das cuenta de algo que hasta ahora no hemos necesitado: un soporte donde construirlo, un chasis para el robot. Existen multitud de formas de intentar solventar este obstáculo, algunas más profesionales que otras. La mejor de ellas es disponer de una impresora 3D para poder imprimir las piezas que tú mismo diseñes. De esta forma puedes adaptar las piezas exactamente a tus necesidades y estética. Sin embargo, muchas veces esto no es posible y hay que echarle imaginación y utilizar algo que sí esté en tu mano. Este es el caso que hoy te muestro, en el que para la construcción del robot he utilizado piezas de Lego y gomas elásticas. Aunque la estética no sea la más bonita del mundo ha resultado ser un diseño bastante efectivo.

Verás  que, a pesar de su aspecto y de lo que pueda parecer a priori, la programación es bastante sencilla. Por supuesto esto no significa que no se le puedan agregar más funciones y lógica que puedan hacer al robot, o bien más eficiente, o bien más completo con otras características nuevas.

MONTAJE DEL ROBOT

Para que puedas ver cómo he hecho el montaje de todo el robot te incluyo un resumen en imágenes de cómo he ido incluyendo cada parte.

Lo primero es construir el chasis. Como dispongo de dos servos de rotación continua tendré que incluir en el diseño un par de ruedas adicionales que le den estabilidad. Irán en la parte delantera. Los largueros que sobresalen servirán para sostener los sensores de luz. El chasis debe dejar un hueco en su parte inferior suficiente para alojar el portapilas.

El eje de ruedas trasero estará formado por un par de servos de rotación continua. La rueda será el propio complemento redondo que incluyen los servos. Hay que destacar que estos complementos no son ruedas en sí mismas, sino que sirven para amarrar otros complementos o actuadores. Los he colocado enfrentados y sujetos con dos gomas elásticas, una cerca del eje y otra en su extremo, de manera que le confieran cierta rigidez.

Una vez está montado el chasis y los servos procedo a colocar la placa controladora.

A continuación se colocan los LEDs amarrados en la goma del medio, uno a cada lado. Después se amarran los sensores de luz en la punta del larguero sobresaliente. Por último, se sujeta el zumbador en la parte trasera del robot, mediante la última goma elástica.

CONEXIONES

Con todas las piezas, sensores y demás en sus respectivos sitios el siguiente paso consiste en conectar los componentes a la placa controladora. En la siguiente imagen puedes ver el resultado de la conexión. He quitado los componentes de sus amarres para que pueda observarse un poco mejor el resultado.

A continuación te dejo la lista de conexiones. Recuerda que las fotorresistencias van conectadas a los pines analógicos porque obtienen valores de luz comprendidos entre 0 y 1023.

  • Servo izquierdo: Pin digital 3.
  • Servo derecho: Pin digital 5.
  • Sensor luz izquierdo: Pin analógico A0.
  • Sensor luz derecho: Pin analógico A2.
  • LED izquierdo: Pin digital 8.
  • LED derecho: Pin digital 9.
  • Zumbador: Pin digital 11.

CÓDIGO

Verás que en el código no he utilizado ningún bloque nuevo, excepto el propio de las fotorresistencias. Estos son muy sencillos ya que tan sólo definen en que pin están conectados dichos sensores. Primero te muestro el código y luego pasaré a explicarlo.

El primer paso del código es definir un par de variables, que con mucha creatividad he llamado FotoRes_Izq y FotoRes­Dch. A continuación le asigno a cada una de esas variables el valor que obtiene su sensor de luz correspondiente, que se encuentran conectados en los pines analógicos A0 y A2. Es decir, el robot mediante las fotorresistencias está observando el entorno.

Una vez obtenidos los valores del entorno el robot debe analizar los valores obtenidos y, en base a ellos, tomar decisiones. Estas decisiones se las he programado únicamente para tres casos diferentes.

  1. Si el sensor de luz de la izquierda recibe mayor cantidad de luz que el de la derecha el robot girará hacia la izquierda.
  2. Si el sensor de luz de la derecha recibe mayor cantidad de luz que el de la izquierda el robot girará hacia la derecha.
  3. Si ambos sensores reciben la misma cantidad de luz (aproximadamente) el robot se moverá el línea recta.

Estas son, en líneas generales, las decisiones que puede tomar este robot. Además, deberás tener en cuenta varias particularidades. La primera es que he dejado un pequeño margen en el que el robot no girará (20 puntos a cada lado del punto en el que cada fotorresistencia obtiene el mismo valor). Esto es para evitar que el robot esté todo el rato corrigiendo su rumbo y pueda avanzar pequeños tramos en línea recta.

Por otra parte debes tener en cuenta que  si los dos servos giran en el mismo sentido (sea horario o antihorario), como están volteados 180 grados, producirán movimientos contrarios, consiguiendo, no que el robot se mueva en línea recta, sino que el robot gire. Por la misma razón, cuando los servos se muevan en sentidos diferentes el robot avanzará en línea recta, bien sea hacia adelante o hacia atrás.

Para cada uno de los tres casos he incluido, además, bloques de código que harán que se encienda el LED correspondiente del lado al que gire (ambos se encenderán en el caso de desplazarse en línea recta) y que suene una nota mediante el zumbador. Al desplazarse hacia la izquierda sonará la nota Do, a la derecha sonará la nota Si y no sonará nada si el robot no realiza ningún giro.

CONCLUSIÓN

Como ves el código no es nada complicado y aún así conseguimos un pequeño dispositivo que es capaz de decidir hacia qué lado debe moverse para acercarse a la luz. A continuación te dejo un pequeño vídeo en el que se ve al robot en funcionamiento. Mediante una linterna voy indicándole el recorrido que quiero que haga.

Por supuesto, te invito a que lo mejores, añadiéndole una mayor lógica y número de decisiones. Puedes incluso mejorarlo incluyéndole nuevos sensores que le permitan realizar otras acciones completamente nuevas.