Como crear publicador y suscriptor para turtlebot 3 – Spanish ROS Tutorial

This tutorial is created by Rosbotics Ambassador 025 Miguel

Rosbotics Ambassador Program https://www.theconstruct.ai/rosbotics-ambassador/)

Que vamos a aprender:

  1. Como crear un paquete en ROS 1
  2. Como escribir un publicador para el robot Turtlebot 3
  3. Como escribir un suscriptor en el mismo código

Lista de recursos usados en este post

  1. Usa este rosject: https://app.theconstructsim.com/l/5e643001/
  2. The construct: https://app.theconstructsim.com
  3. Cursos de ROS 1:
  1. Fundamentos de ROS en 5 días (Python): https://app.theconstructsim.com/courses/55
  2. Navegación ROS en 5 días: https://app.theconstructsim.com/courses/57

Descripción

Turtlebot 3 es uno de los robots compatibles con ros mas usados hoy en día en universidades y por personas del común para aprender el funcionamiento de ROS y el stack de Navegación. En este post, vamos a aprender como crear un nodo de ROS1, el cual nos va a permitir crear un teleop casero para entender como crear un suscriptor y publicador en el mismo código.

Abriendo el rosject

Para poder seguir al pie de la letra este tutorial, necesitamos tener ROS 1 Noetic instalado en nuestro sistema, e idealmente un workspace para crear los paquetes en él. Para facilitarnos el proceso, ya hemos preparado un rosject para esto: https://app.theconstructsim.com/l/5e643001/

Solo copiando el rosject (Abriendo el enlace anterior), tendremos un entorno previamente configurado.

Después de que el rosject se haya copiado correctamente en tu entorno, debemos presionar el botón Ejecuta para ejecutar e inicializar el entorno del rosject.

Crear un paquete de ROS 1 con geometry_msgs

Para poder crear nuestro paquete de ROS 1, necesitamos situarnos en el workspace, y para eso, necesitamos la terminal.

Abramos una terminal oprimiendo el botón de abrir una nueva terminal:

Una vez dentro de la terminal vamos a movernos al catkin/src y creamos nuestro paquete:
cd ~/catkin_ws/src
catkin_create_pkg turtlebot_publisher_subscriber geometry_msgs

Una vez creado nuestro paquete ingresamos a él y por convención creamos la carpeta scripts:
cd turtlebot_publisher_suscriber
mkdir scripts

Ahora vamos a abrir el editor de código para crear nuestro nodo. Para abrir el editor de código oprimimos el botón de editor de código:

 

Nos situamos en catkin_es/src/turtlebot_publisher_susbriber/scripts y oprimimos clic derecho New File y le damos el nombre de turtlebot.py para crear nuestro código


Primero vamos a importar las librerías, inicializar nuestro nodo, y crear el listener con su respectivo callback:

Para entenderlo mejor vamos a desglosar el código:

El primer rectángulo nos permite observar que estamos usando el entorno de Python 3, e importamos la librería de rospy para crear los nodos y geometry_msgs.msg Twist que es el tipo de dato Twist ya que este es el que usa /cmd_vel para comunicarse.

En el segundo rectángulo estamos creando un mensaje de tipo Twist, creamos la función listener la cual se suscribe de manera anónima a al tópico cmd_vel que usa como tipo de dato Twist, y por último cuando recibe un mensaje hace un llamado al callback que usando un loginfo imprime en pantalla el contenido del mensaje, este mensaje es la velocidad angular y lineal del turtlebot 3.

Por último en el tercer rectángulo inicializamos el nodo llamado publisher_suscriber e informamos por terminal que el nodo se inicializó correctamente.

Ahora vamos a crear el nodo publicador:

Como podemos observar creamos la función talker que recibe un mensaje como parámetro, ahora nos suscribimos al tópico /cmd_vel y publicamos el mensaje

Ahora vamos a crear una función que use el teclado para mover al turtlebot:

 

Lo que hace la función keyInput, esta nos pide ingresar una tecla, si se oprime w cambiamos el valor lineal de x para mover el robot hacia adelante, si se oprime s cambia el valor lineal a negativo para moverse hacia atrás, si se oprime a cambia el valor angular de z para girar hacia la izquierda y d gira hacia la derecha. 

Por último, vamos a hacer llamados continuos a estas funciones añadiendo un ciclo while al código inicial:

 

Acá lo que hacemos es crear un ciclo while para que esté constantemente solicitando una tecla, imprimiendo la velocidad del turtlebot 3, y cambiando la velocidad del turtlebot.

Para probar el código vamos a movernos a nuestro workspace, y compilamos el entorno:
cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash

Y si no tuvimos ningún error podemos correr el código y revisar si funciona

 

Video Tutorial

 

 

 

 

Topics: python | ros1
Masterclass 2023 batch2 blog banner

Check Out These Related Posts

0 Comments

Submit a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Pin It on Pinterest

Share This