[Documentation] [TitleIndex] [WordIndex

Usare rqt_console e roslaunch

Descrizione: Questo tutorial introduce l'uso del rqt_console e rqt_logger_level per il debug, e roslaunch per avviare molti nodi alla volta. Se usi ROS fuerte o le precedenti distro dove rqt non è pienamente disponibile, dai un'occhiata a questa pagina che usa i vecchi tool basati su rx.

Livello Tutorial: PRINCIPIANTE

Prossimo Tutorial: Usare rosed

Prerequisiti rqt e turtlesim package

Il tutorial usa entrambi i rqt e turtlesim packages. Per fare questo tutorial, per favore installa entrambi i packages, se non l'hai ancora fatto.

$ sudo apt-get install ros-<distro>-rqt ros-<distro>-rqt-common-plugins ros-<distro>-turtlesim

Rimpiazza <distro> con il nome della tua distribuzione ROS (e.g. electric, fuerte, groovy, hydro).

NOTA: puoi aver già compilato rqt e turtlesim per uno dei precedenti tutorials. Se tu non sei sicuro, installandolo di nuovo non farai danni.

Usare rqt_console e rqt_logger_level

rqt_console collega il (<=attaches to) ROS's logging framework per mostrare l'output dai nodi (<=to display output from nodes). rqt_logger_level ci permette di cambiare il verbosity level (DEBUG, WARN, INFO, e ERROR) dei nodi appena vengono eseguiti.

Ora diamo un'occhiata al turtlesim output in rqt_console e spostati sul (<=switch) logger levels in rqt_logger_level appena usiamo turtlesim. Prima di avviare turtlesim, in due nuovi terminali avvia rqt_console e rqt_logger_level:

$ rosrun rqt_console rqt_console

$ rosrun rqt_logger_level rqt_logger_level

Vedrai due finestre popup:

rqt_console(start).png

rqt_logger_level.png

Ora avviamo turtlesim in un nuovo terminale:

$ rosrun turtlesim turtlesim_node

Dal momento che il default logger level è INFO tu vedrai qualsiasi informazione che il turtlesim pubblica quando viene avviato up, che dovrebbe essere come:

rqt_console(turtlesimstart).png

Ora cambiamo il logger level a Warn "refreshando" i nodi nella finestra del rqt_logger_level e selezionando Warn come mostrato sotto:

rqt_logger_level(error).png

Ora facciamo andare la nostra tartaruga nella parete e vediamo cos'é mostrato nella nostra rqt_console (non per hydro):

rostopic pub /turtle1/command_velocity turtlesim/Velocity -r 1 -- 2.0  0.0

Per hydro:

rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 0.0]'

rqt_console(turtlesimerror).png

Nota veloce sui logger levels

I Logging levels hanno la priorità nel seguente ordine:

Fatal
Error
Warn
Info
Debug

Fatal ha la più alta priorità e Debug ha la più bassa. Impostando il logger level, otterrai tutti i messaggi di quel priority level o più alto. Per esempio, impostando il livello a Warn, otterrai tutti i Warn, Error, e Fatal logging messages.

Facciamo Ctrl-C al nostro turtlesim e usiamo roslaunch per far apparire (to bring up) multipli turtlesim nodes e un mimicking node (nodo imitatore) per indurre un turtlesim a imitare un altro:

Usare roslaunch

roslaunch avvia nodi come definiti in un launch file.

Uso:

$ roslaunch [package] [filename.launch]

Prima di tutto, vai al beginner_tutorials package:

$ roscd beginner_tutorials

Se roscd fallisce, ricorda di impostare la variabile ROS_PACKAGE_PATH nel tuo terminale. I comandi saranno come questi:

$ export ROS_PACKAGE_PATH=~/<distro>_workspace/sandbox:$ROS_PACKAGE_PATH
$ roscd beginner_tutorials

Se non puoi ancora trovare il beginner_tutorials, allora torna indietro e segui le istruzioni per creare un package nel tutorial ROS/Tutorials/CreatingPackage.

Poi, creiamo una launch directory:

$ mkdir launch
$ cd launch

Il Launch File

Ora creiamo un launch file chiamato turtlemimic.launch e incolla il seguente:

   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>

Il Launch File spiegato

Ora, per spiegare il launch file, spezzettiamo il launch xml:

   1 <launch>

Qui avviamo il launch file con il launch tag, in modo che il file venga identificato come launch file.

   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>

Qui avviamo due gruppi con un namespace tag di turtlesim1 e turtlesim2 con un turtlesim node con il nome di sim. Questo ci permette di avviare due simulatori senza avere conflitti nei nomi.

  11   <node pkg="turtlesim" name="mimic" type="mimic">
  12     <remap from="input" to="turtlesim1/turtle1"/>
  13     <remap from="output" to="turtlesim2/turtle1"/>
  14   </node>

Qui avviamo il mimic node con i topics input e output rinominati turtlesim1 e turtlesim2. Questa ridenominazione indurrà turtlesim2 a imitare turtlesim1.

  16 </launch>

Questo chiude il tag xml per il launch file.

roslaunching

Ora facciamo roslaunch per il launch file:

$ roslaunch beginner_tutorials turtlemimic.launch

Due turtlesims verranno avviati, e in un nuovo terminale invia il comando rostopic (non per hydro):

$ rostopic pub /turtlesim1/turtle1/command_velocity turtlesim/Velocity -r 1 -- 2.0  -1.8

Per hydro:

$ rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'

Vedrai che le due turtlesims inizieranno a muoversi anche se il publish command viene inviato solo da turtlesim1.

mimic.png

Possiamo anche usare rqt_graph per capire meglio cosa fa il nostro launch file. Esegui la finestra principale del rqt e seleziona rqt_graph:

$ rqt

O semplicemente:

$ rqt_graph

mimiclaunch.jpg

Ora che hai usato con successo rqt_console e roslaunch, cerchiamo di conoscere le opzioni di editor per ROS. Puoi usare Ctrl-C su tutti i tuoi turtlesims, dato che non ne avrai bisogno per i prossimi tutorial.


2019-10-19 12:46