Lectura de valores de la cámara

Hola, para ver qué lee la cámara, he puesto
while True:
print robot.dameObjeto()
pero pasados unos segundos los valores se quedan fijos aunque se mueva la pelota, otras veces captura un valor inicial y se queda fijo con él.
¿es problema del simulador? o este no es el código correcto.
Gracias

Hola, creo que mi error está en que pensaba que lo que veía era la cámara del robot, pero es una vista del mundo y al salir la pelota de cámara mantiene el último dato tomado, ¿cómo se hace para poner una vista de lo que ve la cámara del robot como en la animación que hay en el ejercicio?. ¿El área de la cámara es el de la imagen del ejercicio 640x480 px?
Saludos

El método “dameObjeto” devuelve el centro y el área del objeto. Si quieres ver la imagen que capta la cámara del robot, puedes hacer uso del método “dameImagen”, el cual no recibe parámetros. Este método devuelve la imagen de la cámara pero no la imprime por pantalla. Deberás hacer uso de opencv para ello. Te muestro un ejemplo a continuacion:

import cv2
import time
try:
    while(True):
        print(robot.dameObjeto())
        imagen = dameImagen()
        cv2.imshow("Imagen", imagen)
        time.sleep(0.05)

except KeyboardInterrupt:
    pass

Prueba de nuevo con estas cosas y cualquier duda nos la comentas. Muchas gracias por tu realimentación. Un saludo y felices fiestas.

Gracias, lo estoy probando, pero el código propuesto no crea una ventana con la vista, lo he modificado como sigue y tampoco, he probado también a imprimir “print imagen” para ver si tiene datos e imprime una lista de valores. Para trabajar con los alumnos sería mucho más simple que desde la ventana de gazebo nos dejase mostrar una ventana con la vista de la cámara. Saludos.
import cv2
import time
try:
while(True):
cv2.startWindowThread()
cv2.namedWindow(“Imagen”)
print(robot.dameObjeto())
imagen = robot.dameImagen()
cv2.imshow(“Imagen”, imagen)
time.sleep(0.05)

except KeyboardInterrupt:
pass

  • También me ocurre que si está fuera de la cámara (o eso me parece desde la vista del mundo) la bola se mueve pero la posición tiene un valor constante, pero el tamaño fluctúa

Saludos

Buenos días,

ante todo gracias por la retroalimentación! en la versión actual de la plataforma no es posible mostrar imágenes en tiempo real de lo que ve la cámara del robot, lo tenemos casi a punto para la siguiente iteración ya que resulta muy útil (como bien apuntas) para depurar código y explicar a los alumnos qué está pasando. Hay una vía para mostrar imágenes en jupyter, pero en nuestro caso no es posible hacerlo ya que falta la instalación de un paquete y de poder hacerse no se podría ver la imagen en tiempo real. La solución que propone Fernando es buena para trabajar en local, pero no funciona con jupyter ya que este no dispone de un GUI como tal para levantar nuevas ventanas.
Sobre lo segundo que comentas, no debería pasar… Al salir la pelota del plano debería aparecer ‘None None’ en la consola. ¿Es posible que no lo estés viendo porque se sature la salida de la consola?

Un saludo.

Buenos días, no satura, los datos siguen creciendo y con el scroll de la consola reviso el último y aparece siempre un valor aunque la pelota esté a la espalda del robot, sin embargo el tamaño si varía un poco.
Otra cuestión ¿El área de la cámara es el de la imagen de la teoría 640x480 px?

Hola,
A mí me ocurre lo mismo. Lo que no entiendo es que datos devuelve la función robot.dameObjeto(). Cuando imprimo los datos dentro del while True
print (“x”, x)
print (“y”, y)
print (“radio”, radio)
time.sleep(1)
me devuelve unos datos que no tienen nada que ver con la posición de la pelota respecto de la cámara. De hecho, aunque la pelota queda fuera de la visión de la cámara sigue imprimiendo datos continuamente.
¿cual es el problema?
gracias,
Lorea

Buenas,

hemos estado haciendo pruebas y sí, parece que hay alguna inconsistencia entre las versiones de las imágenes de docker de la plataforma. Ya está solucionado, podéis probar ahora vuestros algoritmos.

El tamaño de imagen es de 300x400px. (300 alto x 400 ancho).

Perdonad las molestias.

Hola,
ahora sí funciona mejor. Pero cuando la pelota está fuera de la cámara el código da error. ¿Cómo posedos indicar al programa que el valor pelota=robot.dameObjeto() es nulo o que es un valor vacio?

Hola, el conjunto creo que no es nulo, yo pregunto por las componentes p.e. xy[0]==Nulo, y funciona.

Gracias!!!:grinning: funciona con if xy==None: Un saludo,
Lorea

Hola, ahora siempre me devuelve None, ¿Hay algún problema en el simulador?.
Gracias

Hola Juan Pablo.

¿Te refieres al método robot.dameObjeto()? Estoy haciendo pruebas y no me da error de lectura. El ejercicio importa las librerías y ejecuta el código. ¿Ha sido en el día de ayer únicamente?.

Gracias y un saludo,
Nacho.

Hola, gracias, hoy ya si funciona, pero aunque tenía el código guardado (he entrado y salido de él varios días y podía modificarlo y guardaba los cambios) hoy al entrar en la práctica el código había desaparecido. Esto me ha pasado en alguna ocasion más con las otras prácticas también, lo digo por si es un problema de la plataforma, si les pasa a los alumnos entre sesiones va a ser un problema.

Estupendo.

Con respecto al guardado de las prácticas, no, no debería pasar. Lo revisamos para ver por qué está ocurriendo.

Gracias por el reporte :slight_smile:

Un saludo,
Nacho.

Hola, me ha vuelto a pasar, otra vez sólo devuelve None la función robot.dameObjeto(), y ha vuelto a desaparecer la práctica que tenía guardada. y en la que había dado en repetidas ocasiones a guardar. ¿Puede ser que caduque la sesión?, aunque he entrado y trabajado de forma continuada un rato…

Hola de nuevo Juan Pablo.

Estamos explorando la solución. Ahora mismo parece que hay algún fallo de red con la universidad que no permite almacenar los ejercicios correctamente. En cuanto esté solventado te lo haremos saber.

Perdona las molestias. Pasa buena nochevieja.

Un saludo,
Nacho.

Hola, me pasa también que la cámara al girar el robot, de forma continua, se va girando sola y pasados unos minutos es muy apreciable.

Hola de nuevo Juan Pablo.

Hemos solucionado el error que ocurría con los guardados de los cuadernillos. Cuando puedas, ¿nos confirmas si el cuadernillo tiene la última versión que dejaste almacenada?.

También confirmanos si con esto solucionado sigue apareciendo el error de robot.dameObjeto() para descartar que tengan relación entre el cuadernillo y el driver.

Por último, ya están los compañeros echando un ojo al modelo del PiBot para ver si existe algún descuadre que haga que la cámara vaya independiente del chasis del robot.

No te cortes en dejar por aquí los problemas y soluciones que vayas viendo (como hasta ahora :wink: ). Nos ayuda a conocer el estado de los usuarios al usar la plataforma.

Gracias y un saludo,
Nacho.