hace 6 años
El Robot State Publisher es un paquete fundamental en ROS (Robot Operating System) que permite publicar el estado de un robot en el sistema de transformaciones tfEste artículo explora en detalle su funcionalidad, configuración y uso, incluyendo ejemplos prácticos y soluciones a problemas comunes.

¿Qué es el Robot State Publisher ?
El Robot State Publisher es un nodo ROS que toma como entrada un modelo cinemático del robot en formato URDF (Universal Robot Description Format) y las actualizaciones de estado de las articulaciones desde el tópico joint_states(tipo sensor_msgs/msg/JointState). Procesa esta información para calcular las poses 3D de cada parte del robot y las publica en tfEsto permite a otros nodos ROS, como RViz (visualizador 3D), acceder a la información de posición y orientación de cada parte del robot en tiempo real.
Tipos de Articulaciones
El Robot State Publisher distingue entre dos tipos de articulaciones:
- Articulaciones fijas (tipo "fixed"): Se publican una sola vez al inicio en el tópico
/tf_static. Estos tópicos mantienen un historial de sus publicaciones, permitiendo a suscriptores posteriores obtener el estado más reciente. - Articulaciones móviles : Se publican en el tópico
/tfcada vez que se actualiza el estado de la articulación correspondiente en el mensajejoint_states.
Tópicos Publicados
robot_description(std_msgs/msg/String): República el valor del parámetrorobot_description, útil para detectar cambios dinámicos en el URDF. Utiliza calidad de servicio "transient local"./tf(tf2_msgs/msg/TFMessage): Transformaciones correspondientes a las articulaciones móviles del robot./tf_static(tf2_msgs/msg/TFMessage): Transformaciones correspondientes a las articulaciones fijas del robot.
Tópicos Suscritos
joint_states(sensor_msgs/msg/JointState): Actualizaciones del estado de las articulaciones, utilizadas para calcular y publicar las transformaciones en tf
Parámetros
El parámetro más importante es robot_description, que contiene la descripción URDF del robot. Otros parámetros pueden ser configurados para controlar aspectos específicos del funcionamiento.
Cómo Lanzar el Robot State Publisher
A continuación, se describe un tutorial paso a paso para simular un robot caminante, publicar su estado en tf2 y visualizarlo en RViz:
Paso 1: Crear un Paquete ROS2
Se crea un nuevo paquete ROS2 usando la herramienta ros2 pkg create. Este paquete contendrá el modelo URDF del robot y el código para publicar el estado.
Paso 2: Crear el Modelo URDF
Se crea un archivo URDF ( r2durdf.xml) que describe la estructura y las articulaciones del robot.

Paso 3: Publicar el Estado
Se crea un nodo Python ( state_publisher.py) que simula el movimiento del robot y publica los datos de JointStatey las transformaciones. Este nodo utiliza las librerías rclpy, geometry_msgs, sensor_msgsy tf2_ros.
Paso 4: Crear un Archivo de Lanzamiento
Se crea un archivo de lanzamiento ( demo.launch.py) que utiliza launchy launch_rospara iniciar el Robot State Publishery el nodo state_publisher. Este archivo carga el modelo URDF y configura los parámetros necesarios.
Paso 5: Editar el archivo setup.py
Se actualiza el archivo setup.pypara incluir la información necesaria para que colconpueda instalar el paquete correctamente.
¿Qué hace el Joint State Publisher ?
El Joint State Publisher es un paquete ROS que publica el estado de las articulaciones de un robot. Encuentra las articulaciones móviles en el modelo URDF y publica sus valores en el formato sensor_msgs/JointState. Se utiliza comúnmente junto con el Robot State Publisher para proporcionar la información necesaria para la visualización y el control del robot.
Cómo Lanzar un Archivo URDF en ROS2
Para visualizar un modelo URDF en RViz2, se siguen estos pasos:

Paso 1: Verificar las Versiones de Linux y ROS2
Se verifica que se tenga instalado Ubuntu 204 y ROS2 Iron Irwini o versiones compatibles.
Paso 2: Instalar los Paquetes Necesarios
Se instalan los paquetes ros- , ros- y ros- .
Paso 3: Crear el Espacio de Trabajo y el Paquete
Se crea un espacio de trabajo ROS2 y un nuevo paquete usando ros2 pkg create.
Paso 4: Crear los Archivos URDF y de Lanzamiento
Se crea el archivo URDF ( model.urdf) que define la geometría del robot y el archivo de lanzamiento ( display.launch.py) para ejecutar el Robot State Publisher, Joint State Publisher, Joint State Publisher GUIy RViz
Paso 5: Compilación y Ejecución
Se compila el espacio de trabajo y se ejecuta el archivo de lanzamiento para visualizar el modelo URDF en RVizSe debe configurar el marco fijo ("Fixed Frame") en RViz2 al nombre del enlace base definido en el archivo URDF.
Tabla Comparativa: Robot State Publisher vs Joint State Publisher
| Característica | Robot State Publisher | Joint State Publisher |
|---|---|---|
| Función Principal | Publica el estado completo del robot en tf2 | Publica el estado de las articulaciones |
| Entrada | Modelo URDF y joint_states | Modelo URDF |
| Salida | Transformaciones en /tf y /tf_static | joint_states |
| Dependencias | tf2_ros , urdf | urdf |
El Robot State Publisher y el Joint State Publisher son herramientas esenciales en ROS para la gestión y visualización del estado de un robot. Su correcta configuración y uso son cruciales para el desarrollo de aplicaciones robóticas robustas y eficientes.
