Detección de líneas

Introducción

Robobo puede detectar líneas en la imagen. Este procesado se utiliza en la detección de carriles, pero se proporciona por su interés práctico para otras aplicaciones.

Este módulo no está implementado en el simulador.

Elementos de programación 

1. Clase Lines

Representa el conjunto de líneas rectas detectadas por Robobo en un frame.

Atributos:

          • lines (array): Array con n filas y 4 columnas, siendo n el número de líneas detectadas. Cada fila
            tiene los valores ‘x1’, ‘y1’, ‘x2’, ‘y2’, que representan las coordenadas x e y de los puntos 1 y 2
            que forman la línea detectada. Estas coordenadas son siempre valores positivos.
          • id (int): Número de secuencia de frame. Desde que la cámara se inicial, cada frame tiene un
            número que lo identifica. El valor es siempre positivo.

2. Método startLineDetection

StartLineDetection()
Habilita la detección de líneas.
La detención de líneas está deshabilitada por defecto.
Este cambio es persistente.

Ejemplo de Uso

El siguiente programa hace que Robobo habilite la detección de líneas para que se pueda usar
posteriormente.

from robobopy.Robobo import Robobo

rob = Robobo('10.113.26.150')
rob.connect()

rob.startLineDetection()

3. Método stopLineDetection

StopLineDetection()
Desabilita la detección de líneas.
La detención de líneas está deshabilitada por defecto.
Este cambio es persistente.

Ejemplo de Uso

El siguiente programa hace que Robobo deshabilite la detección de líneas. De esta forma, no es posible usar este módulo hasta que se habilite de nuevo.

from robobopy.Robobo import Robobo

rob = Robobo('10.113.26.150')
rob.connect()

rob.stopLineDetection()

4. Método readLine

readLine()
Lee el último conjunto de líneas detectado.
Devuelve:
• Las líneas (Lines).

Ejemplo de Uso

El siguiente programa hace que Robobo busque indefinidamente líneas en el entorno. Si alguna línea es detectada lo indicará y en caso contrario también.

from robobopy.Robobo import Robobo

rob = Robobo('10.113.26.150')
rob.connect()

while True:
    rob.wait(0.1)
    if rob.readLine().id != 0:
        rob.sayText('Línea detectada')
    else:
        rob.sayText('No se ha detectado ninguna Línea')

5. Método whenALineIsDetected

whenAlinelsDetected(callback)
Establece la función callback que se llama cuando se detecta una línea.
Parámetros:
• callback (fun): La función callback a ser llamada.

Ejemplo de Uso

A continuación, se muestra un programa que cuando el robot detecte una línea indique en voz alta al usuario que dicha línea ha sido detectada y cuáles son sus coordenadas.

from robobopy.Robobo import Robobo

def fun():
    rob.sayText('Una linea ha sido   detectada. Sus coordenadas son ')
    rob.sayText(rob.readLine().lines)

rob = Robobo('10.113.26.150')
rob.connect()

rob.startLaneDetection()
rob.moveWheels(20,20)
rob.whenALineIsDetected(fun)

# el programa se mantiene en ejecución continua
while True:
    rob.wait(0.1)
Robobo
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.