Aprendiendo ROS… ¿con tortugas?

SPAWNEO DE TORTUGAS

RECOMENDACION: si no tienes sourceado automáticamente tu directorio de ROS, tendrás que correr este comando cada que abras una terminal:

source /opt/ros/humble/setup.bash

INSTALAR Y USAR TURTLESIM

sudo apt update

sudo apt install ros-humble-turtlesim

ros2 pkg executables turtlesim

 

terminal 1

ros2 run turtlesim turtlesim_node

 

terminal 2

ros2 run turtlesim turtle_teleop_key

 

terminal 3

revisar nodos, topicos, servicios y acciones disponibles

ros2 node list

ros2 topic list

ros2 service list

ros2 action list

 

 terminal 4

INSTALAR Y USAR RQT

sudo apt update

sudo apt install ~nros-humble-rqt*

rqt

Plugins > Services > Service Caller

0. visualiza en la lista de servicios los disponibles y observa el de turtle1

1. busca /spawn para spawnear una tortuga nueva asi de la nada y ponle un nombre creativo como 'turtle2' en (1,1)

despues presiona el boton de llamar (moshi moshi?)

 

2. vete a turtle1/set_pen para cambiar el color de la trayectora que va a dibujar asi como su tamaño

cambialo a 255 en r para que sea rojo y a 5 en width para que dibuje algo

presiona el botón de llamar

puedes cambiar también la de turtle2

presiona el botón de llamar

 

3. en tu terminal de TURTLE TELEOP KEY podrás mover la tortuga 1 pero no la 2 (triste)

para mover la 2, tendrás que abrir otra terminal de teleoperado, y remapear los valores de la tortuga 2

(modificando argumentos, yeii)

ros2 run turtlesim turtle_teleop_key --ros-args --remap turtle1/cmd_vel:=turtle2/cmd_vel

 

4. ya remapeado, en una terminal puedes mover la tortuga 1 y en la otra la 2.

 

5. cerrar terminales

salte de turtlesim con CTRL+C y de los teleop con Q y cierra las terminales.

salte de rqt con la tachita y cierra la terminal

 

SUSCRÍBETE Y POSTEA (TOPICS)

Se pueden tener varios suscriptores viendo los datos y varios publicadores posteando datos

 ABRIR TURTLESIM

terminal 1

ros2 run turtlesim turtlesim_node

 

terminal 2

ros2 run turtlesim turtle_teleop_key

 

terminal 3

LISTA DE TOPICS

ros2 topic list

ros2 topic list -t

SUSCRÍBETE A UN TOPIC

ros2 topic echo /turtle1/cmd_vel

 

terminal 4

VISUALIZA LOS NODOS

rqt_graph

VISUALIZA TU NUMERO DE SEGUIDORES Y PUBLICADORES

ros2 topic info /turtle1/cmd_vel

VISUALIZA EL TIPO DE MENSAJE QUE ENVÍA EL NODO A LOS TOPICS (en el caso de cmd_vel)

ros2 topic list -t

ros2 interface show geometry_msgs/msg/Twist

POSTEA ALGO EN EL TOPIC

Esta es la sintaxis: ros2 topic pub <topic_name> <msg_type> '<args>'

Explicación de once: --once is an optional argument meaning “publish one message then exit”.

ros2 topic pub --once /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"

 

ENVÍA Y RECIBE (SERVICES)

Un servidor puede tener varios clientes y así comunicarte con varios nodos de manera directa (dm). Se envía un request y se espera un response.

 

ABRIR TURTLESIM

terminal 1

ros2 run turtlesim turtlesim_node

 

terminal 2

ros2 run turtlesim turtle_teleop_key

 

terminal 3

LISTA DE SERVICE

ros2 service list

ros2 service list -t

 

PARA SABER EL TIPO DE SERVICIO (el tipo de servicio determina cómo se envían y reciben datos)

ros2 service type /clear

PARA ENCONTRAR TODOS LOS SERVICES DE UN TIPO

ros2 service find std_srvs/srv/Empty

VISUALIZA LA ESTRUCTURA DE MENSAJE QUE ENVÍA Y RECIBE

ros2 interface show turtlesim/srv/Spawn

MANDA UN MENSAJE Y RECIBE UNA RESPUESTA

Esta es la sintaxis: ros2 service call <service_name> <service_type> '<arguments>'

ros2 service call /clear std_srvs/srv/Empty

ros2 service call /spawn turtlesim/srv/Spawn "{x: 2, y: 2, theta: 0.2, name: ''}"

Anterior
Anterior

Configura ROS: workspaces, packages, topics and services.

Siguiente
Siguiente

Usando micro ROS: Raspberry Pi Pico con ROS 2 Humble.