Note: This tutorial assumes that you have completed the previous tutorials: Comprendiendo Servicios y Parámetros en ROS. |
Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags. |
Using rqt_console and roslaunch
Description: Este tutorial presenta ROS usando rqt_console y rqt_logger_level para depurar y roslaunch para iniciar muchos nodos a la vez. Si usa ROS fuerte o distribuciones anteriores donde rqt no está completamente disponible, consulte esta página con esta página que usa herramientas antiguas basadas en rx.Tutorial Level: BEGINNER
Next Tutorial: Using rosed
Contents
Requisitos previos paquete rqt y turtlesim
El tutorial usa los paquetes rqt y turtlesim. Para realizar este tutorial, instale ambos paquetes, si aún no lo ha hecho.
$ sudo apt-get install ros- <distro> -rqt ros- <distro> -rqt-common-plugins ros- <distro> -turtlesim
Reemplaza <distro> con el nombre de tu Distribución ROS (por ejemplo, indigo, jade, kinetic, lunar. ...).
'NOTA:' es posible que ya haya creado rqt y turtlesim para uno de los tutoriales anteriores. Si no está seguro, instalarlos de nuevo no dañará nada.
Usando rqt_console y rqt_logger_level
rqt_console se adjunta al marco de registro de ROS para mostrar la salida de los nodos. rqt_logger_level nos permite cambiar el nivel de verbosidad (DEBUG, WARN, INFO y ERROR) de los nodos mientras se ejecutan.
Ahora veamos la salida de turtlesim en rqt_console y cambiemos los niveles del registrador en rqt_logger_level como usamos turtlesim. Antes de comenzar con turtlesim, 'en dos nuevas terminales' inicie rqt_console y rqt_logger_level:
$ rosrun rqt_console rqt_console
$ rosrun rqt_logger_level rqt_logger_level
Verá dos ventanas emergentes:
Ahora comencemos turtlesim en una 'nueva terminal' :
$ rosrun turtlesim turtlesim_node
Dado que el nivel de registrador predeterminado es INFO, verá cualquier información que turtlesim publique cuando se inicie, que debería verse así:
Ahora cambiemos el nivel del registrador a Advertir actualizando los nodos en la ventana rqt_logger_level y seleccionando Advertir como se muestra a continuación:
Ahora ejecutemos nuestra tortuga en la pared y veamos qué se muestra en nuestra rqt_console:
Para ROS Hydro y posteriores
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.0}}'
Para ROS Groovy y anteriores
rostopic pub /turtle1/command_velocity turtlesim/Velocity -r 1 -- 2.0 0.0
Nota rápida sobre los niveles del registrador
Los niveles de registro se priorizan en el siguiente orden:
Fatal Error Warn Info Debug
Fatal tiene la prioridad más alta y Debug tiene la más baja. Al configurar el nivel del registrador, obtendrá todos los mensajes de ese nivel de prioridad o superior. Por ejemplo, si configura el nivel en "Advertencia", obtendrá todos los mensajes de registro "Advertencia", "Error" y "Fatal".
Hagamos "Ctrl-C" en nuestro turtlesim y usemos "roslaunch" para que aparezcan múltiples nodos de turtlesim y un nodo de imitación para hacer que un turtlesim imite a otro:
Usando roslaunch
roslaunch inicia los nodos como se define en un archivo de inicio.
Uso:
$ roslaunch [package] [filename.launch]
Primero vaya al paquete beginner_tutorials que creado y construido anteriormente:
$ roscd beginner_tutorials
Si roscd dice algo similar a 'roscd: No such package/stack 'beginner_tutorials' , necesitará obtener el archivo de configuración del entorno como lo hizo al final de tutorial create_a_workspace: Entonces hagamos un directorio de lanzamiento: NOTA: El directorio para almacenar los archivos de inicio no tiene que llamarse necesariamente "launch". De hecho, ni siquiera necesita almacenarlos en un directorio. El comando roslaunch busca automáticamente el paquete pasado y detecta los archivos de inicio disponibles. Sin embargo, esto se considera una buena práctica.
Ahora creemos un archivo de lanzamiento llamado turtlemimic.launch y peguemos lo siguiente:
Ahora, analicemos el xml de lanzamiento. Aquí iniciamos el archivo de lanzamiento con la etiqueta de lanzamiento, de modo que el archivo se identifica como un archivo de lanzamiento. Aquí comenzamos dos grupos con una etiqueta de espacio de nombres de turtlesim1 y turtlesim2 con un nodo turtlesim con un nombre de sim. Esto nos permite iniciar dos simuladores sin tener conflictos de nombres. Aquí comenzamos el nodo mímico con los temas de entrada y salida renombrados a turtlesim1 y turtlesim2. Este cambio de nombre hará que turtlesim2 imite a turtlesim1. Esto cierra la etiqueta xml para el archivo de lanzamiento.
Ahora vamos a "lanzar" el archivo de lanzamiento: Dos turtlesims comenzarán y en una Verá que los dos turtlesims comienzan a moverse a pesar de que el comando de publicación solo se envía a turtlesim1. También podemos usar rqt_graph para comprender mejor lo que hizo nuestro archivo de inicio. Ejecute la ventana principal de rqt y seleccione O simplemente: Ahora que ha utilizado con éxito rqt_console y roslaunch, aprendamos sobre opciones de editor para ROS. Puede presionar Ctrl-C para todos sus simios de tortuga, ya que no los necesitará para los próximos tutoriales. $ cd ~/catkin_ws
$ source devel/setup.bash
$ roscd beginner_tutorials
$ mkdir launch
$ cd launch
El Archivo Launch
1 <launch>
2
3 <group ns="turtlesim1">
4 <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
5 </group>
6
7 <group ns="turtlesim2">
8 <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
9 </group>
10
11 <node pkg="turtlesim" name="mimic" type="mimic">
12 <remap from="input" to="turtlesim1/turtle1"/>
13 <remap from="output" to="turtlesim2/turtle1"/>
14 </node>
15
16 </launch>
Explicación del archivo de lanzamiento
1 <launch>
16 </launch>
roslaunching
$ roslaunch beginner_tutorials turtlemimic.launch
Para ROS Groovy y anteriores $ rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'
$ rostopic pub /turtlesim1/turtle1/command_velocity turtlesim/Velocity -r 1 -- 2.0 -1.8
$ rqt
$ rqt_graph