ОглавлениеНавигация по файловой системе ROSДанная инструкция предназначена для разработки с помощью catkin, если вы работаете с rosbuild, то воспользуйтесь этой документацией по ROS.1
Данная инструкция предназначена для разработки с помощью catkin, если вы работаете с rosbuild, то воспользуйтесь этой документацией по ROS.
Для этого урока необходимо установить пакет ros-tutorials, пожалуйста сделайте это командой:
$ sudo apt-get install ros-<distro>-ros-tutorials
Замените '<distro>' названием вашего ROS дистрибутива (например hydro, groovy, electric, fuerte и т. д.)
Примечание: rosbuild пользователям может стать интересно, куда пропали стеки. Понятие стеков было удалено в catkin, для того, чтобы упростить растущую кодовою базу и поддержать лучший метод распространения пакетов. В catkin можно определить метапакеты (metapackages) для сбора вместе одинаковых пакеты и групповые пакеты (multiple packages), которые могут находиться в одном VCS репозитории. Эти две особенности и заменяют функциональность стеков.
Код ROS распространяется через большое количество пакетов. Навигация с помощью инструментов командной строки, таких как ls и cd может быть очень утомительной и именно поэтому ROS предоставляет инструменты, которые могут вам помочь.
rospack позволяет получить информацию о пакетах. В этом уроке, мы собираемся рассмотреть только опцию find, которая возвращает путь к пакету.
Использование:
# rospack find [package_name]
Пример:
$ rospack find roscpp
Команда вернет:
YOUR_INSTALL_PATH/share/roscpp
Если вы установили ROS с помощью apt на Ubuntu Linux вы увидите:
/opt/ros/hydro/share/roscpp
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
roscd log переместит вас в папку, где ROS хранит log файлы. Обратите внимание, что если вы пока еще не запускали программы ROS, то эта команда выдаст ошибку, о том что каталог для log файлов еще не существует.
Если в уже запускали программы ROS, тогда попробуйте ввести команду:
$ roscd log
rosls является частью пакета rosbash. Это позволяет посмотреть содержимое директории непосредственно в пакете по его имени, а не по его пути.
Использование:
# rosls [locationname[/subdir]]
Пример:
$ rosls roscpp_tutorials
Команда вернет:
cmake package.xml srv
Набирать полностью имя пакета может быть очень утомительным. В предыдущем примере 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/
Вы могли уже обратить внимание на подход к названию утилит ROS:
rospack = ros + pack(age)
roscd = ros + cd
rosls = ros + ls
Этот шаблон названия утилит справедлив для многих инструментов ROS.