Nivel 5: Leyendo las marcas

El seguidor de lineas velocista, Open Source

Una de las diferencias más significativas entre un “Seguidor de línea”y un “Robotracer” es que un seguidor de línea solo se limita a seguir una línea a primera vista, mientras que en las competencias de robotracer, los competidores tienen hasta tres oportunidades para lanzar su robot.

En robotracer, el objetivo es que el robot se aprenda en camino,  y lo recorra de la forma más rápida posible. Por esta razón es que en la primera oportunidad, para lanzar el robot, se suele recorrer la pista a una velocidad baja y constante, de manera que pueda registrar de la forma más detallada posible el escenario en el que se desenvuelve.

Con el escenario totalmente registrado, el robot puede optimizar su recorrido, aumentando o disminuyendo su velocidad, dependiendo de la dimensión y curvatura de los trazos. acortando significativamente el tiempo registrado.

Por lo tanto,, uno de los aspectos fundamentales que debemos superar para poder optimizar nuestro recorrido, debe ser, lograr registrar de manera correcta, tanto las marcas de cambio de curvatura, como los cruces.

En esta sección, explicaremos el método Lamborghino de detección de hitos geográficos en robotracer.

Este método se basa en entender la “huella digital” que dejan los sensores laterales, al pasar por las distintas figuras en la pista. Pero cuando decimos “Huella Digital” no nos referimos a una “huella dactilar”, sino al “registro digital” que deja el robot.

Antes de seguir, mira el siguiente video:

 

 

Dentro de la librería OpenLamborghino.h  podrás encontrar un par de funciones que hacer la detección de los hitos. Estas funciones son  las siguientes:

 

void OpenLamborghino::ReadSensors() {
  Hiz = analogRead(HIZ);
  Hde = analogRead(HDE);

  if (Hiz < umbral) {
    Hiz = 0;
  } else {
    Hiz = 1;
  }

  if (Hde < umbral) {
    Hde = 0;
  } else {
    Hde = 1;
  }
}

void OpenLamborghino::detecGeo() {

  ReadSensors();

  if (Hiz == 0 && Hde == 0) {
    geo = 0;
  }
  if (Hiz == 1 && Hde == 0) {
    geo = 1;
  }
  if (Hiz == 0 && Hde == 1) {
    geo = 2;
  }
  if (Hiz == 1 && Hde == 1) {
    geo = 3;
  }

  if (l_geo != geo) {


    if (geo == 0 && l_geo == 2 && ll_geo == 0) {

      funcionHitoIz();
    }


    if (geo == 0 && l_geo == 1 && ll_geo == 0) {
      fin++;

      funcionHitoDe();
    }



    if (geo == 0 && ((l_geo == 3) || (ll_geo == 3) || (lll_geo == 3))) {

      funcionCruce();


    }

    lll_geo = ll_geo;
    ll_geo = l_geo;
    l_geo = geo;
  }
}




Con este algorimo, fácil y elegante, tu robot nunca más fallará en la detección de las marcas.

2
Leave a Reply

Please Login to comment
1 Comment threads
1 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
2 Comment authors
adminGuido Pastor Recent comment authors
  Subscribe  
newest oldest most voted
Notify of
Guido Pastor
Member
Guido Pastor

una consulta, esto solo es para reconocer las marcas blancas fuera de la linea, pero como hago para que guarde el primer recorrido como muestra el vídeo.