ROS — Урок 4 — Сборка пакета ROS



Содержание

1. Сборка пакета ROS

Описание: В этом руководстве описывается использование утилит rosmake, для построения пакета, и rosdep, для установки системы зависимостей.

2. Система зависимостей

Пакеты ROS, иногда требуют для своей работы наличия внешних библиотек и утилит, которые предоставляются операционной системой. Эти необходимые библиотеки и утилиты, обычно называют системой зависимостей. В некоторых случаях, эти системы зависимостей не установлены по умолчанию. ROS обеспечивает простой инструмент — rosdep, который используется для загрузки и установки системы зависимостей.

Пакеты ROS, должны объявить, что им нужны эти системные зависимости, в манифесте пакета. Давайте посмотрим на манифест для пакета turtlesim:

$ roscd turtlesim
$ cat manifest.xml


...
...
    

Как вы можете видеть turtlesim требуется для работы wxwidgets.

2.1 rosdep

rosdep — это утилита, которую можно использовать для установки системы зависимостей, требуемой пакетом ROS.

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

rosdep install [package]

Загрузка и установка системы зависимостей для turtlesim:

$ rosdep install turtlesim

Если ROS установлена из пакетных файлов вы увидите:

executing this script:
 set -o errexit
#No Packages to install

В противном случае вы увидите вывод установки зависимостей turtlesim:

set -o errexit
set -o verbose


if [ ! -f /opt/ros/lib/libboost_date_time-gcc42-mt*-1_37.a ] ; then
  mkdir -p ~/ros/ros-deps
  cd ~/ros/ros-deps
  wget --tries=10 http://pr.willowgarage.com/downloads/boost_1_37_0.tar.gz
  tar xzf boost_1_37_0.tar.gz
  cd boost_1_37_0
  ./configure --prefix=/opt/ros
  make
  sudo make install
fi


if [ ! -f /opt/ros/lib/liblog4cxx.so.10 ] ; then
  mkdir -p ~/ros/ros-deps
  cd ~/ros/ros-deps
  wget --tries=10 http://pr.willowgarage.com/downloads/apache-log4cxx-0.10.0-wg_patched.tar.gz
  tar xzf apache-log4cxx-0.10.0-wg_patched.tar.gz
  cd apache-log4cxx-0.10.0
  ./configure --prefix=/opt/ros
  make
  sudo make install
fi

if [ ! -f /opt/ros/lib/libboost_date_time-gcc42-mt*-1_37.a ] ; then
  mkdir -p ~/ros/ros-deps
  cd ~/ros/ros-deps
  wget --tries=10 http://pr.willowgarage.com/downloads/boost_1_37_0.tar.gz
  tar xzf boost_1_37_0.tar.gz
  cd boost_1_37_0
  ./configure --prefix=/opt/ros
  make
  sudo make install
fi


if [ ! -f /opt/ros/lib/liblog4cxx.so.10 ] ; then
  mkdir -p ~/ros/ros-deps
  cd ~/ros/ros-deps
  wget --tries=10 http://pr.willowgarage.com/downloads/apache-log4cxx-0.10.0-wg_patched.tar.gz
  tar xzf apache-log4cxx-0.10.0-wg_patched.tar.gz
  cd apache-log4cxx-0.10.0
  ./configure --prefix=/opt/ros
  make
  sudo make install
fi

rosdep запускает bash-скрипт приведённый выше, и выходит после завершения его работы.

3. Построение пакета

После того, как вся система зависимостей установлена, мы можем построить наш пакет, который мы только что создали.

3.1 rosmake

rosmake аналогична команде make, но она реализует специфичную «магию» ROS. При вводе команды rosmake beginner_tutorials , rosmake собирает пакет beginner_tutorials, плюс все пакеты, от которых он зависит, в правильном порядке. Так как мы задали зависимости от rospy, roscpp, и std_msgs, то при создании нашего ROS пакета, эти пакеты (и их зависимости, и так далее) также будут построены rosmake.

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

rosmake [package]

Пробуем:

$ rosmake beginner_tutorials

Выполнение этой команды может занять некоторое время. Во время её работы вы увидите некоторые информационные сообщения:

[ rosmake ] No package specified.  Building ['beginner_tutorials']
[ rosmake ] Logging to directory
[ rosmake ] /home/noonv/.ros/rosmake_output-2009-09-22-03-17-14
[ rosmake ] [ 0 of 18  Completed ]
[rosmake-0] >>> genmsg_cpp >>> [ make ]
[rosmake-0] <<< genmsg_cpp <<< [PASS] [ 0.39 seconds ]
[ rosmake ] [ 1 of 18  Completed ]
[rosmake-0] >>> roslib >>> [ make ]
...
...
...
[ rosmake ] [ 17 of 18  Completed ]
[rosmake-0] >>> beginner_tutorials >>> [ make ]
[rosmake-0] <<< beginner_tutorials <<< [PASS] [ 0.79 seconds ]

3.1.1 rosmake и несколько пакетов

Мы также можем использовать rosmake чтобы построить несколько пакетов одновременно.

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

rosmake [Package1] [package2] [package3]

Итак, теперь давайте создадим некоторые пакеты, которые нам потребуются на следующих уроках:

$ rosdep install turtle_teleop rxtools
$ rosmake turtle_teleop roscpp_tutorials rospy_tutorials rxtools

3.2 Обзор

Перечислим команды, которые мы использовали:
rosdep = ros+dep(endencies): утилита для установки зависимостей пакета
rosmake = ros+make: собирает (компилирует) пакет ROS

Ссылки
http://www.ros.org/wiki/ROS/Tutorials/BuildingPackages


3 комментария на «“ROS — Урок 4 — Сборка пакета ROS”»

  1. Здравствуйте.
    Пытаюсь установить rxtools, но пока не понятно как это правильно делать.

    $ rosdep install rxtools
    ERROR: Rosdep cannot find all required resources to answer your query
    Missing resource rxtools
    ROS path [0]=/opt/ros/groovy/share/ros
    ROS path [1]=/opt/ros/groovy/share
    ROS path [2]=/opt/ros/groovy/stacks

    Это значит, что нужно исходники качать и указывать путь в ROS_PACKAGE_PATH?

    • дело в том, что ROS развивается и текущие уроки не совсем актуальны для новых версий дистрибутива.
      в groovy rxtools больше не используется — вместо него — rqt.
      Успехов!

    • А как тогда установить хотя бы turtlesim?
      У меня имеется одноплатник (arm7) с ArchLinux.
      Ставил по второму методу отсюда.

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

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
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение