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

Ссылки
http://www.ros.org/wiki/ROS/Tutorials/NavigatingTheFilesystem
Руководства
все руководства ROS


Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Arduino Bluetooth CraftDuino DIY Google IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение