Estás leyendo la documentación para una versión de desarrollo. Para la última versión publicada, por favor revisa Humble.
Utilizar turtlesim
, ros2
y rqt
Objetivo: Instalar y utilizar el paquete turtlesim y la herramienta rqt, para prepararse para los próximos tutoriales.
Nivel del Tutorial: Principiante
Tiempo: 15 minutos
Contenido
Historial
La herramienta ros2 es la forma como los usuarios administran, analizan e interactúan con el sistema ROS. Soporta múltiples comandos que se dirigen a diferentes aspectos del sistema y su funcionamiento. Uno podría usarlo para iniciar un nodo, establecer un parámetro, escuchar un tópico y mucho más. La herramienta ros2 es parte de la instalación principal de ROS 2.
rqt es una herramienta Interfaz Gráfica de Usuario (GUI) para ROS 2. Todo lo hecho en rqt se puede hacer mediante la línea de comandos, pero rtq proporciona una forma más fácil de manipular los elementos ROS 2.
Este tutorial involucra conceptos fundamentales de ROS 2, como la separación de nodos, topics y servicios. Todos estos conceptos se elaborarán en tutoriales posteriores; Por ahora, simplemente configurarás las herramientas y tendrás una idea general de ellas.
Requisitos previos
El tutorial anterior, Configuring environment, te guiará en como configurar su entorno de desarrollo.
Tareas
1 Instalar turtlesim
Como siempre, no olvide ejecutar source
con el archivo de setup en cada terminal nueva que abra, como se describe en el tutorial previo.
Para instalar el paquete turtlesim para tu distribución ROS 2 ejecuta:
sudo apt update
sudo apt install ros-rolling-turtlesim
Siempre que el archivo desde el que instaló ROS 2 contenga el repositorio ros_tutorials
, ya debería tener turtlesim instalado.
Siempre que el archivo desde el que instaló ROS 2 contenga el repositorio ros_tutorials
, ya debería tener turtlesim instalado.
Comprueba que el paquete esté instalado:
ros2 pkg executables turtlesim
El comando anterior debería devolver una lista de los ejecutables de turtlesim:
turtlesim draw_square
turtlesim mimic
turtlesim turtle_teleop_key
turtlesim turtlesim_node
2 Iniciar turtlesim
Para iniciar turtlesim, introduce el siguiente comando en la terminal:
ros2 run turtlesim turtlesim_node
Debería aparecer la ventana del simulador, con un diseño de tortuga aleatorio en el centro.
En la terminal, debajo el comando, verás los mensajes generados por el nodo:
[INFO] [turtlesim]: Starting turtlesim with node name /turtlesim
[INFO] [turtlesim]: Spawning turtle [turtle1] at x=[5.544445], y=[5.544445], theta=[0.000000]
Ahi puedes ver que el nombre de la tortuga y las coordenadas predeterminadas donde se generó.
3 Utilizar turtlesim
Abre una nueva terminal y ejecuta source
con el archivo de setup.
Ahora ejecutarás un nuevo nodo para controlar la tortuga del primer nodo:
ros2 run turtlesim turtle_teleop_key
En este punto, deberías tener tres ventanas abiertas: una terminal que ejecuta turtlesim_node
, la ventana de turtlesim, y una terminal que ejecuta turtle_teleop_key
.
Organiza estas ventanas para que puedas ver la ventana de turtlesim, y tengas seleccionado el terminal que ejecuta turtle_teleop_key
para que puedas controlar la tortuga de turtlesim.
Utiliza las flechas de tu teclado para controlar la tortuga. Se moverá por la pantalla, usando su «bolígrafo» adjunto para dibujar el camino que ha seguido hasta el momento.
Nota
Presionar las flechas del teclado solo hará que la tortuga se mueva una distancia corta y luego se detenga. Esto se debe a que, de manera realista, no le gustaría que un robot continuara con una instrucción si, por ejemplo, el operador perdiera la conexión con el robot.
Puedes ver los nodos, asi como sus topics, servicios y acciones asociadas mediante el subcomando list
de los comandos respectivos:
ros2 node list
ros2 topic list
ros2 service list
ros2 action list
Aprenderás más sobre estos conceptos en los próximos tutoriales.
Dado que el objetivo de este tutorial es solo obtener una descripción general de turtlesim, utiliza rqt para llamar algunos de los servicios de turtlesim e interactuar con el nodo turtlesim_node
.
4 Instalar rqt
Abre una nueva terminal para instalar rqt
y sus complementos:
sudo apt update
sudo apt install ~nros-rolling-rqt*
sudo apt update
sudo apt install ros-rolling-rqt*
El archivo estándar para instalar ROS 2 en macOS contiene rqt
y sus complementos, por lo que ya debería tener rqt
instalado.
El archivo estándar para instalar ROS 2 en Windows contiene rqt
y sus complementos, por lo que ya debería tener rqt
instalado.
Para ejecutar rqt:
rqt
5 Utilizar rqt
Después de ejecutar rqt por primera vez, la ventana estará en blanco. No te preocupes; simplemente selecciona Plugins > Services > Service Caller en la barra de menú de la parte superior.
Nota
Es posible que rqt tarde un tiempo en localizar todos los complementos.
Si hace clic en Plugins, pero no ve Services ni ninguna otra opción, debe cerrar rqt e introducir el comando rqt --force-discover
en su terminal.
Utiliza el botón Actualizar a la izquierda de la lista desplegable Service para asegurarte que todos los servicios del nodo turtlesim estén disponibles.
Haz clic en la lista desplegable Service para ver los servicios de turtlesim y selecciona el servicio /spawn
.
5.1 Pruebe el servicio de spawn
Utilizaremos rqt para llamar al servicio /spawn
.
Como puedes deducir por su nombre, /spawn
creará otra tortuga en la ventana del simulador.
Asigna a la nueva tortuga un nombre único, como turtle2
, haciendo doble clic entre las comillas simples vacías en la columna Expression.
Puedes ver que esta expresión corresponde al valor de name y es de tipo string.
Ingresa las nuevas coordenadas para la nueva tortuga, por ejemplo: x = 1.0
e y = 1.0
.
Nota
Si intentas generar una nueva tortuga con el mismo nombre que una tortuga existente, como la tortuga predeterminada turtle1
, obtendrás un mensaje de error en la terminal que esta ejecutando turtlesim_node
:
[ERROR] [turtlesim]: A turtle named [turtle1] already exists
Para generar turtle2
, debes llamar al servicio haciendo clic en el botón Call en la parte superior derecha de la ventana rqt.
Verás aparecer una nueva tortuga (nuevamente con un diseño aleatorio) en las coordenadas que ingresó para x e y.
Si actualiza la lista de servicios en rqt, podrás ver que ahora hay servicios relacionados con la nueva tortuga, /turtle2/...
, además de /turtle1/...
.
5.2 Pruebe el servicio set_pen
Ahora vamos a darle a turtle1
un bolígrafo único mediante el servicio /set_pen
:
Los valores para r, g y b deben estar entre 0 y 255, y establecerán el color del bolígrafo con el que dibuja turtle1
. Con width se establece el grosor de la línea.
Para que turtle1
dibuje con una línea roja, cambia el valor de r a 255 y el valor de width a 5.
No olvides llamar al servicio después de actualizar los valores.
Si regresas a la terminal donde se está ejecutando turtle_teleop_key
y presionas las flechas del teclado, verás que el bolígrafo de turtle1 ha cambiado.
Probablemente hayas notado que no hay forma de mover turtle2
.
Esto se debe a que no hay un nodo teleop para turtle2
.
6 Reasignación
Necesitas un segundo nodo teleop para controlar turtle2
Sin embargo, si intentas ejecutar el mismo comando que antes, notaras que este tambien controla la turtle1
.
La forma para cambiar este comportamiento es remapear el topic cmd_vel
.
Abre una nueva terminal y ejecuta source
con el archivo de setup y ejecuta:
ros2 run turtlesim turtle_teleop_key --ros-args --remap turtle1/cmd_vel:=turtle2/cmd_vel
Ahora puedes mover la turtle2
mientras esta terminal este activa, y turtle1
cuando la otra terminal que ejecuta turtle_teleop_key
este activa.
7 Cerrar turtlesim
Para detener la simulación puedes introducir Ctrl + C
en la terminal turtlesim_node
, y q
en las terminales que ejecutan turtle_teleop_key
.
Resumen
Utilizar turtlesim y rqt es una excelente manera de aprender los conceptos básicos de ROS 2.
Pasos siguientes
Ahora que tienes turtlesim y rqt en funcionamiento, y una idea de cómo funcionan, profundicemos en el primer concepto básico de ROS 2 con el siguiente tutorial, Comprender los Nodos.
Contenido Relacionado
El paquete turtlesim se puede encontrar en el repositorio ros_tutorials. Asegúrate de seleccionar la rama correspondiente a su distribución ROS 2 instalada.
Este video aportado por la comunidad demuestra muchos de los elementos cubiertos en este tutorial.