Progreso septiembre 2024 - RoboticsURJC/tfg-dcampoamor GitHub Wiki
SEMANA 61 (09/09/2024-15/09/2024)
- Elaboración del Capítulo 2: Estado del arte de la memoria
- Aplicación de correcciones del Capítulo 1: Introducción de la memoria
- Primeras pruebas de comunicación y uso de pinhole.py con robot real
SEMANA 62 (16/09/2024-22/09/2024)
- Pruebas de comunicación y uso de pinhole.py con robot real
- Elaboración del Capítulo 2: Estado del arte de la memoria
SEMANA 63 (23/09/2024-29/09/2024)
- Corrección ortográfica de los capítulos
- Elaboración del Capítulo 3: Objetivos de la memoria
- Pruebas de comunicación y uso de pinhole.py con robot real
SEMANA 64 (30/09/2024-06/10/2024)
- Pruebas de comunicación y uso de pinhole.py con robot real
- Elaboración del Capítulo 3: Objetivos de la memoria
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.
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.
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 .
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.
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
-
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, comoint
yfloat
.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ónget_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íneaglobal detected_points
estuviera dentro de la funciónget_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 listadetected_points
tuviera elementostuples
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. - Iniciar la captura de la cámara en
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.