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
Contents
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:
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:
Ora cambiamo il logger level a Warn "refreshando" i nodi nella finestra del rqt_logger_level e selezionando Warn come mostrato sotto:
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]'
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.
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.
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.
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
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.