Continuamos con la serie de artículos de LabView, esta vez con un programa un poco más complicado: Sigue líneas en LabVIEW: Máquinas de estado. Como sabréis, una máquina de estados finita o autómata finito es un sistema que dependiendo de unas entrada de datos, opera con ella y devuelve una salida. Hay muchas máquinas de estados que nos podemos encontrar en el día a día; por ejemplo las máquinas expendedoras son máquinas de estados, los semáforos son máquinas de estados, hasta los interruptores de luz de nuestra casa son una máquina de estados.
Sigue líneas como máquina de estados:
En este caso estamos hablando de máquinas de estados finitos porque tienen un número finito de estados. Por ejemplo, un interruptor tendrá dos estados: dejando pasar la corriente o cortando su paso. Un dispensador de bebidas tiene muchos estados, como: esperando pedido o devolviendo cambio. En el caso de la máquina de estados finitos que vamos a hacer hoy vamos a tener tres estados. Se trata de un robot sigue líneas que además esquiva obstáculos situados en su camino. Los estados posibles con los que vamos a trabajar serán: “dentro del blanco”, “dentro del negro”, y “obstáculo”.
Dicha máquina de estados tendrá como entrada los valores de un sensor de ultrasonidos, y del sensor de luz en modo activo. Según sea el valor de esas entradas actuará de una manera u otra. Por ejemplo si esta en lo negro se moverá a lo blanco y viceversa. Sin embargo si detecta un obstáculo a menos de cierta distancia le dará prioridad y tratará de esquivarlo. Por tanto siempre que reciba por la entrada que un obstáculo está a menos de x cm. se moverá al estado “obstáculo”, independientemente del valor de luz captado por el otro sensor.
Implementación en LabVIEW:
En primer lugar vamos a explicar la estructura case. En LabVIEW se pueden crear estructuras case que podrán ejecutar distintos trozos del programa según qué entrada reciban. Todo esto es configurable, y al crearlo ya viene con una entrada que lee booleanos y con dos estados: uno para false y otro para true. Para crear una estructura case tenéis que situaros en el diagrama de bloques de vuestro VI, darle click derecho → Structures → Case Structure:
Una vez tengamos la máquina de estados, es necesario conectarle las entradas (en este caso las lecturas del sensor de ultrasonidos y de luz). Además debemos meterlo todo en un bucle para que se ejecute hasta que apretemos el botón ENTER. El programa quedaría de la siguiente manera:
Estado “dentro del blanco”:
Estado “dentro del negro”:
Estado “obstáculo”:
En este vídeo podéis observar su funcionamiento:
Ya sabéis que si tenéis dudas podéis escribir en el foro.