Часть 2.1.2 Документация по ROS. Навигация по файловой системе ROS — TechCave

ОглавлениеНавигация по файловой системе ROSДанная инструкция предназначена для разработки с помощью catkin, если вы работаете с rosbuild, то воспользуйтесь этой документацией по ROS.1

Часть 2.1.2 Документация по ROS. Навигация по файловой системе ROS

Робототехника

Часть 2.1.2 Документация по ROS. Навигация по файловой системе ROS

Оглавление

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

Данная инструкция предназначена для разработки с помощью catkin, если вы работаете с rosbuild, то воспользуйтесь этой документацией по ROS.

1. Предустановка

Для этого урока необходимо установить пакет ros-tutorials, пожалуйста сделайте это командой:

$ sudo apt-get install ros-<distro>-ros-tutorials

Замените '<distro>' названием вашего ROS дистрибутива (например hydro, groovy, electric, fuerte и т. д.)

2. Краткая информация о понятиях файловой системы

  1. Пакеты: Пакет программного обеспечения — 'это организационная единица кода ROS. Каждый пакет может содержать библиотеки, исполняемые файлы, скрипты и т. д.
  2. Манифест (package.xml): Манифест представляет собой описание пакета. Он служит для определения зависимостей между пакетами и содержит мета информацию о пакете такую как версия, информацию о разработчике, лицензию и т. д.

Примечание: rosbuild пользователям может стать интересно, куда пропали стеки. Понятие стеков было удалено в catkin, для того, чтобы упростить растущую кодовою базу и поддержать лучший метод распространения пакетов. В catkin можно определить метапакеты (metapackages) для сбора вместе одинаковых пакеты и групповые пакеты (multiple packages), которые могут находиться в одном VCS репозитории. Эти две особенности и заменяют функциональность стеков.

3. Инструменты файловой системы

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

3.1 Использование rospack

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

Использование:

# rospack find [package_name]

Пример:

$ rospack find roscpp

Команда вернет:

YOUR_INSTALL_PATH/share/roscpp

Если вы установили ROS с помощью apt на Ubuntu Linux вы увидите:

/opt/ros/hydro/share/roscpp

3.2 Использование roscd

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

Использование:

# roscd [locationname[/subdir]]

Пример:

$ roscd roscpp

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

$ pwd

Теперь вы должны увидеть:

YOUR_INSTALL_PATH/share/roscpp

Вы можете увидеть, что  YOUR_INSTALL_PATH/share/roscpp тот же путь, что возвращает команда rospack find в предыдущем примере.

Обратите внимание, что roscd, как и другие инструменты ROS, могут искать только ROS пакеты, которые находятся в каталогах, перечисленных в вашем ROS_PACKAGE_PATH

Чтобы увидеть, что находится в вашей ROS_PACKAGE_PATH, введите команду:

$ echo $ROS_PACKAGE_PATH

Ваш ROS_PACKAGE_PATH должен содержать список директорий, которые разделены двоеточиями и содержат ROS пакеты. Типичный ROS_PACKAGE_PATH может выглядеть следующим образом:

/opt/ros/hydro/base/install/share:/opt/ros/hydro/base/install/stacks

Также как и в случае  других переменных окружения, вы можете добавить дополнительные каталоги в свой ROS_PACKAGE_PATH, через двоеточие ':'.

roscd также может переместить в подкаталог пакета или стека.

Попробуйте:

$ roscd roscpp/cmake$ pwd

Вы должны увидеть:

YOUR_INSTALL_PATH/share/roscpp/cmake

3.3 roscd log

roscd log  переместит вас в папку, где ROS хранит log файлы. Обратите внимание, что если вы пока еще не запускали программы ROS, то эта команда выдаст ошибку, о том что каталог для log файлов еще не существует.

Если в уже запускали программы ROS, тогда попробуйте ввести команду:

$ roscd log

3.4 roscd rosls

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

Использование:

# rosls [locationname[/subdir]]

Пример:

$ rosls roscpp_tutorials

Команда вернет:

cmake package.xml srv

3.5 Дополнение по TAB

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

Начните печатать:

# roscd roscpp_tut<<< теперь нажмите кнопку TAB >>>

После нажатия клавиши TAB, командная строка должна дополнить все остальное:

$ roscd roscpp_tutorials/

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

Теперь попробуйте напечатать:

# roscd tur<<< теперь нажмите кнопку TAB >>>

После нажатия клавиши TAB, командная строка должна дополнить:

$ roscd turtle

Однако, в этом случае есть несколько пакетов, которые начинаются с turtle. Попробуйте ввести TAB еще раз. Это должно отобразить все пакеты ROS, которые начинаются с turtle:

turtle_actionlib/ turtlesim/ turtle_tf/

В командной строке все равно у вас будет:

$ roscd turtle

Теперь напечатайте s после turtle и нажмите TAB:

# roscd turtles<<< теперь нажмите кнопку TAB >>>

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

$ roscd turtlesim/

4. Название утилит

Вы могли уже обратить внимание на подход к названию утилит ROS: 

rospack = ros + pack(age)

roscd = ros + cd

rosls = ros + ls

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

[wiki.ros.org]

Оглавление

22:41
865

Нет комментариев. Ваш будет первым!

Авторизация

Пользователи

Георгiй Москвитинъ
Andpyxa Tutunnik
Andrey_fox
Jane linch
genagy
Pasha Radiuk
KotikBSD
Эрик Имашев
Амир Исмагилов