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.

ROS: Publicar tema sin anclaje de 3 segundos.

Como premisa, debo decir que soy muy inexperto en ROS.

Estoy tratando de publicar varios mensajes de ROS pero por cada publicación que hago, recibo el mensaje “publicando y reteniendo mensaje durante 3.0 segundos”, lo cual parece estar bloqueando durante 3 segundos.

Aquí les dejo un ejemplo de cómo estoy publicando un solo mensaje:

rostopic pub -1 /heifu0/mavros/adsb/send mavros_msgs/ADSBVehicle “header: // y el resto del mensaje”

También he intentado usar el siguiente argumento: -r 10, el cual establece la frecuencia del mensaje en 10Hz (lo cual hace efectivamente), pero solamente para el primer mensaje. Es decir, sigue reenviando el primer mensaje 10 veces por segundo.

Básicamente, quiero publicar un mensaje sin retenerlo, si es posible, para que pueda publicar múltiples mensajes por segundo. Tengo un flujo constante de mensajes que llegan y necesito publicarlos todos tan rápido como pueda.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en ROS, el problema que enfrenta en relación con la publicación de múltiples mensajes ROS se puede resolver deshabilitando la función de enclavamiento de mensajes.

    Por defecto, los editores de mensajes ROS enclavan sus mensajes durante 3 segundos, lo que significa que cualquier subscriptor que se conecte al tema recibirá inmediatamente el último mensaje publicado. Para desactivar el enclavamiento, puede pasar la opción --noLatch al publicar el mensaje mediante el comando rostopic:

    rostopic pub --noLatch /heifu0/mavros/adsb/send mavros_msgs/ADSBVehicle "header: // then the rest of the message"
    

    Al desactivar el enclavamiento, puede publicar múltiples mensajes por segundo sin ningún retraso. Además, para publicar mensajes a una frecuencia específica, puede utilizar la opción -r junto con el comando rostopic.

    Por ejemplo, para publicar mensajes a 10Hz, puede utilizar el siguiente comando:

    rostopic pub -r 10 --noLatch /heifu0/mavros/adsb/send mavros_msgs/ADSBVehicle "header: // then the rest of the message"
    

    Esto publicará un nuevo mensaje cada 100ms (es decir, 10 veces por segundo) sin ningún retraso ni enclavamiento.

    Esperamos que esto le ayude a resolver su problema de publicación de mensajes ROS.

Comments are closed.