Навигация в файловой системе ROS
Навигация в файловой системе ROS
1. Краткий обзор концепции файловой системы
- Packages: Пакеты являются низким уровнем организации программного обеспечения. Они могут содержать все что угодно: библиотеки, инструменты, исполняемые файлы и др.
- Manifest: Манифест является описанием пакета. Главная задача которого - определение зависимостей между пакетами.
- Stacks: Стеки являются коллекциями пакетов, образующих высокоуровневые библиотеки.
- Stack Manifest: Обычный манифест, но для стека.
В файловой системе легко определить пакет то, или стек:
- Пакет представляет собой каталог с файлом manifest.xml.
- Стек представляет собой каталог с файлом stack.xml.
2. Инструменты файловой системы
2.1. Использование rospack и rosstack
rospack и rosstack являются частью rospack утилиты. Использование:
$ rospack find [имя_пакета]
$ rosstack find [имя_стека]
Пример:
$ rospack find roscpp
Вернется:
YOUR_INSTALL_PATH/ros/core/roscpp
2.2. Использование roscd
roscd является частью rosbash утилиты. Позволяет изменить текущую директорию непосредственно на директорию пакета или стека.
Использование:
$ roscd [locationname[/subdir]]
Пример:
$ roscd roscpp
Чтобы убедиться, что директория была изменена на директорию пакета roscpp, нужно посмотреть текущую директорию с помощью bash команды pwd
$ roscd roscpp/include
$ pwd
Вы должны увидеть:
YOUR_INSTALL_PATH/ros/core/roscpp/include
При выполнении roscd без аргументов произойдет переход к $ROS_ROOT .
2.3. Использование rosls
rosls является частью rosbash утилит, она позволяет просмотреть содержание пакета или стека по его имени, а не по пути к нему.
Использование:
$ rosls [locationname[/subdir]]
Пример:
$ rosls roscpp_tutorials
Вернется:
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