Il ROS Filesystem
Descrizione: Questo tutorial introduce i concetti riguardanti il ROS filesystem, e copre l'uso dei seguenti strumenti da command line: roscd, rosls, e rospack.
Livello Tutorial: PRINCIPIANTE
Prossimo Tutorial: Creazione di un ROS package
Contents
Anteprima veloce sui Concetti del Filesystem
Package: I Package sono l'unità di organizzazione del software del ROS code. Ogni package può contenere librerie, eseguibili, scripts, o altri artefatti.
Manifest (package.xml): Un manifest è la descrizione di un package. Serve per definire le dipendenze tra package e per acquisire le informazioni relative al package come la versione, manutentore, licenza, etc...
Filesystem Tools
Il codice si estende su molti package del ROS. Navigando con i tool da command-line come ls e cd, può essere molto fastidioso ed è per questo che il ROS fornisce i tool per aiutarti.
Usare rospack
rospack consente di ottenere informazioni sui package. In questo tutorial, noi mostreremo solo l'opzione find (trova) che restituisce il path (percorso) al package.
Uso:
# rospack find [package_name]
Esempio:
$ rospack find roscpp
Dovrebbe restituire:
YOUR_INSTALL_PATH/share/roscpp
Se hai installato ROS da apt su Ubuntu Linux, vedresti esattamente:
/opt/ros/groovy/share/roscpp
Usare roscd
roscd è parte della rosbash suite. Esso ti permette di cambiare directory (cd) direttamente al package o a uno stack.
Uso:
# roscd [locationname[/subdir]]
Esegui questo esempio:
$ roscd roscpp
per verificare che abbiamo cambiato la directory del package roscpp. Ora stampiamo la working directory (la directory su cui ci troviamo) mediante il comando Unix pwd:
$ pwd
Dovresti vedere:
YOUR_INSTALL_PATH/share/roscpp
Puoi vedere che YOUR_INSTALL_PATH/share/roscpp è lo stesso path che rospack find ci ha dato nell'esempio precedente.
Nota che roscd, come altri ROS tools, troverà solo package del ROS che sono all'interno delle directory elencate in ROS_PACKAGE_PATH. Per vedere cosa c'è nel tuo ROS_PACKAGE_PATH, digita:
$ echo $ROS_PACKAGE_PATH
Il tuo ROS_PACKAGE_PATH dovrebbe contenere una lista di directory dove hai i package del ROS separati da colonne. Un tipico ROS_PACKAGE_PATH può essere questo:
/opt/ros/groovy/base/install/share:/opt/ros/groovy/base/install/stacks
Analogalmente ad altri path dell'ambiente, puoi aggiungere directory addizionali al tuo ROS_PACKAGE_PATH, con ogni path separato da una colonna ':'.
Subdirectories
roscd permette anche di muoverti verso una subdirectory di un package o uno stack.
Prova:
$ roscd roscpp/cmake $ pwd
Dovresti vedere:
YOUR_INSTALL_PATH/share/roscpp/cmake
roscd log
roscd log ti porterà al folder in cui ROS memorizza i file di log. Nota che se non hai ancora eseguito un programma del ROS, questo produrrà un errore dicendo che non esiste ancora.
Se invece prima hai eseguito un programma del ROS, prova:
$ roscd log
Usare rosls
rosls è parte della rosbash suite. Esso ti permette di eseguire ls direttamente in un package per nome piuttosto che per path assoluto.
Uso:
# rosls [locationname[/subdir]]
Esempio:
$ rosls roscpp_tutorials
Dovrebbe restituire:
cmake package.xml srv
Tab Completion (Completamento con Tab)
Può essere noioso digitare l'intero nome di un package.Nell'esempio precedente , roscpp_tutorials è un nome abbastanza lungo. Fortunatamente, alcuni tool del ROS supportano la TAB completion.
Inizia digitando:
# roscd roscpp_tut<<< ora premi il pulsante TAB >>>
Dopo aver premuto il pulsante TAB, la command line completerà il resto:
$ roscd roscpp_tutorials/
Questo lavora perché roscpp_tutorials è al momento il solo package del ROS che inizia con roscpp_tut.
Ora prova a digitare:
# roscd tur<<< ora premi il pulsante TAB >>>
Dopo aver premuto il pulsante TAB, la command line completerà finché può:
$ roscd turtle
Comunque, in questo caso ci sono più di un package che comincia con turtle. Prova a premere TAB un'altra volta. Questo mostrerà tutti i package del ROS che iniziano con turtle:
turtle_actionlib/ turtlesim/ turtle_tf/
Sulla command line dovresti ancora avere:
$ roscd turtle
Ora digita un s dopo turtle e poi premi TAB:
# roscd turtles<<< ora premi il pulsante TAB >>>
Dal momento che c'è solo un package che inizia con turtles, dovresti vedere:
$ roscd turtlesim/
Review
Avrai notato un pattern (modello) con la quale sono denominati i tool del ROS:
- rospack = ros + pack(age)
- roscd = ros + cd
- rosls = ros + ls
Questo pattern di denominazione vale per molti tool del ROS.
Ora che hai visto tutto ciò, andiamo a Creare un ROS package.