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.
- lines (array): Array con n filas y 4 columnas, siendo n el número de líneas detectadas. Cada fila
-
-
-
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)