Robot state publisher para ros

hace 6 años

Valoración: 4.45 (1216 votos)

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.

Índice

¿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 /tf cada vez que se actualiza el estado de la articulación correspondiente en el mensaje joint_states .

Tópicos Publicados

  • robot_description ( std_msgs/msg/String ): República el valor del parámetro robot_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.

robot state publisher - What does Joint State Publisher do

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:

robot state publisher - How to launch URDF file in ROS2

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- -joint-state-publisher , ros- -joint-state-publisher-gui y ros- -xacro .

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.

Subir