1. Navegando por el sistema de archivos de ROS
Descripción: este tutorial introduce los conceptos sobre el sistema de archivos de ROS, y cubre el uso de roscd, rosls, y las herramientas de la línea de comandos de rospack.
2. Visión general de los conceptos del sistema de archivos
- Packages: son paquetes, es el nivel más bajo de organización del software en ROS. Pueden contener cualquier cosa: herramientas, ejecutables…
- Manifest: un manifiesto es una descripción de un paquete. El papel más importante es definir las dependencias entre paquetes.
- Stacks: son pilas, una colección de paquetes que forman una librería de alto nivel.
- Stack Manifest: son manifiestos como los anteriores pero para pilas.
Cuando observes el sistema de archivos, es fácil diferencias entre paquetes y pilas:
- Un paquete es un directorio con un archivo manifest.xml.
- Una pila es un directorio que contiene un archivo stack.xml
3. Herramientas del sistema de archivos
Para ROS hay una gran cantidad de código esparcido através de varios paquetes y pilas. Navegando con la línea comandos utilizando comandos como ls o cd resulta tedioso en ROS. Por este motivo ROS dispone de su propias herramientas para ayudarte.
3.1 Usando rospack y rosstack
rospack y rosstack forman parte del juego rospack. Esto te permite obtener información sobre paquetes y pilas. En este tutorial unicamente vamos a ver el uso de la opción find, que devuelve la ruta de un paquete o de una pila.
Uso:
$ rospack find [package_name]
$ rosstack find [stack_name]
Ejemplo:
$ rospack find roscpp
Lo que devolverá:
TU_RUTA_DE_INSTALACION/ros/core/roscpp
3.2.- Usando roscd
roscd es parte del juego rosbash. Este comado permite cambiar de directorio (cd) directamente de un paquete o una pila.
Uso:
$ roscd [locationname[/subdir]]
Ejemplo:
$ roscd roscpp
Para verificar que hemos cambiado al directorio del paquete roscpp, usamos el comando de Unix pwd que nos indica el directorio de trabajo:
$ pwd
Devuelve:
TU_RUTA_DE_INSTALACION/ros/core/roscpp
Puedes comprobar que la ruta TU_RUTA_DE_INSTALACION/ros/core/roscpp es la misma que nos mostró el comando rospack find en el ejemplo anterior.
3.2.1.- Subdirectorios
roscd también permite cambiar de un subdirectorio a una pila o a un paquete.
Intenta:
$ roscd roscpp/include
$ pwd
Lo que devolverá:
YOUR_INSTALL_PATH/ros/core/roscpp/include
3.3.- Casos especiales para roscd
Hay pequeños casos especiales que te queremos contar para continuar que no afecta a los paquetes o a las pilas.
3.3.1.- roscd sin argumentos
roscd sin argumentos te devolverá el valor de la variable $ROS_ROOT. Prueba:
Verás:
Esta ruta es la misma definida en $ROS_ROOT.Prueba:
Verás:
3.3.2.- roscd log
roscd log acudirás al directorio donde están almacenados los archivos de log donde ROS los almacena.Posiblemente no tengas ningún archivo de log todavía.
Prueba:
$ roscd log
3.4.- Usando rosls
rosls forma parte del juego de comandos de rosbash. Permite hacer ls directamente sobre paquetes, pilas o lugares comunes dentro de las rutas de los paquetes de ros.
Formato:
$ rosls [locationname[/subdir]]
Ejemplo:
$ rosls roscpp_tutorials
Te devolverá:
add_two_ints_client listener_unreliable
add_two_ints_server listener_with_tracked_object
add_two_ints_server_class listener_with_userdata
anonymous_listener Makefile
babbler manifest.xml
CMakeLists.txt node_handle_namespaces
custom_callback_processing notify_connect
listener srv
listener_async_spin talker
listener_multiple time_api
listener_single_message timers
listener_threaded_spin
3.5.- Autocompletado con el tabulador
[…]
4.- Conclusiones
[…]
Original en Inglés: http://www.ros.org/wiki/ROS/Tutorials/NavigatingTheFilesystem
Imagen: http://www.ros.org