Autor: Rocio Garcia de la Fuente
Fishertechnik es un kits comercial de robótica cuya filosofía, parte de un juguete de construcción, con piezas intercambiables, que permiten montar de manera sencilla, ya sea siguiendo instrucciones o bien de forma libre, un sistema mecánico capaz de realizar diversas tareas y de ser programado. Dispone además de una plataforma de programación basada en iconos, especialmente desarrollada para sus kits de robótica, que de forma intuitiva permite dar vida a los sistemas físicos.
En cuanto a la construcción de un sistema robot con uno estos kit, no hay mucho de lo que hablar, hay completos tutoriales, en los que mediante imágenes se muestra paso a paso el proceso completo. Así pues, el presente artículo se centrará en la plataforma de programación de los autómatas una vez construidos.
En el presente artículo analizaremos la plataforma LLWIN, que ha sido muy empleada en centros docentes durante los últimos años y tiene la misma filosofía que la actual versión Robo Pro comercializada por Fischertechnik.
Así pues, existen dos formas de trabajar con este kit, la primera de ellas, especialmente dirigida a personas sin conocimientos previos, donde si se realiza el montaje usando los tutoríales, que se suministran con el kit, existen programas prediseñados, con subrutinas creadas específicamente, que hacen fácil la programación del funcionamiento del robot, sólo se necesita seguir las instrucciones.
Para usuarios más avanzados, también es posible crear un programa totalmente nuevo, partiendo de cero, y programarlo de forma libre, pero antes de continuar, haremos un pequeño repaso a la programación mediante diagramas de flujo, en la que se basa esta plataforma.
Un diagrama de flujo es una representación esquemática de los distintos pasos de un programa. Constituyen pues, otra forma de representar algoritmos distintos al pseudocódigo (lenguajes escritos), y goza de ventajas como el ser altamente intuitivo, fácil de leer, claro y preciso.
En la creación de diagramas de flujo se emplean unos símbolos y normas de construcción determinados, un modelo simplificado de los estándares internacionales, con el objeto de poder interpretar y ser interpretados por otros programadores.
Para la creación de un diagrama de flujo sencillo basta con echar un vistazo a los siguientes objetos:
- Terminal. Indica comienzo o final de un programa, subprograma o módulo.
- Captura y emisión de datos. Entrada o salida de información desde o hacia el ordenador.
- Proceso. Cualquier proceso interno realizado por el ordenador como asignación de valor a variables, operaciones matemáticas, etc.
- Decisión múltiple. El dato o condición planteada presenta distintas alternativas (casos), siguiendo el programa distinta vía en función del caso.
- Línea de flujo. Sentido del flujo de procesos. Indica qué proceso viene a continuación del otro.
Una vez comprendidos los diagramas de flujo se hace necesario conocer también la distribución propia de las herramientas de trabajo de la plataforma LLWin:
- Espacio dedicado al programa: inicialmente en blanco para acoger los bloques funcionales que definan el programa.
- Herramientas para navegar y editar tanto las diferentes subrutinas como el programa principal, así como gestionar la marcha y paro del programa.
- Herramientas para editar los programas y subrutinas, insertar, borrar y unir bloques etc.
- Bloques funcionales, dedicados a realizar las órdenes para el funcionamiento del robot, las más importantes para iniciarse en la programación son:
- Salida: para configurar los actuadores del robot, motores, luces, etc
- Entrada: para seleccionar y configurar los sensores con lo que el robot recibe información del exterior
El resto de herramientas permiten realizar una programación más avanzada, entre otras las tareas que permiten, mediante el control de posición, inclusión de operaciones básicas (por ejemplo: sumas y restas), paradas de emergencia, tiempo de espera, etc. complementar la estructura principal del programa realizado con los bloques de entrada y salida anteriores.
En cuanto a control de flujo, decir que no existen cajas específicas, ya que los bloques de entrada el comparador hace las veces de elementos condicionales, mientras que los bucles se realizan uniendo distintos bloque de manera recursiva como se verá a continuación en el siguiente ejemplo, en el que un motor permanecerá en reposo hasta que el sensor de luz reciba la iluminación necesaria, momento en el que se pondrá en marcha.
- Para comenzar se inserta un bloque de entrada, configurado como fototransistor. Para configurarlo hay que tener en cuenta la conexión de entrada, E1, y que la bifurcación 1 se corresponde con que el sensor detecta luz, y por el contrario la bifurcación 0 se relaciona con la ausencia de luz.
- Se introduce ahora en el programa el actuador, correspondiente al motor, con su conexión adecuada seleccionada, M1, y en estado de reposo para evitar su movimiento indeseado. Finalmente se une usando líneas a la bifurcación 0 del fototransistor (si no recibe luz no se mueve)
- Para que el programa realice esta comprobación de forma continuada, se necesita realizar un bucle, para ello basta con unir el bloque del actuador en reposo con el bloque del fototransistor.
- Por último, en caso afirmativo se introduce el motor en marcha durante un tiempo determinado para después dar orden de detener el motor (también se puede programar controlando la posición pero esto requiere de una programación un poco más complicada)
Como se ha podido comprobar la filosofía de programación se basa en la tradicional programación mediante bloques funcionales, por lo programar es bastante sencillo y llevadero y da pie a elaborar programas muy completos. Así, si se considera el anterior programa, las posibilidades de evolución son infinitas, desde un sistema de encendido de luces por la noche, hasta un robot seguidor de línea, pasando por un autómata capaz de dirigirse hacia una fuente de luz (con dos motores), el reto está en vuestras manos.