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: ''}"