Cámara

Introducción

Robobo permite utilizar la cámara delantera o la cámara trasera del smartphone, pero solo una cámara puede estar activa al mismo tiempo. Existen varios métodos que hacen uso de la información de la cámara, la procesan, y devuelven percepciones de más alto nivel (color, QR, Aruco). Pero también es posible acceder directamente a las imágenes que se envían por stream al ordenador, a una frecuencia determinada (fps). Para utilizar el stream de video de la cámara es necesario descargar la siguiente librería:

pip install robobopy_videostream

Para comprobar que todo funciona, se puede ejecutar el siguiente script:

from robobopy.Robobo import Robobo
from robobopy_videostream.RoboboVideo import RoboboVideo

import cv2

rob = Robobo("localhost")
rob.connect()

videoStream = RoboboVideo("localhost")
videoStream.connect()

rob.startStream()
rob.moveWheels(10,10)

stop = False
while not stop:
    cv2_image = videoStream.getImage()
    cv2.namedWindow('imagen', 
    cv2.WINDOW_NORMAL)
    cv2.imshow('imagen', cv2_image)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        videoStream.disconnect()
        cv2. destroyAllWindows ()
        stop = True

rob.stopMotors()
rob.stopStream()

Elementos de programación

1. Método setStreamFPS

SetStreamFPS(fps)
Establece los fps (frames per second) del stream. Estos son el número de fotogramas por segundo enviados desde el smartphone al ordenador. El valor por defecto es 60, pero el valor efectivo suele ser más bajo (alrededor de 20), dependiendo del smartphone. Este cambio es persistente.

Parámetros:
fps (int): Nuevo límite superior de los fps del stream. Toma únicamente valores positivos.

Ejemplo de Uso

En este ejemplo, se varía el valor por defecto de 60 fotogramas por segundo a 30 haciendo uso del método setStreamFps.

from robobopy.Robobo import Robobo
rob = Robobo("localhost")
rob.connect()
rob.setStreamFps(30)


2. Método setCameraFPS

SetCameraFPS(fps)

Establece los fps (frames per second) de la cámara. Estos son el número de fotogramas por segundo leídos por la cámara del smartphone. El valor por defecto es 60, pero el valor efectivo suele ser más bajo (alrededor de 20), dependiendo del smartphone. Este cambio es persistente.

 

Parámetros:

fps (int): Nuevo límite superior de los fps del stream. Toma únicamente valores positivos.

Ejemplo de Uso

En este ejemplo, se varía el valor por defecto de 60 de los fotogramas por segundo de la cámara del smartphone a 20 haciendo uso del método setCameraFps.

from robobopy.Robobo import Robobo
rob = Robobo("localhost")
rob.connect()
rob.setCameraFps(20)

3. Método setFrontCamera()

setFrontCamera()

Hace que Robobo utilice la cámara frontal.

 Este cambio es persistente.

Este método no está implementado en el simulador.

Ejemplo de Uso

En este ejemplo, se mueve el motor TILT para situar el smartphone de la base de forma perpendicular al suelo y se establece la cámara frontal como la cámara a utilizar.

from robobopy.Robobo import Robobo

rob = Robobo("192.168.10.1") #La IP depende del caso concreto
rob.connect()

rob.moveTiltTo(90, 20)
rob.setFrontCamera()

4. Método setBackCamera

setBackCamera()

Hace que Robobo utilice la cámara trasera.

 Este cambio es persistente.

Este método no está implementado en el simulador.

Ejemplo de Uso

En este ejemplo, se mueve el motor TILT para situar el smartphone de la base de forma perpendicular al suelo. A continuación, el Robobo se mueve durante 3 segundos, varía los fps de la cámara a 20 y establece la cámara trasera como la cámara a utilizar.

from robobopy.Robobo import Robobo

rob = Robobo("192.168.10.1") #La IP depende del caso concreto
rob.connect()

rob.moveTiltTo(90, 20)
rob.setBackCamera()

5. Método startCamera

startCamera()

Habilita la cámara.

 La cámara está deshabilitada por defecto en el robot real y habilitada por defecto en el simulador.

Este cambio es persistente.

Este método no está implementado en el simulador.

Advertencia: Algunos módulos dependen de la cámara, por lo que es necesario habilitarla para hacer uso de ellos.

Ejemplo de Uso

En el siguiente programa se habilita la cámara. Esto permitiría hacer uso del streaming.

from robobopy_videostream.RoboboVideo import RoboboVideo
from robobopy.Robobo import Robobo

videoStream = RoboboVideo("192.168.1.58")
rob = Robobo("192.168.1.58")

rob.connect()
rob.startCamera()

6. Método stopCamera

stopCamera()

Deshabilita la cámara.

La cámara está deshabilitada por defecto en el robot real y habilitada por defecto en el simulador.

Este cambio es persistente.

Este método no está implementado en el simulador.

Advertencia: Algunos módulos dependen de la cámara, por lo que es necesario habilitarla para hacer uso de ellos.

Ejemplo de Uso

En el siguiente programa se deshabilita la cámara. Esto impediría hacer uso del streaming.

from robobopy_videostream.RoboboVideo import RoboboVideo
from robobopy.Robobo import Robobo

videoStream = RoboboVideo("192.168.1.58")
rob = Robobo("192.168.1.58")

rob.connect()
rob.stopCamera()

7. Método startStream

startStream()

Inicia el streaming de la cámara.

 El streaming de la cámara está parado por defecto.

Este cambio es persistente.

Advertencia: Para usar correctamente esta función, es necesario descargar la librería de stream de vídeo, como se explica en la introducción de este apartado.

Ejemplo de Uso

En este ejemplo, se activa la cámara haciendo uso de las librerías OpenCV y se muestra lo que el robot está viendo en tiempo real. Para parar el streaming basta con pulsar la tecla ‘q’ en cualquier momento.

from robobopy_videostream.RoboboVideo import RoboboVideo
from robobopy.Robobo import Robobo
import cv2

videoStream = RoboboVideo("localhost")
rob = Robobo("localhost")
rob.connect()
rob.startStream()

def main():
    print("Starting test app")

    videoStream.connect()
    print("Showing images")
    stop = False
    while not stop:
        frame = videoStream.getImage()
        cv2.imshow('Robobo camera', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
            videoStream.disconnect()
            cv2.destroyAllWindows()
            stop = True
if __name__ == '__main__':
    main()

8. Método stopStream

stopStream()

Detiene el streaming de la cámara.

 El streaming de la cámara está parado por defecto.

Este cambio es persistente.

Ejemplo de Uso

En este ejemplo, partiendo del ejemplo anterior, se desactiva el streaming de la cámara.

from robobopy.Robobo import Robobo

rob = Robobo("localhost")
rob.connect()

rob.stopStream()
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.