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

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.

Wiki: it/ROS/Tutorials/NavigatingTheFilesystem (last edited 2013-10-20 19:21:12 by Il_Voza)