siguelinea_f1_scratch_vision_teoria

Sigue Línea Fórmula 1 con Visión Artificial

Para completar este ejercicio, deberás conseguir que el Fórmula 1 siga la línea blanca de la carretera a través de su sensor de visión, es decir, empleando las imágenes que éste recoge con su cámara.

Pero...¿Cómo podemos detectar una línea en una imagen?

La manera más sencilla es utilizar una de las propiedades más importante de las imágenes RGB, el color. Detectaremos la línea blanca filtrando este color en las imágenes, de tal manera que el blanco sea el único color que "ve el robot". De esta manera, nos será mucho más sencillo seguir la línea, sin otros elementos que interfieran en la tarea.

 

1 - Requisitos de la práctica.

Se pide que implementes un algoritmo, en el área indicada, que permita al robot Fórmula 1 seguir la trayectoria marcada por la línea blanca de la carretera de forma autónoma, utilizando los bloques de código disponibles en el área de trabajo.

 

2 - Inicialización del Ejercicio

Para empezar a programar tu robot, primero debes importar el módulo de acceso a la capa hardware del mismo. Incluye este bloque de código en tu editor:

import HAL
#introduce aqui el codigo de tu robot

Recuerda que tu código se puede ejecutar de manera secuencial (instrucciones que sólo se ejecutan una vez), o de forma iterativa (código que se ejecuta en bucle). A continuación tienes un ejemplo que cómo se utilizan instrucciones de cada tipo:

import HAL
#ESTAS SON INSTRUCCIONES SECUENCIALES
HAL.avanzar_hasta(3) # el robot avanza 3 metros y se detiene

while (True):
    # ESTO SON INSTRUCCIONES ITERATIVAS
HAL.girar_derecha_hasta(10) # el robot gira 10 grados a la derecha en cada iteración, nunca se para

 

3 - API de Sensores y Actuadores del Robot

Las funciones y métodos que puedes utilizar para obtener información del robot y enviarle órdenes para resolver la práctica son las siguientes:

3.1 - Sensores

  • dame_objeto_de_color(posicion, color): Esta función te permite obtener la coordenada que quieras ('X', 'Y', 'Z', 'YAW') de la posición del elemento del color que especifiques. Uitliza la cámara del robot y un filtro de color para averigurar la posición del objeto en la imagen.

  • get_us(): Esta método te permite acceder al sensor de ultrasonidos (US) del robot. Utilízalo para obtener un valor de distancia al objeto más cercano, si lo hay.

  • get_ir(color): Esta función se usa para obtener el valor del sensor de infrarrojos (IR) del robot. Indica un color para que el robot encuentre la posición de ese color en su entorno.

  • get_laser():Para acceder al sensor láser se utiliza esta función.

  • get_encoders(): Este método sirve para obtener la información de los encoders del robot.

  • get_position_value(posicion): Esta función te permite averiguar la posición del robot. Indica la coordenada que quieras obtener ('POSX', 'POSY', 'POSZ', 'POSYAW').

  • 3.2 - Actuadores

  • avanzar_hasta(distancia): Para avanzar una distancia concreta (m).

  • girar_derecha_hasta(angulo):: Para girar a la derecha un ángulo concreto (grados).

  • girar_izquierda_hasta(angulo): Para girar a la izquierda un ángulo concreto (grados).

  • despegar(): Despegar un robot.

  • aterrizar(): Aterrizar un robot.

  • set_v(velocidad): Indica la velocidad lineal (de avance) del robot (m/s).

  • set_w(velocidad): Indica la velocidad angular (de giro) del robot (grados/s).

  • set_l(velocidad): Indica la velocidad de elevación del robot (m/s).