lunes, 12 de mayo de 2008

Hormiguita no hay camino, se hace camino al andar

Al fin vemos la luz al final del túnel. La hormiga ya es capaz de orientarse debidamente hacia el emisor de infrarrojos, situado a una distancia aproximada de 1.70 m. Y no sólo si éste está de frente, sino también si está de espaldas a la "cabeza" de la hormiga.
A continuación explico el funcionamiento básico:
La hormiga lleva incorporada en el extremo inferior de la "cabeza" el sensor capaz de detectar un haz de luz infrarroja. La circuitería está preparada para que la detección sea de una onda cuadrada de frecuencia 38Khz. Dicha circuitería estima el nivel de señal recibido y entrega un "1" al Coldfire en caso de recepción y "0" en caso de no recepción.
El software tiene programado una interrupción cada 100ms que comprueba si en el pin establecido del puerto de entrada recibe un "1" o no. En caso afirmativo, configura el sistema motriz de la hormiga con un índice de giro en función de la posición del servo de rotación del brazo en el instante de la recepción.
  • Este proceso se realiza sin cálculos matemáticos: un estímulo (recepción), una respuesta (orientación). Este sistema tiene un inconveniente que estamos tratando de solucionar. Funciona muy bien para las distancias largas, pero falla en las distancias cortas. A poca distancia del emisor, aumenta mucho la frecuencia con que se recibe "1" y por tanto la hormiga no para de recibir información sobre cambios del índice de giro. Esto produce en la hormiga una sensación de "no saber qué hacer" que se traduce en "cada pata va a su aire". Se reduce mucho la velocidad pero (ventaja) al final acaba llegando justamente al emisor. Este sistema es el que se ha utilizado en el vídeo.
    Se hace camino al andar porque nunca deja de reorientarse. A medida que anda, rastrea.

    Una fácil solución a esto podría ser programarlo para que cuando detecte una posición central, simplemente camine recto, deshabilite las interrupciones y menos líos. Dos inconvenientes tiene esto:
    1. No llega exactamente a la boya (puede llegar a tener un error de más de medio metro)
    2. Pierde la funcionalidad de "seguir al emisor". Es decir, que el emisor se pueda mover y la hormiga va siguiéndole. Nos gustaría mantener esta libertad a modo de mejora.

  • El sistema alternativo es tomar varias muestras (3 por ejemplo) y hacer la media de las tres para tomar la decisión de orientarse. Este sistema es ventajoso en cuanto a que los movimientos de la hormiga son más "limpios", mantiene la velocidad más o menos constante, funciona bien a distancias cortas pero hay situaciones en las que no funciona del todo bien. La explicación que se nos ocurre es la siguiente: Cuando la hormiga está girando (para dar la vuelta al principio por ejemplo), las posiciones de referencia para reorientarse, que son las de la rotación del brazo, están desvirtuadas porque no se está teniendo en cuenta que la hormiga está girando, por lo que si se toman varias medidas y se hace la media, puede ser que camine hacia un lugar en el que para nada está el emisor.
    Sin embargo este sistema experimentalmente funcionaba bastante bien, aunque fallaba en la mitad de las situaciones probadas.
    Tampoco hemos podido profundizar mucho en esta manera porque hemos tenido problemas al monitorizar lo que hace el programa con las posiciones recibidas. La información que nos aparece en pantalla en incoherente y no es la que esperamos desde luego. Aún no conocemos las razones.

Trataremos ahora de encontrar la mejor solución y mejorarla en la medida de lo posible.
De momento este vídeo en el que se demuestra que la hormiga llega, que no es poco.

No hay comentarios: