ROS - Урок 2 - Навигация по файловой системе ROS


Содержание

Список вводных упражнений для знакомства с ROS содержится здесь.
пойдём по-порядку :)

Навигация по файловой системе ROS

1. Навигация пой файловой системе ROS

Описание: Этот урок описывает структуру файловой системы ROS, знакомит с командами roscd, rosls и rospack.
2. Обзор основной концепции файловой системы ROS

Определения:
Пакеты (Packages): Пакеты лежат на самом нижнем уровне организации программного обеспечения ROS. Они могут содержать все что угодно: библиотеки, инструменты, исполняемые файлы и т.д.
Манифест (Manifest): Манифест — это файл с описанием пакета. Основная задача манифеста — это определение зависимостей между пакетами.
Стеки (Stacks): Стеки — это коллекции пакетов, которые образуют следующий уровень библиотек.
Манифест Стека (Stack Manifest): Это такой же Манифест (файл с описанием), но на этот раз для всего стека.

Когда вы смотрите на файловую систему, то легко сможете определить — это пакет или стек:
В директории пакета обязательно находится файл manifest.xml.
А в директории стека обязательно есть файл stack.xml.


3. Утилиты файловой системы

Для ROS уже существует большое количество программного кода, распространяемого во множестве пакетов и стеков. Навигация по файловой системе осуществляется при помощи стандартных утилит командной строки, таких как ls и cd, но это было бы очень утомительным, поэтому ROS предоставляет свои утилиты, чтобы облегчить навигацию по своей фаловой структуре.

3.1 rospack и rosstack
rospack и rosstack являются частью пакета rospack.
Они позволяют получить информацию о пакетах и стеках. В данном руководстве, мы пока рассмотрим опцию find, которая возвращает путь к заданному пакету или стеку.

использование:
$ rospack find [package_name]
$ rosstack find [stack_name]

пример:
$ rospack find roscpp

вернёт:
YOUR_INSTALL_PATH/ros/core/roscpp

в моём случае:
/opt/ros/cturtle/ros/core/roscpp


3.2 roscd

roscd является частью пакета rosbash.
Эта команда позволяет перемещаться по каталогам (cd) пакетов или стеков.

Использование:
$ roscd [locationname[/subdir]]

пример:
$ roscd roscpp


Чтобы убедиться, что мы переместились в каталог пакета roscpp, можно распечатать текущий каталог с помощью стандартной команды pwd:
$ pwd 

вернёт:
YOUR_INSTALL_PATH/ros/core/roscpp

в моём случае:
/opt/ros/cturtle/ros/core/roscpp


3.2.1 Подкаталоги
roscd также позволяет переходить в подкаталоги пакета или стека.
$ roscd roscpp/include
$ pwd

вернёт:
YOUR_INSTALL_PATH/ros/core/roscpp/include

у меня:
/opt/ros/cturtle/ros/core/roscpp/include


3.3 Особые случаи roscd

Есть несколько специальных мест, куда можно перейти с помощью roscd, которые не являются пакетом или стеком.

roscd без аргументов перебросит нас на $ROS_ROOT.
Попробуйте:
$ roscd 
$ pwd

получим:
/opt/ros/cturtle/ros


3.3.2 roscd log

команда roscd log переместит на в директорию, в которой ROS сохраняет свои log-файлы.

Попробуйте:
$ roscd log

в моём случае, меня перебросило в
/home/noonv/.ros/log


3.4 rosls

rosls — это часть пакета rosbash. Эта команда позволяет нам промотреть (ls) содержимое директории в пакете или стеке по его имени, а не по пути к нему.

Использование:
$ 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


3.5 Tab-завершение

Может быть довольно утомительным вбивать полное имя пакета. Например, в предыдущем примере, название roscpp_tutorials — довольно длинное :) К счастью, некоторые утилиты ROS поддерживают TAB-завершение.

Начните набирать:
$ roscd roscpp_<<< а теперь нажмите клавишу TAB >>>

После нажатия клавиши TAB имя должно дополниться:
$ roscd roscpp_tutorials/


Это работает, потому что roscpp_tutorials — единственный пакет ROS, который начинается с roscpp_.

Теперь попробуйте ввести:
$ roscd tur<<< а теперь нажмите клавишу TAB >>>

После нажатия клавиши табуляции, в командной строке произойдёт дополнение:
$ roscd turtle

Однако, в этом случае есть несколько пакетов, которые начинаются с turtle.

Попробуйте нажать TAB ещё раз. Это должно показать все ROS пакеты, которые начинаются с turtle
turtle_actionlib/  turtlesim/         turtle_teleop/     turtle_tf/

В командной строке, у вас пока всё равно содержится только
$ roscd turtle

Теперь дополните команду буквой s после turtle и затем нажмите клавишу TAB
$ roscd turtles<<< а теперь нажмите клавишу TAB >>>


Поскольку существует только один пакет, которые начинаются с turtles, вы должны увидеть:
$ roscd turtlesim/


4. Обзор

Вы могли уже обратить внимание на подход к названию утилит ROS:
rospack = ros + pack(age)
rosstack = ros + stack
roscd = ros + cd
rosls = ros + ls

Этот шаблон именования справедлив для многих инструментов ROS.

Далее: 2 — Создание пакета для ROS

Ссылки:
www.ros.org/wiki/ROS/Tutorials/NavigatingTheFilesystem
Руководства
все руководства ROS
  • 0
  • 17 февраля 2011, 20:32
  • noonv

Комментарии (1)

RSS свернуть / развернуть

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.