Progreso abril 2024 - RoboticsURJC/tfg-dcampoamor GitHub Wiki

Portada abril 2024

SEMANA 44 (01/04/2024-07/04/2024)

SEMANA 45 (08/04/2024-14/04/2024)

SEMANA 46 (15/04/2024-21/04/2024)

SEMANA 47 (29/04/2024-05/05/2024)

SEMANA 44 (01/04/2024-07/04/2024)

  • Comprobación de los programas para calcular las coordenadas del mundo real a partir de coordenadas de imagen utilizando una única cámara calibrada basada en geometría analítica mediante un visualizador de puntos en vídeo

    Para poder corroborar que los resultados con los puntos ficticios son válidos y aceptables, se programó el script CamaraPuntosVisualizador.py en el que se utiliza la biblioteca OpenCV en Python para interactuar con la cámara USB conectada al ordenador. Este programa captura el vídeo en tiempo real de la cámara y muestra los puntos ficticios representados en el vídeo como círculos verdes con sus coordenadas correspondientes en texto.

    CamaraPuntosVisualizador Prueba Sin Camara

    Una vez teniendo este script, sabiendo los vectores de rotación y traslación de la cámara, habrá que editarlos en el programa get3Dpoint.py, para poder con esos puntos ficticios ver qué resultados dan. Tras conocer los resultados de las coordenadas en el mundo real, ejecutaremos el programa CamaraPuntosVisualizador.py en la cámara para ver donde se lleva a cabo la intersección del punto que se muestra por pantalla con los objetos del mundo real que se pueden ver a través de la cámara, se medirán las distancias reales a estos puntos que muestra el programa, y se compararán ambos resultados.

SEMANA 45 (08/04/2024-14/04/2024)

  • Comprobación de los programas para calcular las coordenadas del mundo real a partir de coordenadas de imagen utilizando una única cámara calibrada basada en geometría analítica mediante un visualizador de puntos en vídeo

    Ejecutando el programa CamaraPuntosVisualizador.py con la cámara web activa y enfocada sobre una mesa con una rotación en el eje y de 41º, se observa la proyección de estos puntos sobre dicha mesa que hará de plano suelo.

    Puntos ejemplo sobre mesa (plano suelo)

    Conociendo y viendo estos puntos, y sabiendo que la altura a la que se encuentra la cámara es de 39 cm, se procede a medir las distancias de estos puntos desde la perpendicular de la cámara a la mesa, considerando este punto como origen, y siendo el eje x el eje longitudinal de la mesa, y el eje y el eje transversal de la misma.

    Una vez medido, se ejecuta el programa get3Dpoint.py para poder comparar posteriormente los resultados.

    Resultados completos

    Todo esto se traslada a una tabla para poder comparar los resultados obtenidos: Comparacion

    Dados los resultados, se observa que para las coordenadas mundo, se obtienen valores negativos en el eje x para todos los puntos, por lo que en el código del programa get3Dpoint.py se modifica el apartado en el que se calcula la matriz de rotación a partir del vector de rotación, introduciendo los valores calculados de manera directa para esta matriz.

    Resultados get3Dpoint.py con rotation_matrix introducida manualmente.

    Al llevar a cabo esto, se puede observar respecto a los resultados anteriores que en cuanto a los resultados varía poco, sin embargo, en esta ocasión sí que se consiguen valores positivos para las coordenadas en el eje x.

    Comparacion resultados

    Esto es debido al signo con el cual se introduce el ángulo de rotación de la cámara a la hora de calcular el vector de rotación y la matriz de rotación R.

SEMANA 46 (15/04/2024-21/04/2024)

  • Cambios en los ejes según la figura de referencia del documento seguido

    Dado que los resultados seguían estando alejados de las medidas reales de las distancias, se revisó el documento Real World Coordinate from Image Coordinate Using Single Calibrated Camera, donde se tomó la figura de la geometría del modelo de cámara basado en el modelo de cámara estenopeica como referencia, para poder revisar si se habían supuesto bien los ejes sobre los que se produce la rotación de la cámara y los ejes en los que se tomaron las medidas.

    Geometría del modelo de cámara basado en el modelo de cámara estenopeica

    Comparando esto con cómo se habían supuesto los ejes desde un inicio, se puede observar que no coinciden, por lo que es posible que debido a esto encontremos diferencias entre los resultados esperados y obtenidos.

    Geometría del modelo de Camara basado en el modelo de Camara estenopeica supuesta

    Siguiendo los ejes de coordenadas del modelo de cámara estenopeica como referencia, las distancias medidas sobre la mesa de las proyecciones de los puntos de ejemplo quedarían de la siguiente manera:

    Coordenadas Reales Rotacion Eje X Coord Mundo.

    De igual manera, se contrastó la matriz de rotación sobre el eje x utilizada para los cálculos, encontrando en otras fuentas que en una de las posiciones de la matriz variaba un signo, dando lugar a los siguientes resultados para las dos variantes de la matriz de rotación.

    Matriz rotacion 1 Resultados Matriz Rotacion 1 Eje X

    Matriz de rotacion 2 Resultados Matriz Rotacion 2 Eje X

    Este hecho no influía en los resultados numéricos en cuanto a valores, coincidiendo los resultados de la primera matriz, en la que se utilizaba el ángulo como positivo para el cálculo del seno de este ángulo, con los resultados de la segunda matriz en la que el valor del ángulo del seno se utilizaba como negativo y viceversa. Esto es debido a las siguientes igualdades, que justamente son los cambios que podemos observar entre las dos matrices.

    Comparacion signos

SEMANA 47 (29/04/2024-05/05/2024)

  • Pruebas con otro script para calcular las coordenadas del mundo real a partir de coordenadas de imagen utilizando una única cámara calibrada basada en geometría analítica mediante un visualizador de puntos en vídeo

    Dados los resultados, y viendo que a pesar de las pruebas realizadas, no se conseguía sacar nada en claro, y que los resultados experimentales obtenidos aún distaban bastante de los reales, se decidió seguir los pasos del repositorio de Julia López, que basaba sus pruebas en el script pinhole.py.

    Se ajustaron los parámetros necesarios para el uso del script con nuestro caso, entre los cuales se encontraban las variables globales, como el ancho y largo de la imagen, o la distancia focal y centro óptico de la cámara, junto con el ángulo que se encuentra rotado para el cálculo de la matriz de rotación y la altura de la cámara sobre la mesa para el cálculo de la matriz de traslación.

    Variables globales pinhole Valores de matrices a modificar pinhole

    También se cambió el rango de detección, para que, al ejecutar el script, se detectase el color amarillo del post-it sobre la cartulina blanca situada encima de la mesa, y que de este modo facilitase la detección.

    Deteccion amarillo

    Se supuso el origen del sistema de coordenadas mundo en la proyección vertical de la cámara sobre la mesa, y a partir de este origen, se intentaron llevar a cabo distintas pruebas, variando tanto el signo del ángulo de rotación de la cámara como el signo de la distancia de la cámara a la mesa, con tal de averiguar la orientación de los ejes para este script, y ver si los resultados obtenidos se asemejaban a la realidad.

    Para empezar a tomar resultados, se utilizó una regla sobre la cual se iba variando la posición del post-it amarillo para ver la evolución de los datos obtenidos al respecto, y que se supuso que estaba situada sobre el eje X (dada la rotación de la cámara, se midió desde el origen de coordenadas hasta un punto en el que la regla empezaba a ser visible, de ahí los valores reales de las medidas)

    Pruebas pinhole unico eje

    Pruebas pinhole unico eje Z positiva Pruebas pinhole unico eje Z negativa

    Tras estas pruebas, también se fijo una posición en el que, en un principio, se había supuesto eje X del sistema de coordenadas mundo, para poder comprobar el eje restante.

    Pruebas pinhole ambos ejes Pruebas pinhole ambos ejes Z positiva Pruebas pinhole ambos ejes Z negativa

    Con estos resultados, se puede observar, que la distancia (altura) a la que se encuentre la cámara sobre el plano suelo, deberá introducirse en negativo junto con el ángulo de rotación sobre el eje Y de la cámara en positivo, para que los resultados cuadren y que cuanto más se aleje el post-it amarillo, la distancia sea mayor, ya que lo que no puede variar es el origen del sistema de coordenadas, que se supuso en la vertical de la posición de la cámara.