Progreso septiembre 2024 - RoboticsURJC/tfg-dcampoamor GitHub Wiki

Progreso septiembre 2024

SEMANA 61 (09/09/2024-15/09/2024)

SEMANA 62 (16/09/2024-22/09/2024)

SEMANA 63 (23/09/2024-29/09/2024)

SEMANA 64 (30/09/2024-06/10/2024)

SEMANA 61 (09/09/2024-15/09/2024)

  • Elaboración del Capítulo 2: Estado del arte de la memoria

    De manera paralela a la consecución de pruebas, se empezó a escribir el Capítulo 2: Estado del arte de la memoria del trabajo para añadir al Capítulo 1: Introducción información más concreta de estudios y artículos relacionados con el tema principal del trabajo.

  • Aplicación de correcciones del Capítulo 1: Introducción de la memoria

    Tras las correcciones indicadas para este capítulo, se modificó siguiendo las directrices pertinentes.

  • Primeras pruebas de comunicación y uso de pinhole.py con robot real

    Se llevaron a cabo pruebas con el programa pinhole.py y un robot real en modo simulación, de tal manera que, siguiendo utilizando el programa en python que detecta puntos de color verde, se ejecutó de manera paralela el programa xmlrpc_server.py en el terminal del ordenador, mientras que en el propio robot se ejecutaba el programa de robot xmlrpc_example.urp, habiendo sido modificados estos programas y no siendo los originales con los que se llevaba a cabo el ejemplo inicial recogido en el apartado Pruebas de comunicación con robot mediante el método de llamada de procedimiento remoto XML-RPC del Progreso junio 2024.

    Después de seguir los distintos pasos pertinentes para poder comunicar el ordenador con el robot, se puedo observar que, a pesar de estar detectando puntos con el programa pinhole.py y de reflejarse en la terminal como tal, el robot no recibía estos puntos a pesar de existir la comunicación.

    Deteccion ptos pinhole No pos

    Debido a esto, se intentó verificar que la conexión era buena realizando ping desde el ordenador al robot, obteniendo respuesta, por lo que se descartó un problema de conectividad.

    ping UR

    Tras comprobar esto, se realizaron algunos cambios en los distontos programas y se volvió a probar, obteniendo que el robot únicamente se movía a la posición Home o Casa porque así estaba definido en el programa de robot. En el vídeo Primeras pruebas con pinhole y robot real.mp4 se puede observar como ejecutando el programa en el robot real en modo simulación por seguridad, se mueve a un punto representado con una esfera verde en los gráficos que correspondería a esta posición de Casa .

    Primera prueba con robot real

SEMANA 62 (16/09/2024-22/09/2024)

  • Pruebas de comunicación y uso de pinhole.py con robot real

    Debido a la imposibilidad de enviar correctamente las posiciones detectadas al robot, se siguió con esas pruebas. Esta vez se obtuvieron mensajes de error desde el robot.

    Error XMLRPC

    Este mensaje de error indica un fallo en la comunicación mediante XML-RPC, ya que el sistema no pudo transportar XML al servidor y obtener una respuesta, por lo que podría tratarse a varias razones: la conexión de red, el estado del servidor, puertos bloqueados y/o la aplicación del servidor.

    Dado que la semana anterior no se había tenido problemas con el puerto 50000, que estaba abierto y no estaba siendo bloqueado por un firewall o por configuraciones de seguridad, se comprobó que la dirección IP no era la correcta.

    Pese a cambiar la dirección IP del ordenador en el programa de robot y configurarla correctamente, no se consiguió que los puntos detectados por pinhole.py se enviaran correctamente al robot y este se moviera.

  • Elaboración del Capítulo 2: Estado del arte de la memoria

    Se terminó de escribir el Capítulo 2: Estado del arte de la memoria del trabajo para añadir al Capítulo 1: Introducción información más concreta de estudios y artículos relacionados con el tema principal del trabajo.

SEMANA 63 (22/09/2024-29/09/2024)

  • Corrección ortográfica de los capítulos

    Se utilizó el comando aspell para pasar el corrector ortográfico por el archivo LaTeX del Capítulo 1: Introducción, y se repitió el mismo procedimiento para pasarlo por el Capítulo 2: Estado del arte.

    aspell --mode=tex -c capitulo1.tex --language=es
    

    aspell correccion capitulo1

  • Elaboración del Capítulo 3: Objetivos de la memoria

    De manera paralela a la consecución de pruebas, se empezó a escribir el Capítulo 3: Objetivos de la memoria.

  • Pruebas de comunicación y uso de pinhole.py con robot real

    Prosiguiendo con las pruebas con robot real, se introducieron algunos cambios en el ahora único programa xmlr_server_primeraspruebas_robotreal.py (que se siguió llamando xmlrpc_server.py por la estructura de programación), y que combinaba los programas pinhole.py y xmlrpc_server.py en un solo script, siguiendo los principales pasos:

    • Iniciar la captura de la cámara en pinhole_openGL.
    • Se usará la función get_next_pose del xmlrpc_server.py para enviar los puntos detectados a través del servidor XML-RPC.

    De esta manera se reducían las posibilidades de tener problemas en el envío de puntos desde un programa en python a otro por separado. Tras llevar a cabo esta combinación e intentar volver a ejecutar la aplicación, se obtuvieron mensajes de errores como los siguientes:

    Este error se debía finalmente a que el servidor XML-RPC estaba intentando enviar un objeto de tipo numpy.float64, que no es compatible de forma directa con el protocolo XML-RPC. El protocolo solo admite tipos de datos nativos de Python, como int y float.

    Para solucionar este problema, se convirtió explícitamente los valores de numpy.float64 a tipos de datos nativos de Python (float) antes de enviarlos al servidor XML-RPC, y se ajustó el código en la función get_next_pose para asegurar la conversión adecuada.

    Estas modificaciones para solventar el error expuesto, conducieron a otros errores como el IndentationError: expected an indented block, que indicaba un problema con la indentación del código, por lo que se revisó que la línea global detected_points estuviera dentro de la función get_next_pose.

    Después de solucionar esto, se volvió a intentar ejecutar el programa, pero se seguían obteniendo mensajes de error distintos. Esta vez se trataba del siguiente:

    Este mensaje de error indicaba que se estaba intentando acceder a un índice de una lista (en este caso, detected_points) que no existe, porque la lista tiene menos elementos de los que se está intentando acceder. Para arreglar esto se revisó que la lista detected_points tuviera elementos tuples con al menos dos valores antes de intentar acceder a ellos, ya que la función debe manejar estos casos y evitar que el programa falle.

SEMANA 64 (30/09/2024-06/10/2024)

  • Pruebas de comunicación y uso de pinhole.py con robot real

    Para intentar solucionar el problema del Índice fuera de intervalo, el tamaño de la lista es inferior a 2 se llevaron a cabo algunas modificaciones en el programa de python, sin embargo, al volver a ejecutar el programa de python en la terminal y el mismo programa de robot en el robot, se obtuvo un nuevo mensaje de error.

    Este error que mostraba la interfaz del robot indicaba que el programa está esperando una lista de 6 elementos, probablemente representando una posición completa en 3D (coordenadas X, Y, Z) y una orientación (Rx, Ry, Rz), que es el formato típico para definir una pose completa en el espacio tridimensional del robot, sin embargo, el servidor XML-RPC parece estaba enviando solo dos valores (X, Y) (que en principio son los unicos valores que se obtienen de la detección de puntos verdes), estando esperando el robot una pose completa de 6 elementos (X, Y, Z, Rx, Ry, Rz) para mover el brazo, por lo que se incluyeron estas variables en xmlr_server_primeraspruebas_robotreal.py.

    Después de añadir las variables al programa en python y volver a ejecutar la aplicación, se obtuvieron los siguientes resultados:

    El programa enviaba a las coordenadas del punto detectado al robot, y al cambiar el punto de posición, tras haber alcanzado el punto previo, el robot se movía a otro punto nuevo distinto.

    Esto ocurría de manera contínua, ya que el programa de robot estaba configurado para ejecutarse en bucle, por lo que, cuando no se detectaba ningún punto, tal y como programado, se mostraba por terminal, y el robot se movía a la posición determinada como Home o Casa.

    Todo esto puede observarse en el vídeo Pruebas funcionales pinhole y robot real un punto.mp4.

  • Elaboración del Capítulo 3: Objetivos de la memoria

    De manera paralela a la consecución de pruebas, se continuó escribiendo el Capítulo 3: Objetivos de la memoria reuniendo la información de las guías docentes del grado para definir las competencias empleadas durante la consecución del trabajo.