es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Bucle principal de ROS Python colgándose durante unos segundos.

Tengo un problema en ROS 1 Noetic y Python en Ubuntu 20 en Raspberry Pi. Estoy ejecutando algunos otros nodos y el nodo principal. En el nodo principal, a menudo ocurre que el código se cuelga al azar. Esto sucede en un “callback” que recibe información de otro nodo. Pero también sucede si solo ejecuto el bucle principal. Por simplicidad, adjunto una imagen de cómo ocurre esto en el bucle principal. La primera imagen muestra el código y la segunda imagen muestra la salida.

Imagen 1

Imagen 2

Como se puede ver en la segunda imagen, el bucle principal se cuelga al azar durante 2.5 segundos completos.

Si necesitas más información, estaré encantado de proporcionarla.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Posible solución para ROS1 Noetic y Python colgando en Ubuntu 20.04:

    El problema parece estar relacionado con una operación de bloqueo en la función de devolución de llamada o bucle principal del nodo. El problema puede mitigarse eliminando u optimizando el código de bloqueo.

    Algunas soluciones potenciales para probar son:

    • Revisar la función de devolución de llamada y otro código en el nodo principal en busca de llamadas de bloqueo, como tiempos de espera o esperas de respuestas. Reestructurar el código para utilizar llamadas no bloqueantes o programación asíncrona si es posible.
    • Aumentar la salida de registro y depuración para identificar qué parte del código está causando el bloqueo. Utilizar mensajes de registro de ROS y herramientas de depuración de Python como pdb o PyCharm.
    • Verificar el uso de CPU y memoria del Raspberry Pi durante el bloqueo para ver si está sobrecargado o se está quedando sin recursos. Considerar optimizar el código o agregar más recursos de hardware si es necesario.
    • Actualizar las dependencias y bibliotecas utilizadas por ROS1 y Python a las últimas versiones estables, ya que pueden contener correcciones de errores o mejoras de rendimiento que podrían ayudar a resolver el problema. Utilizar el gestor de paquetes de ROS y el gestor de paquetes de Python (pip) para la instalación y actualización.
    • Cambiar a ROS2 si es posible, ya que utiliza una arquitectura más moderna y eficiente que podría manejar mejor la carga de trabajo y reducir la probabilidad de bloqueos o fallos. Considerar los requisitos de migración y la compatibilidad con nodos y paquetes existentes.

Comments are closed.