5. | Métodos de Sensorización
5.15 Detección de marcadores ArUco
Introducción
Robobo puede detectar marcadores ArUco. Para conocer los detalles de este proceso, se recomienda consultar:
Elementos de programación
5.15.1 Clase Tag
Representa un tag ArUco detectado por Robobo, definido por cuatro esquinas leídas en sentido horario.
Atributos:
- cor1 (dict): Diccionario con ‘x’ e ‘y’, coordenadas de la primera esquina.
- cor2 (dict): Diccionario con ‘x’ e ‘y’, coordenadas de la segunda esquina.
- cor3 (dict): Diccionario con ‘x’ e ‘y’, coordenadas de la tercera esquina.
- cor4 (dict): Diccionario con ‘x’ e ‘y’, coordenadas de la cuarta esquina.
- tvects (dict): Diccionario con ‘x’, ‘y’ y ‘z’, componentes del vector de traslación.
- rvects (dict): Diccionario con ‘x’, ‘y’ y ‘z’, componentes del vector de rotación.
- id (int): Identificador del tag ArUco.
5.15.2 Método startArUcoTagDetection
| startArUcotagDetection() |
| Habilita la detección de ArUco. La detención ArUco está deshabilitada por defecto. Este cambio es persistente. |
Ejemplo de Uso
El siguiente programa hace que Robobo habilite la detección de marcadores ArUco para poder usarla posteriormente.
from robobopy.Robobo import Robobo
rob = Robobo('localhost')
rob.connect()
rob.startArUcoTagDetection()5.15.3 Método stopArUcoTagDetection
| stopArUcoTagDetection() |
| Deshabilita la detección de marcadores ArUco. La detención ArUco está deshabilitada por defecto. Este cambio es persistente. |
Ejemplo de Uso
El siguiente programa hace que Robobo deshabilite la lectura de marcadores ArUco. De esta forma, no es posible usar este módulo hasta que se habilite de nuevo.
from robobopy.Robobo import Robobo
rob = Robobo('localhost')
rob.connect()
rob.stopArUcoTagDetection()5.15.4 Método readArucoTag
| readArUcotag() |
|
Lee el último marcador ArUco detectado. Devuelve: • El marcador ArUco (Tag). Ver Clase Tag. |
Ejemplo de Uso
El siguiente programa hace que Robobo avise cuando lea el ID de un marcador ArUco o diga que no ha detectado ninguno en caso contrario.
from robobopy.Robobo import Robobo
rob = Robobo('localhost')
rob.connect()
while True:
rob.wait(0.1)
if rob.readArucoTag().id != '':
print(f'Aruco detectado con ID: {rob.readArucoTag().id}')
else:
print('Aruco no detectado')5.15.5 Método setArucoTagSize
| sertArUcoTagSize(size) |
|
Establece la longitud del lado de la etiqueta ArUco que será detectada. Es importante que este valor Parámetros: • size (int): Tamaño del lado del marcador ArUco en milímetros. Este cambio es persistente. . |
Ejemplo de Uso
En este ejemplo, se varía el tamaño del tag detectado a 100 milímetros y acto seguido se comienza a leer de forma indefinida el ID de ArUco detectado en voz alta.
from robobopy.Robobo import Robobo
rob = Robobo('localhost')
rob.connect()
rob.setArucoTagSize(100)
while True:
rob.wait(1)
rob.sayText(f'Aruco detectado con ID: {rob.readArucoTag().id}')5.15.6 Método whenArucoTagIsDetected
| whenArUcotaglsDetected(callback) |
|
Establece la función callback que se llama cuando se detecta un marcador ArUco. • callback (fun): La función callback a ser llamada. |
Ejemplo de Uso
El siguiente programa hace que Robobo diga que ha detectado un nuevo marcador ArUco y diga en voz al
from robobopy.Robobo import Robobo
def fun():
rob.sayText(f'Aruco detectado con ID: {rob.readArucoTag().id}')
rob = Robobo('localhost')
rob.connect()
rob.startArUcoTagDetection()
rob.whenArucoTagIsDetected(fun)
# el programa se mantiene en ejecución continua
while True:
rob.wait(0.1)5. | Métodos de sensorización
5.15 Detección de marcadores ArUco
Introducción
Robobo puede detectar marcadores ArUco. Para conocer los detalles de este proceso, se recomienda consultar:
Elementos de programación
5.15.1 Clase Tag
Representa un tag ArUco detectado por Robobo, definido por cuatro esquinas leídas en sentido horario.
Atributos:
• cor1 (dict): Diccionario con ‘x’ e ‘y’, coordenadas de la primera esquina.
• cor2 (dict): Diccionario con ‘x’ e ‘y’, coordenadas de la segunda esquina.
• cor3 (dict): Diccionario con ‘x’ e ‘y’, coordenadas de la tercera esquina.
• cor4 (dict): Diccionario con ‘x’ e ‘y’, coordenadas de la cuarta esquina.
• tvects (dict): Diccionario con ‘x’. ‘y’ y ‘z’, componentes del vector de traslación.
• rvects (dict): Diccionario con ‘x’. ‘y’ y ‘z’, componentes del vector de rotación.
• id (int) Identificador del tag ArUco.
5.15.2 Método startArUcoTagDetection
| startArUcotagDetection() |
| Habilita la detección de ArUco. La detención ArUco está deshabilitada por defecto. Este cambio es persistente. |
Ejemplo de Uso
El siguiente programa hace que Robobo habilite la detección de marcadores ArUco para poder usarla posteriormente.
from robobopy.Robobo import Robobo
rob = Robobo('localhost')
rob.connect()
rob.startArUcoTagDetection()5.15.3 Método stopArUcoTagDetection
| stopArUcoTagDetection() |
| Deshabilita la detección de marcadores ArUco. La detención ArUco está deshabilitada por defecto. Este cambio es persistente. |
Ejemplo de Uso
El siguiente programa hace que Robobo deshabilite la lectura de marcadores ArUco. De esta forma, no es posible usar este módulo hasta que se habilite de nuevo.
from robobopy.Robobo import Robobo
rob = Robobo('localhost')
rob.connect()
rob.stopArUcoTagDetection()5.15.4 Método readArucoTag
| readArUcotag() |
|
Lee el último marcador ArUco detectado. Devuelve: • El marcador ArUco (Tag). Ver Clase Tag. |
Ejemplo de Uso
El siguiente programa hace que Robobo avise cuando lea el ID de un marcador ArUco o diga que no ha detectado ninguno en caso contrario.
from robobopy.Robobo import Robobo
rob = Robobo('localhost')
rob.connect()
while True:
rob.wait(0.1)
if rob.readArucoTag().id != '':
print(f'Aruco detectado con ID: {rob.readArucoTag().id}')
else:
print('Aruco no detectado')
5.15.5 Método setArucoTagSize
| sertArUcoTagSize(size) |
|
Establece la longitud del lado de la etiqueta ArUco que será detectada. Es importante que este valor Parámetros: • size (int): Tamaño del lado del marcador ArUco en milímetros. Este cambio es persistente. . |
Ejemplo de Uso
En este ejemplo, se varía el tamaño del tag detectado a 100 milímetros y acto seguido se comienza a leer de forma indefinida el ID de ArUco detectado en voz alta.
from robobopy.Robobo import Robobo
rob = Robobo('localhost')
rob.connect()
rob.setArucoTagSize(100)
while True:
rob.wait(1)
rob.sayText(f'Aruco detectado con ID: {rob.readArucoTag().id}')5.15.6 Método whenArucoTagIsDetected
| whenArUcotaglsDetected |
|
Establece la función callback que se llama cuando se detecta un marcador ArUco. • callback (fun): La función callback a ser llamada. |
Ejemplo de Uso
El siguiente programa hace que Robobo diga que ha detectado un nuevo marcador ArUco y diga en voz alta su ID haciendo uso del método WhenArucoTagIsDetected.
from robobopy.Robobo import Robobo
def fun():
rob.sayText(f'Aruco detectado con ID: {rob.readArucoTag().id}')
rob = Robobo('localhost')
rob.connect()
rob.startArUcoTagDetection()
rob.whenArucoTagIsDetected(fun)
# el programa se mantiene en ejecución continua
while True:
rob.wait(0.1)